Set Up Meter and Usage Fields for Utility Bills
Configure utility bill fields in the dashboard — capture usage tables, billing periods, and multi-service charges from electricity, gas, and water bills.
Ready to set this up? Sign up for PerfectParser and get 20 free credits — no credit card required.
What this guide helps you do
This guide shows how to configure a utility bill parser in PerfectParser, define usage and charge fields, run a test batch, and export billing data. Use the prompt below only when you need consistent mapping — skip it on the first pass to let auto-detect find additional line items or service sections.
Why utility bills are hard to parse
Utility bills combine multiple services — electricity, gas, water, sewer — on a single statement with separate usage tables and rate breakdowns. Units vary (kWh, therms, gallons, cubic meters) and often appear in the same table with different column headers. Previous balance, current charges, late fees, and credits each have distinct accounting meaning but may appear as adjacent lines in a summary block. Billing period formats range from "05/01/2026 – 05/31/2026" to "Service dates: May 2026". Multi-service bills sometimes nest usage detail on page two while page one shows only a summary total. A parser that captures total_amount_due without a usage_details table loses the consumption data needed for energy audits or tenant chargebacks.
Recommended Fields
We suggest configuring the following schema fields for your Utility Bill Parser to capture all essential utility billing data.
| Field Name | Type | Description |
|---|---|---|
provider_name | Text | The company billing you (e.g., British Gas, PG&E, Comcast). |
account_number | Text | The utility customer account ID. |
invoice_number | Text | The unique billing invoice number. |
billing_period | Text | The statement date range (e.g., May 10 to June 9, 2026). |
due_date | Text | The deadline for the payment. |
current_charges | Number | Charges incurred during the current billing cycle. |
previous_balance | Number | Unpaid balance carried over from previous months. |
total_amount_due | Number | The overall total balance due. |
usage_details | Table | Table containing metrics like service_type (e.g. Electricity, Water), usage_amount (e.g. kWh, Gallons), rate, and total. |
AI Prompt (Optional)
Use this only when you want to guide auto-detect toward a specific set of fields.
If you want PerfectParser to discover additional fields on its own, leave the AI Prompt (Optional) box blank for the first pass, review the detected schema, then add a prompt only if you need tighter consistency.
When you do use a prompt, copy and paste the following instructions into the AI Prompt (Optional) field during setup:
Set up this parser in the dashboard
Create a parser
Go to Parsers → New Parser in the dashboard. Give it a name like "Utility Bill Parser" and optionally select the document category.
Upload a sample document
Drag and drop a representative utility bill (PDF, PNG, or JPEG). Use a combined-service bill if that is your norm — the AI needs to see how multiple usage tables are structured.
Detect fields or use standard fields
Paste the AI Prompt from the section above into the AI Prompt (Optional) box if you want tighter field mapping, then click Auto-Detect. To discover more fields automatically, leave the prompt blank and click Auto-Detect. Or skip auto-detect and add fields manually using the Recommended Fields table above.
Review and save your schema
Check that usage_details is a Table with a service_type column to distinguish electricity from gas rows. Confirm previous_balance and current_charges are separate Number fields. Click Save.
Run a test batch
Navigate to Bulk Extraction, choose how your files are organised, upload a small test set of utility bills, and click Extract All Files. Review the results in Batch History and export to CSV or Excel.
Common mistakes
- Mapping previous balance and current charges into a single total field — you lose visibility into carry-forward balances vs new usage.
- Omitting unit information in the usage_details table (kWh vs therms) when multiple services share one bill.
- Using a single-service water bill as the sample when production files are combined electric-and-gas statements with different table layouts.
- Storing usage amounts as Text because units are embedded in the cell — keep usage_amount as Text if units vary, or split into amount and unit columns if your workflow requires numeric usage.
Next steps
Test your first extraction free — sign up for PerfectParser, no credit card needed.
FAQs
Do I need a sample utility bill to set up this parser?
Yes. Upload a bill from the provider and service mix you process most often. Combined electricity-and-gas bills use different table layouts than single-service water statements, so pick a representative sample.
How do I separate previous balance from current charges?
Define previous_balance and current_charges as separate Number fields, plus total_amount_due for the payable total. Do not map everything into one amount field — expense audits need to see what is carried forward vs billed this cycle.
How many credits does setup and a test extraction use?
Parser setup is free. Each bill page costs 1 credit. Most residential utility bills are 1–2 pages. Property managers processing portfolio batches should budget 1 credit per page per account.
Looking for product features and use cases?