Get data out of
your utility bills.
Learn which fields to capture, how bill identifiers differ, and which checks catch missing or misread data.
Read the guidesField reference| Period | Usage (kWh) | Read type |
|---|---|---|
| Jul 2024 | 41,200 | actual |
| Aug 2024 | 44,800 | actual |
| Sep 2024 | 38,600 | actual |
| Oct 2024 | 29,400 | actual |
| Nov 2024 | 24,100 | actual |
| Dec 2024 | 23,700 | actual |
| Jan 2025 | 25,900 | actual |
| Feb 2025 | 18,900 | estimated |
| Mar 2025 | 33,600 | true-up |
| Apr 2025 | 28,500 | actual |
| May 2025 | 31,200 | actual |
| Jun 2025 | 43,900 | actual |
| Jul 2025 | 46,300 | actual |
February was estimated. March includes the correction after an actual read. Treating both entries as ordinary monthly usage would create a false dip and spike.
What a printed line becomes
A useful extraction does more than copy text. It separates dates, keeps units beside quantities, normalizes labels, and preserves values needed for review.
ACCOUNT NUMBER 6512 4400 0034 1 SERVICE ADDRESS 410 W 34TH ST METER # E-88213041 SERVICE PERIOD Jun 14 - Jul 15 RATE SC 9 RATE I TOTAL USED 46,300 KWH READING ACTUAL CURRENT CHARGES $8,214.66 PREVIOUS BALANCE $7,905.10 TOTAL DUE $16,119.76
{ "account_number": "651244000341", "service_address": "410 W 34th St", "meter_number": "E-88213041", "service_period_start": "2025-06-14", "service_period_end": "2025-07-15", "rate_schedule": "SC 9 Rate I", "usage_quantity": 46300, "usage_unit": "kWh", "read_type": "actual", "current_charges": 8214.66, "prior_balance": 7905.10, "total_amount_due": 16119.76 }
The service period becomes separate start and end dates. Usage becomes a number plus a unit. Labels such as “READING” and “TOTAL USED” become consistent field names, while the printed values are preserved.
A working minimum schema
Account number, total due, and usage are enough for a payment record, but not for reliable analysis. These 15 fields form a practical starting point. Use one row per meter, commodity, and service period so multi-meter bills remain usable.
| Field | Group | Why it matters |
|---|---|---|
| account_number | Identity | Store as text to preserve leading zeros and dashes. |
| meter_number | Identity | Serial on the physical device. Changes when the meter is swapped. |
| point_of_delivery_id | Identity | Service Agreement ID, ESI ID, POD ID, or another location-level identifier. |
| rate_schedule | Identity | Tariff code as printed. Useful when cost changes but usage does not. |
| commodity | Identity | electric, natural_gas, water, sewer, steam. |
| service_period_start | Dates | First day covered by the usage entry. Do not substitute the bill date. |
| service_period_end | Dates | Last day covered, stored as an ISO 8601 date. |
| read_type | Dates | Actual or estimated. Estimates can distort month-to-month comparisons. |
| usage_quantity | Usage | Pair every quantity with its unit in the same row. |
| usage_unit | Usage | kWh, therms, CCF, MCF, gal, kGal. Convert in the query layer, not on ingest. |
| demand_quantity | Usage | Commercial electric demand, usually in kW or kVA. |
| current_charges | Money | Charges for the current service period. |
| supply_charges | Money | Generation, energy supply, or basic service charges. |
| delivery_charges | Money | Distribution, transmission, and related delivery charges. |
| total_amount_due | Money | Amount payable, which may include a prior balance, fees, or credits. |
Compute days_in_period, average_daily_usage, andblended_rate from these rather than reading them off the bill. The printed figures may use different rounding rules. Recomputing them keeps the dataset consistent. Thefull forty-field version has types, units, and the ones not worth bothering with.
Units that are easy to confuse
A quantity without its unit cannot be interpreted safely. One CCF of water is about 748 gallons; one CCF of natural gas is a volume that must be converted to energy with the bill's heat-content factor.
Common on electric bills. Some large accounts print MWh instead.
100,000 BTU. A heat unit, not a volume unit.
100 cubic feet. For gas, convert with the heat-content factor on the bill.
The same thing as CCF. Different abbreviation, same 100 cubic feet.
1,000 cubic feet. Ten times CCF, and the two get confused.
1,000 gallons. One CCF of water is 748 gallons.
Guides
- ConversionHow to Convert a Utility Bill PDF to Excel
Compare Power Query, Acrobat, OCR, and vision extraction, then structure multi-meter bill data in Excel and check dates, units, usage, charges, and totals.
Read → - UnderstandingAccount Number vs Meter Number vs Service ID on a Utility Bill
Account, meter, and service-point numbers identify different things. Learn how utilities label them and how to build a stable mapping for usage history.
Read → - UnderstandingWhat Data to Extract From a Utility Bill: A Field-by-Field Schema
A field-by-field schema for utility bill extraction: identity, dates, usage, money, and derived values, with snake_case names, types, and unit handling.
Read → - ValidationAI Utility Bill Extraction Accuracy: How It Fails, and How to Catch It
There is no universal accuracy rate for AI bill extraction. Learn how to test your document mix and catch wrong values, missing meters, dates, and units.
Read → - Use casesGetting Utility Bill Data Into ENERGY STAR Portfolio Manager
Map utility bills to Portfolio Manager properties and meters, prepare the required dates and usage, find gaps, and choose manual, spreadsheet, or web upload.
Read →
Have hundreds of bills every month?
MeterID collects utility bills, checks the data, and delivers structured output for multi-site portfolios. It is built for teams that no longer want to maintain this process by hand.
See MeterID