A client pays you a ₹50,000 monthly retainer for availability. In month one, they use 40 hours of that—billed at ₹1,250/hour. They also need a custom feature: a fixed-price project for ₹15,000. Then they ask for 12 extra hours of support at ₹1,500/hour, outside the retainer. You need one invoice. You need the GL to know which revenue stream each line came from. And you need to not hand-reconcile this every month. Most invoicing platforms—Wave, FreshBooks, even Xero—let you add line items with different rates. What they don't do well is track which income account each line hits , or keep that structure consistent as you apply discounts, taxes, and retainer credits. The result: your GL shows a blob of revenue with no clean separation between retainer, project, and T&M. Month two arrives, you can't compare like-to-like. Finance flags the invoice for manual review. The audit trail goes cold. Here's how to structure mixed-rate invoicing so the GL is clean, the math is auditable, and your client sees exactly what they're paying for. The three-model anatomy: Retainer, project, and hourly Before you write an invoice, you need to know what each model means to your GL and your client's cost centre: Retainer (floor): A fixed monthly fee, typically recorded as 'Retainer Revenue' (or 'Service Revenue – Retained Hours'). The client buys access to a fixed number of hours or a service block. Unused hours may roll, may be forfeited, or may reduce the next month's retainer; that policy must be clear in the contract and on the invoice. Project (fixed-scope): A one-off or recurring deliverable with a fixed price, billed as 'Project Revenue' or 'Professional Services – Fixed'. It's distinct from the retainer and usually has a separate SOW or project schedule. Hourly overage (T&M): Hours beyond the retainer, billed at an agreed rate (often higher than the retainer's effective rate). Recorded as 'Time & Materials Revenue' or 'Overage Hours'. This must be itemized by date, duration, and task. The trap: if you dump all three into a single line item or lump them under one account code, your finance team loses visibility into which revenue streams are growing or shrinking. You also can't easily compare October's retainer utilization to November's if they're baked into a blended total. Structure: One invoice, three GL accounts, no manual splits The solution is to invoice as a single document but line-itemize by revenue model . Each line maps to a specific GL account, and the system records it atomically—no post-invoice journal entry, no spreadsheet workaround. Here's a worked example for a real client: Client: Acme Digital Services Invoice date: 15 Feb 2025 Terms: Net 30 Line 1: Retainer (Feb) – 40 hours @ ₹1,250/hr = ₹50,000 GL Account: 4100 – Retainer Revenue Line 2: Feature Build (Proj-2025-001) – Fixed scope = ₹15,000 GL Account: 4200 – Project Revenue Line 3: Support Overage – 12 hours @ ₹1,500/hr = ₹18,000 GL Account: 4300 – Time & Materials Revenue Subtotal: ₹83,000 Tax (18% GST): ₹14,940 Total: ₹97,940 Each line has a distinct GL code. When the invoice posts, the GL automatically splits the revenue: ₹50,000 to account 4100, ₹15,000 to 4200, ₹18,000 to 4300. Finance can reconcile each stream independently. If tax rules differ (e.g., retainer is reverse-charged, project and T&M are standard-rated), each line can carry its own tax treatment without creating a reconciliation nightmare. The tax and accounting traps Mixed-rate invoicing attracts three silent errors: Trap 1: Retainer tax status gets lost in the merge In many jurisdictions, retainer fees (especially for 'retained capacity' rather than delivered service) may be reverse-charged or exempt. Project work and hourly overages are standard-rated. If your invoice system doesn't track tax per line , you'll apply one tax rate to all three. Your GST/SST/VAT return will overstate or understate your liability. Fix: Ensure your invoicing system lets you set tax rules per line item, not per invoice. Some platforms default to 'apply invoice-level tax to all lines'—avoid this. A retainer line should route to 'Reverse Charge (0%)' or 'Exempt'. The project and T&M lines route to standard rate (18% GST in India, 6% SST in Malaysia, 10% PPN in Indonesia). Trap 2: Retainer credits and roll-overs fracture the GL Month 1: Client doesn't use all 40 hours; 8 roll over. Month 2: You invoice for 40 hours used against the retainer + 8 carryover hours (no charge) + 5 new overages. Your invoice now shows: ₹50,000 retainer (40 hours, current month) ₹0 credit for 8 rolled-over hours ₹7,500 overage for 5 new hours If your system doesn't track the rollover as a separate line-level credit (not a discount, not a manual adjustment), your GL will show the retainer revenue but won't explain why last month's balance didn't zero. The GL and the client portal get out of sync. Fix: Record retainer rollovers as explicit line items: 'Retainer Credit – Carryover from Jan' with a negative amount. This creates an aud