HomeGuidesAPI ReferenceChangelog
Log In
API Reference

Solar Incentives

Use Solar Incentives to find solar incentive programs, inspect incentive requirements, and identify the data needed to determine eligibility.

Use Solar Incentives to find solar incentive programs, inspect incentive requirements, and identify the customer or system data needed to determine eligibility.

Solar incentives are programs offered by cities, states, utilities, and other entities to encourage the installation of distributed solar. Use location inputs such as ZIP code, state, address, or LSE to search for incentives, then use applicability data to determine what customer or system details are required.

triangle-exclamation

Solar incentive data requires special permissions and is available only under specific circumstances for Enterprise customers using Switch.

These incentives fall into a few broad categories:

CategoryDescription
RebatesCash payments. Usually, the size of the rebate is related to the size of the project, but rebates can also be fixed payments.
Bill creditsSimilar to rebates, but applied directly to your energy bill.
Tax creditsCredits that can be applied to your local, state, or federal taxes, depending on the program.
DiscountsSubsidized prices for various project materials.

This page outlines the data definitions and basic operations for solar incentives. For a more in-depth guide, see Finding and calculating solar incentives.

Accessing solar incentives

To access incentives, you need special permissions on your account. Contact [email protected] to learn more.

Data definitions

An Incentive object consists of a set of properties describing how to calculate the incentive amount, along with a list of applicabilities that specify what kinds of customers the solar incentive applies to.

Incentive

The Incentive object has the following data structure.

NameTypeDescription
incentiveIdIntegerArcadia ID of the solar incentive.
masterIncentiveIdInteger"Master" ID for this incentive. Tracks a single incentive across multiple versions.
eligibilityEligibilityOne of ELIGIBLE, INELIGIBLE, or COULD_BE_ELIGIBLE. If an incentive has any applicabilities that the user has not supplied any values for and none of the already-supplied applicabilities make the user INELIGIBLE, eligibility will be set to COULD_BE_ELIGIBLE and requiredData will be populated with the additional information that is required.
requiredDataList of ApplicabilityIf an incentive has formula-based applicabilities and the user does not provide all of the required information for that applicability, eligibility will be set to COULD_BE_ELIGIBLE and requiredData will be populated with the additional information that is required.
incentiveNameStringThe name of the incentive.
projectTypeStringThe type of project that this incentive applies to. Always solarPv.
incentiveTypeStringThe type of incentive. Can be a rebate, billCredit, taxCredit, or discount.
stateStringIf applicable, the state where this incentive is available.
lseIdIntegerThe Arcadia ID of the LSE by whom the incentive is managed.
lseNameStringThe name of the LSE providing the incentive.
lseCodeStringThe shortcode for the LSE providing the incentive.
customerClassStringThe class of customer that is eligible for this incentive. Our solar incentives are residential.
startDateDateThe date when the incentive became or will become effective.
endDateDateThe date when the incentive expires.
isExhaustedBooleantrue or false, depending on whether there are incentive funds remaining.
jurisdictionStringThe entity type that offers this incentive. In the case of a tax credit, this is also used to determine if the incentive applies to state or federal taxes.
quantityKeyPropertyKeyThe quantity by which to multiply the incentive rate.
rateDecimalThe rate by which to multiply the applicable quantity.
rateUnitStringThe type of rate for this incentive. Can be COST_PER_UNIT or PERCENTAGE.
quantityKeyCapStringThe maximum quantity key (e.g. systemSizeAc) that is eligible for this incentive. For example, if quantityKey=systemSizeAc, the value of this field is 50, and the system size is 60, then the first 50 kW of the system is eligible for the incentive.
paymentCapIntegerMaximum dollar amount, in USD, of this incentive.
percentCostCapKeyPropertyKeyQuantity key that's used to calculate the percent cost cap.
percentCostCapDecimalThe maximum portion of the system cost that can be covered by the incentive.
paymentDurationIntegerThe duration of the incentive is in years. Will be 1 if this is a one-time, up-front incentive.
incentivePaidToStringThe party to whom the incentive is paid.
projectTypeExclusiveBooleanIndicates if more than one incentive from this LSE/jurisdiction can be used for a customer for this projectType. true means only one incentive from the LSE/jurisdiction can be used. false means more than one incentive from the LSE/jurisdiction can be used.
summaryStringFree text field describing the incentive. Designed to be used in a user interface as a general overview.
requirementsStringFree text field describing the requirements for the incentive. Designed to be used in a user interface to give an overview of incentives' requirements.
applicabilitiesList of ApplicabilityA list of applicabilities. Applicabilities are used to determine whether the customer is eligible for this incentive.

Applicability

The Applicability object has the following data structure. Applicabilities are used to determine whether a customer is eligible for an incentive. Customers must meet all applicabilities on an incentive to be eligible for that incentive.

NameTypeDescription
applicabilityKeyStringThe name of the variable that this applicability applies to. Examples include systemOwnership, azimuth, and tilt.
displayNameStringA user-presentable name for this applicability.
descriptionStringA user-presentable description of what this applicability represents.
requiredValueStringIf there is a single value that is allowed for this applicability, it will show up here. For example, if systemOwnership requires host, it will be here.
minValueDecimalFor numeric applicabilities, the minimum allowed value.
maxValueDecimalFor numeric applicabilities, the maximum allowed value.
operatorStringFor formulaic applicabilities, the relationship that must be true for this applicability relative to its quantityKey. For example, estimatedFirstYearkWh might have a quantityKey of 110percentAnnualConsumption and an operator of <. This indicates that the estimated first-year production of the solar power system must be less than 110% of the customer's annual consumption.
quantityKeyStringFor formulaic applicabilities, a pointer to a PropertyKey that holds the formula defining this applicability.
choicesListFor applicabilities with a fixed set of choices, the list of available choices.

Get Solar Incentives

Search for incentives and return a list of Incentive objects.

Resource URI

GET /rest/v1/incentives

Request parameters

NameTypeDescription
projectTypeStringRestrict the search to the given project type.
incentiveTypeStringRestrict the search to the given incentive type.
defaultIncentivesStringReturn the incentives that are available to most people, where "most people" is defined as incentives that match the defaults for their respective applicabilities.
applicabilitiesStringGet Solar Incentives accepts an arbitrary list of key=value pairs representing inputs for the different applicability keys. Inputs do not cause the list of incentives to be filtered, but the eligibility status for each incentive is set depending on the applicability key values. For example, if a user inputs ?tilt=7&azimuth=180, then incentives that require a system with a tilt of 7 degrees and an azimuth of 180 degrees will be set to ELIGIBLE if those are the only applicabilities. If additional applicabilities exist, depending on key values, eligibility may also be INELIGIBLE or COULD_BE_ELIGIBLE. Available applicabilities for a given area are returned by Get Incentive Applicabilities. See the how-to guide for an example of how to use this endpoint.
customerClassesStringRESIDENTIAL, GENERAL, or SPECIAL_USE. The type of customer.
countryCodeStringRestrict the search to the given country.
lseIdIntegerRestrict the search to the given LSE.
stateStringRestrict the search to the given state.
zipCodeStringRestrict the search to the given ZIP code.
addressStringStringRestrict the search to the given addressString.
effectiveOnDateGet only those incentives that are available as of the specified date.
fromDateDateGet incentives that are available after a certain date.
toDateDateGet incentives that are available before a certain date.
isExhaustedBooleanGet incentives that are exhausted (or not).

Example

This example retrieves a list of solar rebates for ZIP code 95448 that were effective on November 5, 2015, and are not exhausted.

GET /rest/v1/incentives?zipCode=95448&projectType=solarPv&customerClasses=RESIDENTIAL&effectiveOn=2015-11-05&isExhausted=FALSE
{  
  "status": "success",  
  "count": 2,  
  "type": "Incentive",  
  "results": [  
    {  
      "incentiveId": 3158839,  
      "masterIncentiveId": 3158839,  
      "eligibility": "ELIGIBLE",  
      "tariffCode": "None",  
      "incentiveName": "Residential Renewable Energy Tax Credit",  
      "lseId": 100281,  
      "lseName": "State of California Incentives",  
      "serviceType": "SOLAR_PV",  
      "customerClass": "RESIDENTIAL",  
      "startDate": "2006-01-01",  
      "endDate": "2016-12-31",  
      "isExhausted": false,  
      "projectType": "solarPv",  
      "incentiveType": "taxCredit",  
      "rate": 30,  
      "rateUnit": "PERCENTAGE",  
      "documents": null,  
      "jurisdiction": "federal",  
      "quantityKey": {  
        "keyName": "systemCostMinusIncentives",  
        "displayName": "System Cost After Incentives",  
        "description": "Cost of the solar system after incentives, rebates and tax credits"  
      },  
      "quantityKeyCap": null,  
      "state": "CA",  
      "percentCostCap": null,  
      "percentCostCapKey": {  
        "keyName": null  
      },  
      "paymentCap": 0,  
      "paymentDuration": 1,  
      "incentivePaidTo": "tenantOrOwner",  
      "projectTypeExclusive": false,  
      "applicabilities": [],  
      "summary": "Established by The Energy Policy Act of 2005, the federal tax credit for residential energy property initially applied to solar-electric & solar water heating. Other key revisions included an 8-year extension of the credit to 12/31/2016; the ability to take the credit against the alternative minimum tax; & the removal of the $2000 credit limit for solar-electric beginning in 2009. The credit was further enhanced in February 2009 by The American Recovery & Reinvestment Act of 2009, which removed the maximum credit amount for all eligible technologies placed in service after 2008. A taxpayer may claim a credit of 30% of qualified expenditures for a system that serves a dwelling unit that is owned & used as a residence by the taxpayer. If the installation is at a new home, the "placed in service" date is the date of occupancy by the homeowner. Expenditures include labor costs for on-site preparation, assembly or original system installation, & for piping or wiring to interconnect a system to the home.",  
      "requirements": "A taxpayer may claim a credit of 30% of qualified expenditures for a system that serves a dwelling unit that is owned & used as a residence by the taxpayer. Expenditures include labor costs for on-site preparation, assembly or original system installation, & for piping or wiring to interconnect a system to the home. The bill extends the 30% ITC for residential solar property for eight years through December 31, 2016."  
    }
  ]
}

Get One Incentive

Retrieve one incentive by incentiveId.

Resource URI

GET /rest/v1/incentives/{incentiveId}

Request parameters

NameTypeDescription
populateDetailsBooleanWhether to include the applicabilities.
populateDocumentsBooleanWhether to return link(s) to the relevant document(s).

Example

GET /rest/v1/incentives/3163702
{  
  "status": "success",  
  "count": 1,  
  "type": "Incentive",  
  "results": [  
    {  
      "incentiveId": 3163702,  
      "masterIncentiveId": 3163702,  
      "tariffCode": "None",  
      "incentiveName": "Residential Solar Energy System Equipment Tax Credit",  
      "lseId": 100287,  
      "lseName": "State of New York Incentives",  
      "serviceType": "SOLAR_PV",  
      "customerClass": "RESIDENTIAL",  
      "startDate": "2012-08-01",  
      "endDate": null,  
      "isExhausted": false,  
      "projectType": "solarPv",  
      "incentiveType": "taxCredit",  
      "rate": 25,  
      "rateUnit": "PERCENTAGE",  
      "documents": null,  
      "jurisdiction": "state",  
      "quantityKey": {  
        "keyName": "systemCost",  
        "displayName": "System Cost",  
        "description": "Cost of the solar system in USD. ",  
        "quantityUnit": "USD"  
      },  
      "quantityKeyCap": null,  
      "state": "NY",  
      "percentCostCap": null,  
      "percentCostCapKey": {  
        "keyName": null  
      },  
      "paymentCap": 5000,  
      "paymentDuration": 1,  
      "incentivePaidTo": "tenantOrOwner",  
      "projectTypeExclusive": false,  
      "applicabilities": [  
        {  
          "applicabilityKey": "systemSizeDcW",  
          "displayName": "System Size DC W",  
          "description": "Size of the solar system in Watts DC",  
          "maxValue": 25000,  
          "quantityUnit": "W"  
        }  
      ],  
      "summary": "Enacted in August 1997, this personal income tax credit originally applied to expenditures on solar-electric (PV) equipment used on residential property. The credit, equal to 25% percent of the cost of equipment and installation, was expanded in August 2005 to include solar-thermal equipment. The solar-thermal provisions apply to taxable years beginning on and after January 1, 2006. The credit is capped at $5,000 for solar-energy systems placed in service on or after September 1, 2006. In August 2012 the credit was amended yet again to allow it to be claimed for systems installed under lease or power purchase agreements (PPAs) of at least 10 years in length. For third-party owned systems, the residential homeowner may claim a tax credit in the amount of lease or PPA payments made during the taxable year, for up to 15 years.",  
      "requirements": "Systems must be new and in compliance with all applicable performance and safety standards. Electricity generation systems must be grid connected. Systems must comply with the 25 kW capacity limit on residential. The solar energy system must use solar radiation to produce energy for heating, cooling, hot water, or electricity for residential use.  The system must also be installed and used at your principal residence in New York State."  
    }  
  ]  
}  

Get Incentive Applicabilities

Get a list of properties representing the universe of applicabilities, restricted by the specified parameters. Use this endpoint when entering new markets to identify what data you need to collect from customers to find and calculate incentives. This endpoint accepts many of the same parameters as Get Solar Incentives.

Resource URI

GET /rest/v1/incentives/applicabilities

Request parameters

NameTypeDescription
projectTypeStringRestrict the search to the given project type.
incentiveTypeStringRestrict the search to the given incentive type.
countryStringRestrict the search to the given country.
lseIdIntegerRestrict the search to the given LSE.
customerClassesStringType of customer. Choices are RESIDENTIAL, GENERAL, and SPECIAL_USE.
stateStringRestrict the search for applicabilities to the given state.
zipCodeStringRestrict the search to the given ZIP code.
addressStringStringRestrict the search to the given addressString.
effectiveOnDateGet only those incentives that are available as of the specified date. Defaults to today's date, restricting the list of applicabilities to only those on active incentives.
isExhaustedBooleanGet incentives that are exhausted (or not). Defaults to false, restricting the list of applicabilities to only those on non-exhausted incentives.

Example

The following example request retrieves the applicabilities for residential solar incentives in ZIP code 95448.

GET /rest/v1/incentives/applicabilities?zipCode=95448&projectType=solarPv&customerClasses=RESIDENTIAL
{  
  "status": "success",  
  "count": 2,  
  "type": "IncentiveApplicability",  
  "results": [  
    {  
      "applicabilityKey": "systemOwnership",  
      "displayName": "System Ownership",  
      "description": "If incentive requires the system to be owned by the Host or Third Party to qualify.  ",  
      "choices": [  
        {  
          "displayValue": "Host",  
          "value": "host",  
          "dataValue": "host",  
          "likelihood": null  
        },  
        {  
          "displayValue": "Third Party",  
          "value": "thirdParty",  
          "dataValue": "thirdParty",  
          "likelihood": null  
        }  
      ]  
    },  
    {  
      "applicabilityKey": "systemSizeAcW",  
      "displayName": "System Size AC W",  
      "description": "Size of the solar system in Watts AC",  
      "quantityUnit": "W"  
    }  
  ],  
  "pageCount": 25,  
  "pageStart": 0  
}