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

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

4 طرقللربط مع منصة فاتورة
XML UBL 2.1الصيغة الإلزامية للمستندات
24 ساعةمهلة Reporting للفواتير B2C
30 يوناًقبل انتهاء CSID للتجديد
✓ تمت المراجعة: بناءً على الدليل الإرشادي التفصيلي للفوترة الإلكترونية ZATCA 2026 والمواصفات التقنية الرسمية. آخر تحديث: 2 مايو 2026. — فريق Trelyoon، مختصون في تكامل ZATCA API

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

  • ما هو؟ توصيل نظام الفوترة بمنصة فاتورة ZATCA تلقائيًا عبر واجهة برمجية (API)
  • لمن؟ كل منشأة خاضعة لضريبة القيمة المضافة وصلت إليها المرحلة الثانية من الفوترة الإلكترونية
  • الخيارات؟ برنامج محاسبي معتمد · ربط ERP · تطوير مخصص · وسيط Middleware
  • الأهم تقنيًا؟ XML UBL 2.1 · شهادة CSID · توقيع رقمي ECDSA · Mutual TLS
  • Clearance أم Reporting؟ B2B = Clearance قبل الإرسال / B2C = Reporting خلال 24 ساعة
الإجابة المباشرة: e-invoicing integration Saudi Arabia في المرحلة الثانية يتطلب إرسال كل فاتورة لمنصة فاتورة عبر API — إما قبل تسليمها (Clearance B2B) أو خلال 24 ساعة (Reporting B2C). عدم الربط في الموعد المحدد يعرّض المنشأة لغرامات تصل 50,000 ريال.
شرح تكامل API للفوترة الإلكترونية مع منصة ZATCA المرحلة الثانية
مخطط يوضح تكامل API للفوترة الإلكترونية مع هيئة الزكاة والضريبة (ZATCA)

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

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

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

💡 من تشمل المرحلة الثانية؟ تُطبَّق بشكل تدريجي على مجموعات من المنشآت وفق جداول تُحددها هيئة الزكاة والضريبة والجمارك. تحقق من موعد مجموعتك عبر البوابة الرسمية لـ ZATCA. وللاطلاع على تكلفة التأخر راجع غرامات ZATCA 2026: تصل إلى 50,000 ريال وكيفية تجنبها.

لماذا تكامل الفوترة الإلكترونية مع ZATCA ضروري الآن؟

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

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

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

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

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

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

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

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

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

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

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

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

💡 للمطورين: اقرأ شرح XML UBL 2.1 وربط ZATCA API للمطورين قبل البدء في التطوير — يشرح Namespace، Canonicalization، وبنية الـ Envelope بالتفصيل.

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

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

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

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

مقارنة طرق تكامل الفوترة الإلكترونية

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

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

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

المتطلبات التقنية الأساسية لـ e-invoicing integration

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

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

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

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

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

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

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

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

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

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

أمثلة كود عملية: Clearance وReporting

مثال 1 — طلب Clearance (B2B)

POST https://gw-fatoora.zatca.gov.sa/e-invoicing/core/invoices/clearance/single
Content-Type: application/json
Accept-Language: ar
Accept-Version: V2
Authorization: Basic {base64(username:password)}

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

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

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

// استجابة نجاح (200 OK)
{
  "clearedInvoice": "PD94bWwg...",   // الفاتورة بعد ختم الهيئة
  "validationResults": {
    "status": "PASS",
    "infoMessages": [],
    "warningMessages": [],
    "errorMessages": []
  }
}

مثال 2 — طلب Reporting (B2C)

POST https://gw-fatoora.zatca.gov.sa/e-invoicing/core/invoices/reporting/single
Content-Type: application/json
Accept-Language: ar
Accept-Version: V2
Authorization: Basic {base64(username:password)}

{
  // نفس البنية — لكن profileID في XML = reporting:1.0
  "invoice": "PD94bWwgdmVyc2lvbj0iMS4wIi...",
  "invoiceHash": "YWJjZGVmMTIzNDU2Nzg5MA...",
  "uuid": "987fcdeb-51a2-43f7-b321-123456789abc"
}

// استجابة نجاح (202 Accepted)
{
  "reportingStatus": "REPORTED",
  "validationResults": { "status": "PASS" }
}

مثال 3 — معالجة الخطأ وإعادة الإرسال (Retry Logic)

// JavaScript — نمط Retry مع Exponential Backoff
async function sendWithRetry(payload, maxRetries = 3) {
  for (let attempt = 1; attempt <= maxRetries; attempt++) {
    try {
      const res = await fetch(ZATCA_ENDPOINT, {
        method: "POST",
        headers: { "Content-Type": "application/json", ...authHeaders },
        body: JSON.stringify(payload)
      });

      if (res.ok) {
        const data = await res.json();
        // احفظ Hash و ClearanceID فوراً
        await db.saveInvoiceHash(payload.uuid, data.invoiceHash);
        return data;
      }

      // 4xx = خطأ في البيانات — لا تعيد المحاولة
      if (res.status >= 400 && res.status < 500) {
        throw new Error(`Client error ${res.status} — fix payload`);
      }

    } catch (err) {
      if (attempt === maxRetries) throw err;
      // انتظر: 2s → 4s → 8s
      await sleep(1000 * Math.pow(2, attempt));
    }
  }
}
💡 ملاحظة: أخطاء 4xx (400، 422) تعني خطأ في بيانات الفاتورة — إعادة الإرسال بنفس البيانات لن تنجح. أخطاء 5xx تعني مشكلة في الخادم وتستحق إعادة المحاولة مع Backoff.

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)يمكن أن يكون غير متزامن
استجابة النجاح200 OK + clearedInvoice202 Accepted
⚠️ تنبيه: اختيار الـ Endpoint الخطأ يؤدي لرفض المستند أو معالجته بشكل غير صحيح — تحقق من profileID داخل XML قبل الإرسال.

أخطاء شائعة في ربط API تُكلّفك وقتًا ومالًا

بعد متابعة عشرات حالات تكامل الفوترة الإلكترونية، هذه هي الأخطاء الأكثر تكرارًا:

🚨 الخطأ الأول — استخدام Compliance CSID في الإنتاج: الشهادة التجريبية تُقبل في Sandbox فقط. استخدامها في الإنتاج يؤدي لرفض صامت لجميع الفواتير — بدون رسالة خطأ واضحة. الحل: تأكد أنك حصلت على Production CSID منفصل.

🚨 الخطأ الثاني — عدم حفظ Invoice Hash فور الاعتماد: كثير من المطورين يحفظون Hash لاحقًا في batch — إذا فُقد اتصال واحد، تنكسر سلسلة PIH كاملًا وتتوقف جميع الفواتير اللاحقة.

🚨 الخطأ الثالث — إرسال Reporting بعد 24 ساعة: الهيئة تقبل الفاتورة تقنيًا لكنها تُسجَّل متأخرة — وهذا قد يُعتبر مخالفة للفوترة الإلكترونية في بعض السيناريوهات.

🚨 الخطأ الرابع — عدم تفعيل آلية Retry: انقطاع الإنترنت لثوانٍ دون Retry يعني ضياع الفاتورة. كل نظام تكامل يجب أن يحتوي على قائمة انتظار (Queue) لإعادة الإرسال تلقائيًا.

🚨 الخطأ الخامس — تجاهل تجديد CSID: انتهاء شهادة التوقيع = توقف كامل لإصدار الفواتير. ضع تنبيهًا تلقائيًا قبل 30 يومًا من تاريخ الانتهاء.

جدول أخطاء ZATCA API وحلولها

رمز الخطأ / الحالةالسبب الجذريالحل
رفض فوري للمستند (400)خطأ في بنية XML أو Namespace مفقودتحقق بـ ZATCA SDK أو fatoora CLI قبل الإرسال
invalid-signature (422)خطأ في التوقيع الرقمي أو Canonicalizationتأكد من C14N الصحيح وصحة CSID المستخدمة
hash-mismatch (422)Previous Invoice Hash (PIH) خاطئ أو مفقوداحفظ Hash كل مستند في DB فور اعتماده — لا تحسبه لاحقًا
certificate-expired (401)شهادة CSID منتهية الصلاحيةجدد الشهادة قبل 30 يومًا من انتهائها
uuid-duplicate (422)UUID مكرر من فاتورة سابقةاستخدم مكتبة UUID v4 معيارية — لا تولّد UUID يدويًا
timeout / 5xxمشكلة مؤقتة في خوادم الهيئةفعّل Retry مع Exponential Backoff — لا تُعيد إرسال 4xx

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

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

الأسئلة الشائعة عن ربط API بالفوترة الإلكترونية

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

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

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

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

ماذا يحدث إذا انتهت صلاحية شهادة CSID؟

تتوقف جميع الفواتير عن الإرسال فورًا وتُرفض بخطأ 401. يجب تجديد الشهادة عبر Onboarding API وتحديث نظامك بالشهادة الجديدة قبل استئناف الإرسال.

هل يمكن إرسال فواتير متعددة في طلب واحد (Batch)؟

نعم، تدعم منصة فاتورة إرسال دفعات (Batch) عبر Endpoints مخصصة. لكن لكل بيئة حدود معدل إرسال (Rate Limits) — تحقق من التوثيق الرسمي لمعرفة الحد المسموح به.

هل Sandbox مجاني ومتاح دائمًا؟

نعم، بيئة Sandbox مجانية ومتاحة عبر البوابة الرسمية لجميع المنشآت المسجلة. يُنصح باستخدامها بشكل مستمر حتى لاختبار التحديثات قبل نشرها في الإنتاج.

هل Shopify أو WooCommerce تدعمان ربط API مع ZATCA؟

لا مباشرةً، لكن يمكن الربط عبر Middleware أو مزودي خدمة متخصصين. تفاصيل أكثر في دليل ربط Shopify مع ZATCA.

هل يمكن مقارنة نظام الفوترة السعودي بنظيره في الإمارات؟

نعم، هناك فروق جوهرية في المتطلبات التقنية وجداول التطبيق. راجع مقارنة الفوترة الإلكترونية في الإمارات والسعودية للتفاصيل.

🚀 تريد تنفيذ التكامل بشكل صحيح من أول مرة وتجنب غرامات ZATCA؟

فريق Trelyoon متخصص في ربط API بمنصة فاتورة لجميع أحجام المنشآت

تواصل مع Trelyoon الآن
🏢
بقلم فريق Trelyoon — مختصون في تكامل ZATCA API وحلول الفوترة الإلكترونية السعودية.
آخر تحديث: 2 مايو 2026 | بناءً على المواصفات التقنية الرسمية لـ ZATCA 2026

تنويه: المعلومات للتوجيه العام. راجع موقع ZATCA الرسمي أو استشر مستشارًا تقنيًا معتمدًا للحالات الخاصة.

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