Skip to main content
Extract structured data from an energy bill in three steps. You’ll have clean JSON with usage, charges, tariff rates, and 30+ other fields in under 60 seconds.
Free tier: 50 API credits, no credit card required. Each credit processes one bill page.

1. Get your API key

Sign up at app.termina.io to generate your free API key instantly. No credit card, no approval process. Your key will look like this:
Keep your API key private. Do not commit it to version control or expose it in client-side code.

2. Send your first bill

POST an energy bill PDF to the extract endpoint. The API accepts electricity, gas, and LPG bills from any retailer across Australia, NZ, UK, USA, and Canada.

Request details

The endpoint automatically detects the energy type (electricity, gas, or LPG), the retailer, and the bill layout. No configuration or parameters needed beyond the file itself.

3. Get structured JSON back

The API returns structured data with 30+ fields organised into clear sections. Here’s an example response from an electricity bill:
Example response

Response structure at a glance

What to do with the data

Now that you’ve extracted your first bill, here are common next steps:

Process bills across multiple sites

Loop through bills for every location and build a consolidated energy cost view.

Feed data into ESG reporting

Use the kWh and MJ usage fields to calculate Scope 2 emissions automatically.

Build it into your own app

Embed the extract endpoint in your product to give your users energy bill intelligence.

Explore the full API reference

See all request parameters, response fields, error codes, and rate limits.

Accessing your data in the dashboard

Every bill you process through the API is also available in your Termina dashboard. You can:
  • Search and filter across all processed bills by site, retailer, date, or amount
  • Export to CSV, XLSX, or PDF for reporting, reconciliation, or sharing with your team
  • Track usage trends and cost anomalies over time across all your sites
  • Invite team members with role-based permissions so finance, procurement, and sustainability teams can all access the data
Not a developer? You can also upload bills directly through the dashboard - same OCR extraction engine, just drag, drop, and export.

Frequently asked questions

The endpoint accepts energy bills as PDF, JPEG, PNG, or TIFF files sent as multipart/form-data under the file field. Both digital PDFs from retailer portals and scanned or photographed paper bills are supported.
Most bills are processed in under 3 seconds. Complex multi-page bills or low-quality scans may take slightly longer. The API responds synchronously — no polling or webhooks required.
Electricity, gas, and LPG bills. The extraction engine covers network charges, retail charges, environmental levies, market charges, and demand charges — with tariff rate steps and time-of-use breakdowns where present on the bill.
Yes. Where time-of-use pricing is present on the bill, Termina extracts peak, off-peak, and shoulder rates and consumption separately — including the tariff rate steps and the kWh consumed in each period.
The energy_data field returns null and validation_issues describes what went wrong. Partial extractions return the data that was successfully read along with warnings on uncertain fields — so you always know what you can trust.
Every extraction runs built-in validation that cross-checks the extracted charges against the bill total, verifies billing period dates are consistent, flags unusually high or low usage, and checks that tariff rates fall within expected ranges for the retailer and region. Issues are returned in the validation_issues array.
Include your API key in the X-API-Key request header. You can generate a free key instantly at app.termina.io — no credit card required.
Free tier accounts can process up to 50 bills total. Pro accounts have configurable rate limits based on your plan. The API returns a 429 status code with a Retry-After header if you exceed your limit.