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.

Upload your utility billTake a photo or pick a PDF, up to 10 MB
  • 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

Sample. Every value is invented.

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
MeterPreviousCurrentUnits
E-4487118,20418,566362
{
  "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.

Utility bill names and reference numbers
RegionCommon billsReference printed
PakistanK-Electric, LESCO, IESCO and MEPCO bills, SNGPL and SSGC gas billsReference number, consumer ID
IndiaElectricity bill, BSES, Tata Power, piped gas bill, water billConsumer number, CA number
UAE, Saudi ArabiaDEWA, ADDC, SEWA and SEC billsContract or account number, premise number
United KingdomEnergy bill, water bill, council tax billAccount number, MPAN, MPRN
United States, CanadaElectric, gas and water bills, hydro billAccount number, service ID
EuropeStromrechnung, facture d'électricité, factura de la luzVertragsnummer, PDL, CUPS
AustraliaEnergy bill, water rates noticeNMI, 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.

Run a workflow, then read the result
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"
Response (invented values)
{
  "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

  1. Create a free account.
  2. Upload one sample under Workflows, keep the fields you want and save. That gives you a real workflow id.
  3. Create an API key under Settings. Keys are switched on per account, so ask us if you don't see the option.
  4. Set DOCREFINERY_API and DOCREFINERY_API_KEY as in the quickstart, and swap in your id.

Free try or free account?

Free try and free account, compared
FeatureFree tryFree account
Pages readPage 1Every page
Allowance5 tries a day100 pages a month
File sizeUp to 10 MBUp to 100 MB
How it readsFinds the fields on the pageBuilt-in utility bill fields, or your own workflow
CheckingCompare with your pageConfidence scores and page citations
OutputFields on screen, download as Excel, CSV or JSONExcel, 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

Try it on your own utility bill.

Free, with no sign-up and no card.