← Blog Business 8 min read · 22 September 2026

E-invoicing for subscription and recurring-billing businesses in Saudi Arabia

A subscription timeline with a separate invoice at each monthly billing date, an upgrade invoice mid-cycle and a credit note at the cancellation
One plan, many documents: an invoice per cycle, a new invoice for the upgrade, a credit note for the refund — and nothing ever edited.

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

EventDocumentWhen
Cycle bills, business customerStandard invoice for the periodBilling date; cleared before it is sent
Cycle bills, consumerSimplified invoiceAt the charge; reported within 24 hours
Annual plan paid upfrontOne invoice for the year, line naming the periodAt payment
Upgrade mid-cycleNew invoice for the pro-rated difference (or a debit note)When the upgrade takes effect
Downgrade or cancellation with a refundCredit note against the cycle's invoice, with reason and referenceWhen the refund is agreed
Cancellation, no refundNothing
Card fails on the billing dateThe cycle's invoice if the fee fell due; otherwise nothing yetThe due date, or the successful retry
Free trial, 100% couponNothing — nothing is taxable
The Authority rejected a cycle's invoiceFix the field it names and resubmitSame 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.

Frequently asked questions

Do I have to issue a new invoice every month for the same subscription? +
Yes. Each billing cycle is a separate supply with its own tax point, so it is a separate invoice with its own number, its own counter value and the hash of the document before it. There is no such thing as renewing last month's invoice: a transmitted document cannot be edited. Copying the lines is fine — the result must be a new document naming the new period.
Our customers pay by card automatically. When is the invoice issued? +
For a consumer, at the charge: a simplified tax invoice is issued at the earliest of the supply and the receipt of payment (Article 53(7) of the VAT Implementing Regulations) and reported within 24 hours. For a business customer the invoice is standard and cleared before it is sent, and under Article 20(1) the fee falling due is itself a tax point — so issue it when the cycle bills, whether the card has settled or not, and record the payment against it when it arrives.
Can I issue one invoice for a whole year paid upfront? +
That is the normal treatment. Payment is the earliest of the three events, so the tax on the whole year falls due when the customer pays, and Article 53 requires a tax invoice when consideration is received before the supply. A 400 SAR-a-month plan sold as a year is one invoice: 4,800.00 net, 720.00 VAT, 5,520.00 in total, with the line naming the twelve months. Whether your accountant prefers to present it as an advance settled against later documents is a question for them; ZATCA Tools issues the ordinary invoice, not the prepayment (386) type.
A customer upgraded halfway through the month — debit note or new invoice? +
Either is accepted; a new invoice fits better. The cycle's invoice was correct when issued, and a debit note asserts that an existing supply was under-charged, which is not what happened. A new invoice for the pro-rated difference — "Business plan upgrade, 16–30 September" — is exactly the proration line your billing system already creates, and the next cycle bills the new plan in full. Use a debit note when the cycle's invoice itself was wrong.
How do I refund the unused part of a cancelled subscription? +
With a credit note (381) against the cycle's invoice for the unused portion only, carrying a reason — its absence is an error under BR-KSA-17 — and a reference to the original invoice. Write the reason as the fact: cancelled on such a date, so many unused days of so many refunded. A credit note may not exceed what is still open on the invoice after earlier notes, and a note against a standard invoice is itself cleared before you send it.
What happens to the invoice if a customer's card fails? +
It depends on whether anything fell due. Under Article 20(1), if the contract makes the fee payable on the billing date, that due date is a tax point whether or not the card worked, so a business customer's cycle should be invoiced on the date and collected afterwards. Where the service is suspended at once and nothing is supplied, whether anything is due at all turns on your terms — ask your accountant. When a retry succeeds and no invoice exists yet, the payment is the event: invoice then. Never leave a cycle both delivered and undocumented.
Can ZATCA Tools generate the invoices automatically each month? +
No — there are no recurring or scheduled invoices, and no subscription management, because your billing system already knows when a cycle bills. It calls the REST API at each event: POST /v1/invoices when a cycle bills, POST /v1/notes for a refund. Pass your cycle id as external_id and a retry after a timeout returns the document already issued instead of a duplicate. Amounts are in SAR only. A platform billing many merchants uses the Partner API.
Ready to connect your business?

Connecting is free and takes under five minutes.

Start for free