You invoice a Malaysian client in MYR for a project that spans Singapore (SGD costs) and Indonesia (IDR supplier fees). One invoice. Three currencies. One general ledger that needs to reconcile at close. Most platforms handle this by rounding each line item independently, which orphans 0.3–0.8% of the invoice total in FX variance. By close time, you've got eight invoices like this and the discrepancy is large enough that your accountant flags it for manual review—a 90-minute investigation for a problem that should never exist. This is not a niche problem. Regional agencies, MSPs, and B2B service firms across Malaysia, Singapore, and Indonesia run into it monthly. The math itself is straightforward, but platforms either don't support it natively, or they do but hide the rounding impact in a way that makes audit trails impossible to follow. The three-currency invoice structure: where the math breaks Start with a concrete scenario. Your agency has: Client: Malaysian tech company (invoiced in MYR) Project scope: Three months of work, split between Singapore office (SGD salary/overhead) and an Indonesian contractor (paid in IDR) Rates: MYR 15,000 monthly retainer + SGD 8,000 software license + IDR 2,500,000 contractor fee (one-time) The invoice runs MYR as the line-item currency. But your GL accounts live in three places: Revenue: MYR 45,000 (retainer × 3 months) COGS—software: SGD 8,000 at MYR/SGD 3.05 = MYR 24,400 COGS—contractor: IDR 2,500,000 at MYR/IDR 0.00032 = MYR 800 Total invoice amount: MYR 69,800. Total GL debit: MYR 45,000 revenue + MYR 24,400 + MYR 800 = MYR 70,200. You've already got a MYR 400 variance before tax. Here's why: rounding happens three times—once for each FX conversion—and each platform rounds at a different step. Some round the converted amount and post the rounded figure; others round the exchange rate itself. Some round post-tax; some pre-tax. None of this is visible on the invoice PDF, and GST adds a fourth layer of complexity because you're now asking: Is GST calculated on the pre-FX amount, the post-FX amount, or both? GL split logic: which account gets the FX variance? The accountant's answer: it depends on your GL structure and tax jurisdiction. Malaysia (client-side): You invoice in MYR, so all line items convert to MYR. The invoice total must equal the sum of GL debits/credits in MYR. GST (or Service Tax, if applicable) applies to the MYR total, not the original currency amounts. Singapore (vendor-side): You pay your vendor in SGD. Your GL account for "Software & Services" sits in SGD. But your invoice to the client is in MYR. The FX conversion between invoice date and payment date creates a separate variance account. Indonesia (contractor): Same logic. Your contractor invoice is in IDR. But your GL is in MYR (because the client-facing invoice is in MYR). The IDR/MYR variance flows to a separate GL line. The clean structure looks like this: GL split for a three-currency invoice: 1. Revenue (MYR) — line amount in invoice currency 2. COGS—Software (MYR equivalent) — SGD line converted at invoice date rate 3. COGS—Contractor (MYR equivalent) — IDR line converted at invoice date rate 4. FX Variance (gain/loss) — rounding difference from all three conversions + any rate movement between invoice and payment 5. GST/Service Tax (MYR) — calculated on total of lines 1–3, not on the original currency amounts Most invoicing platforms collapse lines 2–4 into a single "COGS" entry, then post the rounding variance to either Accounts Payable or a catch-all FX account. This works until your auditor asks for the detailed GL journal entry, and you can't produce a line-by-line breakdown because the platform never recorded it. Proration across three currencies: the silent failure mode Now add proration. Your client project runs January 15 to March 31, but you invoice in monthly tranches. The January invoice covers 17 days (January 15–31). The March invoice covers 31 days. If the retainer is MYR 15,000/month and the software license is SGD 8,000/month, proration means: January revenue: MYR 15,000 × (17/31) = MYR 7,741.94 January COGS—software: SGD 8,000 × (17/31) = SGD 4,387.10 → at 3.05 = MYR 13,380.66 March revenue: MYR 15,000 (full month) March COGS—software: SGD 8,000 (full month) → at 3.07 (rate moved) = MYR 24,560 Now you have four conversions happening, each with its own rounding. January software line is MYR 13,380.66 (rounding on the converted amount). March is MYR 24,560. The rounding difference between the two is MYR 0.34—invisible on the invoice PDF but real in the GL. The problem: most platforms round after proration, not before. This means: Proration is calculated in the original currency (SGD 4,387.10) The prorated amount is then converted to MYR (MYR 13,380.66) The rounding variance (SGD 0.10 at the rate) disappears into GL variance Over 50 invoices, this compounds into a MYR 18–25 discrepancy that your accountant has to manually adjust. GST/tax treatment: pre-conversion or post-co