/v1/utility/get and pass that returned ratePlans[].id as ratePlanId. This page is the deeper reference for understanding the semantic structure behind a normalized rate ID.
In /v1/utility/get:
- Use
ratePlans[].idasratePlanIdin other API requests. - Use
ratePlans[].rateIDwhen you want the semantic normalized tariff identifier described on this page.
Rate ID Schema by Sector
Residential plans use this 13-segment format:C), industrial (I), and agricultural (A) plans use this extended format:
Residential Segment Breakdown
STRUCTURE_FLAGS Character Map
The STRUCTURE_FLAGS segment is six characters long:
EQUIPMENT_FLAGS Character Map
For residential plans, the EQUIPMENT_FLAGS segment is a six-character applicability block:
Example Breakdown
For this example:USA-CA-14328-14328-R: U.S. residential plan for utility14328TNNNNN: tiered/TOU-style structure, no demand charge, no export program, no medical baseline, no low-income flag, no demand-response flagN????E: no rooftop-solar/export requirement, unknown equipment flags, dwelling typeEB4: climate or baseline region code01012025: effective start date of January 1, 2025????: unknown vintage year????????: unknown enrollment close date????????: unknown effective end dateBES: sanitized name code
Notes
- Date segments use UTC formatting in
MMDDYYYY. - Unknown date segments are intentionally serialized as
????????. - Related vintages of the same tariff often differ only in the date segments.
Non-Residential Segment Breakdown
For commercial (C), industrial (I), and agricultural (A) plans, the residential EQUIPMENT_FLAGS block is replaced by dedicated eligibility segments that capture the main splitters used in non-residential tariffs.
In the non-residential shape:
Rkeeps the residential format shown above.C,I, andAuse the extended non-residential format.NAME_CODEremains tariff-family oriented and should not carry phase, voltage, demand, metering, or usage variants that already have dedicated segments.
Non-Residential Enums
PHASE
VOLTAGE_CLASS
The RateID uses normalized voltage classes for stability. Exact legal voltage thresholds should remain available in the underlying tariff object.
DEMAND_UNIT
METERING
The
METERING field is meant to capture eligibility conditions such as demand-metered service, energy-only or non-demand service, single-meter service, or interval or IDR requirements.
Threshold Encoding
DEMAND_MIN, DEMAND_MAX, and USAGE_MAX use this five-character format:
USAGE_MIN uses this six-character format so the usage pair shares one basis code:
Threshold Fields
exp: power-of-10 exponentstrictness:Ifor inclusive andSfor strictddd: three-digit mantissa
Threshold Interpretation
- In a
MINfield:Imeans>=Smeans>
- In a
MAXfield:Imeans<=Smeans<
0S020inDEMAND_MINmeans> 201I100inDEMAND_MINmeans>= 1,0002I250inDEMAND_MAXmeans<= 25,000
I or S depending on whether the tariff rule is inclusive or strict:
20->0I020or0S0201,000->1I100or1S10012,500->2I125or2S125250,000->3I250or3S250
DEMAND_MIN,DEMAND_MAX,USAGE_MAX->?????USAGE_MIN->??????
Usage Basis Codes
Examples:
M2S125inUSAGE_MINmeans monthly> 12,500 kWhR2I150inUSAGE_MINmeans rolling-12-month>= 15,000 kWh
Non-Residential Examples
Example 1:- commercial tariff
- single-phase service
- primary voltage class
- demand eligibility from
>= 20 kWto< 1,000 kW - demand-metered service
- monthly usage from
> 12,500 kWhto<= 25,000 kWh
- industrial tariff
- single-phase or three-phase service
- secondary voltage class
- demand eligibility of
>= 250,000 kVA - no encoded maximum demand threshold
- energy-only or non-demand metering requirement
- rolling-12-month usage threshold of
> 15,000 kWh
