BR-O-01الفاتورة فيها توريدات خارج نطاق الضريبة ولا تفصيل ضريبياً لها

يفحص مطابق ملف XML للفاتورة الإلكترونية في المرحلة الثانية قبل إرساله: تحقق مسبق وفق متطلبات هيئة الزكاة والضريبة والجمارك المنشورة، لا اعتماداً من الهيئة. وتشرح هذه الصفحة قاعدة واحدة هي BR-O-01.

افحص 5 فواتير مجاناً

خمس عمليات فحص شهرياً في باقة المجان. يُفحص الملف في الذاكرة ولا يُحفظ.

الرسالة كما تنشرها هيئة الزكاة والضريبة والجمارك

[BR-O-01]-An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151 or BT-95 or BT-102) is "Not subject to VAT" shall contain exactly at least one VAT breakdown group (BG-23) with the VAT category code (BT-118) equal to "Not subject to VAT".

ما الذي يذكره مطابق

مدخل لكل حالة تُذكر فيها هذه القاعدة في التقرير.

صورة القيمة في التقرير
صورة القيمة التي وُجدت — empty وnot_15_digits وما شابههما — لا القيمة نفسها.

الفاتورة فيها توريدات خارج نطاق الضريبة ولا تفصيل ضريبياً لها

صورة القيمة في التقريرbreakdown_missingالتفصيل الضريبي غير موجود

ما الخلل

يرد رمز الفئة O، أي الخارج عن نطاق الضريبة، في المستند تحت النظام الضريبي لضريبة القيمة المضافة، سواء على الفئة المصنَّفة لبند فاتورة في cac:ClassifiedTaxCategory أو على فئة خصم أو رسم في cac:TaxCategory، ولا يوجد عنصر cac:TaxSubtotal له مباشرة تحت كتلة cac:TaxTotal الخاصة بالفاتورة. وتشترط القاعدة BR-O-01 من معيار EN 16931، التي تنفّذها هيئة الزكاة والضريبة والجمارك، تفصيلاً واحداً على الأقل لهذه الفئة على كل فاتورة تستعملها. ويرصد الإصدار 3.4.8 من حزمة أدوات التطوير SDK التي تنشرها الهيئة ذلك تحذيراً لا خطأً، فالتحذير وحده لا يؤدي إلى رفض المستند. والعدّ لا يشمل إلا التفاصيل الواقعة مباشرة تحت جذر المستند، فالعنصر cac:TaxSubtotal المكتوب داخل بند فاتورة لا يفي بالقاعدة. وكان الإصدار 3.0.8 يشترط تفصيلاً واحداً بالضبط بدرجة خطأ، ويَعُدّ فئة التفصيل نفسه استعمالاً للفئة؛ أما الإصدار 3.4.8 فيشترط تفصيلاً واحداً على الأقل، ولا يُطلِق القاعدة إلا بند أو خصم أو رسم من هذه الفئة.

ما الذي تتحقق منه في وحدة الفوترة الإلكترونية

يحتاج التفصيل الضريبي إلى عنصر cac:TaxSubtotal واحد لكل فئة مستعملة، والفئة الخارجة عن نطاق الضريبة تحتاج إلى كتلتها كذلك: مبلغ خاضع في cbc:TaxableAmount ومبلغ ضريبة صفري في cbc:TaxAmount ورمز الفئة O وسبب إعفاء. وكانت هذه الفئة في حزم القواعد السابقة للإصدار 2.0.0 عسيرة الاستعمال على الفاتورة السعودية أصلاً: فالقاعدة BR-O-02 من معيار EN 16931 كانت تمنع ذكر رقم التسجيل في ضريبة القيمة المضافة للبائع على أي فاتورة تحمل بنداً خارج نطاق الضريبة، بينما تشترطه القاعدة BR-KSA-39؛ وقد حذف الإصدار 3.4.8 القاعدة BR-O-02. وإن كان التوريد غير خاضع للضريبة لا خارجاً عن نطاقها حقاً فالأرجح أن فئة الخاضع بنسبة الصفر Z أو فئة المعفى من الضريبة E هي الصحيحة.

أكثر من تفصيل ضريبي واحد للفئة الخارجة عن نطاق الضريبة في الفاتورة نفسها

صورة القيمة في التقريرbreakdown_duplicatedالتفصيل الضريبي نفسه مكرَّر

ما الخلل

تحمل الفاتورة أكثر من عنصر cac:TaxSubtotal مرمَّز O، أي خارج عن نطاق الضريبة، تحت النظام الضريبي لضريبة القيمة المضافة، مباشرة تحت كتلة cac:TaxTotal الخاصة بها. ولا ترصد هذه الملاحظة إلا حزم القواعد السابقة للإصدار 2.0.0: فالقاعدة BR-O-01 في الإصدار 3.0.8 من حزمة أدوات التطوير SDK التي تنشرها هيئة الزكاة والضريبة والجمارك كانت تشترط تفصيلاً واحداً بالضبط لكل فئة، والإصدار 3.4.8 الذي تقرؤه حزمة القواعد 2.0.0 يشترط تفصيلاً واحداً على الأقل، فلا يحمل هذه الملاحظة تقرير صادر عن الحزمة 2.0.0. ولا يزال معيار EN 16931 يصف التفصيل الضريبي كتلةً واحدة لكل فئة.

ما الذي تتحقق منه في وحدة الفوترة الإلكترونية

لا شيء يلزم تغييره من أجل حزمة القواعد 2.0.0 في هذا الشأن. وإن دمجت الكتل فاجمع برمز الفئة وحده، واجمع المبالغ الخاضعة في عنصر cac:TaxSubtotal واحد، وانتبه إلى تكرار كتلة cac:TaxTotal على مستوى المستند، فهو يُنتج كتلتين ولو كانت كل كتلة سليمة في ذاتها.

الفحص الذي يُنفَّذ

منقول حرفياً من ملفات قواعد التحقق التي تنشرها الهيئة، عند الملف والسطر المذكورين أدناه. والتعبير المُنفَّذ هو ما يُقيَّم على المستند، أما التعبير المذكور في التقرير فهو ما يظهر عند الإخفاق، وهما لا يتطابقان دائماً.

التعبير المُنفَّذ

not(((exists(//cac:AllowanceCharge/cac:TaxCategory[cac:TaxScheme/normalize-space(upper-case(cbc:ID))='VAT']/cbc:ID[normalize-space(.) = 'O']) or exists(//cac:ClassifiedTaxCategory[cac:TaxScheme/normalize-space(upper-case(cbc:ID))='VAT']/cbc:ID[normalize-space(.) = 'O'])) and (count(cac:TaxTotal/cac:TaxSubtotal/cac:TaxCategory[cac:TaxScheme/normalize-space(upper-case(cbc:ID))='VAT']/cbc:ID[normalize-space(.) = 'O']) > 0)) or (not(//cac:AllowanceCharge/cac:TaxCategory[cac:TaxScheme/normalize-space(upper-case(cbc:ID))='VAT']/cbc:ID[normalize-space(.) = 'O']) and not(//cac:ClassifiedTaxCategory[cac:TaxScheme/normalize-space(upper-case(cbc:ID))='VAT']/cbc:ID[normalize-space(.) = 'O'])))

التعبير المذكور في التقرير

((exists(//cac:TaxCategory[cac:TaxScheme/normalize-space(upper-case(cbc:ID))='VAT']/cbc:ID[normalize-space(.) = 'O']) or exists(//cac:ClassifiedTaxCategory[cac:TaxScheme/normalize-space(upper-case(cbc:ID))='VAT']/cbc:ID[normalize-space(.) = 'O'])) and (count(cac:TaxTotal/cac:TaxSubtotal/cac:TaxCategory[cac:TaxScheme/normalize-space(upper-case(cbc:ID))='VAT']/cbc:ID[normalize-space(.) = 'O']) = 1)) or (not(//cac:TaxCategory[cac:TaxScheme/normalize-space(upper-case(cbc:ID))='VAT']/cbc:ID[normalize-space(.) = 'O']) and not(//cac:ClassifiedTaxCategory[cac:TaxScheme/normalize-space(upper-case(cbc:ID))='VAT']/cbc:ID[normalize-space(.) = 'O']))
العناصر التي يُقيَّم عليها
/ubl:Invoice | /cn:CreditNote
المصدر
vendor/zatca/schematron/CEN-EN16931-UBL.xsl:800

كما يرد في الإصدار 3.4.8 من حزمة أدوات التطوير SDK التي تنشرها الهيئة: النسخة المقتبسة هنا هي الملف الذي يتضمنه ذلك الإصدار بايتاً ببايت. والتاريخ في اسم الملف هو الاسم الذي تعطيه الهيئة للملف، أما القواعد فيه فهي قواعد الإصدار 3.4.8.

مثال عملي

مستند اصطناعي من مجموعة الاختبار المقيسة تُرصد عليه هذه القاعدة، تُعرض منه الأسطر التي يختلف فيها عن مستند اجتاز الفحص. ولا يذكر تقرير مطابق سوى صورة القيمة، لا القيمة نفسها.

الأسطر التي يختلف فيها عن مستند اجتاز الفحص

  • هذا المثال
  • مستند اجتاز الفحص
<cbc:Name>Consulting services</cbc:Name><cac:ClassifiedTaxCategory>هذا المثال:   <cbc:ID schemeID="UN/ECE 5305" schemeAgencyID="6">O</cbc:ID>مستند اجتاز الفحص:   <cbc:ID schemeID="UN/ECE 5305" schemeAgencyID="6">S</cbc:ID>  <cbc:Percent>15.00</cbc:Percent>  <cac:TaxScheme>
المستند
bad-62-o-line-with-rate.xml
ما حكم به مطابق
لم يجتز
صورة القيمة في التقرير
breakdown_missingالتفصيل الضريبي غير موجود

نزّل هذا المثال (.xml)افحصه في مطابق

مثال هذه الصفحة، يُفحص بالقواعد نفسها التي يمر بها ملفك عند الرفع. بلا رفع وبلا تسجيل دخول.

قواعد تُقيَّم على الموضع نفسه من المستند، وكثيراً ما تُرصد عدة قواعد منها معاً بسبب قيمة واحدة خاطئة.

افحص فاتورة

افحص فاتورتك

© 2026 Hayatiq AI Solutions F.Z.E. جميع الحقوق محفوظة.