You're running three separate invoicing tools. One tracks GST, another handles retainers, and the third holds historical records nobody dares touch. The moment you consolidate into a single platform—whether MyInvois or Orin's unified invoicing module —you risk orphaning GL codes, mangling tax records, and creating duplicates that break reconciliation for months. The difference between a clean migration and a data disaster is deliberate mapping and staged validation. This playbook shows you how to migrate three platforms into one without losing a transaction or breaking your GL. Why three platforms create hidden data traps Each platform stores invoices differently. One uses a custom GL structure; another denormalizes tax into a single field; the third splits line-item tax by jurisdiction. When you export and re-import, those differences compound: GL code mismatch: Platform A calls it '4100-GST-Service', Platform B uses '4100-01', and your accounting system expects '41001'. Without a mapping table, you create orphaned GL entries during import. Tax code inconsistency: One platform records GST at invoice level; another breaks it per line. Re-importing without normalization duplicates tax and throws accruals off by ₹2–8K per month. Duplicate invoices: If you migrate historical invoices first, then live invoices, you can easily double-count if your import tool matches on invoice number alone. Customer and contact drift: Three platforms, three ways to spell 'Acme Corp'. Without deduplication, you end up with five records pointing to one customer. The risk is not just messy data—it's reconciliation chaos. If your GL doesn't match your invoicing system, your accountant spends 40 hours per quarter manually bridging the gap. Phase 1: Audit and map (days 1–15) Before you move a single invoice, you must understand what you're moving. Step 1: Export and inventory Export a 90-day sample from each platform—roughly 100–150 invoices. Aim for a mix of invoice types: standard sales, retainers, credit notes, adjustments. Open each export in a spreadsheet and list every field: Invoice number and date Customer name, address, tax ID Line-item description, quantity, unit price Discount, tax, total GL code or account code Tax code or tax treatment (GST, no-tax, exempt, reverse charge) Payment status, payment method Any custom fields (project code, cost centre, approval status) Step 2: Build a GL mapping table This is the spine of your migration. Create a spreadsheet with three columns: Platform A GL Code Platform B GL Code Target GL Code (Orin/MyInvois) 4100-GST-Service 4100-01 41001 4200-Int-Revenue 4200 42001 Work with your accountant or finance lead to verify that every GL code in your export has a matching target code. Missing mappings are data holes; unused mappings are cruft you should delete before migration. Step 3: Tax code reconciliation How does each platform encode tax? List every unique tax treatment in your exports: Standard GST (6%, 8%, or current rate) Zero-rated (exports, certain services) Exempt (financial services, insurance) Reverse charge (B2B, certain jurisdictions) No tax Then map each to your target platform's tax code. If you're moving to Orin's billing system or MyInvois, verify that the platform supports all the tax treatments your business uses. If it doesn't, you'll need to manually adjust during import or use a custom field to flag non-standard tax rows. Step 4: Identify duplicates and conflicts Run a quick deduplication check on your 90-day sample: Do any invoice numbers appear in more than one platform? Do any customer names appear with different addresses or tax IDs? Are there invoices with the same date, customer, and total amount across platforms? Document every conflict. You'll resolve them in phase 2, but you need to know they exist first. A spreadsheet with columns for 'Conflict', 'Platform A Data', 'Platform B Data', and 'Resolution' works well. Phase 2: Clean and normalize (days 16–35) Now you prepare the actual data for import. Do not skip this step; it determines whether your migration succeeds. Step 5: Export everything, standardize format Export the complete transaction history from all three platforms. Combine them into a single master spreadsheet, and add a column identifying the source platform. Your columns should now be: Source Platform Original Invoice Number Migrated Invoice Number (if you're renumbering) Customer Name Customer Tax ID Invoice Date Due Date Line Item Description Quantity, Unit Price, Discount Original GL Code Mapped GL Code (using your mapping table from phase 1) Original Tax Code Mapped Tax Code Tax Amount Total Amount Payment Status Notes Step 6: Deduplicate customers Use tools like Open Refine or a CRM's built-in deduplication to identify and merge customer records. Rules: If customer names match exactly (case-insensitive, trimmed), treat as one customer. If names are similar but not identical (e.g., 'Acme Corp' vs. 'ACME Corporation'), manually review and decide: