Most SaaS and subscription teams in Singapore and Malaysia treat GST and SST as a simple line item on an invoice. It isn't. The tax treatment of recurring revenue—especially when billed monthly but spanning fiscal periods—creates invoice structure problems and revenue recognition gaps that break your accounting. This isn't about getting audited. It's about invoices that don't match what your accounting software expects, subscriptions that straddle tax periods, and the moment you realize your revenue report disagrees with your bank deposit by exactly one month. How GST and SST differ on recurring revenue Singapore's GST and Malaysia's SST both apply to services, but they handle subscriptions differently because of how they treat the supply moment. Singapore GST: The supply of a service (including subscription access) happens when the service is performed, not when it's invoiced or paid. A monthly SaaS subscription invoiced on the 1st and expiring on the last day of the month is supplied during that calendar month. GST applies on the invoice date, but the tax period that claims the input tax is the period the service was actually delivered. Malaysia SST: SST applies when the invoice is issued, not when the service period ends. A subscription invoiced on January 15 for January 15–February 14 delivery is taxed in January, even though half the service is delivered in February. This creates a timing mismatch between tax liability and actual service delivery that most platforms don't handle correctly. The tax reporting period and the service delivery period are often different. Your invoice structure must separate them, or your books will never reconcile to your tax return. The invoice structure that actually works A subscription invoice that survives audit and doesn't confuse your accounting software needs to show three things clearly: Service period (not invoice date): "Subscription for January 15–February 14, 2024." This is when the supply happens under both GST and SST rules. Invoice date (separate): When you actually issued the invoice. In Singapore, this is when GST liability arises. In Malaysia, this is when SST liability arises. Tax amount broken out by the period it applies to: If a subscription spans two tax periods (e.g., January 31–February 28), the GST or SST for January supply and February supply should be separate line items or clearly noted as applying to different periods. A bad subscription invoice: Shows only invoice date (no service period). Buries the tax period in a note somewhere. Applies one GST/SST rate to a subscription that spans a rate change or fiscal quarter boundary. A correct subscription invoice for a monthly SaaS billed on January 5 for January 5–February 4 delivery: Invoice date: January 5, 2024 Service period: January 5–February 4, 2024 Amount (excluding tax): SGD 500 or MYR 500 GST/SST (January portion, Jan 5–31): SGD 25 or MYR 25 GST/SST (February portion, Feb 1–4): SGD 5 or MYR 5 Total: SGD 530 or MYR 530 This structure forces your invoicing platform to understand fiscal calendars and service periods separately. Most don't. Revenue recognition and the one-month lag problem Your accounting software (Xero, Wave, QuickBooks, or similar) posts revenue based on when you invoice, not when you deliver the service. For a subscription invoiced on January 5 covering January 5–February 4, your accounting software typically records all revenue on January 5. But under accrual accounting—which you should be using for any SaaS business—27/31 of the revenue belongs in January and 4/31 in February. If your invoicing platform doesn't split the revenue line item or add a note about the service period, you'll have to manually adjust entries every month, or your revenue report will be wrong. The fix: Your invoicing system (whether Orin's billing module , Stripe Billing, Zuora, or another platform) must: Create a revenue line per service period, even if you invoice once. Mark which accounting period each portion of revenue belongs to. Export that information to your accounting software in a way it understands (usually a notes field or a custom category). Track tax separately by the period tax applies to, not the invoice date. If your invoicing system can't do this, you'll post-process invoices in a spreadsheet before handing them to accounting. It works for 10 customers. It breaks at 100. The GST/SST reporting month mismatch In Singapore, your GST return covers a calendar month. In Malaysia, SST returns are monthly (for most businesses). But your invoices don't align to your return calendar. Example: You invoice on January 28 for January 28–February 27 service. Under Singapore's rules, the GST on that invoice applies to your January GST return. But you're supplying the service over two calendar months. Your GST return says you collected tax on SGD 500 of January service, but your bank statement shows you collected on a service that's only 25% delivered in January. This doesn't cause an audit probl