◈ Mail → Excel

Export Accountant emails to Excel

By the Mail → Excel team · Updated 2026-10-20

Four steps, one command, and a completeness check at the end — for monthly invoice export and reconciliation.

Step 1 — connect read-only

Use an app password, never the main password. The script opens the folder in read-only mode, so nothing is marked as read or deleted.

python mail_to_excel.py --host imap.example.com --user you@example.com --days 31 --fields vendor,invoice_no,amount,vat,due_date --out accountant.xlsx

Step 2 — filter to one period

A month or a quarter, not «everything». Month-end closing starts with a list of what arrived and what is still missing. The spreadsheet is the checklist, the mailbox is the source of truth.

Step 3 — keep only the columns that matter

ColumnWhy it matters
vendorWho sent the invoice — the first thing you sort by when reconciling.
invoice_noThe unique key. Deduplicate on this column, never on the subject line.
amountStore as a number with a separate currency column; never sum mixed currencies.
vatKeep tax separate from the net amount so the report matches the ledger.
due_dateISO date — the column that turns a list into a payment calendar.

Step 4 — verify completeness

  1. Run the same search in your mail client and note the message count.
  2. Compare it with the row count in the spreadsheet.
  3. If the numbers differ, the filter or the folder is wrong — fix it before using the file.

Example output

vendorinvoice_noamountvatdue_date
Acme Supplies LtdINV-2026-10421,240.5020%2026-10-28

Pitfalls

Provider notes

Gmail and personal Outlook accept app passwords. Corporate Microsoft 365 tenants often require OAuth, so ask IT before the first run.

Ready-made: the $3 script implements these steps and writes the Excel file with the columns above. Get the script.

FAQ

Should I export attachments too?

Yes for audit trail: keep the PDF next to the row. The script saves the folder and the spreadsheet references the file name.

How far back should the export go?

One period at a time (month or quarter). A date filter keeps the file small and the reconciliation simple.

How many messages can it handle?

Thousands per run with a date filter; very large mailboxes are better exported month by month.

Will it change anything in the mailbox?

No. Read-only access is the default and should stay enabled.

Related guides