Convert utility bill PDF to Excel on Mac (12-month batch)
Turn a year of utility bill PDFs into one Excel sheet on Mac — bills read on-device, never uploaded — billing period, usage, and amount due in clean columns.
ignitai turns a whole batch of PDFs into one clean spreadsheet in a single run on your Mac — your first conversion is free, then $19.99/mo after a 3-day free trial.
Download on the App Store ignitai — free downloadTwelve electric bills, twelve gas bills, twelve water bills, and a stack of internet invoices — every one of them a PDF in a different provider’s template, downloaded one at a time from four different billing portals. You need them in Excel: a landlord splitting utilities across tenants at year-end, a small business allocating overhead by month, a homeowner disputing a usage spike with the utility, or an accountant who asked for “utilities, itemized, by month” and meant a spreadsheet, not a folder of PDFs.
The absurd part is that every number you need is right there on each bill — billing period, kilowatt-hours, therms, amount due — and none of it is in a form Excel can touch. Utility providers almost never offer a bulk export. The portal shows one bill at a time, PDF by PDF, and the “download usage data” link, where it exists at all, covers one account at one provider.
This guide is the Mac workflow for exactly that: convert utility bill PDFs to Excel on Mac, in one batch — bills read on-device, never uploaded — with one row per bill and columns you can pivot by month, provider, or property.
Why Mac for the utility-bill batch
A year of utility bills is a desk job, and the Mac is the right desk:
- Gather once, drag once. The bills live in
Downloads, in Mail attachments, and in a folder from last tax season. On macOS you stage them in one folder, select them all (⌘A), and drag the whole set in as one job. There’s no mobile share-sheet equivalent for moving forty-eight files at once. - The spot-check pass is faster on a big screen. With the finished sheet on one half of the display and the source PDFs on the other, verifying that March’s gas bill really was $214.60 takes seconds per row.
- Excel and Numbers both run native. The output
.xlsxopens directly in either, and iCloud Drive syncs it to your iPad and iPhone afterward.
On macOS 26, Apple’s newest on-device document recognition reads the charge tables on bills natively, which makes the extraction noticeably sharper. On older versions — back to macOS 14.4 — the same flow runs on Apple’s classic on-device text recognition.
Why utility bills are harder than they look
A utility bill isn’t a table. It’s three or four different structures sharing a page, and generic table extractors handle at most one of them:
- The key-value block. Account number, service address, billing period start and end, statement date, due date, amount due. These sit in boxes scattered across the top of the page — not in any grid — and they’re the columns your spreadsheet actually needs.
- The charge breakdown. Supply charge, delivery charge, taxes, regulatory fees, and often a tiered rate table where the first 500 kWh bill at one rate and the rest at another. Visually a small table; structurally a set of line items that need to roll up to the printed total.
- The usage figures. Current reading, previous reading, usage in kWh, therms, CCF, or gallons — each provider picks its own unit and its own corner of the page to print it in.
- Template churn. Providers redesign bills without warning. The same electric company’s January and September bills can put the amount due in different places. Any extraction keyed to pixel coordinates breaks mid-year.
And the multi-provider case compounds it: an electric bill, a gas bill, and a water bill share almost no layout DNA. A tool that “finds the table” finds a different table on each.
Method 1: ignitai on Mac (the no-upload batch)
ignitai treats the extraction as a language task — you describe the columns, it reads each bill and fills them, regardless of which provider’s template the numbers came from. The full flow:
-
Stage the bills in one folder and drag them in. Select all in Finder (⌘A) and drag the batch into ignitai in one drop. Text PDFs from the portal and scanned paper bills mix fine in the same run; if some bills are photos rather than PDFs, run the PDFs as one batch and the images as a second batch with the same prompt — a drop that mixes both imports only the PDFs.
-
Describe the columns, once, in plain English. The prompt that covers most providers:
“For each bill, return provider, account_last4, service_address, billing_period_start (ISO 8601), billing_period_end (ISO 8601), usage_amount, usage_unit, and amount_due. One row per bill.”
A prompt is required — the Convert button stays disabled without one — but one sentence is enough, and it saves as a preset that syncs to your iPhone and iPad via iCloud.
-
Pick Excel as the output and hit Convert. Each bill is read on your Mac — the PDFs are never uploaded — and only the recognized text goes to ignitai’s private hosted pipeline to build the sheet. Progress shows as pages read and parts uploaded across the batch; a single bill is usually ready in under a minute.
-
Review the sheet. One worksheet, one row per bill, every value written as clean text — ISO dates, bare amounts — so one formatting pass in Excel (currency on
amount_due, date format on the period columns) types the whole sheet. The preview in ignitai is read-only; the formatting pass and any edits happen in Excel or Numbers after export. -
If the batch trips, fix and re-run. A corrupted download or a blank scan stops the job; re-download or fix that file and run the batch again.
One thing to know upfront: filenames never leave your Mac, so there is no filename column in the output. Traceability comes from the bill’s own text — that’s why the prompt asks for account_last4 and the billing period. Those two columns tie every row back to a specific bill more reliably than statement (3).pdf ever would.
Why one row per bill and not the full charge breakdown? Because the output is one table per run. If you want the line-item charges instead — supply vs delivery vs taxes, one row per charge — that’s a second run with a second prompt: “one row per charge line: provider, billing_period_end, charge_description, charge_amount.” Two tables, two runs. For most utility tracking, the one-row-per-bill summary is the sheet you actually pivot.
Method 2: your provider’s own data export (use it where it exists)
Before extracting from PDFs, check the portal. Some large utilities — especially electric providers on smart meters — offer a usage download (often labeled “Green Button” in the US) that exports interval data as CSV or XML. If your provider has it, and you only need that provider’s usage, use it; it’s structured data straight from the source.
The reasons it usually doesn’t end the story:
- It’s usage, not billing. Green Button exports meter intervals — not amount due, not the tax breakdown, not the delivery charges you’re allocating.
- One provider, one account. The landlord with three properties and four providers is back to portal-hopping, and the exports don’t share a schema.
- Gas, water, and internet rarely offer it. Electric utilities lead here; everyone else mails you a PDF.
In practice the provider export covers one column of your sheet at one provider, and the PDFs cover everything.
Method 3: Excel for Mac’s Get Data (no PDF connector)
Excel for Mac ships Power Query under Data → Get Data, but the Mac’s connector list — Text/CSV, XLSX, XML, JSON, SharePoint, SQL Server, OData — has no From PDF option; that connector is Excel-for-Windows-only. So Excel itself can’t ingest a bill PDF on this platform. Even on Windows, where From PDF exists, it detects generic tables — which on a utility bill means it grabs the tiered rate grid and misses the key-value block where the billing period and amount due actually live. The bill has to go through something else before Excel sees it.
Method 4: web converters (and why not for bills)
Generic “PDF to Excel” web tools will accept a utility bill. Three reasons to keep bills out of them: every page of a utility bill carries your name, service address, and account number — exactly the trio used for identity verification on utility accounts — and uploading twelve months of them hands a stranger’s server your address history and usage pattern; free tiers gate at one to three files, so a year of bills across providers hits the paywall immediately; and generic table detection has the same blind spot as Power Query — it returns the rate table, not the fields you need. For a redacted sample bill in a tutorial, fine. For your actual bills, no.
On iPhone and iPad
The Mac owns the year-end batch, but bills arrive all year:
- iPhone — a paper bill in the mailbox gets captured with the in-app camera scan, and a PDF in Mail goes in through the share sheet. Same prompt preset (it synced via iCloud), same columns, and the row is in the sheet before the bill reaches the filing drawer. Progress shows as a Live Activity while it converts.
- iPad — the monthly check: pull the new bill from the portal in Safari, save to Files, select it (share sheet or the Files picker — iPad has no external drag-and-drop into the app), convert with the saved preset.
Capture on the device where the bill lands; consolidate on the Mac. The paper-heavy version of this workflow — a shoebox of scanned documents rather than portal PDFs — is covered in the scanned-PDF-to-Excel Mac guide.
The two checks before you trust the sheet
- Coverage check. Pivot by
account_last4× month. Every account should show exactly one row per billing period — a gap means a bill never got downloaded; a double means the portal handed you a corrected statement and its original. This takes thirty seconds and catches the errors that quietly wreck a year-end allocation. - Bank reconciliation. Sum
amount_dueby month and compare against the utility payments in your bank statement export — the bank-statement-to-CSV Mac guide is the same workflow pointed at the other document. Where they diverge, you’ve either missed a bill or a payment covered two periods. Landlords doing this for a building usually need the income side too — the rent-roll-to-Excel guide extracts that from the property manager’s PDF.
Bottom line
For a year of utility bill PDFs that needs to become one Excel sheet on a Mac: stage the bills in a folder, drag them into ignitai as one batch, write the one-sentence prompt (provider, account last four, billing period, usage, amount due), pick Excel, hit Convert, then run the coverage check. Use your electric provider’s Green Button export where it exists — it’s good data, but it’s usage-only and single-provider. Skip the web converters; bills carry your address and account number on every page, and the whole point of the on-device read is that they never leave your Mac. The broader Mac batch pattern across mixed document types is in the batch-PDF-to-Excel guide.
Get ignitai on the App Store — sign in with Apple, first conversion free, then $19.99/mo after a 3-day trial; one subscription covers iPhone, iPad, Mac, and Vision Pro.
FAQ
How do I get a year of utility bills into one Excel sheet on a Mac?
Download the twelve PDFs from your provider’s portal, select them all in Finder, and drag them into ignitai with one prompt asking for provider, account last four, billing period, usage, and amount due. The batch comes back as a single sheet, one row per bill, ready to pivot by month.
Can it read scanned paper bills?
Yes — scanned PDFs and photos of paper bills both convert with the same prompt. Run PDFs as one batch and image files as another; on macOS 26 Apple’s native on-device table recognition reads the charge tables noticeably sharper, and the flow works back to macOS 14.4.
Are my bills uploaded anywhere?
No — each bill is read on your Mac and the PDF itself is never uploaded. Only the text recognized on-device is sent to ignitai’s private hosted pipeline to build the spreadsheet. That matters for utility bills, which carry your name, service address, and account number on every page.