You've just sent an invoice to your client with three things on it: a ₹50,000 monthly retainer, a ₹35,000 fixed-price project milestone, and ₹12,000 in hourly work for overflow tasks. Your accountant calls back. The invoice is fine. The GL posting is not. The tax treatment splits three ways. The rounding errors are already queuing. This is the reality for most service businesses in Malaysia and Singapore. You don't bill one way. But your invoicing software—and your accounting spine—expects you to. The result: GL splits that don't reconcile, tax liability misclassified, and an audit trail so fragmented that your accountant needs four spreadsheets to explain what happened. Here's how to structure a single invoice with three billing types so your GL stays clean, your tax withholding is correct, and your auditor doesn't call. Why one invoice with three billing types breaks GL A retainer is revenue recognised on a date. A project milestone is revenue tied to a deliverable. Hourly work is revenue tied to time logs. On a single invoice, they're all billed on the same day, but they don't all post the same way. Retainer GL split: Debit client account, credit deferred revenue. Revenue recognised monthly. If you bill quarterly in advance, you're holding liability until it's earned. Project GL split: Debit client account, credit service revenue. Revenue recognised on milestone or completion. If you bill on invoice date but the milestone hasn't hit yet, you have revenue recognition mismatch. Hourly GL split: Debit client account, credit service revenue. Revenue recognised when time is logged, not when invoiced. If you invoice 10 days after hours are logged, your revenue date and invoice date are different. On a single invoice, all three hit the same debit (accounts receivable). They each hit a different credit (deferred revenue, service revenue, service revenue—but at different dates). Your GL shows ₹97,000 billed, but revenue recognised is spread across multiple periods, and the accounts receivable aging doesn't match invoice date. Most invoicing platforms don't have fields for revenue recognition date separate from invoice date. You end up with three revenue lines, one GL posting rule, and chaos. Structure your invoice line items to match GL posting The fix starts before you hit send. Line items need to be named and ordered so they map to GL accounts without interpretation. Retainer section: Line: "Monthly Retainer – May 2025 (hours available: 40)". Amount: ₹50,000. GL code: 4100 (Deferred Revenue – Service Retainer). Post to this, not revenue. Revenue recognition: Month-end. A separate journal entry on the 31st moves ₹50,000 from deferred to earned. Tax treatment: Standard-rated. No withholding unless your client contract specifies it. Project section: Line: "Design Delivery – Project Scope XYZ (Completed 15-May-2025)". Amount: ₹35,000. GL code: 4000 (Service Revenue – Projects). Post only if milestone is complete. Revenue recognition: Completion date, not invoice date. If this line is on an invoice dated 20-May but work finished 15-May, journal entry is dated 15-May. Tax treatment: Standard-rated. Some contracts qualify for exemption if delivery is offshore; check your client contract and LHDN/IRAS ruling. Hourly work section: Line: "Technical Support – Hours logged 1–19 May 2025 (40 hours @ ₹300/hr)". Amount: ₹12,000. GL code: 4000 (Service Revenue – Time & Materials). Can be same as project if your GL is three-digit; use 4001 if you need sub-tracking. Revenue recognition: Last day of hours logged, not invoice date. If invoice is dated 25-May but last hour was logged 19-May, revenue date is 19-May. Tax treatment: Standard-rated. Withholding applies if client is a contractor or overseas entity; check your contract and local rules. The key: each section has a clear GL code, a clear revenue recognition trigger, and a clear tax rule. When you post this invoice, you're not guessing. Tax withholding and treatment by billing type Tax rules differ by billing type in Malaysia and Singapore. If you're invoicing a government body, a contractor, or an overseas entity, withholding rules change. If you're invoicing a regular business, they don't—but your GL still needs to show the right classifier. Malaysia (SST): Retainer: Standard-rated (6% SST) unless you have an exemption. Retainers for 'professional services' can qualify for exemption under certain conditions; confirm with your tax advisor. If exempt, invoice must state 'Exempt from SST'. GL: 4100 or 4100-E (Exempt). Project: Standard-rated unless offshore services (check LHDN ruling). If offshore, mark 'Exempt – Service rendered outside Malaysia'. GL: 4000 or 4000-O (Overseas). Hourly: Standard-rated. Withholding (3%) applies if client is government, a contractor, or you've been notified in writing. GL: 4000; reduce by withholding in a separate line or memo field. Singapore (GST): Retainer: Standard-rated (8% GST) unless you're exempt. Retainers are typically standard-rate