Convert aging report PDF to Excel on Mac (2026 guide)
Turn AR and AP aging report PDFs into Excel on Mac — read on-device; only the text is uploaded — one row per customer or invoice, bucket totals tied to the balance sheet.
Turn your PDFs into clean Excel workbooks with ignitai on your Mac — first document free (up to 4 pages), then $29.99/month (USD). ignitai turns PDFs — even scans and photos — into clean Excel workbooks on your Mac. Your first document (up to 4 pages) is free; then $29.99/month (USD) for 80 pages a week.
Get ignitai on the App StoreThe borrowing-base certificate is due Friday, and the borrower has sent what the credit agreement asks for: the month-end accounts receivable aging. As a PDF, because that’s what their system’s report screen prints. Twenty-six pages, one row per customer, balances spread across Current, 1–30, 31–60, 61–90, and Over 90 columns. The lender’s model needs to exclude everything over 90 days, apply the cross-age rule, cap the two customers over the concentration limit, and compute eligible receivables against the advance rate. None of that is arithmetic anyone can do against a PDF. So an analyst re-types twenty-six pages, monthly, per borrower.
Everyone who consumes someone else’s aging meets a version of this. The asset-based lender and the factor, monthly, for every client. The auditor testing receivables who needs the aged population to select confirmations and evaluate the allowance. The collections manager who inherited a book and wants a worklist sorted by days past due, not a report sorted alphabetically. The M&A associate in diligence, checking whether the target’s receivables are actually collectible. The bookkeeper taking over a client whose access to the old system ended with the subscription — the final aging print is what survives. The balances are all there; the balances are all trapped.
This guide is the Mac workflow: convert aging report PDFs to Excel on Mac — read on-device, only the text sent to ignitai’s servers — one row per customer or per invoice, with the bucket math and the balance-sheet tie-out as your completeness checks.
In this guide10 sections
Two grains, and why aging reports break extractors
Aging reports print at two grains, and each defeats grid extraction its own way:
- Summary aging — one row per customer, buckets as columns. Closer to a real table, but credit memos and unapplied payments print as negatives in parentheses, the grand-total row lands in the data, customers split across page breaks, and every system labels the buckets differently (Current/1–30/… vs 0–30/31–60/…). Import it raw and the first
SUMdouble-counts the total row and misreads every parenthesized credit. - Detail aging — invoices grouped under each customer’s name. The key field isn’t a column: the customer prints once, as a section heading, and every invoice row below belongs to it without saying so. A grid tool imports the headings as stray rows mixed into the data — the same structural failure as a general ledger’s account headings, and the same reason the fix is an extractor that reads structure instead of geometry.
- Both grains carry per-customer subtotal lines that must not become data, and both often arrive as scans when the report came out of a records box or a data room.
Method 1: ignitai on Mac (the read-on-device way)
ignitai extracts by description, not by layout template, so one prompt covers QuickBooks, Xero, NetSuite, and the legacy system’s aging print alike:
-
Drag the PDF in — or use the file picker, or right-click → Open With from Finder. Born-digital prints and scanned agings go through the same flow; the scanned-PDF walkthrough covers capture quality for the paper ones.
-
Describe the output shape in plain English. A prompt is required — the Convert button stays disabled without one. Start from the Table starter or write your own. For a summary aging:
“One row per customer: customer, current, days_1_30, days_31_60, days_61_90, over_90, total. Credit balances as negative amounts with a minus sign. Skip the grand-total row. Bare amounts, no thousands separators.”
For a detail aging:
“One row per invoice: customer repeated from the section heading, invoice_number, invoice_date, due_date, days_past_due, amount. Include credit memos as negative amounts. Skip customer subtotal rows and the grand total. ISO dates, bare amounts.”
The heading-carried-down clause is the whole game on a detail aging — it’s the un-pivot no grid tool performs, in one sentence of English. Save both prompts as presets; they sync to your other devices via iCloud.
-
Pick Excel, hit Convert. The PDF is read on your Mac — never uploaded — and only the recognized text goes to ignitai’s servers to build the sheet. On macOS 26, Apple’s native on-device table recognition is sharper on dense report layouts; the same flow works back to macOS 14.4. A typical aging is usually ready in under a minute.
-
Open the result in Excel or Numbers. One worksheet — bare amounts, minus signs on credits, blanks where the report was blank — and the amounts are real numbers in the Excel file, so the sort by
over_90runs the moment it opens. Before exporting, check the table in ignitai: rows are numbered, amount columns are totaled on screen, and the original page is a click away, so the bucket totals can be compared with the printed ones. Edits happen in the spreadsheet.
A portfolio, one batch. A lender with twelve borrowers’ agings — or a controller with five entities’ — selects them all and runs one batch with the one prompt; they consolidate into a single worksheet (the batch walkthrough covers the mechanics). Filenames never leave your Mac, so identity has to come from the printed page: add “company name from the report header” as a column, and every system prints it. Scanned agings photographed as images run as their own batch — a drop mixing PDFs and images imports only the PDFs.
One table per run — pick the grain. Summary and detail are different tables: two runs with two prompts, not two sheets from one run. The same goes for the AP aging that arrives in the same email — same prompts, vendor instead of customer, its own run.
Method 2: Excel for Mac’s Get Data (no PDF connector)
Excel for Mac ships Power Query under Data → Get Data, but the Mac connector list — Text/CSV, XLSX, XML, JSON, SharePoint, SQL Server, OData — has no From PDF option; that connector is Excel-for-Windows-only. Even on Windows, a detail aging is the grid detector’s bad case: customer headings arrive as junk rows instead of a column, subtotals embed in the data, and a multi-page report imports as page-fragments to stitch by hand. Against a scanned aging it returns nothing.
Method 3: a pdfplumber script (for one system, forever)
For a single system’s born-digital aging that you’ll process monthly for years, a pdfplumber script can work: detect customer headings by indentation, carry the current customer onto each row, filter subtotal lines by label, parse parentheses as negatives. The costs arrive on schedule: the system’s next report-format update shifts the coordinates, the second borrower’s system doubles the parser, and the scans stay out of reach. A lender whose borrowers print from a dozen different systems is exactly the case where per-layout parsing never amortizes — which is why the description-driven prompt, written once, is the better monthly ritual.
Method 4: web converters (the never-upload line)
Generic web PDF-to-Excel tools inherit the structural failures above — and the confidentiality problem decides the question anyway. An AR aging is a company’s entire customer list with names, balances, and payment behavior: the document a competitor would pay for, and one most credit agreements and NDAs oblige you to protect. Uploading it to a free converter you don’t control is a disclosure decision made on someone else’s behalf. With ignitai the PDF stays on your Mac and only the recognized text goes to ignitai’s servers, where the AI builds the sheet; the finished file is kept in your ignitai account until you delete it. That is a smaller exposure than handing the whole PDF to a free converter, not a zero one — check it against your own confidentiality terms before running someone else’s documents.
On iPhone and iPad
The aging doesn’t always arrive at the desk:
- iPhone — the field exam at the borrower’s office ends with a bound aging print: capture the pages with the in-app camera scan, apply the saved preset, and the eligible-receivables math starts before you’re back at the hotel. A Live Activity shows conversion progress from the lock screen. The month-end aging PDF in Mail goes in through the share sheet the same way.
- iPad — working the data room: save the agings to Files, multi-select from the picker or share sheet (there’s no external drag-and-drop into the app on iPad), convert with the synced preset, and iCloud puts the XLSX on the Mac where the diligence model lives.
One subscription covers iPhone, iPad, Mac, and Vision Pro, so the presets travel with the engagement.
The tie-out: buckets, totals, balance sheet
Before the analysis starts, prove completeness with two sums that take one minute:
- Rows foot. On a summary aging, each customer’s buckets should add to its total column, and each column’s sum should match the bucket totals printed on the report’s last page. A parenthesized credit read as a positive, or an imported subtotal row, breaks the foot immediately — and points at the row to inspect.
- The grand total ties out. The aging’s grand total should equal accounts receivable on the balance sheet — or the trial balance — as of the same date. When it ties, the population is complete, which is the property everything downstream depends on.
Then the sheet goes to work:
- Compute the borrowing base. Exclude
over_90, apply the cross-age rule (a customer with more than half its balance past 90 days is excluded entirely — a one-line array formula against the typed columns), cap the concentrations, multiply by the advance rate. Monthly, in minutes, with the sheet as the audit trail behind the certificate. - Build the collections worklist. Sort the detail aging by
days_past_duedescending, then amount. The alphabetical report becomes a call list ordered by what’s actually at risk — and the invoice flow extracts the underlying invoices when the customer disputes one. - Estimate the allowance. Bucket subtotals times loss rates per bucket is the classic allowance-for-doubtful-accounts model, and it’s a five-cell formula once the buckets are columns.
- Trend the book. Convert last quarter’s agings too, and DSO and the over-90 share become a chart instead of an impression.
When not to use this
- You have system access. Every mainstream accounting system exports its aging to XLSX or CSV from the same report screen that printed the PDF. If you can log in — or the client will click Export instead of Print — take the export. The PDF path is for other people’s systems, predecessor records, and data rooms.
- You need the aging re-run as of a different date. An aging is a snapshot; the extracted sheet holds the as-of date it was printed for. Re-aging to a new date needs the invoice-level detail with due dates — the detail-grain prompt gives you that — or the live system.
Bottom line
For aging reports that need to become receivables math on a Mac: drag the PDF into ignitai, pick the grain — one row per customer for the bucket math, one row per invoice (customer repeated from its heading) for the worklist — pick Excel, Convert, then foot the buckets and tie the grand total to the balance sheet before anything else. Batch a whole portfolio in one run with the company name as a column. Build a per-system parser only for a single feed you’ll own for years; keep customer lists away from web converters entirely. The hours belong in the eligibility analysis and the collections calls — not the re-typing — and the on-device read means the borrower’s entire customer book never left your Mac to get there.
Get ignitai on the App Store — free download; your first document (up to 4 pages) converts free with Sign in with Apple, and one subscription covers iPhone, iPad, Mac, and Vision Pro.
FAQ
How do I convert an AR aging report PDF to Excel on a Mac?
Drag the aging PDF into ignitai, describe the rows in one sentence — for a summary aging, one row per customer with the bucket columns and total; for a detail aging, one row per invoice with the customer repeated from its section heading — pick Excel, and hit Convert. The PDF is read on your Mac, and only its text goes to ignitai’s servers; the result is one sheet ready to sort, filter, and pivot.
The detail aging groups invoices under each customer’s name — how do I get the customer onto every row?
Say so in the prompt. A detail aging prints the customer once as a heading above its invoices, which is what breaks grid extractors. Write “repeat the customer name from the section heading onto every invoice row” and the grouped print layout becomes a flat table you can sort by days past due across all customers at once.
How do I check the extraction is complete?
Two sums. On a summary aging, each row’s buckets should add to its total column, and the column totals should match the grand-total line printed on the report. Then the grand total should equal accounts receivable on the balance sheet or trial balance as of the same date. If both tie, every balance made it across.