The Zakat, Tax and Customs Authority (ZATCA) requires VAT-registered businesses in Saudi Arabia to issue electronic invoices through its Fatoora programme. Hosting is a taxable service, so a provider invoicing Saudi clients is in scope. The rules arrived in two phases, and a billing platform has to handle both.
Phase 1: generation
Since December 2021, invoices must be generated electronically, in Arabic (English alongside is fine), with the seller's VAT number, a timestamp, the VAT breakdown and, for simplified invoices, a QR code carrying the seller name, VAT number, timestamp, total and VAT amount in the TLV format ZATCA specifies. Handwritten or edited invoices are out; so are invoice numbers with gaps you cannot explain.
Phase 2: integration
Phase 2 connects your system to ZATCA. Each invoice becomes a UBL 2.1 XML document, signed with a certificate ZATCA issued to your installation (the CSID, obtained with a CSR and an OTP from the Fatoora portal), and is either cleared (standard B2B invoices, before you hand them to the client) or reported (simplified B2C invoices, within 24 hours). The XML carries a hash of the previous invoice and a UUID, so the chain cannot be edited later. Credit and debit notes follow the same path and must reference the invoice they correct.
What this means for a hosting business
- Your client records need the buyer's VAT number and address for standard invoices.
- Every invoice, credit note and debit note needs a classification (standard or simplified) and the right XML.
- Recurring invoices still need per-invoice clearance or reporting; automation is not optional at any volume.
- A rejected invoice must be visible to staff with ZATCA's reason, and fixable without breaking the chain.
How Hostinvo handles it
Hostinvo ships both phases: bilingual PDF invoices with the phase-1 QR code, buyer tax data on the client, invoice classification, credit and debit notes, and the phase-2 Fatoora onboarding (CSR, compliance CSID, production CSID), UBL XML generation, signing, clearance and reporting with the response stored on the invoice. It is a setting you switch on when you register, not a separate product. If you also serve clients outside Saudi Arabia, their invoices stay as they were.