Solar Incentives are programs offered by cities, states, utilities, and other entities that are designed to encourage the installation of distributed solar.

This data is only made available under special circumstances and you need to be an Enterprise customer using our Switch Product.

These incentives fall into a few broad categories:

  • Rebates - Cash payments. Usually the size of the rebate is related to the size of the project but, sometimes, they can just be fixed payments.
  • Bill credits - Similar to rebates, but applied directly to your energy bill.
  • Tax credits - Credits that can be applied to your local, state, or federal taxes, depending on the program.
  • Discounts - Subsidized prices for various project materials

This page outlines the data definitions and basic API operations for solar incentives. For a more in-depth guide in how to use this API, see the how-to.

Accessing Solar Incentives

In order to access incentives, you’ll need special permissions on your account. Please contact us to find out 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 is applicable to.

Incentive

The Incentive object has the following data structure.

Name Type Fields Description
incentiveId Integer   Genability ID of the solar incentive
masterIncentiveId Integer   “Master” ID for this incentive. Tracks a single incentive across multiple versions.
eligibility Eligibility   One 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.
requiredData List of Applicability   If 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.
incentiveName String   The name of the incentive
projectType String   The type of project that this incentive applies to. AlwayssolarPv.
incentiveType String   The type of incentive. Can be a rebate, billCredit, taxCredit, or discount
state String   If applicable, the state where this incentive is available.
lseId Integer   The Genability ID of the LSE by whom the incentive is managed.
lseName String   The name of the LSE providing the incentive.
lseCode String   The short code for the LSE providing the incentive.
customerClass String   The class of customer that is eligible for this incentive. Our solar incentives are residential.
startDate Date   The date when the incentive became or will become effective.
endDate Date   The date when the incentive expires.
isExhausted Boolean   true or false, depending on whether there are incentive funds remaining
jurisdiction String   The 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.
quantityKey PropertyKey   The quantity by which to multiply the incentive rate.
rate Decimal   The rate by which to multiply the applicable quantity
rateUnit String   The type of rate for this incentive. Can be COST_PER_UNIT or PERCENTAGE.
quantityKeyCap String   The 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.
paymentCap Integer   Maximum dollar amount (in US) of this incentive.
percentCostCapKey PropertyKey   Quantity key that’s used to calculate the percent cost cap
percentCostCap Decimal   The maximum portion of the cost of the system cost that can be covered by the incentive
paymentDuration Integer   The duration of the incentive in years. Will be 1 if this is a one-time, up-front incentive
incentivePaidTo String   The party to whom the incentive is paid
projectTypeExclusive Boolean   Indicates 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.
summary String   Free text field describing the incentive. Designed to be used in a user interface as a general overview.
requirements String   Free text field describing the requirements for the incentive. Designed to be used in a user interface to give an overview of incentive’s requirements.
applicabilities List of Applicability   A 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 in order to be eligible for that incentive.

Name Type Fields Description
applicabilityKey String   The name of variable that this applicability applies to. Examples include systemOwnership, azimuth, and tilt.
displayName String   A user-presentable name for this applicability.
description String   A user-presentable description of what this applicability represents.
requiredValue String   If 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.
minValue Decimal   For numeric applicabilities, the minimum allowed value.
maxValue Decimal   For numeric applicabilities, the maximum allowed value.
operator String   For 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.
quantityKey String   For formulaic applicabilities, a pointer to a PropertyKey that holds the formula defining this applicability.
choices List   For applicabilities with a fixed set of choices, the list of available choices.

Get a List of Incentives

This allows you to search for a set of incentives and get them back as a list of Incentive objects.

Resource URI

GET /rest/v1/incentives

Request Parameters

Name Type Description
projectType String Restrict the search to the given project type
incentiveType String Restrict the search to the given incentive type
defaultIncentives String Return the incentives that are available to most people, where “most people” is defined as those incentives that match the defaults for their respective applicabilities
applicabilities String Get 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.
customerClasses String RESIDENTIAL, GENERAL, or SPECIAL_USE. The type of customer
countryCode String Restrict the search to the given country
lseId Integer Restrict the search to the given LSE
state String Restrict the search to the given state
zipCode String Restrict the search to the given ZIP code
addressString String Restrict the search to the given addressString
effectiveOn Date Get only those incentives that are available as of the specified date.
fromDate Date Get incentives that are available after a certain date.
toDate Date Get incentives that are available before a certain date.
isExhausted Boolean Get incentives that are exhausted (or not)

Example

This example will get a list of solar rebates for ZIP code 94105 that were effective on October 26, 2015 and are not exhausted.

GET /rest/v1/incentives?zipCode=95448&projectType=solarPv&customerClasses=RESIDENTIAL&effectiveOn=2015-11-05&isExhausted=FALSE
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
{
  "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."
   },

    /* more incentives */

]}

Get One Incentive

This endpoint retrieves a particular incentive by incentiveId.

Resource URI

GET /rest/v1/incentives/{incentiveId}

Request Parameters

Name Type Description
populateDetails Boolean Whether to include the applicabilities or not.
populateDocuments Boolean Whether to return link(s) to the relevant document(s)

Example

GET /rest/v1/incentives/3163702
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
{
  "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. This can be used by developers entering new markets in order to know exactly what data they’ll need to gather from their customers to in order to find and calculate incentives properly. This endpoint accepts many of the same parameters as Get Incentives.

Resource URI

GET /rest/v1/incentives/applicabilities

Request Parameters

Name Type Description
projectType String Restrict the search to the given project type
incentiveType String Restrict the search to the given incentive type
country String Restrict the search to the given country
lseId Integer Restrict the search to the given LSE
customerClasses String RESIDENTIAL, GENERAL, SPECIAL_USE. The type of customer
state String Restrict the search for applicabilities to the given state
zipCode String Restrict the search to the given ZIP code
addressString String Restrict the search to the given addressString
effectiveOn Date Get 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.
isExhausted Boolean Get 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 will retrieve all of the applicabilities that you might see in the state of California for solar incentives.

GET /rest/v1/incentives/applicabilities?zipCode=95448&projectType=solarPv&customerClasses=RESIDENTIAL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
{
  "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
}