QR e-faktur ZATCA (Saudi FATOORA)
ZATCA (Otoritas Zakat, Pajak, dan Bea Cukai) Arab Saudi mewajibkan QR pada setiap faktur pajak yang diterbitkan di Kerajaan. Fase 1 adalah TLV sederhana; Fase 2 menambahkan penyegelan kriptografis melalui integrasi dengan platform FATOORA. Faktur yang tidak patuh ditolak oleh perangkat lunak akuntansi pembeli dan tidak valid untuk klaim pengembalian PPN.
Spesifikasi kanonik:ZATCA E-Invoicing Resolution & Implementing Regulations, berlaku sampai 2026.
Fase 1 (Pembuatan): berlaku sejak 4 Desember 2021. Semua bisnis terdaftar PPN harus menerbitkan faktur digital dengan QR.
Fase 2 (Integrasi): diluncurkan secara bertahap berdasarkan ukuran bisnis sejak 1 Januari 2023. Menambahkan tanda tangan digital + persetujuan ZATCA untuk faktur standar dan pelaporan waktu nyata untuk faktur sederhana.
Fase 1 (Pembuatan): berlaku sejak 4 Desember 2021. Semua bisnis terdaftar PPN harus menerbitkan faktur digital dengan QR.
Fase 2 (Integrasi): diluncurkan secara bertahap berdasarkan ukuran bisnis sejak 1 Januari 2023. Menambahkan tanda tangan digital + persetujuan ZATCA untuk faktur standar dan pelaporan waktu nyata untuk faktur sederhana.
Apa itu
QR mengkodekan string Base64. Dekode Base64 untuk mendapatkan urutan TLV biner dengan 5 bidang wajib dalam urutan tetap:
| Tag | Bidang | Tipe | Catatan |
|---|---|---|---|
01 | Nama penjual | String UTF-8 | Nama dagang penjual. Arab dan Latin keduanya diterima. |
02 | Nomor registrasi PPN | 15 digit | Dimulai dengan 3 untuk entitas Saudi. Format: 3XXXXXXXXXXXXX3. |
03 | Cap waktu faktur | ISO 8601 | Mis. 2026-04-18T10:30:00Z. Harus menyertakan zona waktu. |
04 | Total faktur (dengan PPN) | String desimal | Mis. 115.00. Mata uang secara implisit SAR. |
05 | Jumlah PPN | String desimal | Mis. 15.00. Tarif standar saat ini 15%. |
06 | Hash faktur (Fase 2) | Base64 SHA-256 | SHA-256 dari XML faktur kanonik. |
07 | Tanda tangan digital (Fase 2) | Base64 | ECDSA atas hash faktur menggunakan sertifikat CSID penjual. |
08 | Kunci publik (Fase 2) | Base64 X.509 | Kunci publik ECDSA penjual (dari CSID). |
09 | Cap ZATCA (Fase 2) | Base64 | Tanda tangan balik ZATCA. Hadir hanya setelah persetujuan ZATCA. |
Setiap rekaman TLV adalah 1 byte tag + 1 byte panjang + <panjang> byte nilai. Seluruh urutan kemudian dikodekan Base64 menjadi payload QR.
Fase 1 (sederhana) vs Fase 2 (integrasi)
| Aspek | Fase 1 | Fase 2 |
|---|---|---|
| Konten QR | Hanya tag 01–05 | Tag 01–05 ditambah 06, 07, 08, opsional 09 |
| Integrasi ZATCA | Tidak ada, offline | API waktu nyata untuk faktur sederhana, alur persetujuan untuk faktur standar |
| Sertifikat diperlukan | Tidak | Ya, CSID (Cryptographic Stamp Identifier) yang diterbitkan ZATCA |
| Tanggal efektif | 2021-12-04 (semua bisnis) | 2023-01-01 (gelombang bertahap berdasarkan pendapatan) |
| Cakupan faktur | B2C (sederhana) + B2B (standar) | B2C sederhana: laporan waktu nyata. B2B standar: persetujuan (pra-validasi) sebelum diterbitkan. |
Vektor uji kanonik
Contoh TLV (sebelum Base64):
01 0A "Acme Saudi" 02 0F "300000000000003" 03 14 "2026-04-18T10:30:00Z" 04 06 "115.00" 05 05 "15.00"Setelah pengkodean Base64:
AQpBY21lIFNhdWRpAg8zMDAwMDAwMDAwMDAwMDMDFDIwMjYtMDQtMThUMTA6MzA6MDBaBAYxMTUuMDAFBTE1LjAw| Kasus | Input | Awalan Base64 |
|---|---|---|
| Fase 1, sederhana minimal | seller=Acme Saudi | AQpBY21lIFNhdWRp... |
| Nama penjual Arab | seller=شركة أكمي | Nama penjual dikodekan UTF-8 di dalam TLV sebelum Base64. |
| Faktur standar Fase 2 | Semua di atas ditambah hash=<SHA-256 Base64> | Base64 jauh lebih panjang. Dekoder harus menoleransi tag ekstra setelah 05. |
Jebakan umum
- Panjang nomor PPN. Nomor PPN ZATCA tepat 15 digit, dimulai dan diakhiri dengan
3. Hal lain gagal validasi di sisi penerimaan faktur. - Cap waktu tanpa zona waktu. Spesifikasi mengharuskan ISO 8601 dengan zona eksplisit (
Zatau+03:00). Cap waktu lokal naif ditolak. - Urutan pengkodean. Bidang TLV harus muncul dalam urutan nomor tag (01, 02, 03, 04, 05, …). Mengubah urutan membuat QR berhasil didekode tetapi beberapa validator menandainya sebagai non-kanonik.
- Pemformatan desimal. Total faktur dan jumlah PPN menggunakan titik desimal (
115.00), bukan koma desimal (115,00). Juga tidak ada pemisah ribuan. - Mata uang secara implisit SAR. Faktur mata uang asing tetap dikonversi ke SAR untuk bidang QR. XML yang mendasari mungkin membawa mata uang asli; QR tidak.
- Kegagalan persetujuan Fase 2. Faktur standar yang diserahkan ke API persetujuan ZATCA dapat ditolak (CSID buruk, XML cacat, perhitungan pajak salah). Faktur secara hukum tidak valid sampai disetujui. Pertahankan loop percobaan ulang dengan mundur eksponensial; jangan terbitkan faktur sampai persetujuan berhasil.
- Rotasi sertifikat CSID. CSID Fase 2 kedaluwarsa (biasanya 1 tahun). Buat pemeriksaan pembaruan di tumpukan e-faktur Anda atau Anda tiba-tiba tidak dapat menerbitkan faktur.
Kompatibilitas pemindai
| Pembaca | Dukungan | Catatan |
|---|---|---|
| Aplikasi ZATCA FATOORA | Native | Aplikasi resmi Kementerian; memverifikasi tanda tangan Fase 2 terhadap ZATCA PKI. |
| Perangkat lunak akuntansi Saudi (SAP B1, Oracle, Microsoft Dynamics) | Native (setelah 2023) | Build Saudi yang dilokalisasi memiliki penguraian ZATCA di pipeline AP. |
| Kamera iOS | Base64 mentah | Tidak dikenali sebagai faktur pajak. Pengguna harus membuka aplikasi FATOORA. |
| Kamera Android / Google Lens | Base64 mentah | Sama, tidak ada penguraian native. |
| Alat audit pihak ketiga (PwC, KPMG, unit Saudi Deloitte) | Native | Suite teknologi audit mengurai + memverifikasi tanda tangan Fase 2. |
Lihat juga
- /zatca-saudi-einvoice-qr-code/, generator.
- /standards/, kembali ke indeks standar.
- Portal Pengembang ZATCA, sumber daya resmi dan sandbox FATOORA.