Service teams live in billing purgatory. On Monday you invoice a ₹50,000 monthly retainer (0% tax in some regimes, 6% in others). On Tuesday you add ₹12,000 of hourly project work (standard rate: 8%). On Wednesday you tack on ₹3,500 of expense pass-throughs (sometimes exempt, sometimes not). One invoice. Three tax regimes. One chart of accounts that has to reconcile to LHDN, MyInvois, or whatever your local tax authority demands. The mistake almost every service firm makes: lumping all three into a single GL line. One "Service Revenue" account, one tax line, one total. When month-end close hits and your invoice total doesn't match your GL, or when an auditor asks why you're claiming 0% on part of a retainer and 8% on the project portion of the same document, you've already lost. Here's what actually works: separate GL accounts for retainer, project, and T&M revenue—and a tax calculation that runs line-by-line, not across the whole invoice. Why invoice-level tax fails Most accounting platforms—and most billing templates—calculate tax once, at the bottom. You enter a tax rate, multiply the subtotal, and that's your invoice total. This works fine when every line on your invoice is subject to the same tax treatment. It breaks the moment you're in a jurisdiction where: Monthly retainers are zero-rated (or exempt) under "continuous services" rules Project work is standard-rated (6%, 8%, 10%, depending on your country) T&M pass-throughs (flights, vendor invoices, cloud credits) are zero-rated but must be itemized Different tax IDs (B2B vs B2C, local vs foreign entity) trigger different rates on the same line Malaysia's MyInvois, Singapore's e-invoicing system, Indonesia's e-Faktur, and Thailand's revenue code all require line-item tax detail. You can't hide behind a lump sum. Worse: when you put everything on one GL line and one tax line, your accounting team has no way to separate revenue type for tax planning, cash flow forecasting, or margin analysis. A retainer is predictable recurring income. Project work is lumpy and often discounted. T&M is margin-neutral pass-through. If they're all in the same bucket, you can't see which part of your business is actually profitable. The GL structure that works Set up your chart of accounts with revenue accounts that match your billing model, not your tax authority's labels. Here's a real structure that survives audit and keeps your finance team sane: 4100 Retainer Revenue – fixed monthly recurring income 4110 Retainer Revenue Tax – Collected – tax on retainers (often 0% in SE Asia, but account for it anyway) 4200 Project Revenue – time-and-materials and fixed-scope work 4210 Project Revenue Tax – Collected – tax on project work (usually standard rate) 4300 Pass-Through Revenue – expenses you bill back (flights, software, vendor invoices) 4310 Pass-Through Revenue Tax – Collected – tax on pass-throughs (usually 0%) When you create an invoice with all three billing types, each line item posts to its own revenue GL account. The tax collected on that line posts to its corresponding tax account. Your invoice total is the sum of three separate tax calculations, not one lump-sum multiplier. Why separate tax accounts? When the tax authority audits you—or when you reconcile to MyInvois or e-Faktur—you need to prove which revenue was taxed at what rate. A single "Tax Collected" account masks that detail. Separate accounts make the audit trail visible in your P&L. Example: one invoice, three rates Client: TechFlow Consulting, Malaysia, GST-exempt entity (0% on retainer, 6% on project, 0% on pass-through). Invoice line-by-line: Retainer (March): ₹50,000 × 0% = ₹50,000 revenue, ₹0 tax Project hours (28 hrs @ ₹400/hr): ₹11,200 × 6% = ₹11,200 revenue, ₹672 tax Pass-throughs (cloud credits, travel): ₹3,500 × 0% = ₹3,500 revenue, ₹0 tax Invoice total: ₹64,700 + ₹672 tax = ₹65,372 GL posting: Debit 4100 Retainer Revenue ₹50,000 Debit 4200 Project Revenue ₹11,200 Debit 4300 Pass-Through Revenue ₹3,500 Credit 4110 Retainer Revenue Tax – Collected ₹0 Credit 4210 Project Revenue Tax – Collected ₹672 Credit 4310 Pass-Through Revenue Tax – Collected ₹0 Credit 1200 Accounts Receivable ₹65,372 When you run your P&L, you see exactly which revenue stream generated tax and at what rate. When MyInvois validation runs, each line validates independently. When the auditor asks why your retainer shows 0% but your invoice total includes tax, you have a clear answer. Three tax calculation patterns you'll hit Pattern 1: Exempt retainer + standard project + pass-through Most common in Malaysia, Singapore, Thailand. Retainers (continuous service) often sit outside GST/SST scope. Projects are standard-rated. Pass-throughs are exempt (they're cost recovery, not revenue). Pattern 2: Reverse-charge on B2B, standard on B2C If you invoice a company with a valid tax ID, retainer and project may be reverse-charged (0% on your invoice, the client pays tax). If you invoice a consumer, all three lines are standard-rated.