HomeGuidesAPI ReferenceChangelog
Log In
API Reference

Tariffs API

Tariffs are rate plans for electricity. They describe who the plan applies to (service and applicability), what the charges are, and other information about this electricity service:

  • We have residential tariffs and general tariffs (commercial & industrial), and specialty (agriculture, transport, lighting).
  • You can specify whether you want the tariff fully populated, or whether you just want a sub-section of the data (to avoid charges and to speed up your queries).

Data Definitions

The complete tariff data is a hierarchy of many objects. We call the "header" object the Tariff (to confuse things!), which contains zero or more TariffRate objects. Think of a tariff rate like the line item on your bill. Then each tariff rate has 1 or more TariffRateBand. Some charges (rates) can be banded to contain several levels based on demand or consumption (or other) thresholds. Our rich structure is designed to support the complexity found in the large array of tariff plans that are in the market.

TariffId versus MasterTariffId

Tariff data changes periodically. E-1 Residential in PG&E territory, for example, usually changes a few times per year. For each revision, we created a new tariff with a unique tariffId. Logically, however, each of these new tariffs is just a different version of a single "master" tariff. This family of tariffs is tied together with the masterTariffId property. Again using E-1 as an example, each version of the tariff will have a different tariffId, but they all have the same masterTariffId -- 522.

Taxes

The Arcadia database only has rates that appear in utility tariff books. That means that it does not have state, local, and other tax rates. That doesn't mean that you can't include them in a calculation, though. We have a quick how-to on exactly how to do that.

Tariff

The Tariff object has the following data structure.

Name

Type

Fields

Description

tariffId

Long

M

Unique Arcadia ID (primary key) for this tariff

masterTariffId

Long

M

Unique Arcadia ID that persists across all revisions of this tariff

tariffCode

String

M

Shortcode that the LSE uses as an alternate name for the tariff

tariffName

String

M

Name of the tariff as used by the LSE

tariffBookName

String

E

Name of the tariff as it appears in the tariff document

lseId

Long

M

ID of load serving entity this tariff belongs to

lseName

String

M

Name of the load-serving entity

lseCode

String

E

Abbreviated name of the load-serving entity

serviceType

String

M

Type of service for the tariff. Current values include ELECTRICITY (grid power), SOLAR_PV (for a Solar PPA, Lease or similar) and GAS (Natural Gas)

priorTariffId

Long

 

Unique Arcadia ID that identifies the prior revision of the tariffId above

distributionLseId

Long

 

In states like Texas where the load-serving entity that sells the power is different than the load-serving entity that distributes the power, this will contain the ID of the distribution LSE. Otherwise, it will be null.

tariffType

String

 

Possible values are:
DEFAULT - tariff that is automatically given to this service class
ALTERNATIVE - opt-in alternate tariff for this service class
OPTIONAL_EXTRA - opt-in extra, such as green power or a smart thermostat program
RIDER - charge that can apply to multiple tariffs. Often a regulatory-mandated charge

customerClass

String

Possible values are:
RESIDENTIAL - homes, apartments etc.
GENERAL - commercial, industrial, and other business and organization service types (often have additional applicability criteria)
SPECIAL_USE - examples are government, agriculture, street lighting, transportation
PROPOSED - Utility rates that have been proposed by utilities and approved by utility commissions, but are not yet effective (requires product subscription)

customerCount

Integer

Number of customers that are on this master tariff

customerLikelihood

Decimal

The likelihood that a customer is on this tariff of all the tariffs in the search results. Only populated when getting more than one tariff.

customerCountSource

String

E

Where we got the customer count numbers from. Typically FERC (form 1 filings) or Arcadia (our own estimates).

territoryId

String

ID of the territory that this tariff applies to. This is typically the service area for the LSE in this regulatory region (i.e. a state in the USA)

effectiveDate

DateTime

Date on which the tariff was or will be effective

endDate

DateTime

Date on which this tariff is no longer effective. Can be null which means end date is not known or tariff is open-ended

closedDate

Date

E

Date on which a tariff became closed to new customers, but still available for customers who were on it at the time. Can be null which means that the tariff is not closed. All versions of a particular tariff (i.e. those that share a particular masterTariffId) will have the same closedDate value.

effectiveOnRule

String

Property of the tariff determining when the tariff takes effect. Possible values: TARIFF_EFFECTIVE_DATEBILLING_PERIOD_START

timeZone

String

If populated (usually is), it's the timezone that this tariffs dates and times refer to

billingPeriod

String

How frequently bills are generated.

currency

String

ISO Currency code that the rates for this tariff refer to (e.g. USD for USA Dollar)

chargeTypes

String

A comma-separated list of all the different ChargeType rates on this tariff (see field on TariffRate below).

chargePeriod

String

The most fine-grained period for which charges are calculated.

minMonthlyConsumption

Decimal

E

When applicable, the minimum monthly consumption allowed to be eligible for this tariff.

maxMonthlyConsumption

Decimal

E

When applicable, the maximum monthly consumption allowed to be eligible for this tariff.

minMonthlyDemand

Decimal

E

When applicable, the minimum monthly demand allowed to be eligible for this tariff.

maxMonthlyDemand

Decimal

E

When applicable, the maximum monthly demand allowed to be eligible for this tariff.

hasTimeOfUseRates

Boolean

Indicates whether this tariff contains one or more Time of Use Rate.

hasTieredRates

Boolean

Indicates whether this tariff contains one or more Tiered Rate.

hasContractedRates

Boolean

Indicates whether this tariff contains one or more Rate that can be contracted (sometimes called by-passable or associated with a price to compare).

hasTariffApplicability

Boolean

E

Indicates that this tariff has additional eligibility criteria, as specified in the TariffProperty collection (below).

hasRateApplicability

Boolean

Indicates that one or more rates on this tariff are only applicable to customers with a particular circumstance. When true, this will be specified in the TariffProperty collection, and also on the TariffRate or rates in question.

hasNetMetering

Boolean

E

Indicates whether this tariff contains one or more net metered rates.

privacy

String

E

Privacy status of the tariff. Possible values are PUBLICUNLISTED, or PRIVATE.

properties

List of TariffProperty

The properties on this tariff. See below for the TariffProperty structure.

rates

List of TariffRate

The rates for this tariff. See below for TariffRate structure

documents

List of TariffDocument

The documents for this tariff. See below for TariffDocument structure

Tariff Rate

The TariffRate object has the following data structure.

Name

Type

Fields

Description

tariffRateId

Long

M

Unique Arcadia ID (primary key) for each tariff rate

tariffId

Long

M

Associates the rate with a tariff (foreign key)

riderTariffId

Long

E

Tariff ID of the rider attached to this tariff version. null otherwise

riderId

Long

M

Master Tariff ID of the rider linked to this tariff rate.

tariffSequenceNumber

Integer

M

Sequence of this rate in the tariff, for display purposes only (e.g. this is the order on the bill)

tariffBookSequenceNumber

Integer

E

Sequence of this rate in the tariff source document, if it differs from tariffSequenceNumber

rateGroupName

String

M

Name of the group this rate belongs to

tariffBookRateGroupName

String

E

Name of the group this rate belongs to in the tariff source document, if it differs from rateGroupName

rateName

String

M

Name of this rate. Can be null (in which case use the group name)

tariffBookRateName

String

E

Name of this rate in the tariff source document, if it differs from rateName

fromDateTime

DateTime

 

If populated, this indicates the rate's effective date is not the same as that of its tariff

toDateTime

DateTime

 

If populated, this indicates the rates end date is not the same as that of its tariff

territory

Territory

 

Only populated when this rate applies to a different region than the whole tariff (e.g. California Baseline Regions). This how-to has more.

season

Season

 

The season this rate applies to. Only used for seasonal rates (null otherwise)

timeOfUse

TimeOfUse

 

The time period this rate applies to. Only used for TOU rates (null otherwise)

chargeType

String

 

Possible values are:
FIXED_PRICE - a fixed charge for the period
CONSUMPTION_BASED - based on quantity used (e.g. kW/h)
DEMAND_BASED - based on the peak demand (e.g. kW)
QUANTITY - a rate per number of items (e.g. $5 per street light)
FORMULA - a rate that has a specific or custom formula
MINIMUM - a minimum amount that the LSE will charge you, overriding lower pre-tax charges
MAXIMUM - a maximum amount that the LSE will charge you, overriding higher pre-tax charges
TAX - a percentage tax rate which is applied to the sum of all of the other charges on a bill

chargeClass

String

A comma-separated string that indicates what class(es) of charges this rate is for. Values include:
SUPPLY - Energy-related charges.
TRANSMISSION - Transmission level delivery charges.
DISTRIBUTION - Distribution level (last mile) delivery charges of moving electricity into your home or business.
TAX - Tax surcharges that appear in the utility tariff document.
CONTRACTED - Charges that get replaced or overridden when you pass the retail (contracted) energy supply rate in the calculation.
USER_ADJUSTED - Additional or custom rates you can add to a public or private tariff. An example would be a local tax rate which Arcadia does not model but you would want included.
AFTER_TAX - Charges which apply post utility and other taxes. A good example would be the California Climate credit which is applied to the bill after the taxes are applied to the bill subtotal.
OTHER - Charges which cannot be classified in any of the above buckets. This is very rare. NON_BYPASSABLE - Charges which cannot be offset by credits (usually Net Metering)

chargePeriod

String

Indicates what period this charge is calculated for. This is usually the same as the billing period (and is usually monthly) but can be other intervals. Possible values are:
MONTHLY - each calendar month
DAILY - calculated for each day
QUARTERLY - every 3 months
ANNUALLY - every year

transactionType

String

E

Indicates whether this rate is BUY (charge when importing from the grid, no credit when exporting), SELL (credit when exporting to the grid, no charge when importing), or NET (charge when importing, credit when exporting) with imports and exports resolved according to the chargePeriodBUY_IMPORT (charge only when importing) and SELL_EXPORT (credit only when exporting) indicates that imports and exports are resolved in real-time (instantaneous netting).

quantityKey

String

When not null, the property that defines the type of quantity this rate applies to. (e.g. billingMeter : property which defines the number of billing meters the rate will apply to)

applicabilityKey

String

When not null, the property that defines the eligibility criteria for this rate. (e.g. connectionType : property which defines how the service is connected to the grid)

variableLimitKey

String

When populated this defines the variable which determines the upper limit(s) of this rate. (e.g. demandMultiplierTierswithkWhTiers2416: property which uses the demand value to drive the consumption limits)

variableRateKey

String

When not null, this is the name of the property that defines the variable rate. In this case, the rate field is null, or can (rarely) be used as an input to the determination of the variable rate. (e.g massachusettsResidentialRetailPrevailingRates : property which provides the regional prevailing residential supply rate for Massachusetts )

variableFactorKey

String

When not null, this is the name of the property that defines the variable factor to apply to this rate. (e.g billingPeriodProrationFactor: property which defines a prorated number of billing days)

rateBands

List of TariffRateBand

See the data definition below

Tariff Rate Band

The TariffRateBand object has the following data structure.

Name

Type

Description

tariffRateBandId

Long

Unique Arcadia ID (primary key) for each Band

tariffRateId

Long

ID of the rate this band belongs to (foreign key)

rateSequenceNumber

Integer

This bands position in the bands for its rate

hasConsumptionLimit

Boolean

true indicates that this has banded consumption

consumptionUpperLimit

Decimal

When hasConsumptionLimit is true, this indicates the upper consumption limit of this band. null means no upper limit

hasDemandLimit

Boolean

true indicates that this has banded demand

demandUpperLimit

Decimal

When hasDemandLimit is true, this indicates the upper demand limit of this band. null means no upper limit

hasPropertyLimit

Boolean

true indicates that this has a limit based on a property

propertyUpperLimit

Decimal

When hasPropertyLimit is true, this indicates the upper limit of this band. null means no upper limit

prevUpperLimit

Integer

The upper limit of the previous rate band for this rate

applicabilityValue

String

When not null, this indicates the value of applicability property that qualifies for this rate.

calculationFactor

Decimal

A factor to be applied to the cost of the rate.

rateAmount

Decimal

Charge amount for this band

rateUnit

String

Possible values are:
COST_PER_UNIT - rate amount multiplied by the number of units
PERCENTAGE - percentage of a value (e.g. percentage of overall bill)

isCredit

Boolean

When true this band is a credit amount (reduces the bill)

Tariff Document

The TariffDocument object has the following data structure.

NameTypeDescription
tariffIdLongThe tariff ID associated with this document
documentIdLongUnique ID of the document associated with this tariff
documentSectionIdLongUnique ID of the section of the documentSection associated with this tariff
documentDocumentThe Document object associated with this tariff

Document

The Document object has the following data structure.

NameTypeDescription
documentIdLongUnique ID of this document
documentTitleStringTitle of this document
archiveUrlStringURL for Arcadia's archive of this document
sourceUrlStringURL for source document (if applicable)
sourceContentTypeStringType of source document, possible values are (???)
lseIdLongID of the LSE associated with this document
lseNameStringName of the LSE associated with this document
territoryIdLongID of the territory associated with this document
territoryNameStringName of the territory associated with this document
sequenceNumberIntegerThe position of this document in all documents for the LSE
parentDocumentIdLongThe documentId of the parent document of this document, if this document is part of a collection
sectionsList of DocumentSectionDocument sections, typically corresponding to specific tariffs
priorDocumentIdLongdocumentId of the document for the previous version of this tariff

Document Section

The DocumentSection object has the following data structure.

NameTypeDescription
documentSectionIdLongUnique ID of this document section
documentIdLongUnique ID of the document associated with this section
sectionHeadingStringTitle of the document section
sectionTypeStringPossible values are SERVICETARIFFCLIMATE_ZONE, or UTILITY_CLIMATE_ZONE
startPageIntegerThe page number of the document this section starts on
customerClassStringThe type of customer this document section concerns. Possible values are GENERAL, RESIDENTIAL, SPECIAL_USE or PROPOSED
revisedBooleanWhether this document has been revised from the original
priorDocumentSectionIdLongUnique ID of the document section for the previous version of this tariff

Tariff Property

Tariff properties represent metadata about a tariff. They might tell you things like, "What values are required to do a calculation with this tariff?" or "What do I have to do to be eligible for this tariff?" They're broken down into many types, the most important of which are listed below.

APPLICABILITIES

Tariff properties of type APPLICABILITY tell you whether or not a customer is eligible to receive service under a particular tariff. For example, a tariff that is only for electric vehicles might have the hasElectricVehicle applicability property.

RATE CRITERIA

Tariff properties of type RATE_CRITERIA represent things that you need to know to properly calculate the tariff. This includes obvious things like consumption and demand, but also things like dailyMedicalAllowance or isSmartRateCustomer.

For things other than consumption and demand, we usually set a reasonable default value so you don't have to answer questions about every single property before doing a calculation. If you want to set these values yourself, though, you can do that by running through the list of properties returned when you set populateProperties to true when getting a tariff.

DATA STRUCTURE

The TariffProperty object has the following data structure.

NameTypeFieldsDescription
keyNameStringMUnique name for this property
periodString If applicable the type of time of use. Possible values are "ON_PEAK""PARTIAL_PEAK""OFF_PEAK", and "CRITICAL_PEAK".
displayNameStringMThe display name of this property
keyspaceStringMTop-level categorization of the property hierarchy
familyStringMSecond level categorization of the property hierarchy, below keyspace
descriptionStringMA longer description of the tariff property. Good for further explanation as part of a customer "questionnaire"
dataTypeStringMThe data type of this property. Possible values are stringchoicebooleandatedecimalintegerformulademand
propertyTypesStringMThe category of property. Possible values are APPLICABILITYRATE_CRITERIABENEFITDATA_REPUTATIONSERVICE_TERMS
operatorString The mathematical operator associated with this property's value, where applicable.
propertyValueString If applicable the specific value of this property.
minValueString If applicable the minimum value of this property.
maxValueString If applicable the maximum value of this property.
choicesArray of Choices The possible choices for this array
formulaDetailString If this property is a FORMULA type, the formula details will be in this field.
isDefaultBoolean Whether the value of this Property is the default value.

Here's an example in JSON of a fully populated tariff, containing tariff rates and tariff rate bands:

{
	"tariffId":512,
	"masterTariffId":512,
	"priorTariffId":null,
	"lseId":2756,
	"lseName":"Georgia Power Co",
	"distributionLseId":null,
	"tariffCode":"R-17",
	"tariffName":"Residential Service",
	"tariffType":"DEFAULT",
	"customerClass":"RESIDENTIAL",
	"territoryId":3114,
	"effectiveDate":"2011-03-01T00:00:00.000-0800",
	"endDate":null,
	"isActive":true,
	"hasNetMetering":true,
	"minMonthlyConsumption":null,
	"maxMonthlyConsumption":null,
	"minMonthlyDemand":null,
	"maxMonthlyDemand":null,
	"billingPeriod":"MONTHLY",
	"properties":null,
	"timeZone":"US/Eastern",
	"currency":"USD",
	"rates":[
    {
       "tariffRateId":2734,
       "tariffId":512,
       "riderId":null,
       "tariffSequenceNumber":0,
       "rateGroupName":"Basic Service Charge",
       "rateName":"Basic Service Charge",
       "territory":null,
       "season":null,
       "timeOfUse":null,
       "chargeType":"FIXED_PRICE",
       "chargePeriod":"MONTHLY",
       "quantityKey":null,
       "applicabilityKey":null,
       "variableLimitKey":null,
       "rateBands":[
          {
             "tariffRateBandId":3258,
             "tariffRateId":2734,
             "rateSequenceNumber":1,
             "hasConsumptionLimit":false,
             "consumptionUpperLimit":null,
             "hasDemandLimit":false,
             "demandUpperLimit":null,
             "hasPropertyLimit":false,
             "propertyUpperLimit":null,
             "applicabilityValue":null,
             "calculationFactor":null,
             "rateAmount":.090000,
             "rateUnit":"COST_PER_UNIT",
             "isCredit":false
          }
       ]
    },
    {
       "tariffRateId":2735,
       "tariffId":512,
       "riderId":null,
       "tariffSequenceNumber":1,
       "rateGroupName":"Energy Charges",
       "rateName":"Winter Energy Charges",
       "territory":null,
       "season":{
          "seasonId":314,
          "lseId":2756,
          "seasonGroupId":3,
          "seasonName":"Winter",
          "seasonFromMonth":10,
          "seasonFromDay":1,
          "seasonToMonth":5,
          "seasonToDay":31
       },
       "timeOfUse":null,
       "chargeType":"CONSUMPTION_BASED",
       "chargePeriod":"MONTHLY",
       "quantityKey":null,
       "applicabilityKey":null,
       "variableLimitKey":null,
       "rateBands":[
          {
             "tariffRateBandId":3259,
             "tariffRateId":2735,
             "rateSequenceNumber":1,
             "hasConsumptionLimit":true,
             "consumptionUpperLimit":650.0,
             "hasDemandLimit":false,
             "demandUpperLimit":null,
             "hasPropertyLimit":false,
             "propertyUpperLimit":null,
             "applicabilityValue":null,
             "calculationFactor":null,
             "rateAmount":.050633,
             "rateUnit":"COST_PER_UNIT",
             "isCredit":false
          },
          {
             "tariffRateBandId":3260,
             "tariffRateId":2735,
             "rateSequenceNumber":2,
             "hasConsumptionLimit":true,
             "consumptionUpperLimit":1000.0,
             "hasDemandLimit":false,
             "demandUpperLimit":null,
             "hasPropertyLimit":false,
             "propertyUpperLimit":null,
             "applicabilityValue":null,
             "calculationFactor":null,
             "rateAmount":.043443,
             "rateUnit":"COST_PER_UNIT",
             "isCredit":false
          },
          {
             "tariffRateBandId":3261,
             "tariffRateId":2735,
             "rateSequenceNumber":3,
             "hasConsumptionLimit":true,
             "consumptionUpperLimit":null,
             "hasDemandLimit":false,
             "demandUpperLimit":null,
             "hasPropertyLimit":false,
             "propertyUpperLimit":null,
             "applicabilityValue":null,
             "calculationFactor":null,
             "rateAmount":.042647,
             "rateUnit":"COST_PER_UNIT",
             "isCredit":false
          }
       ]
    },
 ]
}