BR-KSA-27حمولة رمز الاستجابة السريعة ليست بترميز base64

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

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

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

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

[BR-KSA-27]-The document must contain a QR code (KSA-14), and this code must be base64Binary.

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

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

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

حمولة رمز الاستجابة السريعة ليست بترميز base64

صورة القيمة في التقريرmtb_qr_00.not_base64ليس بترميز base64

ما الخلل

حمولة رمز الاستجابة السريعة المحمولة في الفاتورة ليست بترميز base64 صحيح، فتعذّر فكّ ترميزها ولم يُنفَّذ أي من فحوص الرمز. وترفض هيئة الزكاة والضريبة والجمارك هذا المستند من جهتين للسبب نفسه: فمخطط UBL يحدّد نوع العنصر بيانات ثنائية بترميز base64، والحمولة التي ليست base64 ليست رمز استجابة سريعة قابلاً للقراءة أصلاً.

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

العنصر cac:AdditionalDocumentReference الذي معرِّفه QR يحمل رمز الاستجابة السريعة نصاً بترميز base64 لتسلسل TLV، لا صورة الرمز ولا القيم المقروءة للإنسان. راجع خطوة التصدير: فكتابة البايتات الخام دون ترميزها، أو كتابة رابط من نوع data: أو مسار ملف، أو كتابة النص الذي يدخل في الرمز بدل الحمولة المرمَّزة، كلٌّ منها ينتج هذه الحالة. وتُنتج القيمة عادةً بمولّد رمز الاستجابة السريعة في وحدة الفوترة الإلكترونية؛ فإن كان قالب تقارير هو ما يجمّعها فهناك موضع البحث.

حمولة رمز الاستجابة السريعة فارغة

صورة القيمة في التقريرmtb_qr_00.emptyموجود لكنه فارغ

ما الخلل

تحمل الفاتورة عنصر رمز الاستجابة السريعة لكن قيمته فارغة، فلا حمولة تُفكّ ولم يُنفَّذ أي من فحوص الرمز. وترفض هيئة الزكاة والضريبة والجمارك الفاتورة المبسطة التي يكون مرفق رمزها فارغاً بموجب القاعدة BR-KSA-27 التي تشترط وجود العنصر وألّا يكون فارغاً.

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

العنصر يُكتب والقيمة خلفه لا تُكتب، فالربط يُنتج كتلة الرمز دون شرط بينما المولّد الذي يملؤها لا يعمل أو لا يُرجع شيئاً. تحقّق من أن توليد الرمز يجري قبل تسلسل المستند، ومن أنه مفعَّل لنوع المستند المعني؛ فوحدة الفوترة الإلكترونية المضبوطة للفواتير الضريبية وحدها تترك هذا فارغاً في الفاتورة المبسطة غالباً.

حمولة رمز الاستجابة السريعة تنتهي في منتصف أحد الحقول

صورة القيمة في التقريرmtb_qr_00.truncatedينتهي في منتصف أحد الحقول

ما الخلل

الحمولة المفكوكة من ترميز base64 هي تسلسل TLV ينتهي في منتصف أحد حقوله: إذ يعلن حقل عدداً من البايتات أكبر مما تبقّى في الحمولة. فتعذّرت قراءة الحمولة ولم يُنفَّذ أي من فحوص الرمز. ولا شيء في قواعد هيئة الزكاة والضريبة والجمارك المنشورة يفكّ حمولة الرمز، لذلك تُرصد هذه الحالة بوصفها خللاً في الرمز لا أمراً ثبت أن الهيئة ترفضه.

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

بُترت الحمولة في مكان ما بين التوليد والتصدير. وبايت الطول في كل حقل يعدّ البايتات لا المحارف، فالسبب الشائع مولّد يقيس النص العربي، وهو اسم البائع في الحقل 1، بالمحارف فيكتب طولاً أقصر من البايتات التي تليه. ويفعل الشيءَ نفسَه عمودٌ أضيق من الحمولة المرمَّزة، أو بترٌ يُطبَّق عند حفظ القيمة.

حمولة رمز الاستجابة السريعة تحمل الحقل نفسه مرتين

صورة القيمة في التقريرmtb_qr_00.duplicate_tagالحقل نفسه مكرَّر

ما الخلل

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

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

يأتي هذا عادةً من مولّد يُلحق الحقول بذاكرة مؤقتة لم تُمسح بين مستند وآخر، أو من قالب يكتب الحقول الإلزامية ثم كتلة ثانية تعيد كتابة بعضها. تحقّق من أن الحمولة تُبنى مرة واحدة لكل فاتورة، من الحقل 1 فصاعداً، وأن شيئاً لا يُلحق بها بعد اكتمالها.

حمولة رمز الاستجابة السريعة تحتوي على حقل رقمه صفر

صورة القيمة في التقريرmtb_qr_00.reserved_tagحقل رقمه صفر

ما الخلل

تحتوي حمولة رمز الاستجابة السريعة على حقل رقمه 0. ولا يحمل أي حقل في رمز الاستجابة السريعة وفق متطلبات هيئة الزكاة والضريبة والجمارك الرقم صفر، وتتابع البايتات الصفرية هو الشكل الذي يتخذه الحشو أو التلف، لذلك تُعامل الحمولة على أنها غير قابلة للقراءة من تلك النقطة ولم يُنفَّذ أي من فحوص الرمز. ولا شيء في قواعد الهيئة المنشورة يفكّ حمولة الرمز، لذلك تُرصد هذه الحالة بوصفها خللاً في الرمز لا أمراً ثبت أن الهيئة ترفضه.

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

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

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

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

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

not((cac:AdditionalDocumentReference[normalize-space(cbc:ID) = 'QR'] and exists(cac:AdditionalDocumentReference[normalize-space(cbc:ID) = 'QR']/cac:Attachment/cbc:EmbeddedDocumentBinaryObject) and (normalize-space(cac:AdditionalDocumentReference[cbc:ID = 'QR']/cac:Attachment/cbc:EmbeddedDocumentBinaryObject) != '') and (cac:AdditionalDocumentReference[cbc:ID = 'QR']/cac:Attachment/cbc:EmbeddedDocumentBinaryObject[normalize-space(@mimeCode) = 'text/plain'])) )

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

(cac:AdditionalDocumentReference[normalize-space(cbc:ID) = 'QR'] and exists(cac:AdditionalDocumentReference/cac:Attachment/cbc:EmbeddedDocumentBinaryObject) and (cac:AdditionalDocumentReference/cac:Attachment/cbc:EmbeddedDocumentBinaryObject) != '' and (cac:AdditionalDocumentReference/cac:Attachment/cbc:EmbeddedDocumentBinaryObject[normalize-space(@mimeCode) = 'text/plain']))
العناصر التي يُقيَّم عليها
/ubl:Invoice | /cn:CreditNote
المصدر
vendor/zatca/schematron/20210819_ZATCA_E-invoice_Validation_Rules.xsl:371

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

مثال عملي

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

المستند
good-10-qr-truncated.xml
ما حكم به مطابق
اجتاز
صورة القيمة في التقرير
truncatedينتهي في منتصف أحد الحقول

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

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

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

افحص فاتورة

افحص فاتورتك

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