You run a reconciliation report on Tuesday morning. Your CRM invoicing dashboard shows ₹50K invoiced last month. You pull the Xero export. It says ₹49.8K. You call your accountant. She says the numbers probably match somewhere—just depends on how you're counting. That's not good enough for LHDN audit season. Invoice divergence between your CRM and accounting software is not rare. It's structural. Nine distinct sync breaks exist between the moment a client accepts a quote and that transaction settles in your general ledger. Most businesses discover them during an audit, when the cost of fixing them is maximum. The rest never catch them at all. This playbook maps all nine breaks, shows you what each one looks like in real data, and gives you a 90-minute audit workflow to catch them before the regulators do. The nine invoice divergence points Not all invoicing gaps are created equal. Some are rounding errors. Some are intentional GL splits. Some are payment timing. Here are the nine that matter: 1. Tax calculation engine mismatch Your CRM calculates SST at 6% on subtotal. Xero calculates it on the subtotal minus any early-payment discount. Same invoice, different tax amount. CRM logic: ₹10,000 subtotal × 6% = ₹600 tax, ₹10,600 total Xero logic: (₹10,000 − ₹500 discount) × 6% = ₹570 tax, ₹10,070 total Divergence: ₹530 This happens in every CRM that pre-fills tax before discounts are applied. It's not a bug; it's a configuration mismatch. 2. Multi-currency rounding at transaction time You invoice a Singapore client SGD 5,000 on day 1. Your CRM converts it at 1.05 (₹5,250). Xero re-fetches the rate at posting time and uses 1.051 (₹5,255). Same invoice, two different INR totals in your ledger. CRM entry: SGD 5,000 = ₹5,250 Xero post: SGD 5,000 = ₹5,255 Divergence: ₹5 Scale this to 50 invoices a month and the gap widens to ₹200–₹500. 3. Partial payment allocation timing Client pays ₹3,000 of a ₹5,000 invoice on day 5. Your CRM marks the invoice as "partially paid" and leaves ₹2,000 outstanding. Xero's auto-matching rule splits it differently—allocating ₹2,800 to the invoice and ₹200 to a new AR aging bucket. Until the remaining ₹2,000 arrives, both systems show different aged AR. This is invisible in single-invoice reports. It compounds across 100+ invoices in your aging report. 4. Discount applied after tax (vs. before) You issue a ₹10,000 invoice. Your CRM applies a 10% loyalty discount before tax. Xero applies it after tax because the discount was entered as a line item, not a line-level modifier. CRM: ₹10,000 − ₹1,000 discount = ₹9,000 subtotal; + ₹540 tax = ₹9,540 Xero: ₹10,000 subtotal; + ₹600 tax = ₹10,600; − ₹1,000 discount = ₹9,600 Divergence: ₹60 Happens on every retainer with a monthly discount applied inconsistently. 5. Add-on invoice line items missing GL splits You invoice a base retainer (₹5,000, GL code 4001) + setup fee (₹500, GL code 4002) + storage add-on (₹800, GL code 4003). Your CRM combines all three into one AR entry. Xero requires three separate GL lines. The invoice total matches, but the GL sub-ledger totals don't. CRM AR total: ₹6,300 Xero GL sum of three codes: ₹6,300 But GL code 4002 shows: ₹500 in Xero, ₹0 in CRM dashboard Your revenue recognition reports diverge immediately. 6. Overpayment handling Client sends ₹5,200 for a ₹5,000 invoice. Your CRM marks it as paid; Xero creates a ₹200 credit memo. Your CRM reports it as a closed invoice; Xero reports it as ₹5,000 revenue + ₹200 credit exposure. If your auditor is tracking revenue closure rates, this breaks your report. 7. Retainer true-up or reconciliation invoices January: You invoice ₹5,000 retainer. February: Client consumed ₹4,800 of the allotment. You issue a ₹200 credit memo. Your CRM applies it to the February retainer and shows ₹4,800 revenue for February. Xero applies it to January and shows ₹4,800 for January, ₹5,000 for February, then a −₹200 adjustment. Month-over-month revenue diverges. 8. Subscription proration across billing cycles A new client signs on day 15 of the month at ₹10,000/month. Your CRM prorates it to ₹5,000 and invoices immediately. Xero's subscription module prorates it to ₹4,839 because it calculates by calendar days (16 days out of 31). Invoices diverge by ₹161. 9. GL account consolidation vs. line-item detail You invoice three product families (A, B, C) to one client on one invoice. Your CRM sees one AR invoice. Xero requires three GL entries (one per product code). If you consolidate GL later (by account code), your invoice detail report and GL reconciliation use different denominators. Your finance team reconciles by GL code total. Your sales team reconciles by invoice. They never match. Real example: Retainer + add-on + discount + tax Let's trace a typical B2B invoice through all nine points: Quote accepted: Monthly retainer (₹5,000) + setup fee (₹500) + 5% loyalty discount + SST 6% Subtotal: ₹5,500 Discount applied before tax (CRM logic): ₹5,500 − ₹275 (5%) = ₹5,225 Tax (CRM): ₹5,225 × 6% = ₹313.