calculate route when you want to calculate from inline home context without creating a persisted home first.
For quote-stage workflows that have selected a rate plan but should not create a persistent home yet, use the no-home rate-plan period bill route. It calculates tariff bill cost from the selected ratePlans[].id and interval import/export arrays. Because no home ZIP code is attached to that request, carbon and grid-services revenue are omitted.
Endpoints
| Use case | Endpoint | When to use it |
|---|---|---|
| Custom-period impact calculation | POST /v1/homes/{homeId}/calculate/impact | You have a billing period or scenario window that does not line up exactly with a calendar month. |
| Inline-context impact calculation | POST /v1/calculate/impact | You have rate plan and ZIP code context, but do not want to create a home before calculating. |
| Quote-stage rate-plan bill | POST /v1/homes/bill/period/rateplan/{ratePlanId} | You have a selected rate plan and complete calendar-month or calendar-year interval arrays, but no persistent home yet. |
{id}. In the examples below, {homeId} means the same value: the ID of the home you are calculating impacts for.
Prerequisites
Home-backed impact calculations require the home to have a storedutilityId and ratePlanId.
- Set these during API-based onboarding.
- Use Update Home if you need to change them later.
- When a request asks for
ratePlanId, send the selectedratePlans[].idfromPOST /v1/utility/get. The companionratePlans[].rateIDis the semantic tariff reference, not the value to send asratePlanId.
Usage Data
Both impact-calculation endpoints expect daily arrays of 15-minute interval values.- Each day must contain exactly 96 numeric values.
usageis import consumption in kWh.exportis optional solar or battery export in kWh, using the same daily shape asusage.- If
exportis provided, it must contain the same number of days asusage.
Period Bills
Use the period endpoint when the analysis window is a customer billing period or scenario window.startDate and endDate as YYYY-MM-DD or ISO 8601 timestamps. The usage array must include one daily array for each date from startDate up to, but not including, endDate. For example, 2025-01-07 through 2025-02-08 requires 32 daily arrays.
Inline Context
Use the direct calculate endpoint when you can provide the rate plan and ZIP code in the request body instead of referencing an onboarded home.useDefaultUsage to true to generate usage from Palmetto baseline data using the supplied ZIP code and optional solarCapacityKw.
Quote-Stage Rate-Plan Bills
Use the rate-plan period endpoint when the proposal or quote workflow has selected a tariff but should not create a home record. Quote-stage calculations require complete calendar months or complete calendar years:startDate must be the first day of a month, and endDate must be the first day of a later month.
ratePlanId as the selected ratePlans[].id from POST /v1/utility/get. Do not send ratePlans[].rateID; that field is the semantic tariff reference for display and troubleshooting.
billTotal, startDate, endDate, optional debugInfo, and exportCompensationCredit when export compensation applies or is explicitly reported as zero.
Response
Home-backed period calculations return impact fields for the requested window:billTotal: Total tariff bill cost in local currency.exportCompensationCredit: Export compensation credit applied under NEM/NBT export pricing, when available.gridServicesRev: Estimated grid-services revenue in local currency, when available from the home’s meter, ZIP code, and price-signal context.CO2e: Carbon dioxide equivalent emissions in pounds of marginal greenhouse gas, when available from the home’s ZIP code and carbon-signal context.
Notes
Billing period matching: Queries that do not precisely match a customer’s billing period are still useful for relative bill and scenario calculations, but they will not exactly match the customer’s utility bill total. Scenario comparison: To show the value of a shift, run the same endpoint twice: once with the baseline usage profile and once with the shifted or optimized profile. ComparebillTotal, gridServicesRev, and CO2e across the two responses.
Solar export: Include export when the customer has solar or battery exports that should offset import usage under the selected tariff.