You invoice a client in Singapore for cloud consulting (GST 8%) and a second client's Malaysian branch for the same service (SST 6%). On paper, one invoice. In your GL, three separate splits. Most platforms—including QuickBooks, Xero, and Wave—treat tax as a single line item per invoice. They don't natively support line-level tax coding when you cross tax jurisdictions on the same document. If you're in Malaysia, Singapore, or operating retainers that span both, that gap costs you either manual journal entries or reconciliation chaos. This playbook walks you through the accounting rule, shows real examples, and names which platforms handle multi-country tax coding without breaking GL integrity. The core problem: One invoice, three GL lines Here's a concrete example. You invoice a multinational for ₹100,000 of services: ₹40,000 delivered in Singapore (GST-able, 8%) ₹60,000 delivered in Malaysia (SST-able, 6%) The invoice shows a single total: ₹102,400 (₹3,200 GST + ₹3,600 SST). But your GL needs four separate lines: Revenue – Singapore services : ₹40,000 (account: 4000) Revenue – Malaysia services : ₹60,000 (account: 4001) GST payable : ₹3,200 (account: 2101) SST payable : ₹3,600 (account: 2102) Most invoicing platforms generate a single GL entry. You get one revenue line and one combined tax line. That forces a manual journal entry, which introduces error, delays reconciliation, and becomes unsustainable at 20+ invoices per month. Why standard platforms fail at line-item tax coding Xero, QuickBooks, and Wave were built on a simpler assumption: one invoice, one tax code, one GL split. They allow multiple line items on an invoice, but each line inherits a single tax treatment. When you have two services in two jurisdictions, both need different tax rates. You can set that up—but the GL post defaults to one revenue account and one tax payable account. The accounting rule is strict: SST is a separate liability from GST, and you must track each one independently for compliance reporting (LHDN in Malaysia, IRAS in Singapore). A commingled GL line makes audit-proofing impossible. Workarounds exist, but they're fragile: Per-line tax codes : Some platforms let you assign a tax code to each line item. But if the platform doesn't post each tax code to a distinct GL account, you still get a single payable line. Manual tax GL setup : You assign a 'tax GL override' in the invoice line detail. Many platforms support this—but it's not automated across invoices, and mismatches are common. Post-invoice journal entries : The most common workaround. You invoice normally, then manually journal the tax split. Repeatable, but error-prone and invisible to cash-flow forecasting until the entry is posted. The compliance risk: If your GL shows ₹6,800 SST payable but LHDN's records show ₹3,600 for this invoice period, the discrepancy flags the account. A single commingled tax line makes root-cause analysis nearly impossible. The accounting rule: How GL splits work across jurisdictions The logic is straightforward, but every jurisdiction enforces it strictly: Malaysia (SST) : Revenue and SST payable must be in separate GL accounts, by service category if applicable (standard-rated, exempt, zero-rated). LHDN requires a reconciliation between GL SST payable and your SST return (ST0 monthly or quarterly). Singapore (GST) : Similarly, revenue and GST payable separate. IRAS reconciliation matches your GL GST account to your GST return (Form GST 500). Cross-border rule : If one invoice touches both jurisdictions, each revenue line must code to its jurisdiction's revenue account, and each tax line to its jurisdiction's payable account. No commingling. Real GL structure for the ₹100,000 multi-country invoice: GL Account Description Amount (₹) 4000 Revenue – Singapore 40,000 4001 Revenue – Malaysia 60,000 2101 GST Payable – Singapore 3,200 2102 SST Payable – Malaysia 3,600 Your invoicing platform must post all four lines at once, or the invoice entry doesn't balance, and the GL reconciliation breaks immediately. Which platforms handle multi-jurisdiction tax coding natively Not many. Here's the honest breakdown: Xero (with limitations): Xero allows per-line tax codes and supports custom GL posting. If you configure each service line with its own tax code, and you set the tax code GL mapping to distinct payable accounts, Xero will post the four lines correctly. The catch: this setup must be done once, per tax code, and the workflow isn't obvious in the UI. It works, but requires accounting knowledge to configure. QuickBooks Online (manual override needed): QBO supports per-line tax codes, but the GL posting still defaults to a single tax payable account per invoice. You can override the GL account on each line, but it's a manual step. Not scalable for recurring invoices. Wave (doesn't support it natively): Wave treats tax as a single line item, regardless of tax code. Multi-jurisdiction invoices require manual journal entries. SAP, NetSuite, Orac