You've signed a client to a ₹8L retainer, a ₹4L fixed project deliverable due in week 3, and you're billing ₹15K daily for hours over 120 per month. On a single invoice. In three countries, your tax treatment diverges—and most invoicing tools flatten it into one line item, which fails audit. This is a real problem. When one invoice mixes retainer (recurring), project milestone (fixed), and time-and-materials (variable), the tax authority sees three separate supplies. Malaysia's SST applies differently to services vs. goods. Indonesia's PPN bases on the actual supply date, not invoice date. Singapore's GST depends on whether you're registered and which entity invoices. Get the split wrong, and you're either overpaying or flagged for audit. Let me walk through the actual math, the GL splits, and which platforms handle this without manual journal entries. The three billing types on one invoice: what each is taxed as Before you structure the invoice line items, understand what you're actually supplying: Retainer (monthly): a right to labor hours, usually classified as a service. In Malaysia, SST applies at the standard rate (usually 6%). In Indonesia, PPN is 11% on the service supply date, not invoice date. In Singapore, GST (9%) applies only if you're registered; if not, you charge zero GST and the client bears the burden. Fixed project milestone: delivery of a defined output (design, code, report). This is a single supply on the delivery/invoice date. Same tax rates as retainer, but the supply date matters for PPN invoicing compliance. Time-and-materials (hourly overages): billed daily or weekly at ₹X per hour over the retainer cap. Again, a service. Tax applies on the invoice date in most cases, but in Indonesia, if you invoice weekly, each week is a separate supply date. The trap: most invoicing tools let you create one invoice with three line items and one tax rate. The GL posting then posts all three line items to the same tax payable account, which is correct in total but wrong in detail—and when an auditor traces a single line item to the GL, they see a mismatch between the invoice tax rate and the actual supply type. Malaysia (SST): How to split and post one invoice across three supply types Malaysia's Goods and Services Tax system (SST) taxes goods and services at standard rates (6% is most common for services). The rule is simple in theory: every supply on the invoice date is taxed at the rate that applies to that supply type on that date. In practice, a single invoice with retainer, project, and hourly overages is one document with three supplies. Your invoice should show: Retainer ₹80,000 × 6% SST = ₹4,800 Project milestone ₹40,000 × 6% SST = ₹2,400 Hourly overages (10 hours) ₹15,000 × 6% SST = ₹900 Total SST: ₹8,100 The GL split is critical. Do not post all three supplies to one SST Payable account. Instead: Post retainer income to Service Revenue (MYR equivalent) + SST Payable – Services Post project income to Project Revenue + SST Payable – Projects Post hourly income to Labor Revenue + SST Payable – Labor When LHDN audits, they trace each supply type through the GL. If you post all three to one account, the auditor cannot verify that each supply was taxed at the correct rate for its type. Worse, if one supply type is exempt (rare, but possible), you've already overpaid. In Malaysia, the invoice must itemize by supply type. A single GST line hides the GL splits an auditor will demand. Indonesia (PPN): Supply date vs. invoice date—which one controls tax This is where most invoicing tools fail. Indonesia's PPN (Value Added Tax, 11% standard rate) is triggered by the supply date , not the invoice date. If you deliver a project milestone on the 15th but invoice on the 20th, PPN is due based on the 15th supply date. For a mixed-supply invoice, this means: Retainer: supplied each day of the month. Most companies post PPN based on invoice date (end of month) for simplicity, but technically you should track daily supply. For audit safety, use the invoice date if retainer services are continuous. Project milestone: supplied on delivery date (e.g., week 3). If you invoice it on a later date, PPN is still due on the delivery date. Your invoice must show the supply date in a notes field. Hourly overages: supplied as hours are logged. If you bill weekly, each week is a separate supply date, though many companies post PPN on invoice date for the weekly batch. The GL posting must separate by supply date: Retainer (supply date: month-end) → Service Revenue + PPN Payable (month-end supply) Project (supply date: week 3, invoice date: month-end) → Project Revenue + PPN Payable (week 3 supply date) Hourly (supply dates: weekly, invoice date: month-end) → Labor Revenue + PPN Payable (weekly supply dates) When you file the e-Faktur (electronic invoice) to the Indonesian tax authority, the system checks that the supply dates you declare match the invoice date logic. If you invoice on the 30th but claim a supply date o