You invoice a customer on the 15th for a 12-month subscription. On day 45, they add a user seat mid-cycle. On day 200, they shift from Malaysia to Singapore. By renewal, you've split the same contract across SST, GST, and GST-A with three different effective dates, three GL accounts, and two proration runs. One rounding error and your tax payable is off by ₹4,200 for the quarter. Recurring billing across tax jurisdictions breaks every templated invoicing tool because proration isn't about math—it's about which tax applies to which day, and which GL account receives which cent . This playbook shows you the exact logic to reconcile across three systems without spreadsheet workarounds. Why proration across tax zones kills most invoicing tools Standard invoicing assumes one tax rate, one GL split, one invoice date. Recurring billing violates all three assumptions. When a subscription crosses a tax boundary—a customer moves countries, a tax rate changes mid-contract, or they add/remove services on day 45 of a 30-day cycle—you need to: Calculate the per-day rate for each service line Identify the exact date when the tax rule changes (date of move, rate effective date, service add date) Split the daily rate across the old and new tax zone Apply the correct tax code to each slice Post each slice to the correct GL account in the correct jurisdiction Round after all splits, not before, to avoid compound rounding drift Most platforms (including many accounting suites) calculate tax first, then prorate. That locks in rounding errors. You need to prorate first, then tax each slice. The working model: monthly subscription, mid-cycle add-on Scenario: A customer signs a 12-month contract on 1 January for ₹10,000/month in Kuala Lumpur (SST 6%). On 15 February (day 46), they add a second user at ₹3,000/month. On 1 April, they move to Singapore (GST 9% on all services). Step 1: Establish the billing periods and tax boundaries Period A: 1 Jan – 31 Mar (Malaysia, SST 6%) Period B: 1 Apr – 31 Dec (Singapore, GST 9%) Add-on effective: 15 Feb (mid-period invoice required) Create a line item for each service in each tax period. Do not merge them. Step 2: Calculate the daily rate (before tax) Base service, January–March: Contract amount: ₹10,000 Daily rate: ₹10,000 ÷ 31 days (Jan) = ₹322.58/day Add-on service, 15 Feb onward: Contract amount: ₹3,000 Effective date: 15 Feb Daily rate: ₹3,000 ÷ 29 days (Feb, prorated from 15th) = ₹103.45/day Critical: Use the actual calendar days in each month, not a 30-day average. Tax authorities reconcile against calendar days. Step 3: Build the proration matrix Create a line-by-line breakdown: January invoice (1–31 Jan, SST 6%): Base service: ₹322.58/day × 31 days = ₹10,000.00 Tax (SST): ₹10,000 × 0.06 = ₹600 GL account: Malaysia Revenue (SST zone) February invoice (1–14 Feb + 15–29 Feb, SST 6%): Base service: ₹322.58/day × 28 days = ₹9,032.28 Add-on (15–29 Feb): ₹103.45/day × 15 days = ₹1,551.67 Subtotal (before tax): ₹10,583.95 Tax (SST): ₹10,583.95 × 0.06 = ₹635.04 GL account: Malaysia Revenue (SST zone) March invoice (1–31 Mar, SST 6%): Base service: ₹322.58/day × 31 days = ₹10,000.00 Add-on (1–31 Mar): ₹103.45/day × 31 days = ₹3,206.95 Subtotal (before tax): ₹13,206.95 Tax (SST): ₹13,206.95 × 0.06 = ₹792.42 GL account: Malaysia Revenue (SST zone) April invoice (1–30 Apr, GST 9%): Base service: ₹322.58/day × 30 days = ₹9,677.40 Add-on (1–30 Apr): ₹103.45/day × 30 days = ₹3,103.50 Subtotal (before tax): ₹12,780.90 Tax (GST): ₹12,780.90 × 0.09 = ₹1,150.28 GL account: Singapore Revenue (GST zone) Each row is one invoice line. Each invoice can span multiple tax zones if a service moves mid-month, but each tax slice gets its own invoice line and GL posting . Step 4: Handle the jurisdiction change (April 1) On 1 April, the entire subscription moves to Singapore (GST 9%, not SST 6%). This is not a mid-month proration—it's a clean calendar boundary. Create a new invoice starting 1 April with the new tax rate and GL account. If the move occurred mid-month (e.g., 15 April): Invoice line 1: ₹322.58/day × 14 days (1–14 Apr) = ₹4,516.12 @ SST 6% Invoice line 2: ₹322.58/day × 16 days (15–30 Apr) = ₹5,161.28 @ GST 9% Add-on line 1: ₹103.45/day × 14 days @ SST 6% Add-on line 2: ₹103.45/day × 16 days @ GST 9% Each slice posts to its own GL account. Never merge them. The 24-month contract model: locking in rate and GL at signature Long-term contracts add complexity: the customer pays ₹240,000 upfront for 24 months, locked at SST 6%. But halfway through, you relocate your office to Singapore, and the tax authority says your supply is now subject to GST 9%. Do you honor the original SST rate (because it was locked at signature) or apply GST retroactively? The answer depends on your jurisdiction's rules, but the accounting must reflect the original contract terms . Record the original contract at signature Total contract value: ₹240,000 (24 months) Monthly equivalent: ₹10,000 Tax rate locked: SST 6% Monthly tax acc