أتمتة الفواتير الإلكترونية في السعودية: دراسة حالة عملية مع n8n
تاريخ النشر: 16 فبراير 2026 | بقلم: أحمد محمد | القراءة: 9 دقائق
التحدي: الامتثال لمتطلبات ZATCA الإلكترونية
مع إلزام هيئة الزكاة والضريبة والجمارك (ZATCA) جميع الشركات السعودية بإصدار فواتير إلكترونية، واجهت شركة الخليج للتقنية (50 موظف، الرياض) تحدياً كبيراً: إصدار 200+ فاتورة شهرياً يدوياً مع ضمان التوافق مع معايير المرحلة الثانية (Integration Phase).
الفريق المحاسبي (3 أشخاص) كان يقضي 4 ساعات يومياً في:
- إدخال بيانات الفواتير يدوياً في النظام المحاسبي
- تحويل الفواتير لصيغة XML المطلوبة من ZATCA
- إرسال الفواتير للعملاء عبر البريد الإلكتروني وواتساب
- متابعة حالة الدفع وإرسال تذكيرات
الحل: نظام أتمتة متكامل بـ n8n
بنينا نظاماً متكاملاً يربط بين Google Sheets (كقاعدة بيانات)، n8n (للأتمتة)، وAPI هيئة ZATCA (للإرسال الإلكتروني).
المكونات الأساسية:: حلول تقنية
- Google Sheets — قاعدة بيانات العملاء والفواتير
- n8n Workflow — 4 عمليات أتمتة متسلسلة
- ZATCA API — إرسال الفواتير الإلكترونية
- WhatsApp Cloud API — إرسال نسخة PDF للعميل
- 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 هنا لمساعدتك.