Block and Index Rates with Time of Use
Model block and index contracted rates with separate prices and block sizes for each time-of-use definition.
Model block and index contracted rates with separate prices and block sizes for each time-of-use definition.
Block and index rates with time-of-use pricing behave like standard block and index rates, but each time-of-use definition can have its own block sizes and prices.
Use this guide after you understand standard block and index rates. For the base structure, see Block and Index Rates.
How TOU block and index rates work
Block and index rates with time-of-use pricing are a type of third-party supply contract. These contracts behave like standard block and index rates, but with separate prices and block sizes for each time-of-use definition, such as Summer On-Peak.
When creating time-of-use block and index rates, make sure that all time-of-use definitions are included.
Create a rate for all time-of-use definitions in the time-of-use group. If you do not, there will be hours when your customer will not be charged. To get a list of all the time-of-use definitions in a time-of-use group, reference the Time of Use API endpoint.
The time-of-use definitions you use for your contracted rates do not have to match the time-of-use definitions used by the utility’s tariff.
Example rate structure
Here’s a sample call where there are two on-peak blocks and one off-peak block, in both Summer and Winter. For this, we set up four rates:
Summer On-Peak
- $0.05/kWh up to 10 kWh
- $0.06/kWh up to 20 kWh
- Index price above 20 kWh
Winter On-Peak
- $0.045/kWh up to 10 kWh
- $0.055/kWh up to 20 kWh
- Index price above 20 kWh
Summer Off-Peak
- $0.05/kWh up to 10 kWh
- Index price above 10 kWh
Winter Off-Peak
- $0.04/kWh up to 10 kWh
- Index price above 10 kWh
Use this rateInputs snippet in the on-demand calculation request. This is not the full request.
{
"rateInputs": [{
"rateName": "Summer On-Peak Block and Index Rate",
"tariffBookRateName": "Summer On-Peak Block and Index Rate",
"chargeClass": "CONTRACTED",
"chargePeriod": "HOURLY",
"transactionType": "BUY",
"variableRateKey": "hourlyPricingRealTimePJM",
"variableRateSubKey": "51291",
"timeOfUse": {
"touId": 628
},
"rateBands": [{
"hasConsumptionLimit": true,
"consumptionUpperLimit": 10,
"rateAmount": "0.05",
"rateUnit": "BLOCK",
"isCredit": false
}, {
"hasConsumptionLimit": true,
"consumptionUpperLimit": 20,
"rateAmount": "0.06",
"rateUnit": "BLOCK",
"isCredit": false
}, {
"hasConsumptionLimit": true,
"rateAmount": null,
"rateUnit": "COST_PER_UNIT",
"isCredit": false
}]
}, {
"rateName": "Winter On-Peak Block and Index Rate",
"tariffBookRateName": "Winter On-Peak Block and Index Rate",
"chargeClass":"CONTRACTED",
"chargeType": "CONSUMPTION_BASED",
"chargePeriod": "HOURLY",
"transactionType": "BUY",
"variableRateKey": "hourlyPricingRealTimePJM",
"variableRateSubKey": "51291",
"timeOfUse": {
"touId": 629
},
"rateBands": [{
"hasConsumptionLimit": true,
"consumptionUpperLimit": 10,
"rateAmount": "0.045",
"rateUnit": "BLOCK",
"isCredit": false
}, {
"hasConsumptionLimit": true,
"consumptionUpperLimit": 20,
"rateAmount": "0.055",
"rateUnit": "BLOCK",
"isCredit": false
}, {
"hasConsumptionLimit": true,
"rateAmount": null,
"rateUnit": "COST_PER_UNIT",
"isCredit": false
}]
}, {
"rateName": "Summer Off-Peak Block and Index Rate",
"tariffBookRateName": "Summer Off-Peak Block and Index Rate",
"chargeClass":"CONTRACTED",
"chargeType": "CONSUMPTION_BASED",
"chargePeriod": "HOURLY",
"transactionType": "BUY",
"variableRateKey": "hourlyPricingRealTimePJM",
"variableRateSubKey": "51291",
"timeOfUse": {
"touId": 636
},
"rateBands": [{
"hasConsumptionLimit": true,
"consumptionUpperLimit": 10,
"rateAmount": "0.05",
"rateUnit": "BLOCK",
"isCredit": false
}, {
"hasConsumptionLimit": true,
"rateAmount": null,
"rateUnit": "COST_PER_UNIT",
"isCredit": false
}]
}, {
"rateName": "Winter Off-Peak Block and Index Rate",
"tariffBookRateName": "Winter Off-Peak Block and Index Rate",
"chargeClass":"CONTRACTED",
"chargeType": "CONSUMPTION_BASED",
"chargePeriod": "HOURLY",
"transactionType": "BUY",
"variableRateKey": "hourlyPricingRealTimePJM",
"variableRateSubKey": "51291",
"timeOfUse": {
"touId": 637
},
"rateBands": [{
"hasConsumptionLimit": true,
"consumptionUpperLimit": 10,
"rateAmount": "0.04",
"rateUnit": "BLOCK",
"isCredit": false
}, {
"hasConsumptionLimit": true,
"rateAmount": null,
"rateUnit": "COST_PER_UNIT",
"isCredit": false
}]
}]
} In this request, note:
- Each TOU definition has its own contracted rate object.
- Each rate object uses the same
variableRateKeyandvariableRateSubKeybecause they all fall back to the same market index and delivery point. - Each rate object includes a
timeOfUse.touIdto identify the TOU period it applies to. - The final band for each rate uses
rateUnit: "COST_PER_UNIT"andrateAmount: nullto fall back to the market index.
Next steps
Updated about 5 hours ago
