كيفية ربط API بحلول الفوترة الإلكترونية مع ZATCA في 2026

الخلاصة السريعة

  • ما هو؟ توصيل نظام الفوترة بمنصة فاتورة ZATCA تلقائيًا عبر واجهة برمجية (API)
  • لمن؟ كل منشأة خاضعة لضريبة القيمة المضافة وصلت إليها المرحلة الثانية من هيئة الزكاة والضريبة والجمارك
  • الخيارات؟ برنامج محاسبي معتمد · ربط ERP · تطوير مخصص · وسيط Middleware
  • الأهم تقنيًا؟ XML UBL 2.1 · شهادة CSID · توقيع رقمي · Mutual TLS
  • Clearance أم Reporting؟ B2B = Clearance قبل الإرسال / B2C = Reporting خلال 24 ساعة

مع تطبيق المرحلة الثانية من نظام الفوترة الإلكترونية (مرحلة الربط والتكامل)، أصبح ربط API بحلول الفوترة الإلكترونية ضرورة تشغيلية وليست خيارًا. هذا الدليل يشرح الخطوات العملية، طرق التكامل المتاحة، والمتطلبات التقنية للاتصال بمنصة فاتورة التابعة لهيئة الزكاة والضريبة والجمارك — بأسلوب يناسب المدير والمطور معًا.

شرح تكامل API للفوترة الإلكترونية مع منصة ZATCA المرحلة الثانية
مخطط يوضح تكامل API للفوترة الإلكترونية مع هيئة الزكاة والضريبة (ZATCA)

ما معنى ربط API بحلول الفوترة الإلكترونية؟

واجهة برمجة التطبيقات (API) هي القناة التقنية التي تربط نظامك المحاسبي مباشرةً بمنصة فاتورة الخاصة بالهيئة، بحيث تُرسَل الفواتير آليًا عند إصدارها للتحقق منها واعتمادها — دون تدخل يدوي.

في المرحلة الأولى كان يكفي إصدار الفاتورة إلكترونيًا وحفظها. أما في المرحلة الثانية، فيجب أن يصل كل مستند للهيئة عبر هذه الواجهة البرمجية — إما قبل تسليمه للعميل (Clearance) أو خلال 24 ساعة من الإصدار (Reporting).

💡 من تشمل المرحلة الثانية؟ تُطبَّق بشكل تدريجي على مجموعات من المنشآت وفق جداول تُحددها هيئة الزكاة والضريبة والجمارك. تحقق من موعد مجموعتك عبر البوابة الرسمية لـ ZATCA.

لماذا التكامل عبر واجهة برمجية ضروري؟

التكامل مع منصة فاتورة لا يُحقق الامتثال فحسب، بل يُحسّن الكفاءة التشغيلية بشكل مباشر:

  • أتمتة كاملة: لا رفع يدوي للفواتير على البوابة الإلكترونية.
  • تقليل الأخطاء: البيانات تنتقل مباشرةً من نظامك دون إعادة إدخال.
  • اعتماد فوري: تلقي قبول أو رفض كل فاتورة في الوقت الفعلي.
  • تجنب الغرامات: عدم الربط في الموعد المحدد يُعرّض المنشأة لعقوبات نظامية.
  • تقارير مالية دقيقة: بيانات الفواتير متزامنة مع سجلات الهيئة دائمًا.

طرق ربط API بحلول الفوترة الإلكترونية

تختلف طريقة التكامل بحسب حجم المنشأة وبنيتها التقنية. إليك الخيارات الأربعة الرئيسية:

1. برنامج محاسبي معتمد من ZATCA

الخيار الأيسر لغالبية المنشآت: استخدام برنامج محاسبي سعودي معتمد رسميًا من الهيئة. هذه البرامج جاهزة للاتصال بمنصة فاتورة دون أي تطوير داخلي، وتتولى توليد XML وإدارة الشهادات الرقمية تلقائيًا.

المناسب لـ: المنشآت الصغيرة والمتوسطة التي تريد ربطًا سريعًا بأقل تعقيد.

2. ربط نظام ERP الحالي

إذا كانت منشأتك تستخدم نظام ERP مثل SAP أو Oracle أو Microsoft Dynamics، يمكن إضافة وحدة تكامل تربطه بمنصة فاتورة مباشرةً. هذا الخيار يحافظ على البيانات موحدة داخل النظام الموجود.

المناسب لـ: الشركات المتوسطة والكبيرة التي لديها فريق تقني.

3. تطوير مخصص عبر ZATCA API مباشرةً

إذا كان لديك نظام داخلي مخصص أو منصة تجارة إلكترونية، يمكن لفريق التطوير بناء تكامل مباشر مع منصة فاتورة وفق المواصفات التقنية الرسمية. يتطلب هذا الإلمام بمعيار XML UBL 2.1 وآليات التوقيع الرقمي.

💡 للمطورين: اقرأ دليلنا التقني المفصّل عن شرح XML UBL 2.1 وربط ZATCA API للمطورين السعوديين قبل البدء في التطوير.

المناسب لـ: الشركات التقنية وفرق التطوير الداخلي.

4. وسيط برمجي (Middleware / iPaaS)

بعض المنشآت تستخدم طبقة وسيطة تربط نظامها الحالي بمنصة فاتورة دون تعديل النظام الأصلي. هذا الخيار مرن ومناسب للمتاجر الإلكترونية التي تعمل على منصات جاهزة. للتفاصيل راجع دليلنا عن ربط Shopify مع ZATCA: الفوترة الإلكترونية 2026.

المناسب لـ: المتاجر الإلكترونية ومن لديه أنظمة متعددة.

مقارنة طرق التكامل

طريقة الربط التعقيد التقني التكلفة وقت التنفيذ
برنامج محاسبي معتمدمنخفضاشتراك شهرييوم – أسبوع
ربط ERPمتوسطمتوسطة – مرتفعةأسبوع – شهر
تطوير مخصص (API مباشر)مرتفعتكلفة تطويرشهر – 3 أشهر
وسيط / Middlewareمنخفض–متوسطاشتراك + إعدادأسبوع – أسبوعان

خطوات ربط API بمنصة فاتورة خطوة بخطوة

  1. اختر طريقة الربط المناسبة بناءً على حجم منشأتك وبنيتها التقنية، حدد أيًا من الطرق الأربعة أعلاه يناسبك. إذا كان لديك برنامج محاسبي حالي، تحقق أولًا إذا كان معتمدًا من الهيئة.
  2. سجّل في منصة فاتورة ZATCA ادخل بوابة هيئة الزكاة والضريبة والجمارك بالرقم الضريبي وكلمة المرور، وانتقل لقسم الفوترة الإلكترونية لتسجيل نظامك وتفعيل الربط.
  3. احصل على شهادة CSID أرسل طلب Certificate Signing Request (CSR) عبر Onboarding API للحصول على الشهادة الرقمية. ستحصل أولًا على Compliance CSID للاختبار، ثم Production CSID للإنتاج.
  4. اختبر التكامل في بيئة Sandbox الهيئة توفر بيئة تجريبية تحاكي الإنتاج تمامًا. اختبر Clearance وReporting وسيناريوهات الفشل قبل الانتقال للإنتاج — لا تتجاوز هذه الخطوة.
  5. تحقق من صحة الفواتير قبل الإرسال استخدم ZATCA SDK أو أداة fatoora CLI للتحقق من XML قبل إرساله. أي خطأ في البنية يؤدي لرفض المستند فورًا.
  6. أطلق في بيئة الإنتاج وراقب الاستجابات ثبّت Production CSID وابدأ إرسال الفواتير الفعلية. احفظ Clearance ID وInvoice Hash لكل مستند في قاعدة البيانات.

المتطلبات التقنية الأساسية للتكامل

صيغة XML وفق معيار UBL 2.1

جميع المستندات يجب أن تُرسَل بصيغة XML وفق معيار Universal Business Language 2.1. أي صيغة أخرى (PDF، Excel، JSON) لا تُقبل. البرامج المعتمدة تتولى توليد هذه الصيغة تلقائيًا.

شهادة التوقيع الرقمي CSID

كل مستند يجب أن يحمل توقيعًا رقميًا بخوارزمية ECDSA (منحنى P-256) باستخدام المفتاح الخاص من شهادة CSID الصادرة عن الهيئة. الشهادة تنتهي صلاحيتها — راقب تاريخ الانتهاء وجددها قبل 30 يومًا على الأقل.

بروتوكول HTTPS مع Mutual TLS (mTLS)

الاتصال بمنصة فاتورة يتطلب HTTPS مع Mutual TLS، أي مصادقة ثنائية: النظام يُثبت هويته للهيئة والهيئة تُثبت هويتها للنظام. يجب إرسال الشهادة الرقمية مع كل طلب API.

معرّف UUID فريد لكل فاتورة

كل مستند يحتاج UUID v4 لا يتكرر أبدًا حتى عبر أنظمة مختلفة. استخدم مكتبات UUID المعيارية في لغة البرمجة التي تستخدمها.

سلسلة Hash بين الفواتير (PIH)

كل مستند يحتوي على Hash المستند السابق، مما ينشئ سلسلة لا يمكن التلاعب بها. يجب حفظ Hash كل فاتورة في قاعدة البيانات — إذا فُقد رقم واحد، تنكسر السلسلة كاملًا.

مثال عملي: طلب Clearance API

هذا مثال مبسط لطلب Clearance يوضح البنية الأساسية للـ HTTP request الذي يرسله نظامك لمنصة فاتورة:


POST https://gw-fatoora.zatca.gov.sa/e-invoicing/core/invoices/clearance/single
Content-Type: application/json
Accept-Language: ar
Accept-Version: V2

{
  // الفاتورة بصيغة UBL 2.1 مشفرة بـ Base64
  "invoice": "PD94bWwgdmVyc2lvbj0iMS4wIi...",

  // Hash الفاتورة الحالية (SHA-256)
  "invoiceHash": "NWZlY2ViNjZmZmM4NmYzOG...",

  // UUID فريد لهذه الفاتورة
  "uuid": "123e4567-e89b-12d3-a456-426614174000"
}

استجابة ZATCA عند النجاح تحتوي على clearanceStatus: "CLEARED" وعلى نسخة الفاتورة الموقّعة من الهيئة التي يجب إرسالها للعميل بدلًا من النسخة الأصلية. احفظ clearanceId وinvoiceHash في قاعدة بياناتك.

وفيما يلي الحد الأدنى من بنية ملف XML داخل الـ payload:


<?xml version="1.0" encoding="UTF-8"?>
<Invoice xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2"
         xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2"
         xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">

  <cbc:UBLVersionID>2.1</cbc:UBLVersionID>
  <cbc:ProfileID>clearance:1.0</cbc:ProfileID>  <!-- أو reporting:1.0 -->
  <cbc:ID>INV-2026-0042</cbc:ID>
  <cbc:UUID>123e4567-e89b-12d3-a456-426614174000</cbc:UUID>
  <cbc:IssueDate>2026-05-02</cbc:IssueDate>
  <cbc:IssueTime>14:30:00</cbc:IssueTime>
  <cbc:InvoiceTypeCode name="0100000">388</cbc:InvoiceTypeCode>

  <!-- بيانات البائع والمشتري والسطور والضريبة... -->

</Invoice>
💡 ملاحظة: أي خطأ في كتابة الـ Namespaces يؤدي لرفض المستند فورًا. للتفاصيل الكاملة لبنية XML والتوقيع الرقمي راجع دليل XML UBL 2.1 للمطورين.

Clearance مقابل Reporting: متى تستخدم كل منهما؟

عند تصميم التكامل، يجب أن يُحدد نظامك تلقائيًا نوع العملية بناءً على نوع العميل:

الجانب Clearance (B2B) Reporting (B2C)
ProfileID في XMLclearance:1.0reporting:1.0
الرقم الضريبي للمشتريإلزامياختياري
متى يُرسَل؟قبل تسليم الفاتورة للعميلخلال 24 ساعة من الإصدار
الـ Endpoint/invoices/clearance/single/invoices/reporting/single
QR Codeاختياريإلزامي (TLV Base64)
نوع الاتصالمتزامن (Synchronous)يمكن أن يكون غير متزامن
⚠️ تنبيه: اختيار الـ Endpoint الخطأ يؤدي لرفض المستند أو معالجته بشكل غير صحيح. في الأنظمة التي تدعم نوعي الفاتورة، يجب أن يكون هذا التحديد ديناميكيًا في الكود.

أبرز أخطاء التكامل وكيفية حلها

رمز الخطأ السبب الحل
رفض فوري للمستندخطأ في بنية XML أو Namespaceتحقق بـ ZATCA SDK قبل الإرسال
invalid-signatureخطأ في التوقيع الرقميتأكد من Canonicalization وصحة CSID
hash-mismatchPrevious Invoice Hash خاطئاحفظ Hash كل مستند في DB فور اعتماده
certificate-expiredشهادة CSID منتهيةجدد الشهادة قبل 30 يومًا من انتهائها
duplicate-uuidUUID مكرراستخدم UUID v4 الذي يضمن الفرادة
wrong-environmentاستخدام Compliance CSID في الإنتاجProduction CSID للإنتاج حصرًا
date-format-errorصيغة التاريخ خاطئةYYYY-MM-DD للتاريخ · HH:MM:SS للوقت

Checklist قبل الإطلاق في بيئة الإنتاج

  • تم اختيار طريقة الربط المناسبة لحجم المنشأة
  • تم التسجيل في منصة فاتورة والحصول على بيانات الوصول
  • تم توليد CSR والحصول على Production CSID
  • الفواتير تُولَّد بصيغة XML صالحة وفق UBL 2.1
  • تم التحقق من المستندات باستخدام ZATCA SDK قبل الإرسال
  • تم اختبار Clearance وReporting في Sandbox بالكامل
  • Hash كل مستند محفوظ في قاعدة البيانات
  • آلية تجديد الشهادة الرقمية مُعدّة ومراقبة
  • آلية Retry لإعادة الإرسال عند فشل الاتصال مُفعّلة

الأسئلة الشائعة

هل يمكن التكامل مع ZATCA بدون مطور برمجيات؟

نعم. إذا استخدمت برنامجًا محاسبيًا معتمدًا من الهيئة، يتولى البرنامج عملية الاتصال بالمنصة تلقائيًا ولا تحتاج أي تطوير.

ما الفرق بين Clearance وReporting في منصة فاتورة؟

Clearance للمعاملات B2B ويتطلب موافقة قبل الإرسال، بينما Reporting للمعاملات B2C ويتم خلال 24 ساعة.

ماذا يحدث إذا انقطع الإنترنت أثناء إرسال الفاتورة؟

يجب وجود آلية Retry لإعادة الإرسال. في Reporting لديك 24 ساعة، أما Clearance فيجب الإرسال قبل تسليم الفاتورة.

كم يستغرق تنفيذ التكامل مع منصة فاتورة؟

من يوم إلى أسبوع للبرامج الجاهزة، ومن شهر إلى 3 أشهر للتطوير المخصص حسب التعقيد.

هل Shopify أو WooCommerce تدعم الربط مباشرة؟

لا، لكن يمكن الربط عبر طبقة وسيطة أو مزود خدمة خارجي.

هل تحتاج مساعدة في تنفيذ التكامل مع منصة فاتورة لمنشأتك؟

تواصل مع Trelyoon الآن
خالد ترليون
مدوّن تقني متخصص في الذكاء الاصطناعي، الأمن السيبراني، والعمل الحر — يكتب على Trelyoon منذ 2022
اقرأ المزيد عني ←
تعليقات