التحقق قبل الإرسال إلى نظام الفوترة الوطني هو أن يفحص برنامجك المحاسبي ملف الفاتورة بنفسه قبل أن يرسله إلى دائرة ضريبة الدخل والمبيعات، فيكتشف الخطأ الذي كانت الدائرة سترفض الفاتورة بسببه. وهو الإرشاد الثاني من الإرشادات العشر في الدليل التقني للربط، وغايته المعلنة فيه «تقليل أخطاء 400».
الجواب المختصر أن الدليل لا ينشر قائمة فحص جاهزة، لكنه يوثق القواعد التي تقوم عليها، موزعة على جداول الحقول ومعادلات المجاميع ورسائل الأخطاء. ويجمع هذا المقال تلك القواعد في قائمة فحص واحدة مرتبة حسب أجزاء الفاتورة، ولكل فحص القاعدة كما وردت في الدليل والخطأ الذي يقابله والمقال الذي يشرحه بالتفصيل. وهو موجّه إلى من يبني ربط نظام محاسبي أو نظام تخطيط موارد المؤسسات مع نظام الفوترة الوطني أو يراجعه.

ما يطلبه الإرشاد الثاني: التحقق قبل الإرسال إلى نظام الفوترة الوطني
يرد الإرشاد في جدول الإرشادات في الصفحة 104 من الدليل التقني (الإصدار 1.5) بعنوان «التحقق قبل الإرسال»، ونص وصفه ما يلي.
«التأكد من صحة البيانات قبل الإرسال مثل: المجاميع، الضرائب، رقم المكلف، رقم المشتري، والحقول الإلزامية لتقليل أخطاء 400».
في هذا النص ثلاث ملاحظات تحدد طريقة بناء الفحص.
- الأمثلة ليست حصرًا. كلمة «مثل» تعني أن المجاميع والضرائب والرقمين والحقول الإلزامية أمثلة على ما يُفحص. وبقية القواعد موزعة في جداول الدليل ورسائل أخطائه، وهي التي تجمعها القائمة أدناه.
- الغاية تقليل رمز 400. يربط الدليل الإرشاد بهذا الرمز تحديدًا، وهو الرمز الذي يعود حين تكون في قيم ملف XML قيمة خاطئة، ويصل تفصيلها في حقل
EINV_MESSAGE. وطريقة قراءة هذه الرسائل في مقال خطأ 400 في نظام الفوترة الوطني. - الإرشاد يكمّل الإرشاد الأول. الأول يطلب أن يطابق الملف معيار UBL 2.1 في بنيته، والثاني ينتقل إلى صحة القيم داخل تلك البنية. ولذلك تبدأ القائمة بالبنية ثم تنتقل إلى القيم.
ويشرح مقال الإرشادات العشر لنظام الفوترة الوطني موقع هذا الإرشاد بين الإرشادات الأخرى. أما هنا فنفصّل ما يفحصه نظامك فعلًا، فحصًا فحصًا.
ما يستطيع نظامك فحصه وما لا يستطيعه
قبل كتابة أي قاعدة فحص، يفيد أن تفرّق بين ثلاثة أنواع من الشروط، لأن موقع كل نوع من التحقق المسبق مختلف.
شروط يحسمها الملف وحده
هذه شروط يستطيع نظامك أن يحكم عليها كاملة دون الرجوع إلى أي جهة. ومنها أن يكون وسم الفتح في سطر واحد، وأن يكون رقم كل بند فريدًا، وألا يزيد الرمز البريدي على 5 خانات، وأن تتطابق المجاميع مع البنود، وأن يتفق تصنيف الضريبة مع نسبتها. وهذه هي الجزء الأكبر من القائمة، وفحصها محليًا يمنع وصول الفاتورة الخاطئة إلى النظام أصلًا.
شروط تعتمد على بيانات لدى الدائرة
بعض القيم صحتها مرتبطة بسجلات الدائرة لا بالملف. فالدليل يذكر أن رمز 500 يعود عند خطأ في الرقم الضريبي أو تسلسل مصدر الدخل، وأن رسالة This user is not authorized to submit this type of invoice تظهر حين يرسل المكلف نوع فاتورة لا يتناسب مع رقمه الضريبي أو تسلسل مصدر الدخل الخاص به. ويشترط في فاتورة المناطق التنموية أن يكون المشتري مسجلًا فيها ومعه كتاب إعفاء ساري المفعول مُدخل على النظام المالي.
يستطيع نظامك هنا أن يتأكد أن الحقل غير فارغ، وأن قيمته تطابق ما حفظته أنت في إعدادات الربط عن تسجيلك. لكنه لا يرى سجلات الدائرة، فلا يستطيع أن يؤكد أن المشتري مسجل في المناطق التنموية مثلًا. وهذه الشروط تبقى نتيجتها في رد النظام.
أخطاء لا علاقة لها بقيم الفاتورة
يذكر الدليل رمز 403 لخطأ في رقم المستخدم أو المفتاح السري، ورمز 504 لتعذر الوصول إلى النظام بسبب جدار الحماية لدى المكلف أو موقع الدائرة. ولا يكشف فحص ملف الفاتورة أيًّا منهما، لأن الخلل فيهما في بيانات الربط أو في الاتصال، لا في الملف.
تظليل الدليل: من أين تعرف ما يجب تعبئته
ذكر الإرشاد «الحقول الإلزامية» دون أن يعدّدها، ومرجعها في الدليل هو تظليل الجداول. ففي الصفحة 12 يشرح الدليل مفتاح الألوان الذي يتكرر في كل قوالب الفواتير.

العناصر المظللة بالأصفر متغيرات يجب أن يعبئها نظام البائع، والمظللة بالأخضر متغيرات اختيارية، وما بقي وصف ثابت ينسخ دون تغيير. والعناصر الخضراء في القوالب كلها خمسة، هي الملاحظة cbc:Note وقيمة رقم المشتري والرمز البريدي ورمز المحافظة والهاتف. وما سواها من المتغيرات إجباري.
ويضيف الدليل شروطًا تغيّر حكم بعض الحقول بحسب نوع الفاتورة. فاسم المشتري يصبح واجبًا في فاتورة الذمم وفي الفاتورة النقدية التي تزيد قيمتها على الحد المذكور، والرقم الضريبي للمشتري يصبح إجباريًا في فاتورة المناطق التنموية. ولذلك لا يكفي أن يفحص نظامك الحقول الصفراء، بل عليه أن يقرأ نوع الفاتورة أولًا ثم يطبق شروطها. وتفصيل التظليل وما يتغير بنوع الفاتورة في مقال الحقول الإجبارية والاختيارية في نظام الفوترة الوطني.
قائمة فحص قبل الإرسال إلى نظام الفوترة الوطني
الجداول التالية مرتبة حسب أجزاء ملف الفاتورة، من البنية إلى المجاميع. وكل سطر فيها قاعدة موثقة في الدليل التقني الإصدار 1.5، وحيث لا يذكر الدليل رسالة خطأ خاصة بقاعدة قلنا ذلك صراحة بدل أن نخمّن الرسالة.
1. البنية وهوية الفاتورة
مرِّر الجدول أفقيًا لعرض بقية الأعمدة
ويضاف إلى هذا الجزء شرط لا يُفحص بقاعدة بل بسلوك، وهو أن يُحفظ رقم الفاتورة ومعرّفها الفريد قبل الإرسال، حتى إذا احتجت إلى إعادة الإرسال أعدته بالقيمتين نفسيهما.
2. البائع والمشتري
مرِّر الجدول أفقيًا لعرض بقية الأعمدة
3. البنود والضرائب
مرِّر الجدول أفقيًا لعرض بقية الأعمدة
القائمة التي يذكرها الدليل للنسب في الصفحة 42 هي 0 و1 و2 و3 و4 و5 و7 و8 و10 و16. وهي قائمة القيم التي تقبلها الواجهة البرمجية في هذا الحقل، لا جدول بنسب ضريبة المبيعات العامة المقررة قانونًا، فلا تستدل بها على وجود نسبة بعينها. ويلاحظ أن صفحات فواتير الإرجاع تذكر القائمة دون الصفر.
4. المجاميع
رسالة Total General Amount is Not Correct هي أولى الرسائل التي يذكرها الدليل لرمز 400، وفحص المجاميع محليًا هو أوضح تطبيق للإرشاد الثاني. والجدول يلخص المعادلات كما وردت في الدليل.
مرِّر الجدول أفقيًا لعرض بقية الأعمدة
ولا يقبل النظام خصمًا مستقلًا على الفاتورة كلها، فإن كان نظامك يخصم من الإجمالي فعليه أن يوزع الخصم على البنود قبل بناء الملف. والأمثلة الرقمية من الدليل وطريقة مطابقتها في مقال رسالة Total General Amount is Not Correct.
5. فواتير الإرجاع
لفاتورة الإرجاع شروط إضافية يفحصها نظامك قبل الإرسال، وكلها موثقة في الدليل.
- تحمل كتلة
cac:BillingReferenceرقم الفاتورة الأصلية ومعرّفها الفريد وإجماليها. - سبب الإرجاع إجباري، ويُكتب نصًا في
cbc:InstructionNoteداخلcac:PaymentMeans. - الإرجاع على الكميات فقط، ولا يتجاوز الكمية المبيعة في الفاتورة الأصلية، ويجوز أكثر من إرجاع جزئي على الفاتورة نفسها حتى تنفد الكمية.
- رقم البند واسمه وسعر وحدته كما هي في الفاتورة الأصلية.
- بيانات المشتري تتوافق مع بياناته في فاتورة البيع الأصلية.
- إذا كان الإرجاع لجزء من الكمية فالخصم جزء من الخصم الكلي للسلعة «حسب الكمية المرجعة».
- رمز نوع الفاتورة في الخاصية
nameهو رمز الفاتورة الأصلية نفسه، والقيمة 381.
رسائل الأخطاء التي تستهدفها قائمة الفحص
يذكر الدليل في الصفحتين 101 و102 الرسائل الأهم لرمز 400 بعبارة «ومن أهمها»، أي أنها ليست القائمة الكاملة. وكل رسالة منها تقابل سطرًا أو أكثر في الجداول السابقة، وهذا ما يجعلها مرجعًا جيدًا لاختبار قواعد الفحص في نظامك.


ويمكنك أن تستعمل هذه الرسائل بطريقتين. الأولى أن تتأكد أن لكل رسالة قاعدة فحص تقابلها في نظامك. والثانية أن تكتب رسالة الفحص الداخلية بلغة يفهمها المحاسب، فالإرشاد السادس في الدليل يطلب تسجيل الأخطاء بالتفصيل داخليًا وعرض رسالة مبسطة للمستخدم. ويلاحظ أن بعض الرسائل مكتوبة في الدليل بإملاء غير دقيق، مثل Bayer name is missing، فابحث في الردود بالنص كما يصل.
ما لا يوثقه الدليل فلا تبنِ عليه قاعدة فحص
الفحص المسبق مفيد بقدر ما تطابق قواعده قواعد النظام. وقاعدة يخترعها المطور قد ترفض فاتورة صحيحة أو تجيز فاتورة خاطئة. وفي الدليل الإصدار 1.5 مسائل لا يذكر لها قاعدة، فلا تجعلها شرطًا في نظامك قبل أن تتأكد منها.
- حقول عنوان المشتري الأخرى. لا يذكر الدليل من عنوان المشتري إلا الرمز البريدي ورمز المحافظة.
- القيم المقبولة في الخاصية
currencyID. تستخدم أمثلة الدليل القيمةJOعلى كل مبلغ، ولا يذكر الدليل هل تقبل قيم أخرى. - رموز وحدات القياس. لا يظهر في بنود الفواتير الجديدة إلا الرمز
PCE، ولا يضع الدليل قائمة بالرموز ولا قاعدة لها. - سعر الصرف. لا يحتوي الدليل عنصرًا لسعر الصرف ولا قاعدة للتحويل إلى الدينار.
ولا تنسخ أمثلة XML في الدليل كما هي لتختبر بها قواعدك، فبعضها يحتوي معرّفات فريدة غير صحيحة الصيغة أو علامات اقتباس مكررة. ويجمع مقال مستقل في مركز المطورين هذه الملاحظات، كما يتناول مقال آخر اختبار إرسال الفواتير إلى نظام الفوترة الوطني.
أين يقع الفحص في مسار الإرسال
لا يحدد الدليل متى يجري الفحص داخل نظامك ولا ترتيبه. والترتيب التالي اقتراح من قيود يتبع منطق الإرشادات نفسها.
- افحص الفاتورة عند إنشائها، قبل أن تُبنى في ملف XML، حتى يصحح المحاسب القيمة وهو يعمل عليها.
- افحص الملف بعد بنائه وقبل ترميزه بترميز Base64، للتأكد من البنية ووسم الفتح والمجاميع كما ستصل فعلًا.
- احفظ رقم الفاتورة ومعرّفها الفريد قبل الإرسال.
- أرسل الفاتورة، ثم احكم عليها من قيمة
EINV_STATUSفي ملف الاستجابة لا من رمز HTTP وحده، كما يطلب الإرشاد الرابع. - إذا عاد خطأ رغم الفحص، فاقرأ
EINV_MESSAGEوأضف القاعدة الناقصة إلى قائمتك، ثم أعد الإرسال بالرقم نفسه والمعرّف الفريد نفسه.
وبعد القبول يعود رمز الاستجابة السريع في EINV_QR، والدليل يطلب إظهاره على فاتورة البائع. ولا تُعد الفاتورة مستلمة ومقبولة دون هذا الرمز.
كيف يساعدك قيود في التحقق قبل الإرسال
إذا كنت تصدر فواتيرك من قيود، فهو يفحص كل فاتورة على مستوى الحقول لحظة إنشائها، فيفحص الرقم الضريبي ونوع المستند وطريقة الدفع ونسبة ضريبة المبيعات العامة واكتمال البنود، وينبهك بأي خطأ قبل إرسالها إلى نظام الفوترة الوطني لتقليل حالات الرفض. وهذا تنبيه يساعدك على التصحيح، لا ضمان بقبول الفاتورة، فالحكم النهائي يبقى لدائرة ضريبة الدخل والمبيعات.
وبعد الإرسال تعيد الدائرة حالة الفاتورة ورسالة الخطأ إن وُجد، ويعرضها قيود في لوحة الحالة. والفواتير التي لم تُرسل تظهر في اللوحة بحاجة إلى إعادة إرسال، وحين تعيد إرسالها يُستخدم المعرّف الفريد نفسه.
أين تذهب بعد هذا المقال
- الإرشادات كلها: في مقال الإرشادات العشر لنظام الفوترة الوطني.
- قراءة رد الرفض: في مقال خطأ 400 في نظام الفوترة الوطني.
- الصورة العامة للنظام: في مقال نظام الفوترة الوطني الإلكتروني في الأردن.
- تكامل قيود مع النظام: في صفحة قيود ونظام الفوترة الوطني.
فوترة إلكترونية ومحاسبة متكاملة في نظام واحد
ينبهك قيود بأي خطأ في حقول الفاتورة قبل إرسالها إلى نظام الفوترة الوطني لتقليل حالات الرفض، ويعرض حالة كل فاتورة في لوحة الحالة.
الأسئلة الشائعة
ما المقصود بالتحقق قبل الإرسال إلى نظام الفوترة الوطني؟
يقصد به الإرشاد الثاني في الدليل التقني لدائرة ضريبة الدخل والمبيعات، وهو أن يتأكد نظامك من صحة بيانات الفاتورة قبل إرسالها، مثل المجاميع والضرائب ورقم المكلف ورقم المشتري والحقول الإجبارية. والغاية التي يذكرها الدليل هي تقليل أخطاء 400.
هل يضمن التحقق المسبق قبول الفاتورة؟
لا يضمن التحقق المسبق القبول، لكنه يقلل الرفض. فبعض الشروط تعتمد على بيانات لدى الدائرة لا يراها نظامك، مثل تسجيلك وتسلسل مصدر الدخل وتسجيل المشتري في المناطق التنموية، ويبقى الحكم النهائي لقيمة EINV_STATUS في ملف الاستجابة.
هل ينشر الدليل قائمة كاملة بقواعد الفحص؟
يذكر الإرشاد الثاني أمثلة بكلمة «مثل»، ولا ينشر الدليل قائمة موحدة بكل قواعد الفحص. لذلك جمعنا في هذا المقال القواعد الموثقة في جداول الدليل ورسائل الأخطاء، ولم نضف إليها قاعدة لا يذكرها.
كيف أعرف الحقول الإجبارية في ملف الفاتورة؟
تعرفها من تظليل الجداول في الدليل التقني الإصدار 1.5، فالأصفر متغيرات إجبارية والأخضر متغيرات اختيارية، وباقي العناصر وصف ثابت ينسخ كما هو.
ماذا أفعل إذا رُفضت الفاتورة رغم الفحص؟
اقرأ رسالة EINV_MESSAGE في ملف الاستجابة كما هي، وأصلح القيمة التي تشير إليها، ثم أعد الإرسال بالرقم نفسه والمعرّف الفريد نفسه دون توليد معرّف جديد.
هل يفحص قيود الفاتورة قبل إرسالها؟
يفحص قيود كل فاتورة على مستوى الحقول لحظة إنشائها، فيفحص الرقم الضريبي ونوع المستند وطريقة الدفع ونسبة ضريبة المبيعات العامة واكتمال البنود، وينبهك بأي خطأ قبل إرسالها إلى نظام الفوترة الوطني لتقليل حالات الرفض.
المراجع
- دائرة ضريبة الدخل والمبيعات، الدليل التقني للربط مع نظام الفوترة الوطني من خلال واجهة برمجة التطبيقات (API)، الإصدار 1.5، 2026.
