At $4,000 MRR, the gap between your invoices and your bank deposits stops being a nuisance and becomes a governance problem. You've moved past manual ledgers. You've hired someone to own the books. And now that person is spending two days a month explaining why your invoice register shows $47,200 in revenue but your bank shows $43,800 in deposits—with $3,400 unaccounted for. The real test of an accounting platform isn't how pretty the dashboard is. It's whether it catches a $3,400 mismatch automatically and surfaces the invoice that didn't reconcile. And whether it does that before your accountant has to call you. We tested Xero, QuickBooks Online, and Zoho Books on three concrete scenarios: migrating a manual ledger with orphaned invoices, catching partial payments that don't match line-item amounts, and maintaining a clean audit trail when an invoice is edited after creation. We also looked at how each platform handles invoice creation with Malaysian SST, Indonesian VAT, and Singapore GST baked in—because a mismatched tax code compounds the reconciliation problem downstream. The Data Migration Problem Before your accounting software can help you match invoices, it has to ingest your old data without losing precision. We migrated a 14-month ledger from a spreadsheet into each platform: 287 invoices, 156 of which had been partially paid, and 31 that had partial refunds. Xero's import: Accepted CSV in its own schema. Took 4 minutes. Flagged 23 invoices as "unmatched to bank"—which turned out to be correct. Those 23 had been recorded in the ledger but never actually collected (dead leads, cancelled contracts). Xero's reconciliation engine automatically isolated them in a separate view. The audit trail showed the import date and the source file. QuickBooks Online's import: Requires either Intuit's proprietary import tool or manual entry via API. Took 37 minutes (including waiting for support chat to clarify field mapping). Once in, QB didn't automatically flag unmatched invoices—you have to run the bank reconciliation tool and manually step through each discrepancy. QB marked 4 invoices as "duplicate" because they had the same customer and amount, even though they were dated three months apart. Manual cleanup required. Zoho Books' import: Accepted CSV and automatically mapped most fields. Took 8 minutes. Flagged 19 unmatched invoices (4 fewer than Xero, likely because Zoho's logic is slightly looser on partial matches). The import audit trail was less granular than Xero's—it logged the file name and date, but not the specific rows that failed or were modified. Winner for data migration: Xero . It caught more data quality issues upfront and gave you visibility into what didn't reconcile. Partial Payments and Line-Item Splits In real business, customers pay invoices in pieces. A $5,000 invoice gets a $2,000 deposit, then a $1,500 payment on the 15th, then a $1,500 payment after delivery. If your invoice matching logic doesn't handle that, you end up with "stuck" payments sitting in your bank account with no corresponding invoice line. Xero: Lets you mark individual line items as "paid" and allocates bank deposits to specific line items, not just whole invoices. If a customer pays $2,000 of a $5,000 invoice, Xero shows the remaining $3,000 as outstanding and ties the $2,000 deposit directly to the line item it covers. The reconciliation report clearly shows which lines are matched and which are pending. This is critical for SaaS or project-based billing where partial progress payments are normal. QuickBooks Online: Handles partial invoice payments, but the matching is at the invoice level, not the line item. A $2,000 payment against a $5,000 invoice creates a $3,000 credit memo or overpayment record that you have to manually resolve. QB doesn't visualize which specific line items the payment covers. For complex invoices (like a project with multiple deliverables billed separately), this forces manual reconciliation. Zoho Books: Similar to QB—partial payments are recorded against the whole invoice, not line items. Zoho will show the remaining balance clearly, but if an invoice has multiple line items and a customer pays $2,000, Zoho doesn't tell you which line items the payment is allocated to. You have to infer it or track it separately. Winner: Xero , because line-item matching means fewer orphaned payments and cleaner month-end reconciliation. Regional Tax Codes and Invoice Mismatch When you invoice a customer in Malaysia, you must include SST (Sales and Service Tax) at the correct rate. If you create an invoice with the wrong SST code, that invoice won't match your bank deposit (the customer paid the wrong amount), and it won't match your tax filing (you reported the wrong tax). All three platforms let you set a default tax code, but they differ in how they catch errors. Xero: Lets you set different tax codes per line item and per customer location. When you create an invoice for a Malaysia-based customer, Xer