HomeGuidesRecipesAPI ReferenceChangelog
Log In
API Reference

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.

NameTypeFields Description
tariffIdLongMUnique Arcadia ID (primary key) for this tariff
masterTariffIdLongMUnique Arcadia ID that persists across all revisions of this tariff
tariffCodeStringMShortcode that the LSE uses as an alternate name for the tariff
tariffNameStringMName of the tariff as used by the LSE
tariffBookNameStringEName of the tariff as it appears in the tariff document
lseIdLongMID of load serving entity this tariff belongs to
lseNameStringMName of the load-serving entity
lseCodeStringEAbbreviated name of the load-serving entity
serviceTypeStringMType of service for the tariff. Current values include ELECTRICITY (grid power), SOLAR_PV (for a Solar PPA, Lease or similar) and GAS (Natural Gas)
priorTariffIdLong Unique Arcadia ID that identifies the prior revision of the tariffId above
distributionLseIdLong 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.
tariffTypeString Possible values are:
DEFAULT - tariff that is automatically given to this service class
ALTERNATE - 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
customerClassStringPossible 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)
customerCountIntegerNumber of customers that are on this master tariff
customerLikelihoodDecimalThe likelihood that a customer is on this tariff of all the tariffs in the search results. Only populated when getting more than one tariff.
customerCountSourceStringEWhere we got the customer count numbers from. Typically FERC (form 1 filings) or Arcadia (our own estimates).
territoryIdStringID 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)
effectiveDateDateTimeDate on which the tariff was or will be effective
endDateDateTimeDate on which this tariff is no longer effective. Can be null which means end date is not known or tariff is open-ended
closedDateDateEDate 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.
effectiveOnRuleStringProperty of the tariff determining when the tariff takes effect. Possible values: TARIFF_EFFECTIVE_DATEBILLING_PERIOD_START
timeZoneStringIf populated (usually is), it's the timezone that this tariffs dates and times refer to
billingPeriodStringHow frequently bills are generated.
currencyString ISO Currency code that the rates for this tariff refer to (e.g. USD for USA Dollar)
chargeTypesStringA comma-separated list of all the different ChargeType rates on this tariff (see field on TariffRate below).
chargePeriodStringThe most fine-grained period for which charges are calculated.
minMonthlyConsumptionDecimalEWhen applicable, the minimum monthly consumption allowed to be eligible for this tariff.
maxMonthlyConsumptionDecimalEWhen applicable, the maximum monthly consumption allowed to be eligible for this tariff.
minMonthlyDemandDecimalEWhen applicable, the minimum monthly demand allowed to be eligible for this tariff.
maxMonthlyDemandDecimalEWhen applicable, the maximum monthly demand allowed to be eligible for this tariff.
hasTimeOfUseRatesBooleanIndicates whether this tariff contains one or more Time of Use Rate.
hasTieredRatesBooleanIndicates whether this tariff contains one or more Tiered Rate.
hasContractedRatesBooleanIndicates whether this tariff contains one or more Rate that can be contracted (sometimes called by-passable or associated with a price to compare).
hasTariffApplicabilityBooleanEIndicates that this tariff has additional eligibility criteria, as specified in the TariffProperty collection (below).
hasRateApplicabilityBooleanIndicates 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.
hasNetMeteringBooleanEIndicates whether this tariff contains one or more net metered rates. |
| privacy | String | E | Privacy status of the tariff. Possible values are PUBLICUNLISTED or PRIVATE.
propertiesList of TariffPropertyThe properties on this tariff. See below for the TariffProperty structure.
ratesList of TariffRateThe rates for this tariff. See below for TariffRate structure
documentsList of TariffDocumentThe documents for this tariff. See below for TariffDocument structure

Tariff Rate

The TariffRate object has the following data structure.

NameTypeFields Description
tariffRateIdLongMUnique Arcadia ID (primary key) for each tariff rate
tariffIdLongMAssociates the rate with a tariff (foreign key)
riderTariffIdLongETariff ID of the rider attached to this tariff version. null otherwise
riderIdLongMMaster Tariff ID of the rider linked to this tariff rate.
tariffSequenceNumberIntegerMSequence of this rate in the tariff, for display purposes only (e.g. this is the order on the bill)
tariffBookSequenceNumberIntegerESequence of this rate in the tariff source document, if it differs from tariffSequenceNumber
rateGroupNameStringMName of the group this rate belongs to
tariffBookRateGroupNameStringEName of the group this rate belongs to in the tariff source document, if it differs from rateGroupName
rateNameStringMName of this rate. Can be null (in which case use the group name)
tariffBookRateNameStringEName of this rate in the tariff source document, if it differs from rateName
fromDateTimeDateTime If populated, this indicates the rate's effective date is not the same as that of its tariff
toDateTimeDateTime If populated, this indicates the rates end date is not the same as that of its tariff
territoryTerritory Only populated when this rate applies to a different region than the whole tariff (e.g. California Baseline Regions). This how-to has more.
seasonSeason The season this rate applies to. Only used for seasonal rates (null otherwise)
timeOfUseTimeOfUse The time period this rate applies to. Only used for TOU rates (null otherwise)
chargeTypeString 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
chargeClassStringA 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)
chargePeriodStringIndicates 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
transactionTypeStringEIndicates 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).
quantityKeyStringWhen 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)
applicabilityKeyStringWhen 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)
variableLimitKeyStringWhen 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)
variableRateKeyStringWhen 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 )
variableFactorKeyStringWhen 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)
rateBandsList of TariffRateBandSee the data definition below

Tariff Rate Band

The TariffRateBand object has the following data structure.

NameTypeDescription
tariffRateBandIdLongUnique Arcadia ID (primary key) for each Band
tariffRateIdLongID of the rate this band belongs to (foreign key)
rateSequenceNumberIntegerThis bands position in the bands for its rate
hasConsumptionLimitBooleantrue indicates that this has banded consumption
consumptionUpperLimitDecimalWhen hasConsumptionLimit is true, this indicates the upper consumption limit of this band. null means no upper limit
hasDemandLimitBooleantrue indicates that this has banded demand
demandUpperLimitDecimalWhen hasDemandLimit is true, this indicates the upper demand limit of this band. null means no upper limit
hasPropertyLimitBooleantrue indicates that this has a limit based on a property
propertyUpperLimitDecimalWhen hasPropertyLimit is true, this indicates the upper limit of this band. null means no upper limit
prevUpperLimitIntegerThe upper limit of the previous rate band for this rate
applicabilityValueStringWhen not null, this indicates the value of applicability property that qualifies for this rate.
calculationFactorDecimalA factor to be applied to the cost of the rate.
rateAmountDecimalCharge amount for this band
rateUnitStringPossible values are:
COST_PER_UNIT - rate amount multiplied by the number of units
PERCENTAGE - percentage of a value (e.g. percentage of overall bill)
isCreditBooleanWhen 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
          }
       ]
    },
 ]
}