You have a ₹50 lakh retainer. One client. Three delivery hubs: Malaysia, Indonesia, Singapore. Three tax regimes: SST at 6%, PPn at 10%, GST at 9%. One invoice. And your GL cannot afford to fail. Most invoicing platforms treat this as a single line: "Retainer – ₹50L." Then your accountant splits it manually in a spreadsheet, rounding errors cascade into five different GL buckets, and by audit time you've lost the trail. Wave and FreshBooks both ship this way. Xero and QuickBooks get closer but still require manual GL assignment per line. Here's what actually needs to happen: the invoice must show the client a clean, single retainer figure. But underneath, the system must calculate the exact service delivery split by country, allocate tax to each slice, prorate GL codes by jurisdiction, and validate that every journal entry reconciles to the penny. Then your GL looks like you planned it, not like you guessed. Why one retainer splits into three tax regimes Your retainer is for a mix of services: strategy calls (delivered from Kuala Lumpur), implementation (Jakarta), and monthly reporting (Singapore). Each hub services the client from its own jurisdiction. That means each delivery is subject to the tax law of that country. Malaysia: SST (Sales and Service Tax) at 6% applies to B2B services, including retainer fees. Taxable base is the full retainer allocated to Malaysian delivery. Indonesia: PPn (Pajak Pertambahan Nilai, Value Added Tax) at 10% applies to all B2B service supplies. If your retainer includes invoicing to an Indonesian entity, the full slice is taxable. Singapore: GST at 9% applies to imported services. If your Singapore client receives services from abroad, GST applies. If they're only purchasing administrative/management services from the Singapore office itself, GST may not apply—but assume it does unless your contract clearly states otherwise. The problem: your invoicing platform will ask "which tax rate?" and you'll have to pick one. If you pick 6%, you've under-taxed Indonesia and Singapore. If you manually create three invoices, the client sees three line items and gets confused about the total commitment. The correct GL structure for a three-country retainer Before you invoice, your GL needs five accounts (plus sub-ledgers if you track by country): Revenue – Retainer – Malaysia: ₹X allocated to SST base Revenue – Retainer – Indonesia: ₹Y allocated to PPn base Revenue – Retainer – Singapore: ₹Z allocated to GST base Sales Tax Payable – SST Malaysia: ₹X × 6% Sales Tax Payable – PPn Indonesia: ₹Y × 10% Sales Tax Payable – GST Singapore: ₹Z × 9% And critically: ₹X + ₹Y + ₹Z must equal ₹50,00,000. No more. No less. This is where rounding kills you. Step 1: Define the country split in your service schedule Your contract or SOW should specify hours or percentage by country. Let's say: Malaysia: 40% of effort → ₹20,00,000 Indonesia: 35% of effort → ₹17,50,000 Singapore: 25% of effort → ₹12,50,000 Total: ₹50,00,000. Write this down. You'll validate against it later. Step 2: Calculate tax by country (before touching your invoicing platform) Now compute the tax liability for each slice: Malaysia: ₹20,00,000 × 6% = ₹1,20,000 (SST) Indonesia: ₹17,50,000 × 10% = ₹1,75,000 (PPn) Singapore: ₹12,50,000 × 9% = ₹1,12,500 (GST) Total tax: ₹4,07,500 Invoice total (if tax-inclusive): ₹54,07,500 Or, if you invoice tax-exclusive (which is cleaner for multi-country): the client sees ₹50,00,000 retainer + separate tax lines totaling ₹4,07,500. Step 3: Create line items in your invoicing platform that match the GL structure This is where most platforms fail. Wave and FreshBooks force you to either: Create one line "Retainer ₹50L" and pick a tax rate (impossible for three countries), or Create three separate invoices (confuses the client about the ₹50L commitment) Instead, you need a platform that allows you to create one invoice with multiple line items, each with its own tax code and GL account mapping . Xero and QuickBooks both support this, but you must configure it correctly. In Xero, create four lines: "Retainer Services – Malaysia" | Amount: ₹20,00,000 | Tax: SST 6% | GL Account: "Revenue – Retainer – Malaysia" "Retainer Services – Indonesia" | Amount: ₹17,50,000 | Tax: PPn 10% | GL Account: "Revenue – Retainer – Indonesia" "Retainer Services – Singapore" | Amount: ₹12,50,000 | Tax: GST 9% | GL Account: "Revenue – Retainer – Singapore" The invoice totals to ₹50,00,000 (subtotal) + ₹4,07,500 (tax) = ₹54,07,500 due. The client sees clarity: three line items, one retainer, one total. Orin's invoicing system allows line-level tax and GL code assignment, so if you're consolidating tools, this layer is already built in without manual GL journal workarounds. Step 4: Validate the GL posting before you hit save When you save the invoice, your platform should post: Debit: Accounts Receivable – ₹54,07,500 Credit: Revenue – Retainer – Malaysia – ₹20,00,000 Credit: Revenue – Retainer – Indonesia – ₹17,50,000 Credit: Reven