BR-KSA-F-04أحد المبالغ أو الكميات في هذه الفاتورة أقل من الصفر

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

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

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

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

[BR-KSA-F-04]-All the document amounts and quantities must be positive, unless specified otherwise.

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

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

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

أحد المبالغ أو الكميات في هذه الفاتورة أقل من الصفر

صورة القيمة في التقريرnegativeأقل من الصفر

ما الخلل

أحد المبالغ أو الكميات التي تختارها القاعدة BR-KSA-F-04 من هيئة الزكاة والضريبة والجمارك يحمل قيمة أقل من الصفر. ورسالة القاعدة المطبوعة تقول إن جميع مبالغ المستند وكمياته يجب أن تكون موجبة، أما الفحص الذي يُنفَّذ فيسأل هل القيمة لا تقل عن الصفر، والفحص هو ما يقرّر قبول المستند لا الرسالة. ويترتب على الفرق بينهما أمران. الأول أن الصفر يجتاز، لأنه ليس أقل من الصفر؛ وقد قيس ذلك: فاتورة سعر بندها 0.00 تعود بلا أي ملاحظة، والصفر السالب يجتاز كذلك؛ فهذه الملاحظة ليست عن صفر كُتب في موضع كنت تنتظر فيه رقماً. والثاني أن العنصر الموجود الخالي من أي قيمة يُتجاوَز عنه أصلاً، لأن الفحص يشترط ابتداءً أن يحمل العنصر محرفاً واحداً على الأقل. وعبارة «جميع مبالغ المستند وكمياته» أوسع كذلك من الفحص: فهو يختار واحداً وعشرين مساراً بعينها، كلٌّ منها مقيَّد بالعنصر الذي يعلوه، وثلاث ثغرات في تلك القائمة تستحق المعرفة. الأولى أن مبلغ الخصم على مستوى المستند BT-92 ليس منها، مع أن إجماليات المستند ومبالغ الخصومات على مستوى البند وعلى مستوى السعر منها. والثانية أن الكمية الدائنة في الإشعار الدائن ليست منها، وكذلك الكمية الأساس في أي مستوى. والثالثة أن العنصر cbc:PriceAmount الذي لا يقع مباشرةً تحت العنصر cac:Price لا يُحكم عليه.

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

المبلغ السالب في الفاتورة يعني في الغالب الأعم أن إشعاراً دائناً صدر في صورة فاتورة: مرتجعٌ أو إلغاءٌ أو حسمٌ لاحق صُدِّر برمز نوع الفاتورة الخاص بالفاتورة الضريبية وقُلبت إشارات مبالغه. أصدره إشعاراً دائناً برمز النوع 381 وبمبالغ موجبة، مع مرجع الفوترة إلى الفاتورة المصحَّحة ومع سبب الإصدار KSA-10. والأسباب المعتادة الأخرى: خصمٌ كُتب بنداً سالباً بدل أن يُكتب خصماً في كتلة cac:AllowanceCharge بمؤشر رسم قيمته false ومبلغ موجب؛ ودفعةٌ مقدَّمة أو تسوية تقريب طُرِحت بقلب إشارة مبلغ له عنصره الخاص؛ وكميةٌ مرتجعة قُلبت إشارتها على البند. ولاحظ أن مبلغ الخصم السالب على مستوى المستند لا تحكم عليه هذه القاعدة وإنما تحكم عليه قواعد تطابق الإجماليات، فرفع هذه الملاحظة ليس هو نفسه جعل المستند متسقاً.

أحد المبالغ أو الكميات في هذه الفاتورة ليس عدداً

صورة القيمة في التقريرnot_a_numberليس عدداً

ما الخلل

أحد العناصر التي تختارها القاعدة BR-KSA-F-04 من هيئة الزكاة والضريبة والجمارك يحمل نصاً ليس عدداً. فالفحص يحوّل النص إلى عدد ثم يسأل هل النتيجة لا تقل عن الصفر؛ والنص الذي يتعذّر تحويله تكون نتيجته «ليست عدداً»، وهي لا تفي بشرط ألا تقل عن الصفر، فتُرصد القاعدة تحت الرمز نفسه وبالرسالة المطبوعة نفسها التي تُرصد بها القيمة السالبة: تقول لك الرسالة إن المبالغ يجب أن تكون موجبة والقيمة ليست رقماً أصلاً. والمقبول في التحويل ضيّق: إشارة اختيارية، ثم أرقام، ثم نقطة عشرية اختيارية، ولا شيء غير ذلك. فيخفق في التحويل فاصل التجميع بين الآلاف، ورمز العملة أو علامتها داخل القيمة، والفاصلة العليا التي تخلّفها جداول البيانات في أول القيمة، والشرطة المكتوبة موضع الصفر، والقوسان حول المبلغ السالب، والمسافة غير الفاصلة؛ وهذه الأخيرة لأن ما يُزال من طرفي القيمة في XML هو المسافة العادية وعلامة الجدولة ومحرفا نهاية السطر لا غير. أما العنصر الموجود الخالي تماماً فليس موضوع هذه الملاحظة، إذ يتجاوز عنه الفحص. والمستند في هذه الحال يخفق عادةً في فحص المخطط كذلك، لأن هذه العناصر معرَّفة أعداداً عشرية.

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

هذه مسألة تسلسل لا مسألة ضريبية، فانظر إلى كيفية كتابة العدد لا إلى مقداره. والحالات التي تُنتجها: عددٌ نُسِّق للقارئ قبل التصدير بفواصل تجميع أو برمز عملة ملحق أو بقوسين للسالب؛ وحقلٌ نصي رُبِط بعنصر مبلغ؛ وشرطةٌ أو كلمة تدل على الخلوّ كُتبت موضع الصفر؛ وقيمةٌ نُسخت من جدول بيانات ومعها فاصلتها العليا. والمبالغ والكميات تُكتب بلا تنسيق: بنقطة فاصلة عشرية، وبلا فواصل تجميع، وبلا علامة عملة؛ والعملة موضعها السمة currencyID على العنصر لا غير.

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

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

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

string-length(.) > 0 and not((.) >= 0)

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

number(.) >= 0
العناصر التي يُقيَّم عليها
ubl:Invoice/cac:TaxTotal/cac:TaxSubtotal[normalize-space(cac:TaxCategory/cbc:ID)!='O']/cbc:TaxableAmount | ubl:Invoice/cac:AllowanceCharge/cbc:Amount | ubl:Invoice/cac:AllowanceCharge/cbc:BaseAmount | ubl:Invoice/cac:TaxTotal/cac:TaxSubtotal/cbc:TaxAmount | ubl:Invoice/cac:LegalMonetaryTotal/cbc:LineExtensionAmount | ubl:Invoice/cac:LegalMonetaryTotal/cbc:TaxExclusiveAmount | ubl:Invoice/cac:LegalMonetaryTotal/cbc:TaxInclusiveAmount | ubl:Invoice/cac:LegalMonetaryTotal/cbc:AllowanceTotalAmount | ubl:Invoice/cac:LegalMonetaryTotal/cbc:ChargeTotalAmount | ubl:Invoice/cac:LegalMonetaryTotal/cbc:PrepaidAmount | ubl:Invoice/cac:TaxTotal/cbc:TaxAmount | ubl:Invoice/cac:InvoiceLine/cac:AllowanceCharge/cbc:Amount | ubl:Invoice/cac:InvoiceLine/cac:AllowanceCharge/cbc:BaseAmount | ubl:Invoice/cac:InvoiceLine/cac:TaxTotal/cbc:TaxAmount | ubl:Invoice/cac:InvoiceLine/cac:Price/cbc:PriceAmount | ubl:Invoice/cac:InvoiceLine/cac:Price/cac:AllowanceCharge/cbc:Amount | ubl:Invoice/cac:InvoiceLine/cac:Price/cac:AllowanceCharge/cbc:BaseAmount | ubl:Invoice/cac:InvoiceLine/cbc:InvoicedQuantity | ubl:Invoice/cac:InvoiceLine/cac:TaxTotal/cac:TaxSubtotal/cbc:TaxableAmount | ubl:Invoice/cac:InvoiceLine/cac:TaxTotal/cac:TaxSubtotal/cbc:TaxAmount | ubl:Invoice/cac:TaxExchangeRate/cbc:CalculationRate
المصدر
vendor/zatca/schematron/20210819_ZATCA_E-invoice_Validation_Rules.xsl:2909

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

مثال عملي

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

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

  • هذا المثال
  • مستند اجتاز الفحص
  </cac:Item>  <cac:Price>هذا المثال:     <cbc:PriceAmount currencyID="SAR">-100.00</cbc:PriceAmount>مستند اجتاز الفحص:     <cbc:PriceAmount currencyID="SAR">100.000</cbc:PriceAmount>  </cac:Price></cac:InvoiceLine>
المستند
bad-75-negative-line-price.xml
ما حكم به مطابق
لم يجتز
صورة القيمة في التقرير
negativeأقل من الصفر

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

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

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

افحص فاتورة

افحص فاتورتك

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