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 | 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 |
priorTariffId | Long |
| Unique Arcadia ID that identifies the prior revision of the |
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: |
customerClass | String | Possible values are: | |
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 | |
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 |
effectiveOnRule | String | Property of the tariff determining when the tariff takes effect. Possible values: | |
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. | |
chargeTypes | String | A comma-separated list of all the different | |
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 |
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 | |
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 |
properties | List of TariffProperty | The properties on this tariff. See below for the | |
rates | List of TariffRate | The rates for this tariff. See below for | |
documents | List of TariffDocument | The documents for this tariff. See below for |
Tariff Rate
The TariffRate
object has the following data structure.
Name | Type | 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. |
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 |
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 ( |
timeOfUse | TimeOfUse |
| The time period this rate applies to. Only used for TOU rates ( |
chargeType | String |
| Possible values are: |
chargeClass | String | A comma-separated string that indicates what class(es) of charges this rate is for. Values include: | |
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: | |
transactionType | String | E | Indicates whether this rate is |
quantityKey | String | When not | |
applicabilityKey | String | When not | |
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 | |
variableFactorKey | String | When not | |
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 |
|
consumptionUpperLimit | Decimal | When |
hasDemandLimit | Boolean |
|
demandUpperLimit | Decimal | When |
hasPropertyLimit | Boolean |
|
propertyUpperLimit | Decimal | When |
prevUpperLimit | Integer | The upper limit of the previous rate band for this rate |
applicabilityValue | String | When not |
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: |
isCredit | Boolean | When true this band is a credit amount (reduces the bill) |
Tariff Document
The TariffDocument
object has the following data structure.
Name | Type | Description |
---|---|---|
tariffId | Long | The tariff ID associated with this document |
documentId | Long | Unique ID of the document associated with this tariff |
documentSectionId | Long | Unique ID of the section of the documentSection associated with this tariff |
document | Document | The Document object associated with this tariff |
Document
The Document
object has the following data structure.
Name | Type | Description |
---|---|---|
documentId | Long | Unique ID of this document |
documentTitle | String | Title of this document |
archiveUrl | String | URL for Arcadia's archive of this document |
sourceUrl | String | URL for source document (if applicable) |
sourceContentType | String | Type of source document, possible values are (???) |
lseId | Long | ID of the LSE associated with this document |
lseName | String | Name of the LSE associated with this document |
territoryId | Long | ID of the territory associated with this document |
territoryName | String | Name of the territory associated with this document |
sequenceNumber | Integer | The position of this document in all documents for the LSE |
parentDocumentId | Long | The documentId of the parent document of this document, if this document is part of a collection |
sections | List of DocumentSection | Document sections, typically corresponding to specific tariffs |
priorDocumentId | Long | documentId of the document for the previous version of this tariff |
Document Section
The DocumentSection
object has the following data structure.
Name | Type | Description |
---|---|---|
documentSectionId | Long | Unique ID of this document section |
documentId | Long | Unique ID of the document associated with this section |
sectionHeading | String | Title of the document section |
sectionType | String | Possible values are SERVICE , TARIFF , CLIMATE_ZONE , or UTILITY_CLIMATE_ZONE |
startPage | Integer | The page number of the document this section starts on |
customerClass | String | The type of customer this document section concerns. Possible values are GENERAL, RESIDENTIAL, SPECIAL_USE or PROPOSED |
revised | Boolean | Whether this document has been revised from the original |
priorDocumentSectionId | Long | Unique 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.
Name | Type | Fields | Description |
---|---|---|---|
keyName | String | M | Unique name for this property |
period | String | If applicable the type of time of use. Possible values are "ON_PEAK" , "PARTIAL_PEAK" , "OFF_PEAK" , and "CRITICAL_PEAK" . | |
displayName | String | M | The display name of this property |
keyspace | String | M | Top-level categorization of the property hierarchy |
family | String | M | Second level categorization of the property hierarchy, below keyspace |
description | String | M | A longer description of the tariff property. Good for further explanation as part of a customer "questionnaire" |
dataType | String | M | The data type of this property. Possible values are string , choice , boolean , date , decimal , integer , formula , demand |
propertyTypes | String | M | The category of property. Possible values are APPLICABILITY , RATE_CRITERIA , BENEFIT , DATA_REPUTATION , SERVICE_TERMS |
operator | String | The mathematical operator associated with this property's value, where applicable. | |
propertyValue | String | If applicable the specific value of this property. | |
minValue | String | If applicable the minimum value of this property. | |
maxValue | String | If applicable the maximum value of this property. | |
choices | Array of Choices | The possible choices for this array | |
formulaDetail | String | If this property is a FORMULA type, the formula details will be in this field. | |
isDefault | Boolean | 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
}
]
},
]
}