A subscription is one agreement and many supplies. Each billing cycle is a separate taxable event with its own invoice — numbered, chained to the one before, cleared or reported on its own. A billing system that models the plan as one invoice "renewed" each month has it backwards: a transmitted document cannot be edited. Retainers and milestones for a services firm are a different post.
Each cycle is its own invoice
The document type is decided by the buyer, not by the plan. A business customer — a VAT-registered company or a legal entity — gets a standard tax invoice, cleared by the Authority before you may send it. An individual gets a simplified tax invoice, handed over at once and reported within 24 hours. One question decides it.
Most SaaS, hosting and managed-service customers are businesses, and that lands at signup: a standard invoice must carry the buyer's VAT number and address. Collect both when the account is created, verify the number with our free VAT number lookup, and store them against the customer so every cycle inherits them. A malformed buyer VAT number is rejected outright under BR-KSA-44; a business with no VAT registration is identified by its commercial registration number instead. And put the period in the line: "Business plan, 1–30 September 2026", not "Subscription".
Where the tax point falls on a recurring contract
For a service supplied continuously under a contract that makes the fee payable periodically, Article 20(1) of the VAT Implementing Regulations — amended in October 2021, published on zatca.gov.sa — fixes the date of supply and the tax due date of each period at the due date of the payment, the date a payment is actually made, or the date an invoice is issued, whichever is earliest — and it must occur at least once in any twelve consecutive months.
For a monthly plan billed on the 1st, that means the 1st: the fee falling due is itself the tax point, so the invoice is issued when the cycle bills, not when the money arrives. Article 53 adds the outer limit for a business customer — no later than the fifteenth day of the month after the supply. Whether your contract falls under it is for your accountant; issuing the invoice fixes the tax point either way. And never date an invoice into the future to match a due date: BR-KSA-04 rejects it.
Annual plans paid upfront
The payment is the earliest of the three events, so the tax on the whole year falls due when the customer pays, and the document is one invoice for the full annual fee at that moment, its line naming the twelve months. Article 53 says the same from the other side: a tax invoice is required when consideration is received before the supply.
One caveat. Phase 2 also has a prepayment invoice type (386) for an advance settled against later invoices, and we have seen an upfront annual subscription presented both ways. ZATCA Tools issues the ordinary invoice and note types, not the 386 type, so confirm the treatment with your accountant once, then automate it.
Upgrades, downgrades and cancellations
Every plan change after billing is a new document, and the direction of the money picks it — the same rule as any other correction.
Upgrade mid-cycle. A debit note (383) against the cycle's invoice is accepted, but a new invoice for the pro-rated difference fits better: the cycle's invoice was correct when issued, a debit note says an existing supply was under-charged, and "Business plan upgrade, 16–30 September" is the proration line your billing system already creates. The next cycle bills the new plan in full.
Downgrade or cancellation with a pro-rated refund. Money comes back, so this is a credit note (381) against the cycle's invoice for the unused part only. Its reason is a data field whose absence is an error — BR-KSA-17 rejects the note. Its reference to the original invoice comes back as a warning under BR-KSA-56 when missing: accepted, but pointing at nothing. A credit note may not exceed what is still open on the invoice after earlier notes.
Cancellation with no refund. Nothing; the paid period was supplied. A downgrade at renewal is simply a smaller invoice next cycle — never a negative line, which BR-KSA-F-04 rejects.
Event, document, timing
| Event | Document | When |
|---|---|---|
| Cycle bills, business customer | Standard invoice for the period | Billing date; cleared before it is sent |
| Cycle bills, consumer | Simplified invoice | At the charge; reported within 24 hours |
| Annual plan paid upfront | One invoice for the year, line naming the period | At payment |
| Upgrade mid-cycle | New invoice for the pro-rated difference (or a debit note) | When the upgrade takes effect |
| Downgrade or cancellation with a refund | Credit note against the cycle's invoice, with reason and reference | When the refund is agreed |
| Cancellation, no refund | Nothing | — |
| Card fails on the billing date | The cycle's invoice if the fee fell due; otherwise nothing yet | The due date, or the successful retry |
| Free trial, 100% coupon | Nothing — nothing is taxable | — |
| The Authority rejected a cycle's invoice | Fix the field it names and resubmit | Same day |
A worked example at 15%
A company is on the Pro plan at 400 SAR a month before VAT, billed on the 1st, prorated by calendar day.
- 1 September — cycle invoice. Pro plan, 1–30 September: 400.00 net, VAT 60.00, total 460.00.
- 16 September — upgrade to Business at 600 SAR a month. The difference is 200.00 a month and 15 of September's 30 days remain: 100.00 net, VAT 15.00, total 115.00, as a new invoice for "Business plan upgrade, 16–30 September".
- 1 October and 1 November — cycle invoices. Business plan, each: 600.00 net, VAT 90.00, total 690.00.
- 20 November — cancellation with a pro-rated refund. 10 of November's 30 days are unused: 600 × 10 ÷ 30 = 200.00 net, VAT 30.00, a credit note of 230.00 against November's invoice, reason "Cancelled 20 November; 10 unused days of 30 refunded".
Notice what never happened: no invoice was edited, no negative line appeared, and the upgrade did not reopen September.
Failed payments, trials and coupons
A card fails on the billing date. "No payment, no invoice" is right for a consumer plan suspended at once, where nothing was supplied — subject to what your terms say fell due. For a business customer Article 20(1) applies: if the fee is payable on the billing date, that due date is a tax point whether or not the card worked, so issue the cycle's invoice on the date and record the payment when it lands. Where no invoice exists yet and a retry succeeds, the payment is the event: invoice then.
Free trials. No consideration, nothing taxable, nothing to invoice. The first invoice is the first charge.
Coupons. A partial discount is a discount on the line, taxed on what is actually paid. A 100% coupon leaves nothing taxable: ZATCA Tools refuses a fully discounted order rather than sign a zero-value invoice (the API answers invalid_lines).
Automating it from your billing system
ZATCA Tools has no recurring or scheduled invoices, no subscription management and no card processing: your billing system already knows when a cycle bills and what a proration is worth, so it stays the source of truth and calls the REST API at each event: POST /v1/invoices when a cycle bills, POST /v1/notes with kind: credit and a reason when a refund is agreed. Pass your cycle id as external_id or an Idempotency-Key header: a repeated call returns the document already issued, so a retry after a timeout never duplicates an invoice. Amounts are in SAR only.
A platform billing many merchants uses the Partner API: one partner key, an onboarding link so each merchant enters their own Fatoora OTP, their own certificates and chain underneath. The partner guide is the overview, and a direct integration the comparison.
What we provide
Signed invoices with a compliant QR code, cleared or reported; credit and debit notes against the original, reason on the document; saved customers with VAT number and national address, plus a CSV import; receipt vouchers so a B2B invoice reads paid, partly paid or unpaid; per-customer reports as CSV or PDF; an API key from Settings; and every document's signed XML archived six years, downloadable. Not a subscription manager, a payment gateway or an accounting system. Free to start: 50 invoices or 30 days from the day you connect, whichever comes first, then from 49 SAR a month; API and platform volumes are agreed per partner, not priced on a page — the partner page says why. Connecting takes one OTP from the Fatoora portal: start here, or send us your billing stack.