When you've been invoicing through Notion for two years, you have 500+ invoices scattered across a database that was never designed to be an accounting system. The export button does not exist. The data does not reconcile. Your accountant does not recognize it as truth. This is not a migration problem—it's a data recovery problem. You will not move invoices from Notion to QuickBooks in a weekend. You will spend three months deconstructing what you built, validating what survived, and rebuilding what didn't. This playbook maps the exact sequence, the reconciliation checkpoints where you'll find silent data loss, and the week-by-week timeline that keeps your business invoicing without interruption. Week 1–2: Inventory and Triage Before you export anything, you need to know what you're exporting. Log into your Notion invoice database and run these audits: Count your invoices by status. Filter by sent, paid, draft, and overdue. Cross-check this count against your actual cash received. If your Notion database says you sent 500 invoices but only 450 are marked paid, your data is already fragmented. Check for orphaned line items. Open 20 random invoices. Count how many have missing or blank line item descriptions, quantities, or rates. This is your error baseline. Identify multi-currency and tax variants. Filter invoices by currency and by tax treatment (GST, SST, no tax, mixed). Each variant will need its own reconciliation path in QuickBooks. Find invoices with no customer linked. Notion lets you create invoice records without linking them to a customer. Search for blank or unlinked customer fields. These invoices cannot move to QB without manual customer creation first. Document custom fields you've added. Screenshot every field in your Notion schema. Some will map to QB standard fields, some will not. You'll need to decide whether to rebuild them in QB, export them to a memo field, or let them orphan. Output: Triage spreadsheet. Create a simple sheet with columns: Total Invoice Count | Linked to Customer | Complete Line Items | Tax Type | Currency | Missing Data. This becomes your reconciliation source of truth for the next 12 weeks. Week 3–4: Build Your Target Account Map Do not start exporting until you've designed the QuickBooks schema you're exporting into. Notion and QB speak different languages. If you rush this step, you'll import 500 invoices into QB and then spend weeks reclassifying them. In QuickBooks, create (or audit) these before any data import: Customer list. Extract every unique customer from your Notion invoices. Create them in QB now. If a Notion invoice is missing a customer, create a placeholder customer called "Unknown – [Date]" so you can track which invoices had corrupt customer data. Product/Service list. Notion invoices often have freeform line item descriptions. QB requires you to link line items to products or services. Audit your 500 invoices for unique products/services. Create them in QB before import. If you have 200 unique line item descriptions, you have a standardization problem. Decide now: will you bucket them into 30 standard products, or will you create 200 QB line items? Chart of Accounts. Map which Notion invoices use GST, SST, no tax, or mixed tax. Decide whether each will post to the same income account or split accounts. If you split, your QB structure must have those accounts before data arrives. Payment methods. How many invoices in Notion are marked paid? How many payment methods did you use (bank transfer, credit card, cash, check)? Create QB payment accounts to match. This matters because QB's aged receivables report depends on accurate payment matching. If you have a bookkeeper or accountant, involve them now. QB structure decisions made here will determine whether your accountant can close your books in 2 days or 2 weeks. Week 5–6: Export, Clean, Validate Notion does not have a native invoice export to QB. You'll use one of three paths: Path A: CSV export via Notion API If you've used Notion's database features correctly, you can export to CSV. Do this: go to your invoice database, click the menu, select "Export," and choose "CSV." This gives you a flat file. The problem: multi-line invoices become multiple rows, and you lose the invoice-to-line-item hierarchy unless you've been religious about naming. You'll need to pivot this data in a spreadsheet before QB can read it. Path B: QuickBooks Web Connect (IIF) upload If you can manipulate CSV into an IIF (Interchange Format) file, QB will read it. This preserves more structure than raw CSV. But IIF is finicky: one malformed row breaks the entire import. Test on a duplicate QB company file first. Path C: Manual entry via CSV mapping tool or invoicing software with import features For 500 invoices, this is slower but gives you a checkpoint. You see each invoice before it enters QB. The export workflow: Export your Notion database to CSV. Open in a spreadsheet. Check that every column from your Notion schema export