BR-KSA-25فاتورة مبسطة لتعليم أو صحة أهلية لا تذكر اسم المشتري

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

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

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

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

[BR-KSA-25]-If it is a simplified tax invoice or an associated credit note or a debit note (KSA-2, position 1 and 2 = 02) and the tax exemption reason code (BT-121) is equal with VATEX-SA-EDU or VATEX-SA-HEA, then buyer name (BT-44) is mandatory.

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

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

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

فاتورة مبسطة لتعليم أو صحة أهلية لا تذكر اسم المشتري

صورة القيمة في التقريرname_element_missingعنصر الاسم غير موجود

ما الخلل

هذا المستند فاتورة مبسطة أو إشعار دائن أو مدين مرتبط بها (رمز المعاملة يبدأ بـ 02)، وكل رموز أسباب الإعفاء فيه VATEX-SA-EDU أو VATEX-SA-HEA، أي التعليم الأهلي أو الصحة الأهلية لمواطن، ولا تحمل كتلة المشتري العنصر cbc:RegistrationName تحت cac:AccountingCustomerParty/cac:Party/cac:PartyLegalEntity، فاسم المشتري (BT-44) غائب. ويرصد الإصدار 3.4.8 من حزمة أدوات التطوير SDK المستند بموجب القاعدة BR-KSA-25 تحذيراً لا خطأً: فتُذكر الملاحظة، والتحذير وحده لا يؤدي إلى رفض المستند. والفاتورة المبسطة لا تحتاج عادةً إلى اسم المشتري؛ وهذان التوريدان هما الاستثناء، لأن الخضوع بنسبة الصفر يخص المواطن الذي يتلقاهما، وهويته الوطنية تشترطها القاعدة BR-KSA-49 أصلاً. ولا تنطبق القاعدة إلا إذا كان كل رمز سبب في المستند أحد الرمزين: فالمستند الذي يجمع أحدهما مع رمز آخر مثل VATEX-SA-32 خارج عنها، وكذلك المستند الذي لا رمز سبب فيه أصلاً. وقد قيست أداة الفحص لدى الهيئة في هذه النقطة الأخيرة: فبحرفية النص تنطبق القاعدة على كل فاتورة مبسطة بلا رمز سبب، لكن أداة الهيئة نفسها لا تطبّقها هناك، فلا يطبّقها مطابق كذلك.

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

اكتب اسم المواطن في cac:PartyLegalEntity/cbc:RegistrationName تحت كتلة المشتري في كل فاتورة مبسطة تستعمل أحد هذين الرمزين، من سجل العميل نفسه الذي يأتي منه رقم الهوية الوطنية في cac:PartyIdentification. والعنصر cac:PartyName/cbc:Name عنصر آخر لا يلبّي هذا الفحص. وإن كانت الفاتورة موجّهة إلى شركة تأمين أو صاحب عمل أو جهة دافعة أخرى لا إلى المواطن، فاقرأ الملاحظة تحت القاعدة BR-KSA-49 أولاً: فهذان الرمزان لتوريد إلى المواطن، والسؤال في الرمز لا في الاسم.

اسم المشتري فارغ في فاتورة مبسطة لتعليم أو صحة أهلية

صورة القيمة في التقريرname_emptyالاسم موجود لكنه فارغ

ما الخلل

هذا المستند فاتورة مبسطة أو إشعار دائن أو مدين مرتبط بها (رمز المعاملة يبدأ بـ 02)، وكل رموز أسباب الإعفاء فيه VATEX-SA-EDU أو VATEX-SA-HEA، أي التعليم الأهلي أو الصحة الأهلية لمواطن، وتحمل كتلة المشتري العنصر cbc:RegistrationName تحت cac:AccountingCustomerParty/cac:Party/cac:PartyLegalEntity، لكن كل نسخة منه فارغة، فاسم المشتري (BT-44) بلا قيمة. ويرصد الإصدار 3.4.8 من حزمة أدوات التطوير SDK المستند بموجب القاعدة BR-KSA-25 كما يرصد الاسم الغائب تماماً: تحذيراً لا خطأً، فتُذكر الملاحظة، والتحذير وحده لا يؤدي إلى رفض المستند. ويكفي اسم واحد غير فارغ لتلبية الفحص، فهذه الملاحظة تعني أنها فارغة كلها. والفاتورة المبسطة لا تحتاج عادةً إلى اسم المشتري؛ وهذان التوريدان هما الاستثناء، لأن الخضوع بنسبة الصفر يخص المواطن الذي يتلقاهما، وهويته الوطنية تشترطها القاعدة BR-KSA-49 أصلاً.

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

البنية تُكتب والقيمة لا تُكتب، وهذا يعني عادةً أن التصدير يُخرج كتلة الكيان النظامي للمشتري في كل مستند بينما يأتي الاسم من حقل فارغ للعميل العابر. وفي توريد التعليم أو الصحة الأهلية العميل مواطن مسمّى: فاملأ الاسم من سجل العميل نفسه الذي يأتي منه رقم الهوية الوطنية في cac:PartyIdentification، وتوقّف عن إخراج كتلة فارغة في غير ذلك.

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

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

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

not((every $taxreasoncode in //cac:TaxTotal/cac:TaxSubtotal/cac:TaxCategory/cbc:TaxExemptionReasonCode satisfies contains(' VATEX-SA-HEA VATEX-SA-EDU ', $taxreasoncode) and exists(//cac:AccountingCustomerParty/cac:Party/cac:PartyLegalEntity/cbc:RegistrationName) and (//cac:AccountingCustomerParty/cac:Party/cac:PartyLegalEntity/cbc:RegistrationName) != '') or not(every $taxreasoncode in //cac:TaxTotal/cac:TaxSubtotal/cac:TaxCategory/cbc:TaxExemptionReasonCode satisfies contains(' VATEX-SA-HEA VATEX-SA-EDU ', $taxreasoncode)))

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

(every $taxreasoncode in //cac:TaxTotal/cac:TaxSubtotal/cac:TaxCategory/cbc:TaxExemptionReasonCode satisfies contains(' VATEX-SA-HEA VATEX-SA-EDU ', $taxreasoncode) and exists(//cac:AccountingCustomerParty/cac:Party/cac:PartyLegalEntity/cbc:RegistrationName) and (//cac:AccountingCustomerParty/cac:Party/cac:PartyLegalEntity/cbc:RegistrationName) != '') or not(every $taxreasoncode in //cac:TaxTotal/cac:TaxSubtotal/cac:TaxCategory/cbc:TaxExemptionReasonCode satisfies contains(' VATEX-SA-HEA VATEX-SA-EDU ', $taxreasoncode))
العناصر التي يُقيَّم عليها
cbc:InvoiceTypeCode[substring(@name, 1, 2) = '02']
المصدر
vendor/zatca/schematron/20210819_ZATCA_E-invoice_Validation_Rules.xsl:2052

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

مثال عملي

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

المستند
bad-117-simplified-healthcare-no-buyer-name.xml
ما حكم به مطابق
اجتاز
صورة القيمة في التقرير
name_element_missingعنصر الاسم غير موجود

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

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

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

افحص فاتورة

افحص فاتورتك

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