أداة مجانية
منشئ وقارئ رمز QR لفواتير زاتكا
أنشئ رمز QR الذي تحتاجه الفاتورة الضريبية المبسّطة السعودية، أو افحص رمزًا لديك بالفعل — امسحه بالكاميرا، أو اختر صورة الفاتورة أو ملف PDF لها، أو ألصق نص Base64 إن كان بحوزتك. وكل ذلك يجري داخل متصفحك: فالفاتورة تحمل اسم عميل ومبلغًا ورقم تسجيل ضريبي، ولا ينبغي إرسال أٍي من ذلك إلى جهة غريبة لترميز خمسة حقول.
الفاتورة لا تغادر جهازك.
املأ الحقول الخمسة فيظهر الرمز هنا.
طريقة الاستخدام
- أدخل اسم البائع كما هو مسجَّل تمامًا، والرقم الضريبي المكوّن من 15 خانة، وختم الوقت، والإجمالي شامل الضريبة، ومقدار الضريبة.
- راجع عدّاد البايتات بجوار اسم البائع إن كان بالعربية — فالحد 255 بايت لا 255 محرفًا.
- نزّل ملف PNG لطباعته على الإيصال، أو انسخ نص Base64 لتسليمه لنظام الفوترة لديك.
- ولفحص فاتورة لديك بالفعل، انتقل إلى «قراءة رمز»: امسح الرمز بكاميرا هاتفك، أو اختر صورة أو مسحًا ضوئيًا أو ملف PDF — وصفحة A4 كاملة تفي بالغرض، إذ يُحدّد موضع الرمز داخلها.
- قارن الوسوم الظاهرة بما تتوقعه — فطولٌ خاطئ أو حرف Z ناقص في ختم الوقت يظهر فورًا.
كيف تعمل
لا تريد زاتكا رابطًا ولا كائن JSON داخل الرمز، بل بنية ثنائية تُسمّى TLV — لكل حقل بايت للوسم، وبايت للطول، ثم القيمة — تُوصل الحقول جميعها ويُرمَّز الناتج بـBase64. والوسوم من 1 إلى 5 هي اسم البائع والرقم الضريبي وختم الوقت والإجمالي والضريبة.
وبايت الطول يعدّ بايتات UTF-8 لا المحارف، ومن هنا تأتي أغلب رموز QR الخاطئة. فاسم البائع بالعربية نحو بايتين لكل حرف، والطول المأخوذ من عدد المحارف يكون نصف ما ينبغي تقريبًا. فيُقرأ كل حقل بعده من موضع خاطئ، ويُمسح الرمز مسحًا سليمًا بينما يفكّ إلى كلام لا معنى له.
أما الوسوم 6 و7 و8 فتحمل بصمة ملف الفاتورة الموقَّع، وتوقيع ECDSA عليها، والمفتاح العام من شهادتك الصادرة عن زاتكا. وهذه الأداة لا تستطيع إنتاجها، ولا تستطيعه أي صفحة متصفح: فهي تحتاج المفتاح الخاص المستقر داخل نظام الفوترة لديك. الصقها إن كانت لديك وستُضاف بالترتيب.
أسئلة شائعة
ما الحقول الإلزامية في رمز QR للمرحلة الثانية من زاتكا؟
الوسوم من 1 إلى 5 — اسم البائع، والرقم الضريبي المكوّن من 15 خانة، وختم الوقت بصيغة ISO 8601 بتوقيت زولو، والإجمالي شامل الضريبة، ومقدار الضريبة. وتضيف المرحلة الثانية الوسوم 6 و7 و8: بصمة ملف الفاتورة والتوقيع والمفتاح العام، وكلها تأتي من خطوة التوقيع.
ما هو ترميز TLV وBase64 في الفوترة الإلكترونية السعودية؟
TLV اختصار لـ«وسم – طول – قيمة». فيصير كل حقل بايتًا لرقم الوسم، وبايتًا يحدّد طول القيمة بالبايتات، ثم القيمة نفسها. ثم تُوصل الحقول ويُرمَّز مجموع البايتات بـBase64، وهذا النص هو ما يحمله الرمز.
لماذا يفشل مولّد QR عادي في اجتياز تحقّق زاتكا؟
لأنه يرمّز النص الذي كتبته. وزاتكا تتوقّع بنية TLV الثنائية المذكورة أعلاه، فالرمز الذي يحمل رابطًا أو كائن JSON أو نصًا عاديًا سليمٌ كرمز QR وبلا معنى كفاتورة. يُمسح، ولا يجتاز التحقّق.
هل تستطيع هذه الأداة توقيع فاتورتي أو إنتاج الوسوم 6 و7 و8؟
لا، ولا تستطيع ذلك أي صفحة متصفح. فهي تحتاج المفتاح الخاص من شهادتك الصادرة عن زاتكا، وهو مستقر داخل نظام الفوترة لديك. وهذه الأداة تبني الوسوم من 1 إلى 5 بشكل صحيح، وتضيف 6 إلى 8 إن لصقتها.
لماذا يُفسد اسم البائع بالعربية رمز QR عندي؟
على الأرجح لأن الطول محسوب بالمحارف. فبايت الطول هو عدد بايتات UTF-8، والعربية نحو بايتين لكل حرف، فاسم من 11 حرفًا يساوي 21 بايتًا. وإن أخطأت في ذلك قُرئ كل حقل بعده من موضع خاطئ.
هل تُرفع بيانات فاتورتي؟
لا. فالترميز ورسم الرمز وفكّه كلها تجري داخل هذا التبويب. افتح تبويب الشبكة في متصفحك واستخدم الأداة — لا يُرسل شيء. وهذا سبب وجودها أصلًا، بخلاف عدة مولّدات زاتكا على الإنترنت تأخذ بيانات عميلك.
ما هو Base64 ومن أين أحصل عليه؟
هو السلسلة الطويلة من الحروف والأرقام المخزّنة داخل رمز QR، أي حقول الفاتورة الخمسة مضغوطة في نص. ولستَ مضطرًا للبحث عنه بنفسك: وجّه الكاميرا إلى الرمز، أو اختر صورة الفاتورة أو ملف PDF لها، وتستخرجه هذه الصفحة من الصورة نيابةً عنك.
لا أملك إلا نسخة ورقية من الفاتورة. هل أستطيع فحص رمزها؟
نعم. على الهاتف اختر «المسح بالكاميرا» وثبّتها فوق الرمز. وعلى الحاسوب صوّر الفاتورة أو امسحها ضوئيًا ثم اختر الملف — وصفحة A4 كاملة تفي بالغرض، إذ يُحدّد موضع الرمز داخلها ولا يُشترط أن يملأ الإطار. وتُفحص الصورة في المتصفح ولا تُرفع إلى أي مكان.