Moving 500 invoices from Notion CRM to QuickBooks is a straightforward-sounding task until you hit the structural gaps. Notion flattens nested data; QuickBooks expects hierarchical GL coding. Notion's tax-exempt flag vanishes on CSV export; QuickBooks needs it for compliance audit trails. The result: invoices that look correct in QB but fail MyInvois validation, and GL reconciliation breaks that surface three months later. This guide maps the nine invoice fields that commonly orphan during migration, shows you how to audit your Notion export before import, and tells you exactly which invoices will break QB's validation rules—before they cost you time and compliance risk. Why Notion invoices don't port cleanly to QuickBooks Notion CRM stores invoices as flat records. Line items live in a multi-select or linked database, but the export flattens them into a single text column or omits them entirely. QuickBooks, by contrast, builds invoices as parent-child records: the invoice header links to line items, which each link to GL accounts and tax codes. When you CSV-import Notion data, QB has no relationship map—line items stay orphaned, GL coding defaults to a catch-all account, and tax rules don't apply. The nine critical fields below are where data loss happens. Each one has a direct consequence for compliance, reconciliation, or payment processing. The nine fields that orphan on Notion export 1. Line item description and quantity Notion stores line items as related records or multi-line text. On CSV export, QB receives either a single concatenated string or nothing. QB's API or manual import can't parse "Item A (qty 2, ₹500) | Item B (qty 1, ₹1000)" into separate line objects. Impact: Your invoice summary looks correct, but QB's line-level reporting is empty. Tax calculations fail because QB can't apply tax to individual items. Fix before import: Export line items as a separate CSV, with columns for invoice_id , description , qty , unit_price , and gl_account . Then use QB's bulk import or API to link them after the header imports. 2. General ledger account coding Notion typically stores a single text field for the GL account, or links to a chart of accounts table that doesn't export with account numbers. QB imports default to "Uncategorized Income" or "Accounts Receivable" if the GL account field is missing or mismatched. Impact: All 500 invoices post to the wrong GL account. Your P&L is unreadable; month-end reconciliation fails. Fix before import: Map Notion's GL references to QB's account numbers using a lookup table. Test with a sample of 10 invoices first. If Notion stores account names (e.g., "Professional Services"), create a CSV with notion_account_name → quickbooks_account_number and use a VLOOKUP or pivot to re-code the export. 3. Tax-exempt status flag Notion's checkbox or yes/no field for tax-exempt often doesn't map to QB's tax code dropdowns. QB requires explicit tax codes (e.g., "Tax Exempt", "Standard", "Zero-Rated") to calculate correctly. A missing flag or a text value QB doesn't recognize defaults to standard tax rate—wrong rate applied, invoice fails validation. Impact: B2B tax-exempt invoices calculate SST/GST when they shouldn't. MyInvois rejects them. You issue credits and waste compliance hours. Fix before import: Create a new column in your Notion export called tax_code . Use a formula or manual review to populate it with QB's exact tax code values ("Tax Exempt", "Standard Rate", etc.). Test all tax codes in a QB sandbox before live import. 4. Invoice date and due date Notion stores dates as text or date fields, often in MM/DD/YYYY or DD/MM/YYYY format depending on locale. QB expects strict YYYY-MM-DD format in CSV imports. A date mismatch or format error orphans the invoice in QB's queue—it won't post to GL, and aging reports fail. Impact: Invoices sit in QB as drafts. Customers don't see them; you can't mark them paid or reconcile bank deposits. Fix before import: Convert all dates to YYYY-MM-DD in a spreadsheet formula before CSV export. Test a sample import to confirm QB recognizes the dates. Verify invoice aging reports in QB after import. 5. Customer/contact mapping Notion CRM links invoices to contacts via a relationship field. On CSV export, you get a contact name or ID that may not match QB's customer records. If QB has "Acme Corp" but Notion has "Acme", QB can't match the invoice to a customer—it orphans the invoice or creates a duplicate customer record. Impact: Invoice-to-customer links break. Aging reports and payment tracking fail. QB can't email the invoice to the right customer. Fix before import: Export Notion contacts as a separate CSV with a unique ID (e.g., notion_contact_id ). Reconcile against QB's existing customer list. Create a mapping table for any mismatches (e.g., Notion "Acme" → QB "Acme Corp"). Use a lookup formula to re-code the invoice export with QB's customer names or IDs before import. 6. Payment status and reconciliation flag Notion may track payment