Overview
Electricity is a first-class service type on Offergrid. Rather than a free-form JSON blob, electricity offers carry a single, structuredelectricity object grouped into four sections — rate, term,
plan, and disclosures — that models a deregulated retail electricity
plan the way a Texas Electricity Facts Label
(EFL) does.
This page is the narrative guide. The field-by-field reference is published in
the API Reference as the
ElectricityContractWrite, ElectricityContract, and ElectricityCharge
schema components.Identifying an electricity offer
Every offer response carries a top-levelserviceType discriminator that
mirrors category — check either field:
electricity object.
Other service types (internet, other) get their own top-level key.
The electricity contract
rate — how customers are billed
rate — how customers are billed
type—fixed,variable, orindexed.charges— the ordered provider (REP) + utility (TDU) charge lines that define pricing. This is the source of truth — see The charge breakdown.avgPriceAt1000Kwh— the EFL “average price at 1000 kWh” comparison number, in ¢/kWh (all-in).estimatedMonthlyAt1000Kwh— read-only dollar headline, derived fromcharges(ignored on write).
term — contract length and cancellation
term — contract length and cancellation
length—no_contract,month_to_month,months_12,months_24, ormonths_36.earlyTerminationFee— cancellation fee in dollars.earlyTerminationFeeNotes— free-text detail, e.g. “Prorated by months remaining”.
plan — green energy and perks
plan — green energy and perks
renewablePercentage— 0–100.freeNightsWeekends— boolean.noDeposit— boolean.
disclosures — Texas PUCT regulatory documents
disclosures — Texas PUCT regulatory documents
electricityFactsLabel— the EFL:url,versionId, and the three benchmark prices (avgPrice500kwh,avgPrice1000kwh,avgPrice2000kwh) plusrenewablePercent.puctCertNumber/puctCertifiedName— your PUCT REP certification.termsOfServiceUrl/yourRightsUrl— the Terms of Service and Your Rights as a Customer documents.
Creating an electricity offer
serviceType: "electricity", the
projected electricity object (now including the derived
rate.estimatedMonthlyAt1000Kwh), and the standard offer fields.
Updating an electricity offer
Send only the sections you’re changing. Theelectricity object is merged
onto the stored offer, so unrelated data is preserved:
PATCH /provider/offers/{id}
The charge breakdown (rate.charges)
A deregulated retail electricity bill has two legally distinct parts (Texas PUCT
Rule 25.475 / the EFL): charges set by the provider (REP) and pass-through
delivery charges set by the local utility (TDU, e.g. Oncor). rate.charges
is an ordered list of charge lines that captures both, plus usage-tiered charges
and threshold bill credits.
Each charge line:
Usage bands:
perKwhbills only the kWh inside the band —"12¢ for the first 500 kWh"is{ "minUsageKwh": 0, "maxUsageKwh": 500 };"15¢ above 500 kWh"is{ "minUsageKwh": 500 }.fixed/creditapplies only when total usage falls inside the band — e.g."$125 credit if usage ≥ 1000 kWh"is a credit with{ "minUsageKwh": 1000 }.
Bill estimate math
Offergrid foldscharges into an itemized bill at any usage level. Line amounts
are rounded to cents individually; subtotals and totals are sums of the rounded
lines, so a breakdown always reconciles. Worked example at 1000 kWh for the
create payload above:
- Provider subtotal = $125.00
- Utility subtotal = $46.39
- Total = $171.39
- Effective all-in rate = 171.39 × 100 ÷ 1000 = 17.139 ¢/kWh (the EFL metric)
rate.estimatedMonthlyAt1000Kwh in the response is this total at 1000 kWh.
Publishing requirements
POST /provider/offers/{id}/publish validates the offer. For electricity, the
one contract-specific rule is:
rate.charges must include at least one provider perKwh energy charge.400 with structured validationErrors pointing
at electricityDetails.charges. General offer requirements — name, SKU,
description, at least one market, etc. — also apply.
Derived and read-only fields
rate.estimatedMonthlyAt1000Kwhis computed fromrate.charges. It is output-only — setting it on a write has no effect.- Offergrid mirrors this figure into the generic
monthlyPricecolumn so electricity offers sort and filter alongside fixed-price offers.
Storage
Electricity offer data lives in a dedicated typed relation — there is no free-form JSON blob involved.charges is the only accepted rate
representation in the electricity contract; you never have to branch on a
flat legacy rate format. Read everything electricity-related from
.electricity.
Quick reference
Next steps
Creating Offers
The general offer create/publish flow
Service Categories
Fields for internet, electricity, and the other category
API Integration
Automate offer sync and order processing
API Reference
The
ElectricityContract schema, field by field