Free utility bill OCR
Upload an electricity, gas, water or phone bill and extract the account number, address, usage and amount due as structured data, free. It reads PDF bills, scans and phone photos from any provider, with no account needed. It's useful for proof of address and for tracking costs.
- Free
- No sign-up, no card
- Download as Excel, CSV or JSON
A utility bill shows a home address. Upload your own, or one you may share. We keep the first page and the result for 7 days to run and improve this tool, then delete them. The rest of your file is not stored. Privacy policy
Northfield Power
Electricity bill
- Account Number
- 1000 2345 678
- Customer Name
- Alex Sample
- Service Address
- 12 Sample Road, Sampletown
- Bill Date
- 2026-10-05
- Due Date
- 2026-10-26
- Total Amount Due
- 112.40
| Meter | Previous | Current | Units |
|---|---|---|---|
| E-44871 | 18,204 | 18,566 | 362 |
{
"account_number": "1000 2345 678", "customer_name": "Alex Sample", "service_address": "12 Sample Road, Sampletown", "bill_date": "2026-10-05"}Any layout, no template
It works out the fields from the page itself, so there's nothing to set up.
Scans and phone photos
Digital PDFs, scanned pages and photos all go through the same way.
Structured, not just text
Named fields and table rows you can download as Excel, CSV or JSON, not a wall of OCR text.
An API when you need it
The same data from your own code, as the sample call further down shows.
What the free utility bill extractor reads
- Provider: name, address, phone and tax number.
- Customer: account holder, account number, service address and billing address.
- Period: bill date, due date, and billing period start and end.
- Usage: meter number, previous and current readings, units used.
- Charges: previous balance, current charges, tax, late fee and total amount due.
Types of utility bill you can upload
- Electricity and power bills, including solar net metering statements.
- Natural gas and LPG bills.
- Water and sewerage bills, and council or municipal bills.
- Landline, mobile, broadband and internet bills.
- Combined bills that cover several services on one account.
Utility bills by region
Every country prints these differently, and many bills have an account reference that's unique to the provider. These are the terms to look for.
| Region | Common bills | Reference printed |
|---|---|---|
| Pakistan | K-Electric, LESCO, IESCO and MEPCO bills, SNGPL and SSGC gas bills | Reference number, consumer ID |
| India | Electricity bill, BSES, Tata Power, piped gas bill, water bill | Consumer number, CA number |
| UAE, Saudi Arabia | DEWA, ADDC, SEWA and SEC bills | Contract or account number, premise number |
| United Kingdom | Energy bill, water bill, council tax bill | Account number, MPAN, MPRN |
| United States, Canada | Electric, gas and water bills, hydro bill | Account number, service ID |
| Europe | Stromrechnung, facture d'électricité, factura de la luz | Vertragsnummer, PDL, CUPS |
| Australia | Energy bill, water rates notice | NMI, account number |
Using a utility bill as proof of address
KYC and lending teams often ask for a recent utility bill as proof of address. What they check is simple: the holder's name, the service address and the bill date, all of which are usually on page 1. A free try is enough to see those three. Teams reading them at volume can match the result against an application, as described under KYC onboarding. The extraction doesn't prove the bill is genuine.
Usage history and charge breakdowns often sit on later pages, and those need a free account. The utility bill field list covers all 55 fields.
Sample API call
This is how the same utility bill looks from your own code. wf_demo_utility_bills is a dummy workflow id and every value below is invented, so the call won't run as written. A real run reads every page and adds a confidence score and page position to each field.
curl -X POST "$DOCREFINERY_API/v1/workflows/wf_demo_utility_bills/run" \
-H "Authorization: Bearer $DOCREFINERY_API_KEY" \
-F "[email protected]"
# Take trace_id from the answer, then poll until status is "fulfilled"
curl "$DOCREFINERY_API/v1/runway/9f1c0a7e" \
-H "Authorization: Bearer $DOCREFINERY_API_KEY"{
"trace_id": "9f1c0a7e",
"status": "fulfilled",
"document_type": "utility_bills",
"result": {
"fields": [
{
"key": "account_number",
"alias": "Account Number",
"text": "1000 2345 678",
"field_confidence": 0.99,
"location": { "page": 1, "bbox": [0.08, 0.12, 0.46, 0.14] }
},
{
"key": "customer_name",
"alias": "Customer Name",
"text": "Alex Sample",
"field_confidence": 0.98,
"location": { "page": 1, "bbox": [0.08, 0.17, 0.46, 0.19] }
},
{
"key": "service_address",
"alias": "Service Address",
"text": "12 Sample Road, Sampletown",
"field_confidence": 0.97,
"location": { "page": 1, "bbox": [0.08, 0.22, 0.46, 0.24] }
},
{
"key": "meter_readings",
"alias": "Meter Readings",
"table": [
[
{ "key": "meter", "alias": "Meter", "text": "E-44871" },
{ "key": "previous", "alias": "Previous", "text": "18,204" },
{ "key": "current", "alias": "Current", "text": "18,566" },
{ "key": "units", "alias": "Units", "text": "362" }
]
]
}
],
"extraction_approval": "auto",
"low_confidence_fields": []
}
}Make it run on your own utility bill
- Create a free account.
- Upload one sample under Workflows, keep the fields you want and save. That gives you a real workflow id.
- Create an API key under Settings. Keys are switched on per account, so ask us if you don't see the option.
- Set
DOCREFINERY_APIandDOCREFINERY_API_KEYas in the quickstart, and swap in your id.
Free try or free account?
| Feature | Free try | Free account |
|---|---|---|
| Pages read | Page 1 | Every page |
| Allowance | 5 tries a day | 100 pages a month |
| File size | Up to 10 MB | Up to 100 MB |
| How it reads | Finds the fields on the page | Built-in utility bill fields, or your own workflow |
| Checking | Compare with your page | Confidence scores and page citations |
| Output | Fields on screen, download as Excel, CSV or JSON | Excel, CSV and JSON for every page, and API keys on request |
Common questions
Can I extract data from an electricity bill for free?
Yes. Upload the bill and the account, address, units and amount due come back as structured fields. You get 5 free tries a day with no account or card.
Does it work with my provider?
It isn't tied to a provider list. It reads what's on the page, so bills from K-Electric in Pakistan, BSES in India or DEWA in Dubai go through the same way. Check the figures against the bill.
Can it read a phone or internet bill?
Yes. Phone and broadband bills read the same way, and a phone bill is a built-in type in an account, with fields for plan, usage and charges.
Can I use this to verify proof of address?
It pulls out the name, address and date so you don't have to type them. It doesn't confirm that a bill is genuine, so your own checks still apply.
Related
- Utility billExtract meters, consumption, charges and service address from electricity, gas and water bills. An OCR API with scores and page box citations on values.
- ID card OCRFree ID card OCR for CNIC, Aadhaar, Emirates ID and national ID cards. Extract name, ID number and dates as structured data, with no account needed.
- Bank statement OCRFree bank statement OCR. Extract account details, balances and transactions from a PDF or scan as structured data, with no account or card needed.
- KYC and onboardingKYC document extraction for passports, ID cards, proofs of address and company records. Missing fields come back empty, never guessed. Not an ID check.
Try it on your own utility bill.
Free, with no sign-up and no card.