أتمتة الفواتير الإلكترونية في السعودية: دراسة حالة عملية مع n8n

تاريخ النشر: 16 فبراير 2026 | بقلم: أحمد محمد | القراءة: 9 دقائق

التحدي: الامتثال لمتطلبات ZATCA الإلكترونية

مع إلزام هيئة الزكاة والضريبة والجمارك (ZATCA) جميع الشركات السعودية بإصدار فواتير إلكترونية، واجهت شركة الخليج للتقنية (50 موظف، الرياض) تحدياً كبيراً: إصدار 200+ فاتورة شهرياً يدوياً مع ضمان التوافق مع معايير المرحلة الثانية (Integration Phase).

الفريق المحاسبي (3 أشخاص) كان يقضي 4 ساعات يومياً في:

  • إدخال بيانات الفواتير يدوياً في النظام المحاسبي
  • تحويل الفواتير لصيغة XML المطلوبة من ZATCA
  • إرسال الفواتير للعملاء عبر البريد الإلكتروني وواتساب
  • متابعة حالة الدفع وإرسال تذكيرات

الحل: نظام أتمتة متكامل بـ n8n

بنينا نظاماً متكاملاً يربط بين Google Sheets (كقاعدة بيانات)، n8n (للأتمتة)، وAPI هيئة ZATCA (للإرسال الإلكتروني).

المكونات الأساسية:: حلول تقنية

  1. Google Sheets — قاعدة بيانات العملاء والفواتير
  2. n8n Workflow — 4 عمليات أتمتة متسلسلة
  3. ZATCA API — إرسال الفواتير الإلكترونية
  4. WhatsApp Cloud API — إرسال نسخة PDF للعميل
  5. Telegram Bot — إشعارات الفريق المحاسبي

سير العمل (Workflow):

1. المحاسب يُدخل بيانات الفاتورة في Google Sheets (سطر واحد)
2. n8n يكتشف السطر الجديد تلقائياً (كل 5 دقائق)
3. يُنشئ ملف XML متوافق مع ZATCA ويحسب الضريبة (15% VAT)
4. يرسل الفاتورة لـ ZATCA API ويحصل على رمز الاعتماد
5. يُولد PDF احترافي ويرسله للعميل عبر البريد + واتساب
6. يُحدث حالة الفاتورة في Sheets إلى "مُرسلة ومعتمدة"

تفاصيل التكلفة والعائد

تكلفة النظام:

  • VPS (Hetzner CPX21): 10 يورو/شهر
  • WhatsApp Cloud API: مجاني (أول 1000 رسالة)
  • وقت التطوير: أسبوعين

التوفير الشهري:

  • ✅ تقليل وقت المعالجة: من 4 ساعات إلى 15 دقيقة
  • ✅ توفير راتب موظف محاسبة: 5,000 ريال/شهر
  • ✅ صفر غرامات عدم امتثال ZATCA
  • ✅ تحصيل أسرع: متوسط الدفع انخفض من 30 يوم إلى 12 يوم

التنفيذ التقني: بناء مولد XML المتوافق مع ZATCA

أخطر جزء في المشروع كان بناء مولد XML يُنتج فواتير متوافقة 100% مع مواصفات ZATCA. المتطلبات تشمل:

الحقول الإلزامية:

  • UUID فريد لكل فاتورة (استخدمنا Function Node في n8n)
  • الرقم الضريبي (VAT Number) بصيغة 15 رقم
  • مبلغ الضريبة محسوب تلقائياً (15%)
  • توقيع رقمي XMLDSIG
  • رمز QR مشفر بـ Base64 يحتوي على بيانات الفاتورة

كيف بنيناه في n8n:

استخدمنا Function Node مع مكتبة xml-js لبناء هيكل XML. التوقيع الرقمي تم عبر مكتبة xml-crypto. رمز QR يُولد باستخدام qrcode library ثم يُحوَّل لـ Base64 ويُضاف للـ XML.

الخطوة الأهم: اختبار الفواتير عبر ZATCA Sandbox API قبل إرسالها للبيئة الحقيقية. نجحت 47 فاتورة من أصل 50 في المحاولة الأولى!

💡 نصيحة خبير من SkyNode: أتمتة المهام

أي مهمة تكررها أكثر من 3 مرات يومياً يجب أتمتتها. ابدأ بأتمتة التقارير اليومية.

مزيد من التفاصيل ←

💡 من واقع التجربة

واجهنا تحدياً كبيراً مع ZATCA API: التوثيق الرسمي باللغة الإنجليزية فقط ومعقد جداً. الأخطاء الشائعة التي واجهناها:

1. خطأ في توقيع XML الرقمي

ZATCA تتطلب توقيع رقمي بمعيار XMLDSIG. استخدمنا مكتبة xml-crypto في Function Node داخل n8n. المشكلة كانت في ترتيب العناصر — يجب أن يكون التوقيع قبل عنصر Invoice وليس بعده.

2. رفض فواتير بسبب تنسيق التاريخ

ZATCA تقبل تاريخ بصيغة ISO 8601 فقط (2026-02-16T10:30:00Z). كنا نرسل التاريخ بصيغة عربية (16/02/2026). الحل: استخدمنا moment.js في Function Node لتحويل التنسيق تلقائياً.

3. Timeout عند إرسال دفعات كبيرة

عند إرسال أكثر من 20 فاتورة دفعة واحدة، كان ZATCA API يرد بخطأ Timeout. الحل: أضفنا تأخير 2 ثانية بين كل فاتورة باستخدام Wait Node في n8n.

🌍 متطلبات ZATCA

مع تطبيق المرحلة الثانية من الفوترة الإلكترونية في المملكة، أصبح الربط المباشر (Integration) مع منصة "فاتورة" إلزامياً. الحلول المؤتمتة هي الطريق الوحيد لضمان عدم توقف أعمالك.

📌 الخلاصة

أتمتة الفواتير الإلكترونية ليست ترفاً — إنها التزام قانوني في السعودية. باستخدام n8n، وفرنا 60,000 ريال سنوياً وضمنا امتثالاً 100% لمتطلبات ZATCA. إذا كنت في السعودية وتحتاج مساعدة في الأتمتة، SkyNode Systems هنا لمساعدتك.

← العودة لجميع المقالات

📚 اقرأ أيضاً في SkyNode