QR الفاتورة الإلكترونية ZATCA (FATOORA السعودية)
تُلزم هيئة الزكاة والضريبة والجمارك (ZATCA) في المملكة العربية السعودية بوضع رمز QR على كل فاتورة ضريبية تُصدر في المملكة. المرحلة الأولى تعتمد TLV المبسّطة؛ المرحلة الثانية تضيف الختم التشفيري عبر التكامل مع منصة فاتورة. الفواتير غير المتوافقة يرفضها برنامج محاسبة المشتري وهي غير صالحة لاسترداد ضريبة القيمة المضافة.
المواصفة الرسمية:قرار الفوترة الإلكترونية ZATCA واللوائح التنفيذية, سارية حتى 2026.
المرحلة الأولى (الإصدار): سارية منذ 4 ديسمبر 2021. جميع الشركات المسجلة في ضريبة القيمة المضافة ملزمة بإصدار فواتير رقمية تحتوي على رمز QR.
المرحلة الثانية (التكامل): يتم طرحها بالتدريج حسب حجم الأعمال منذ 1 يناير 2023. تضيف التوقيع الرقمي + تخليص ZATCA للفواتير المعيارية والإبلاغ الفوري للفواتير المبسّطة.
المرحلة الأولى (الإصدار): سارية منذ 4 ديسمبر 2021. جميع الشركات المسجلة في ضريبة القيمة المضافة ملزمة بإصدار فواتير رقمية تحتوي على رمز QR.
المرحلة الثانية (التكامل): يتم طرحها بالتدريج حسب حجم الأعمال منذ 1 يناير 2023. تضيف التوقيع الرقمي + تخليص ZATCA للفواتير المعيارية والإبلاغ الفوري للفواتير المبسّطة.
ما هو
يُشفّر رمز QR سلسلة Base64. فكّ تشفير Base64 للحصول على تسلسل TLV ثنائي يحتوي على 5 حقول إلزامية بترتيب ثابت:
| الوسم | الحقل | النوع | ملاحظات |
|---|---|---|---|
01 | اسم البائع | سلسلة UTF-8 | الاسم التجاري للبائع. يُقبل العربي واللاتيني كلاهما. |
02 | رقم تسجيل ضريبة القيمة المضافة | 15 رقماً | يبدأ بـ 3 للكيانات السعودية. الصيغة: 3XXXXXXXXXXXXX3. |
03 | طابع زمني للفاتورة | ISO 8601 | مثال: 2026-04-18T10:30:00Z. يجب تضمين المنطقة الزمنية. |
04 | إجمالي الفاتورة (شامل ضريبة القيمة المضافة) | سلسلة عشرية | مثال: 115.00. العملة ضمنياً SAR. |
05 | مبلغ ضريبة القيمة المضافة | سلسلة عشرية | مثال: 15.00. المعدل القياسي الحالي 15%. |
06 | تجزئة الفاتورة (المرحلة الثانية) | Base64 SHA-256 | SHA-256 لـ XML الفاتورة القانونية. |
07 | التوقيع الرقمي (المرحلة الثانية) | Base64 | ECDSA على تجزئة الفاتورة باستخدام شهادة CSID للبائع. |
08 | المفتاح العام (المرحلة الثانية) | Base64 X.509 | مفتاح ECDSA العام للبائع (من CSID). |
09 | ختم ZATCA (المرحلة الثانية) | Base64 | التوقيع المضاد لـ ZATCA. يظهر فقط بعد تخليص ZATCA. |
كل سجل TLV يتكون من بايت وسم واحد + بايت طول واحد + <الطول> بايتات القيمة. ثم يُشفّر التسلسل بالكامل بـ Base64 ليصبح حمولة رمز QR.
المرحلة الأولى (مبسّطة) مقابل المرحلة الثانية (تكامل)
| الجانب | المرحلة الأولى | المرحلة الثانية |
|---|---|---|
| محتوى QR | الوسوم 01–05 فقط | الوسوم 01–05 بالإضافة إلى 06، 07، 08، واختيارياً 09 |
| تكامل ZATCA | لا شيء, غير متصل | واجهة برمجية فورية للفواتير المبسّطة، وتدفق التخليص للفواتير المعيارية |
| الشهادات المطلوبة | لا | نعم, CSID (معرّف الختم التشفيري) صادر من ZATCA |
| تاريخ السريان | 2021-12-04 (جميع الشركات) | 2023-01-01 (موجات متدرجة حسب الإيرادات) |
| نطاق الفاتورة | B2C (مبسّطة) + B2B (معيارية) | B2C المبسّطة: تقرير فوري. B2B المعيارية: تخليص (مسبق التحقق) قبل الإصدار. |
متجهات الاختبار القانونية
مثال TLV (قبل Base64):
01 0A "Acme Saudi" 02 0F "300000000000003" 03 14 "2026-04-18T10:30:00Z" 04 06 "115.00" 05 05 "15.00"بعد ترميز Base64:
AQpBY21lIFNhdWRpAg8zMDAwMDAwMDAwMDAwMDMDFDIwMjYtMDQtMThUMTA6MzA6MDBaBAYxMTUuMDAFBTE1LjAw| الحالة | المدخلات | بادئة Base64 |
|---|---|---|
| المرحلة الأولى، مبسّطة كحد أدنى | seller=Acme Saudi | AQpBY21lIFNhdWRp... |
| اسم بائع عربي | seller=شركة أكمي | اسم البائع مُشفَّر بـ UTF-8 داخل TLV قبل Base64. |
| فاتورة معيارية من المرحلة الثانية | كل ما سبق بالإضافة إلى hash=<SHA-256 Base64> | Base64 أطول بكثير. يجب أن تتحمّل أدوات فك التشفير وسوماً إضافية بعد 05. |
المخاطر الشائعة
- طول رقم ضريبة القيمة المضافة. أرقام ZATCA لضريبة القيمة المضافة مكوّنة من 15 رقماً بالضبط، تبدأ وتنتهي بـ
3. أي شيء آخر يفشل التحقق على جانب استيعاب الفاتورة. - الطابع الزمني بدون منطقة زمنية. تشترط المواصفة ISO 8601 مع منطقة زمنية صريحة (
Zأو+03:00). الطوابع الزمنية المحلية البدائية مرفوضة. - ترتيب الترميز. يجب أن تظهر حقول TLV بترتيب رقم الوسم (01، 02، 03، 04، 05، ...). إعادة الترتيب تجعل QR يُفكّك بنجاح لكن بعض المحققين يعلّمونه كغير قانوني.
- تنسيق الأرقام العشرية. إجمالي الفاتورة ومبلغ ضريبة القيمة المضافة يستخدمان النقطة العشرية (
115.00)، لا الفاصلة العشرية (115,00). ولا يوجد فواصل للآلاف. - العملة ضمنياً SAR. فواتير العملات الأجنبية تُحوَّل إلى SAR لحقل QR. قد يحمل XML الأساسي العملة الأصلية؛ رمز QR لا يحملها.
- أعطال تخليص المرحلة الثانية. قد تُرفض فاتورة معيارية مُقدَّمة لواجهة تخليص ZATCA (CSID سيئ، XML مشوّه، خطأ في حساب الضريبة). الفاتورة غير صالحة قانونياً حتى يتم تخليصها. احتفظ بحلقة إعادة محاولة مع تراجع أسّي؛ لا تصدر الفاتورة حتى ينجح التخليص.
- تجديد شهادة CSID. تنتهي صلاحية CSIDs للمرحلة الثانية (عادةً سنة واحدة). ادمج فحص التجديد في منظومة الفوترة الإلكترونية لديك وإلا ستتوقف فجأة عن إمكانية إصدار الفواتير.
توافق الماسح الضوئي
| القارئ | الدعم | ملاحظات |
|---|---|---|
| تطبيق ZATCA FATOORA | أصلي | التطبيق الوزاري الرسمي؛ يتحقق من توقيعات المرحلة الثانية مقابل ZATCA PKI. |
| برامج المحاسبة السعودية (SAP B1، Oracle، Microsoft Dynamics) | أصلي (بعد 2023) | الإصدارات السعودية المحلية تحتوي على تحليل ZATCA في مسار AP. |
| كاميرا iOS | Base64 خام | لا تُعرَف كفاتورة ضريبية. يجب على المستخدم فتح تطبيق FATOORA. |
| كاميرا Android / Google Lens | Base64 خام | نفس الأمر, لا تحليل أصلي. |
| أدوات التدقيق من الجهات الخارجية (PwC، KPMG، وحدات Deloitte السعودية) | أصلي | أجنحة تكنولوجيا التدقيق تحلّل وتتحقق من توقيعات المرحلة الثانية. |
انظر أيضاً
- /zatca-saudi-einvoice-qr-code/, المُولِّد.
- /standards/, العودة إلى فهرس المعايير.
- بوابة مطوري ZATCA, الموارد الرسمية وبيئة اختبار FATOORA.