Invoice line net amount (BT-131) must equal (Invoiced quantity (BT-129) * (Item net price (BT-146) / item price base quantity (BT-149))-) + Sum of invoice line charge amount (BT-141) - Sum of invoice line allowance amount (BT-136).
ماذا يعني هذا؟
أربعة حقول في البند الواحد تدخل هذه المعادلة، وكلها تحت cac:InvoiceLine. صافي البند (BT-131) هو cbc:LineExtensionAmount، والكمية (BT-129) هي cbc:InvoicedQuantity، وسعر الوحدة الصافي (BT-146) هو cac:Price/cbc:PriceAmount، وكمية الأساس (BT-149) هي cac:Price/cbc:BaseQuantity — اختيارية، وغيابها يعني واحدًا. ثم خصومات البند (BT-136) ورسومه (BT-141): كتل cac:AllowanceCharge تحت البند مباشرة، مؤشرها false للخصم وtrue للرسم. والمعادلة: الصافي يساوي الكمية في (السعر على كمية الأساس) زائد الرسوم ناقص الخصومات. وأكثر البنود لا تحمل كمية أساس ولا خصمًا ولا رسمًا، فتختصر المعادلة إلى: الكمية في السعر تساوي الصافي.
والمقارنة مقارنة أرقام عشرية لا مقارنة إلى أقرب هللة: مخطط التحقق في حزمة التطوير التي تنشرها الهيئة يساوي بين الطرفين كما كُتبا، ففرق هللة واحدة يطلق التحذير. ورأيناه بأنفسنا على بند من خمس وحدات: صافيه 4.44 وسعر وحدته مقرَّب إلى أقرب هللة 0.89، وخمسة في 0.89 تساوي 4.45 لا 4.44.
ومن أين تأتي الهللة؟ من أن الصافي بمنزلتين والسعر بمنزلتين والكمية تضرب. فالسعر المستخرج من مبلغ شامل للضريبة لا يقع على الهللة في العادة: ريال واحد شامل الضريبة صافيه 0.869565…، فيُكتب 0.87. واثنتا عشرة وحدة صافيها الحقيقي 10.434783… أي 10.43 — لكن 12 في 0.87 تساوي 10.44. فمن كتب الصافي «الحقيقي» 10.43 إلى جانب السعر 0.87 سقط هنا، ولم يخطئ في شيء غير اتجاه الحساب. وخصم المستند حين يُوزَّع على البنود صورة ثانية من الشيء نفسه: 4.44 على خمس وحدات هي 0.888 للوحدة، ولا سعر بمنزلتين يعطيها.
واتجاه الحساب هو العلاج كله. الصافي يُشتقّ من السعر المكتوب مضروبًا في الكمية، ولا يُشتقّ السعر من الصافي بالقسمة. وما فرّق التقريب بين الصافي المكتوب والقيمة الحقيقية للبند لا يُطوى في البند ولا يُحمَّل على العميل، بل يُصرَّح به خصمًا على مستوى المستند (BT-92)، حيث تقرؤه قاعدة الإجماليات الأوروبية BR-CO-13 التي تطبّقها حزمة الهيئة: الوعاء الخاضع يساوي مجموع صوافي البنود ناقص خصومات المستند. وضريبة المستند تُحسب من الوعاء الحقيقي وتُقرَّب مرة واحدة، كما ينصّ معيار تنفيذ XML الصادر عن الهيئة في بنده العاشر: التقريب على النتائج النهائية لا على نتيجة وسيطة، ونصف الهللة إلى أعلى.
ودرجته تحذير: المستند يُقبل ويُسجَّل التحذير في الرد. والرسالة لا تسمّي عائلة، فالمعادلة تُفحص على الفاتورة الضريبية والمبسطة وإشعاراتهما سواء. أما مبلغ ضريبة البند وإجماليه شاملًا الضريبة فلهما قاعدتهما BR-KSA-51، وهي تجمع على الصافي الذي تفحصه هذه القاعدة.
لماذا يحدث؟
مرتّبة من الأشيع إلى الأقل شيوعًا — الأرجح أن سببك في الأول أو الثاني.
- الصافي محسوب من السعر قبل تقريبه بينما السعر كُتب مقرَّبًا: 12 وحدة بريال شامل الضريبة تخرج صافيًا 10.43 إلى جانب سعر 0.87، و12 في 0.87 تساوي 10.44.
- سعر مقرَّب إلى أقرب هللة بعد توزيع خصم المستند على البنود: 4.44 على خمس وحدات تعطي 0.888، فيُكتب 0.89، وخمسة في 0.89 تساوي 4.45 لا 4.44.
- الصافي مأخوذ من نظام المصدر — إجمالي نقطة البيع — والسعر مستخرج منه بالقسمة ومقرَّب: الاتجاه المعكوس بعينه.
- كمية الأساس مهملة أو مضاعفة: سعر معلن لكل مئة وحدة (12.50 لكل 100) مع كمية 250، فالصافي 31.25 لا 3125.00 — أو كمية أساس مكتوبة والسعر للوحدة الواحدة أصلًا.
- خصم على البند (BT-136) مصرَّح به تحت البند ومطروح من السعر في الوقت نفسه فيُطرح مرتين، أو مصرَّح به ولم يُطرح من الصافي أصلًا.
- كمية كسرية حاصل ضربها في السعر يحمل منزلة ثالثة: 1.5 في 0.87 تساوي 1.305، ولا صافي بمنزلتين يساويها.
كيف تصلحه
3 خطوات، ثم أعد إرسال الفاتورة.
-
1
قرّب السعر أولًا ثم اشتقّ الصافي منه
رتّب الحساب: سعر الوحدة الصافي أولًا، مقرَّبًا إلى منزلتين ونصف الهللة إلى أعلى، ثم الصافي هو الكمية في هذا السعر بعينه الذي ستكتبه في
cbc:PriceAmount. ولا تحسب الصافي من السعر الدقيق، ولا تستخرج السعر من الصافي بالقسمة. ريال واحد شامل الضريبة في اثنتي عشرة وحدة: السعر 0.87 والصافي12 × 0.87 = 10.44، لا 10.43. -
2
صرّح بما فرّقه التقريب خصمًا على مستوى المستند
الوعاء الحقيقي لتلك الوحدات 10.43 وصافيها المكتوب 10.44، والهللة بينهما لا تُطوى في البند: اكتبها خصمًا على مستوى المستند في
cac:AllowanceChargeتحت الفاتورة مباشرة بقيمة 0.01، بفئة البنود الضريبية ونسبتها. فيصير الوعاء الخاضع 10.44 ناقص 0.01 وهو 10.43، وضريبته 1.57 محسوبة من 10.434783 ومقرَّبة مرة واحدة، والإجمالي 12.00 كما على الرف. فيبقى البند صحيحًا عند هذه القاعدة، والمستند صحيحًا عند قواعد الإجماليات، وما دفعه العميل هو ما على الفاتورة. -
3
ثم ضع كمية الأساس والخصومات في مواضعها
إن كان سعرك لكل مئة أو لكل ألف فاكتب
cbc:BaseQuantityواقسم عليها؛ وإن لم يكن فلا تكتبها. وخصم البند كله له موضعه تحت البند لا على السعر — الفرق في BR-KSA-EN16931-07 — ويُطرح مرة واحدة. ثم افحص كل بند قبل الإرسال: الكمية في السعر، زائد الرسوم، ناقص الخصومات، تساوي الصافي كما كُتب. وقراءة الرد كاملًا حين يجتمع أكثر من كود في فاتورتي مرفوضة من الهيئة.
هذا الكود لا يمنع القبول، فالفاتورة الحالية نظامية. صحّح البيانات لتختفي التحذيرات من الفواتير القادمة.
هل يمنعه ZATCA Tools؟
نعم للكميات الصحيحة والأسعار بمنزلتين، بحكم البناء. الصافي عندنا يُشتقّ دائمًا من السعر الموقَّع مضروبًا في الكمية: LineItems::normalize يقرّب سعر الوحدة إلى منزلتين نصف الهللة إلى أعلى ثم يحسب الصافي منه؛ والسلة التي تحمل أسعارًا شاملة الضريبة تُوفَّق صوافيها إلى وعائها الحقيقي بتحريك سعر وحدة هللة أو هللتين مع إعادة حساب الصافي من السعر بعد تحريكه (fitToBase)؛ وخصم المستند يُوزَّع على أسعار الوحدات ثم يُعاد اشتقاق الصافي من السعر بعد رفعه إلى الهللة التالية (DiscountAllocator::settle) — وهذا الرفع جاء بعد تحذير من الهيئة على بند الوحدات الخمس بعينه. وما لم تستطع البنود حمله يُصرَّح خصمًا على مستوى المستند بقيمة مجموع الصوافي ناقص الوعاء الخاضع، فتصحّ الإجماليات أيًّا كان اتجاه الهللة، وضريبة المستند تُحسب من الوعاء قبل تقريبه وتُقرَّب مرة واحدة. ولا تكتب مستنداتنا كمية أساس ولا خصمًا على مستوى البند أصلًا: خصم البند يُطرح من سعر الوحدة قبل التوقيع. واختبار يمرّ على أربعمئة سلة عشوائية بأسعار شاملة وخصومات يؤكد المساواة على كل بند بدقة الرقم العشري لا بالهللة. وموضعان لا نغلقهما، ونقولهما صراحةً: كمية كسرية يحمل حاصل ضربها في السعر منزلة ثالثة (1.5 في 0.87 تساوي 1.305 وتُكتب 1.31)، وسعر صافٍ يصل عبر الـ API بأكثر من منزلتين على بند من أكثر من وحدة — الملف يحمل السعر بمنزلتين والصافي حُسب من السعر قبل تقريبه، فثلاث وحدات بسعر 24.347826 تخرج صافيًا 73.04 إلى جانب سعر 24.35، وثلاثة في 24.35 تساوي 73.05. فأرسل الأسعار الصافية بمنزلتين، أو أرسل سعر الرف مع prices_include_vat كما في توثيق الـ API. وكلاهما تحذير لا رفض.
أكواد لها علاقة
أسئلة شائعة
هل رُفضت فاتورتي بسبب هذا الكود؟ +
أسعاري على الرف شاملة الضريبة — كيف أكتب البند؟ +
لماذا لا أكتب الصافي الدقيق وأترك السعر؟ +
هل تسمح القاعدة بفرق هللة؟ +
الكمية عندي كسرية — 1.5 كيلو بسعر 0.87؟ +
ما علاقتها بـ BR-KSA-51؟ +
ZATCA Tools يبني التوقيع والبصمة والعدّاد والترميز عنك، ويتحقق من البيانات قبل الإرسال. ابدأ مجانًا، وبدون بطاقة ائتمانية.
ابدأ مجانًا