You hit send on an invoice from your CRM. Your accountant logs in to Xero or QuickBooks and sees a different total. Your payment processor records yet another amount. By month-end, reconciliation becomes a forensic audit. This is not a random glitch. Invoice totals diverge at exactly seven predictable handoff points—and most teams don't know which one is breaking their books. The seven handoff points where numbers split Invoice data flows through a sequence: creation, tax calculation, payment capture, currency conversion, refund allocation, reporting export, and final reconciliation. At each step, rounding rules, platform logic, and timing differences create tiny gaps that compound into serious reconciliation problems. We tested this across three common setups: Xero, QuickBooks Online, and direct integration with Stripe. The breakdowns follow a pattern. 1. Invoice creation and line-item rounding You create an invoice in your CRM with three line items: Item A: ₹1,000 + 18% GST = ₹1,180 Item B: ₹500 + 18% GST = ₹590 Item C: ₹333.33 + 18% GST = ₹393.33 (rounded) Your CRM totals these as ₹2,163.33. But when the invoice syncs to QuickBooks, QuickBooks recalculates tax on the total line amount after rounding each item, which can produce ₹2,163.34 or ₹2,163.32 depending on whether the platform rounds at item level or invoice level. Small difference. Multiplied across 200 invoices per month, this becomes ₹20–₹40 in unmatched variance by month-end. Test this yourself: Create a three-line invoice with an amount that doesn't divide evenly by the tax rate (₹333.33 or similar). Check the total in your CRM, then in your accounting software. If they differ by even 1 paisa, you've found your first leak. 2. Tax calculation rules and jurisdiction mismatch Your CRM applies 18% GST uniformly. Your accounting software knows that certain items qualify for 5% GST, others for 12%, and some for 0%. Or it's configured for a different state or country. If your CRM doesn't push the tax rate along with the tax amount , the accounting software might apply its default rule—overwriting what your CRM calculated. Example: You invoice ₹1,000 at 5% GST (₹50) from your CRM. QuickBooks is set to default 18%. When the sync runs, QuickBooks sees ₹1,000 and applies 18% (₹180), creating a ₹130 gap that bloats your payables. This is especially dangerous in Malaysia (SST vs GST), Indonesia (tiered PPN), and Singapore (GST rate changes). A single misconfigured sync can push incorrect tax into your books for weeks before you notice. 3. Multi-currency conversion and the timestamp trap You invoice a US client ₹50,000 (~USD 600 at today's rate). Your CRM records the invoice in INR. Stripe captures the payment in USD. QuickBooks converts it back to INR using a different exchange rate—the rate at the time of sync, not the time of invoice. Exchange rates move daily. If your CRM syncs to QuickBooks the next day, the conversion rate may have shifted 0.5–2%, creating a ₹250–₹1,000 gain or loss that doesn't match your actual bank deposit. Real example: A logistics company invoiced AUD 5,000 from their CRM. By the time the payment hit their Stripe account (2 days later) and synced to QuickBooks (1 day after that), three different exchange rates had applied. Reconciliation showed a ₹800 variance—all from timing. The fix: Use a single source of truth for exchange rates . Most accounting platforms support setting rates manually or pinning them to the invoice date, not the sync date. 4. Payment capture and partial payment handling You invoice ₹10,000. The customer pays ₹5,000 via Stripe, and the other ₹5,000 comes in via bank transfer three days later. Your CRM marks the invoice as paid (if it's auto-syncing with Stripe). Your accounting software sees only the Stripe payment, leaving ₹5,000 unreconciled until you manually match the bank deposit. The invoice total is correct in both places—₹10,000—but the payment status diverges. Your CRM shows paid. Accounting shows ₹5,000 paid, ₹5,000 outstanding. This creates two problems: Your AR aging report is now wrong (outstanding invoices look newer than they are). If you're tracking MRR or revenue recognition, the CRM and accounting numbers won't match for days. Many CRM-to-accounting integrations don't handle split payments gracefully. Invoicing systems with tight payment processing integration (like Orin, which syncs payment status in real-time) avoid this by recording each payment as it arrives, then matching it to the invoice atomically. 5. Refund allocation and credit memo routing You refund ₹2,000 to a customer via Stripe. The refund appears in your Stripe dashboard immediately. But where does it land in accounting? Some platforms create a credit memo against the original invoice. Others create a negative line item on a new invoice. Some dump it as an unallocated credit to the customer's account. Your CRM might not sync refunds at all, leaving the original invoice marked as paid but the actual cash flow showing a net ₹