BR-KSA-DEC-02 يرفض الفاتورة

نسبة الضريبة خارج المدى أو بأكثر من منزلتين عشريتين

النسبة نسبةٌ مئوية لا كسر: خمسة عشر بالمئة تُكتب 15 لا 0.15. والمدى المسموح من 0.00 إلى 100.00 بمنزلتين عشريتين على الأكثر، بأرقام فقط وبلا علامة النسبة — فالنسبة المستخرجة بقسمة وتُركت بلا تقريب تسقط هنا كما تسقط القيمة المكتوبة بعلامة.

نص الرسالة كما ترسلها الهيئة بالإنجليزية، بلا تعديل

The VAT rates (BT-96, BT-103, BT-119, BT-152, KSA-34) must be from 0.00 to 100.00, with maximum two decimals.Only numerals are accepted, the percentage symbol (%) is not allowed.

ماذا يعني هذا؟

خمسة حقول تحمل نسبة، والقاعدة تشملها جميعًا: نسبة الخصم على مستوى المستند (BT-96)، ونسبة الرسوم على مستوى المستند (BT-103)، ونسبة فئة الضريبة على كل تفصيل (BT-119)، ونسبة ضريبة البند (BT-152)، ونسبة ضريبة الدفعة المقدمة (KSA-34). فقد تصحّ بنود المستند وتخطئ تفاصيله الضريبية أو نسبة خصمه.

وهنا نقطة تُقرأ بدقة قبل أن تبحث في المكان الخطأ: 0.15 لا تسقط في هذه القاعدة. فهي داخل المدى ومنزلتاها مقبولتان — لكنها تعني خمسة عشر جزءًا من مئة من الواحد بالمئة، لا خمسة عشر بالمئة. فيمرّ الملف من هنا ثم يسقط في BR-KSA-84 ودرجتها خطأ: البند الخاضع S لا تكون نسبته إلا 5 أو 15. ويسقط كذلك في حساب مبلغ الضريبة، إذ لم يعد المبلغ يساوي الوعاء مضروبًا في النسبة مقسومًا على مئة. فالكتابة بالكسر خطأ حقيقي، لكن هذا الكود ليس الذي يمسكه.

والذي يسقط هنا بعينه أربعة: قيمة فوق 100.00 — نسبة ضُربت في مئة مرتين فصارت 1500؛ وقيمة سالبة — إشعار دائن نُفِيت فيه كل الأرقام، والنسبة ليست كميةً تُنفى؛ وأكثر من منزلتين عشريتين — 14.999999999999998 من حساب عشري عائم، أو نسبة استُخرجت بقسمة مبلغ الضريبة على الوعاء وتُركت بلا تقريب؛ وقيمة ليست رقمًا خالصًا — والرسالة تقولها صراحةً: علامة النسبة غير مسموحة.

و«أرقام فقط» تعني أرقامًا فقط: فاصلة عشرية بشكل الفاصلة بدل النقطة، أو مسافة، أو أرقام هندية، كلها مخاطرة تأتي من مُنسِّق مُعرَّب يعمل قبل الكتابة إلى XML. والصيغة الآمنة أرقام لاتينية ونقطة عشرية. أما 15 و15.00 فكلاهما ضمن منزلتين، والأصفار اللاحقة لا تضرّ.

وقاعدتان تضيّقان هذا المدى الواسع إلى ما تراه فعلًا على فاتورة سعودية: BR-KSA-84 تحصر نسبة البند الخاضع S في 5 أو 15، وBR-KSA-11 تشترط الصفر على البند غير الخاضع للضريبة. والحرف الذي يقرّر أيّهما هو فئة الضريبة في BR-KSA-18. فالقيم العملية ثلاث لا غير — 15 و5 و0 — وهذه القاعدة سياجٌ خارجي لا تصطدم به إلا بخلل حسابي أو خلل تنسيق.

لماذا يحدث؟

مرتّبة من الأشيع إلى الأقل شيوعًا — الأرجح أن سببك في الأول أو الثاني.

  • النسبة مخزَّنة كسرًا (0.15) في نظام بُني على مكتبة تتوقع الكسور، ثم مُرِّرت كما هي.
  • نسبة مستخرجة بقسمة: مبلغ الضريبة على الوعاء مضروبًا في مئة، على أرقام سبق تقريبها، فتخرج 14.999999999999998 أو 15.000000000000002.
  • حساب عشري عائم يُسلسَل بكامل دقته بدل تقريبه في اللحظة التي يُكتب فيها.
  • نصّ مُنسَّق يصل إلى XML كما هو: 15% أو 15,00 أو نسبة بأرقام هندية.
  • نسبة سالبة في إشعار دائن أُنتج بنفي كل رقم في الفاتورة الأصلية، فنُفِيت معها النسبة.
  • نسبة ضُربت في مئة مرتين: مرة في النظام المصدر ومرة في الربط.
  • حقل نسبة حرّ في نظام ERP كُتب فيه 1.5 أو 150 سهوًا.

كيف تصلحه

3 خطوات، ثم أعد إرسال الفاتورة.

  1. 1
    خزّن النسبة نسبةً وقرّبها عند الكتابة

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

  2. 2
    اشتقّ النسبة من الفئة لا العكس

    الحرف يحدّد الرقم: S نسبتها 15 (أو 5 حيث تنطبق)، وZ وE وO نسبتها صفر. وجدول ثابت من الفئة إلى النسبة يغلق هذا الباب كله، ويغلق معه BR-KSA-11 وBR-KSA-84 في المرور نفسه. والحروف الأربعة وما تشترطه في BR-KSA-18.

  3. 3
    وافحص كل موضع تظهر فيه نسبة

    لا البنود وحدها: التفاصيل الضريبية (BT-119)، وأي خصم أو رسم على مستوى المستند (BT-96 و BT-103)، والدفعة المقدمة (KSA-34). وإن كانت النسبة خاطئة فالمبالغ المحسوبة منها خاطئة كذلك، وتلك عائلة أكواد أخرى تظهر في الرد نفسه — وطريقة قراءة الرد كاملًا في فاتورتي مرفوضة من الهيئة.

بعد التصحيح أعد إرسال الفاتورة. الفاتورة المرفوضة لم تُسجَّل عند الهيئة، فلا تحتاج إشعارًا دائنًا — أرسل الفاتورة الصحيحة نفسها.

هل يمنعه ZATCA Tools؟

نعم، ولا يوجد في المسار كله طريق إلى نسبة خاطئة، لأن النسبة لا تُستقبَل أصلًا. القيم أربع ثابتة في TaxCategories: 15.0 للفئة S، وصفر للفئات Z وE وO. والدالة TaxCategories::rate() هي المصدر الوحيد للنسبة المكتوبة في XML، وتُقرأ في ثلاثة مواضع لا رابع لها: فئة الضريبة على البند، وكل تفصيل ضريبي، وفئة الخصم على مستوى المستند. ولا يقبل أي باب في المنتج نسبةً من الخارج — لا نموذج الفاتورة ولا الـ API ولا تكاملات المتاجر: يُسمّى الحرف فقط، والحرف غير المعروف يُردّ إلى S. ولا قسمة في هذا المسار البتة: المبلغ يُشتقّ من النسبة — صافي البند مضروبًا في النسبة مقسومًا على مئة — والنسبة لا تُشتقّ من المبلغ، وتلك القسمةُ العكسية هي التي تصنع المنازل العشرية الزائدة عند غيرنا.

أكواد لها علاقة

أسئلة شائعة

أرسل 0.15 — هل هذا سبب هذا الرفض؟ +
على الأرجح لا. 0.15 داخل المدى وبمنزلتين، فتمرّ من هذه القاعدة وتسقط في غيرها: في BR-KSA-84 إن كان البند خاضعًا، وفي التطابق بين النسبة ومبلغ الضريبة. والصواب أن تكتب 15 على كل حال، لكن الكود الذي أمسكك ليس هذا — فابحث في بقية قائمة الأخطاء.
نسبتي 14.999999999999998 — من أين جاءت؟ +
من استخراجها بقسمة بدل أخذها من الفئة. وهذه هي الصورة التي تسقط في هذه القاعدة بعينها: المنازل العشرية أكثر من اثنتين. خذ النسبة من جدول الفئات، ودع القسمة لحساب المبالغ.
هل تجوز نسبة 5؟ +
BR-KSA-84 تسمّي 5 و15 للبند الخاضع، فمن جهة التحقق نعم. أما هل يستحق توريدك نسبةً غير 15 اليوم فسؤال ضريبي لا سؤال XML، ومرجعه zatca.gov.sa.
أصلحت هذه — ولا تريد التالية

ZATCA Tools يبني التوقيع والبصمة والعدّاد والترميز عنك، ويتحقق من البيانات قبل الإرسال. ابدأ مجانًا، وبدون بطاقة ائتمانية.

ابدأ مجانًا

← كل أكواد أخطاء ZATCA