Most teams that migrate away from QuickBooks Online lose something they didn't expect: the ability to run aging reports, dispute payment dates, or reconstruct customer payment patterns. The invoices move. The data doesn't. Six months later, you're chasing a client about an unpaid May invoice, but your new system shows it as June, or shows no payment status at all. Your cash flow visibility collapses. The problem isn't that migration is hard—it's that invoices in QuickBooks carry metadata that teams assume will transfer but rarely does. Payment status. Aging bucket. Customer credit history. Invoice sequence. Tax jurisdiction. These aren't optional details; they're what make an invoice actually useful for cash flow management and tax compliance. Here's how to export QuickBooks invoices without losing any of it. Understand what QuickBooks owns and what you're taking Before you export anything, map what you need to move. In QuickBooks Online, an invoice is not a single record—it's a cluster of linked data: The invoice itself: invoice number, date, amount, line items, tax. Customer link: which customer record this ties to, including their billing address, payment terms, and credit limit. Payment status: fully paid, partially paid, or unpaid; which payments are applied; when they were received. Aging: how many days overdue this invoice is (or isn't), based on due date vs. today. Tax data: which tax agency gets which line, for which jurisdiction. Account coding: which revenue, receivable, and tax accounts each line hits. When you export from QuickBooks, you get CSV tables. Tables are flat. They don't automatically carry relationships. An invoice row might reference a customer by ID or name, but if your destination system doesn't already know that customer, the import fails or the invoice becomes orphaned. Plan to move in this order: customers first, then invoices, then payments. Do not reverse that order. Export customers before invoices—and validate the link In QuickBooks, go to Gear > Lists > Customers (or Sales > Customers depending on your QBO version). Export the full customer list as CSV. You need: Customer name (exact match for invoice imports). Email and phone. Billing address. Payment terms (e.g., Net 30, Net 60). Credit limit. Tax ID or registration number (especially critical for Southeast Asia compliance—Indonesia NPWP, Malaysia SST ID, Singapore UEN). Any custom fields you've added (e.g., industry, contract start date). Before importing customer records into your new system, audit the export: Check for duplicate customer names (e.g., 'ABC Ltd' vs 'ABC Limited'). Your new system's import may not merge them; you'll end up with orphaned invoices. Verify email addresses are present and formatted correctly. You'll need these to send invoice reminders later. Ensure tax IDs are populated and formatted per your country's rules. If you're migrating to a system with automated tax compliance (like Orin's invoicing ), a missing tax ID will block the import or cause invoice validation errors. Check for inactive or merged customers. Decide whether to migrate them or archive them in QBO and exclude them from the export. Import the customer list into your new system and confirm the count matches. Your new system should assign each customer a unique ID. Note those IDs—you'll use them to match invoices. Export invoices with full payment and aging context In QuickBooks, go to Reports > Sales > Invoice List (or use Reports > All Reports > Customer > Transaction List by Customer ). This export will show: Invoice number, date, due date. Customer name. Amount and balance (remaining unpaid). Status (unpaid, partially paid, paid). Export as CSV. But this report alone is not enough. You also need payment-level detail: which payments are linked to which invoices. QuickBooks invoice reports often show 'Balance' but not 'Payment Date' or 'Payment Method'—you lose the proof of when money actually arrived. Run a second export: Reports > Sales > Transaction List by Customer , filtered to show invoices and payments together. This will give you the invoice-to-payment link. You now have two CSVs. Combine them in a spreadsheet, or use your new system's import tool if it can accept a transaction list that includes both invoice and payment rows. The key is: every paid or partially paid invoice must carry forward the payment date(s) and amount(s). Check for these common data hazards: Missing due dates: If a due date is blank, your new system may default to 'today' or show the invoice as infinitely overdue. Add a default based on QuickBooks' payment terms (usually invoice date + 30 days). Invoice dates in the past: Your new system may reject invoices with a date older than, say, six months. Confirm your system allows historical invoice imports. If not, you lose aging accuracy. Duplicate invoice numbers: QuickBooks allows voided or duplicate invoice numbers if you're not careful. Clean these up in the export bef