رمز QR في فاتورة زاتكا: ماذا يحتوي وكيف تفحص رمزك
المربّع على إيصالك بنية بيانات موقّعة لا رابط. وهنا ما يرمّزه بالضبط، ولماذا أضافت المرحلة الثانية ثلاثة حقول إليه، وكيف تتحقّق أن طابعتك تنتج رمزاً صالحاً.
4 دقائق قراءة
كل فاتورة ضريبية مبسطة تُطبع في السعودية تحمل رمز QR. وأغلب التجار لم ينظروا داخل واحد قط. والأمر يستحق خمس دقائق، لأن رمزاً مشوّهاً من أسهل إخفاقات الامتثال حدوثاً ومن أسهلها كشفاً.
هو ليس رابطاً
مسح رمز زاتكا بتطبيق كاميرا عادي يُظهر عادةً سلسلة طويلة من المحارف لا موقعاً. وهذا سلوك صحيح. فالرمز يرمّزبنية TLV مرمّزة بـBase64 — وسم وطول وقيمة — تحمل حقائق الفاتورة الأساسية.
المرحلة الأولى: خمسة حقول
الخمسة الأصلية، ولكلٍّ وسم رقمي:
| الوسم | الحقل |
|---|---|
| 1 | اسم البائع |
| 2 | الرقم الضريبي للبائع |
| 3 | الطابع الزمني للفاتورة (ISO 8601) |
| 4 | إجمالي الفاتورة شاملاً الضريبة |
| 5 | إجمالي الضريبة |
ويُكتب كلٌّ منها كبايت وسم، فبايت طول، فالقيمة. ثم يُرمَّز التسلسل كلّه بـBase64 وتصير تلك السلسلة حمولة الرمز.
المرحلة الثانية: ثلاثة أخرى
تضيف المرحلة الثانية البرهان التشفيري:
| الوسم | الحقل |
|---|---|
| 6 | تجزئة ملف XML للفاتورة |
| 7 | الختم التشفيري (توقيع ECDSA) |
| 8 | المفتاح العام لشهادة التوقيع |
وللفواتير الضريبية، يحمل الوسم 9 ختم الهيئة نفسها.
وهذا هو التغيير المهم. ففي المرحلة الأولى كان الرمز ملخّصاً. وفي الثانية صاردليلاً: يستطيع أي أحد أخذ الإيصال المطبوع، وفكّ ترميز الرمز، وتجزئة الفاتورة المشار إليها، والتحقّق من التوقيع بالمفتاح العام. والإيصال الذي لا يتحقّق رمزه إيصال يقول إن شيئاً خاطئاً.
كيف تفحص رمزك
لا تحتاج برمجية خاصة.
- امسح الرمز على إيصال مطبوع بأي تطبيق يعرض النص الخام
- انسخ سلسلة Base64
- فكّ ترميزها بأي أداة Base64
- ينبغي أن ترى اسم البائع ورقمه الضريبي كنص مقروء، وبينهما مقاطع ثنائية
ما الذي تبحث عنه:
- ظهور اسم بائعك، مكتوباً صحيحاً، بالعربية
- رقمك الضريبي من 15 رقماً وهو رقمك
- تطابق الطابع الزمني مع البيع
- تطابق الإجماليات مع المطبوعة تماماً، حتى الهللة
- وجود حقول ثنائية بعد الوسم 5 — فإن انتهت السلسلة بعد إجمالي الضريبة،فأنت تنتج رمز مرحلة أولى على التزام مرحلة ثانية
وهذا الفحص الأخير هو القيّم، ويستغرق ثلاثين ثانية.
الإخفاقات الثلاثة الأكثر شيوعاً
1. الطابعة تقصّ الرمز. طابعة 58 ملم تطبع رمزاً بحجم مصمّم لورق 80 ملم تنتج مربّعاً لا يُمسح. اطبع إيصالاً، وامسحه بجوال، وتأكّد أنه يُقرأ من أول محاولة من مسافة 20 سم.
2. اسم البائع العربي مشوّه. يجب ترميز اسم البائع بـUTF-8. والأنظمة التي تفترض محارف أحادية البايت تنتج بايت طول لا يطابق البايتات الفعلية، فتصير بنية TLV كلّها غير قابلة للتحليل بعد ذلك الحقل.
3. تقريب مختلف بين الرمز ووجه الإيصال. الرمز يقول 115.50 والإجمالي المطبوع يقول 115.49. وكلاهما مخرج نظامك وهما متعارضان، وهذا بالضبط نوع التناقض الذي يبحث عنه التدقيق.
لماذا تهمّ جودة الطباعة أكثر مما تبدو
الإيصالات الحرارية تبهت. والرمز الذي يُمسح في اليوم الأول ولا يُقرأ بعد أربعة أسابيع في درج سيارة عميل مشكلة عملية حين يحتاج ذلك العميل إثبات شراء.
وإجراءات عملية: استخدم ورقاً حرارياً جيداً، وحافظ على نظافة رأس الطباعة، واضبط الرمز على أكبر حجم يسمح به الورق، وأبقِ مستوى تصحيح الأخطاء على الإعداد الأعلى ليُمسح الإيصال المخدوش.
ما الذي يفعله وميض
يُولَّد الرمز على الجهاز من ملف XML الموقّع نفسه الذي يُبلَّغ عنه، فلا يمكن أن يفترقا. ويُحجَّم حسب عرض الورق المستخدم، ويُرسَم بتصحيح أخطاء عالٍ، ويُعاين قالب الإيصال قبل تفعيله لترى ما سيراه العميل.
المزيد فيصفحة زاتكا. وللصورة الأوسع، اقرأدليل المرحلة الثانية الكامل.
وليست استشارة ضريبية — أكّد التزاماتك مع الهيئة.
- #QR
- #رمز الاستجابة
- #ZATCA
- #TLV
اقرأ أيضاً
5 دقائق قراءة
زاتكا المرحلة الثانية: الدليل الكامل للتاجر السعودي
ما تتطلّبه المرحلة الثانية من جهازك فعلاً، بلغة واضحة: ملف XML، والختم التشفيري، وسلسلة التجزئة، والإقرار مقابل التبليغ، والأمور الثمانية التي تتحقّق منها قبل وصول موجتك.
4 دقائق قراءة
الفاتورة المبسطة مقابل الضريبية: أيّهما تُصدر؟
الخطأ في هذا هو الأشيع في المرحلة الثانية. فنوعا الفواتير يسلكان مسارين مختلفين، ويحملان حقولاً مختلفة، ولهما مواعيد مختلفة — وعلى نظامك أن يختار صحيحاً عند الكاونتر.
4 دقائق قراءة
تسجيل جهاز لدى زاتكا: طلب الشهادة وكلمة المرور والاعتماد، بالترتيب
كل جهاز يوقّع فاتورة يحتاج شهادته الخاصة من الهيئة. وهنا التسلسل بدقة، وما ينتجه كل خطوة، وما الذي يخطئ، وماذا تفعل حين تضيف جهازاً السابعة مساءً.

