You're running three invoicing tools because each one solved a problem at the time. Wave handled retainers. Stripe Invoicing tracked payment links. Wave-for-contractors managed 1099 workers. Then your accountant asked why the numbers don't match across systems, your admin spent 6 hours reconciling last month, and you realized the problem isn't the tools—it's the mess between them. Consolidating to one platform sounds clean. It isn't. Most teams discover, three months in, that customer records duplicated , transaction histories fractured , and tax settings reverted to defaults . Some data moves cleanly. Some rebuilds. Some should be left behind. Here's the real map—and when to clean first versus bulk-import-then-fix. Customer data: Where unique IDs save you (and where they fail) Your customer list is your safest asset. If you have email or a stable customer ID across all three systems, migration is a copy-paste with deduplication. If you don't, you're merging "Acme Corp" from Wave with "ACME CORP" from Stripe and "acmecorp" from your contractor system and creating three ghost records in the new platform. What survives: Customer name, email, address (if stored consistently) Payment method (credit card on file, if exported as metadata) Contact history (notes, if both systems store them plainly) What breaks: Custom fields (Wave's "project code" won't map to Stripe's "client type") Duplicate detection (Wave shows "Acme" five times; Stripe shows "ACME Corp" twice; your new system has seven merged records) Linked metadata (which Acme invoice was tied to which Stripe charge? Only if you exported transaction IDs and matched them manually) Before you migrate: Export all three customer lists to a single spreadsheet. Deduplicate by email first, then by name with manual review. Assign a unique master ID. Test this in your new system's import tool. This takes 4–8 hours for a 500-customer list, but it prevents chaos downstream. Transaction history: What moves, what vanishes, what costs to re-enter This is where most teams fail. Transaction history—invoices, payments, adjustments—survives migration if you export it as structured data. If you don't, you lose it. What usually survives: Invoice number, date, amount (if you export as CSV or API) Payment status (paid, unpaid, partially paid) Customer reference (if linked to deduplicated customer records) What almost always breaks: Partial payments and credit notes (Wave records these; Stripe sometimes doesn't; most import tools can't map "$5000 invoice, $3000 paid, $2000 outstanding" cleanly) Tax amounts (Wave separates tax; Stripe may not; your new system needs both) Line-item detail (Wave shows "10 hours @ $150"; Stripe shows "$1500 charge"; only Wave has the granular data) Payment method metadata (which card paid invoice #2847? Stripe has it; Wave doesn't; your new system may not care, but your audit trail will) For a three-year history across three systems, assume 20–25 hours of data cleaning . That's finding the Stripe charges that didn't land as Wave invoices, finding Wave invoices that Stripe marked as "paid" but your bank never received, and manually adjusting opening balances so your new system's cash position matches reality on day one. Tax settings: Expect to rebuild, not migrate Tax rules don't migrate. They rebuild. Wave stores your default tax rate (say, 9% sales tax). Stripe stores it differently (a tax ID, a jurisdiction code). Your new system probably expects both—plus exemptions, regional codes, and whether tax applies on discounts. They rarely align perfectly. What you'll do manually: Re-enter your company's tax ID and registration details Map each old tax rate to a new one (Wave's "9% sales tax" → new system's "sales_tax_9" code) Set exemption rules for specific customers or invoice types (if contractor invoices are non-taxable, that's a rule you'll rebuild from scratch) Validate that every line item uses the right tax code on the first batch of invoices Estimate 8–12 hours for a standard setup, more if you invoice across regions or have complicated exemptions. A unified invoicing platform with tax automation can reduce this dramatically on future invoices, but the migration itself is manual. Recurring invoices: Usually lost, sometimes recoverable Wave's recurring invoice template, Stripe's subscription schedules, and Wave-for-contractors' repeat billing rules are three different schemas. None of them export cleanly into the next system. Practical approach: Export a list of all active recurring invoices (customer, amount, frequency, next date) from each system In your new system, rebuild them as new recurring templates Set the "start date" to today or the next billing cycle (don't backdate; it creates confusion in cash flow records) For any gap (e.g., if you migrated on the 15th and a customer's invoice was due on the 10th), create one-off catch-up invoice manually Time cost: 15–20 hours if you have fewer than 50 recurring templates. If you have 200+, it's 4