Qoyod
منتجات قيود
نظام نقاط البيع
كاشير ZATCA متكامل لمحلاتك مع دفع مرن
قيود فليفرز
كاشير سحابي مصمَّم خصيصًا للمطاعم والكافيهات
قيود HR
الموظفون والرواتب والإجازات وفق نظام العمل السعودي
قيود CRM
من العميل المحتمل إلى الفاتورة في قيود
مساكن
إدارة جمعيات اتحاد الملاك
قيود للمؤسسات
نظام ERP للشركات من 200 إلى 1,000 موظف
الأسعار
Qoyod
الأسعار

 دليل المعرفة

رفض الكمية أو السعر السالب في نظام الفوترة الوطني: القاعدة والبديل

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

والشرط أوسع مما يوحي به اسم المشكلة، فعبارة «أكبر من 0» تُخرج الصفر كذلك لا القيم السالبة وحدها. أما ما تريد قوله بالسطر السالب، كإرجاع سلعة أو خصم من سعرها، فله في الدليل صيغة أخرى. الخصم يُكتب موجبًا في البند نفسه، والإرجاع يُرسل في فاتورة إرجاع مستقلة بالرمز 381 تُكتب فيها الكمية المرتجعة موجبة.

يشرح هذا المقال الشرط كما ورد في الدليل التقني (الإصدار 1.5)، ثم المواضع التي قد تظهر فيها قيمة سالبة في ملف الفاتورة والصيغة المقبولة لكل منها. ويختم بخطوات الإصلاح قبل إعادة الإرسال، وطريقة التأكد من قبول الفاتورة.

لماذا يحدث رفض الكمية أو السعر السالب في نظام الفوترة الوطني

يرفض نظام الفوترة الوطني الكميات والأسعار السالبة في بنود الفاتورة، لأن الدليل التقني يضع على كل بند شروطًا لا تستوفيها هذه القيم. فكل بند يُرسل في كتلة cac:InvoiceLine، وفيها ثلاثة عناصر رقمية تحكمها هذه الشروط، هي الكمية cbc:InvoicedQuantity وسعر الوحدة cbc:PriceAmount وقيمة الخصم cbc:Amount داخل الكتلة cac:AllowanceCharge.

ويصف الدليل سعر الوحدة بأنه سعر الوحدة قبل الضريبة، ويشترط فيه هذا النص:

«عدد صحيح او عدد عشري شريطة ان تكون اكبر من 0 وخانات عشرية كحد اعلى لغاية 9».

ويشترط الدليل في الكمية الشرط نفسه، أي عددًا صحيحًا أو عشريًا أكبر من 0 بحد أعلى تسع خانات عشرية. أما قيمة الخصم على البند فيشترط أن تكون «بالموجب فقط»، بحد أعلى تسع خانات عشرية كذلك.

جدول وصف عناصر البند في الدليل التقني: الكمية وسعر الوحدة عدد صحيح أو عشري أكبر من 0 بحد 9 خانات عشرية، وLineExtensionAmount = (الكمية × سعر الوحدة) − الخصم، وقيمة الخصم بالموجب فقط
المصدر: دائرة ضريبة الدخل والمبيعات، الدليل التقني للربط مع نظام الفوترة الوطني من خلال واجهة برمجة التطبيقات (API)، الإصدار 1.5، ص20

ولا يذكر الدليل التقني رسالة خطأ بعينها لإرسال قيمة سالبة، فلا تبحث في ملف الاستجابة عن نص محدد. اقرأ ما يعود في الحقل EINV_MESSAGE، واحكم على الفاتورة من الحقل EINV_STATUS لا من رمز HTTP وحده. فإذا عادت الحالة NOT_SUBMITTED فالفاتورة لم تُقبل، ولا يعود عليها رمز QR. ولطريقة قراءة هذه الحقول راجع مقال خطأ 400 في نظام الفوترة الوطني.

الصفر خارج الشرط أيضًا

نص الشرط «أكبر من 0»، لا «غير سالب». فالبند الذي كميته صفر أو سعر وحدته صفر لا يستوفي شرط الدليل، كما لا يستوفيه البند السالب. لذلك افحص بنود الفاتورة بحثًا عن القيم الصفرية مع القيم السالبة، فكلاهما خارج ما يشترطه الدليل لهذين العنصرين.

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

الشروط الثلاثة على البند في الدليل التقني

يجمع الجدول التالي العناصر الثلاثة التي تحمل شرط الإشارة في البند، وما لا يستوفي شرط كل منها.

مرِّر الجدول أفقيًا لعرض بقية الأعمدة

العنصر ما يحمله شرط الدليل ما لا يستوفي الشرط
cbc:InvoicedQuantity كمية السلعة أو الخدمة في البند عدد صحيح أو عشري أكبر من 0، بحد أعلى 9 خانات عشرية الكمية السالبة والكمية الصفرية
cbc:PriceAmount سعر الوحدة قبل الضريبة عدد صحيح أو عشري أكبر من 0، بحد أعلى 9 خانات عشرية السعر السالب والسعر الصفري
cbc:Amount قيمة الخصم على البند داخل cac:AllowanceCharge بالموجب فقط، بحد أعلى 9 خانات عشرية الخصم المكتوب بإشارة سالبة

وتدخل هذه العناصر الثلاثة في معادلات البند كلها. فمبلغ البند cbc:LineExtensionAmount يساوي (الكمية × سعر الوحدة) − الخصم، وقيمة الضريبة على البند cbc:TaxAmount في فاتورة المبيعات العامة تساوي (الكمية × سعر الوحدة − الخصم) × نسبة الضريبة، وإجمالي البند cbc:RoundingAmount يساوي مبلغ البند مضافًا إليه قيمة الضريبة. فالإشارة في المعادلة، والقيم الداخلة فيها موجبة.

ويشرح مقال بنود الفاتورة InvoiceLine في نظام الفوترة الوطني عناصر البند كلها وشروط كل عنصر، ومنها رقم البند ووحدة القياس وكتلة الضريبة. أما هذا المقال فيقف عند شرط الإشارة وحده، وما يترتب على مخالفته.

الخصم يُكتب موجبًا والمعادلة تطرحه

يأتي الخصم في البند داخل الكتلة cac:AllowanceCharge، وتُكتب قيمته في العنصر cbc:Amount. فكون المبلغ خصمًا تدل عليه الكتلة التي يُرسل فيها، وطرحه من مبلغ البند تتولاه المعادلة. لذلك لا تحتاج قيمة الخصم إلى إشارة سالبة تدل على أنها خصم، والدليل يشترط ألا تحملها.

ومن أمثلة الدليل لفاتورة الدخل بندان يوضحان ذلك. الأول 33 وحدة بسعر 2 للوحدة وخصم 2، فمبلغه 33 × 2 − 2 = 64. والثاني 10 وحدات بسعر 5 وخصم 5، فمبلغه 10 × 5 − 5 = 45. والخصم في البندين مكتوب رقمًا موجبًا (2 و5)، والطرح في المعادلة.

البند الكمية سعر الوحدة الخصم مبلغ البند
البند الأول 33 2 2 64
البند الثاني 10 5 5 45

وتأتي مجاميع هذه الفاتورة في المثال نفسه موجبة كلها. فالمبلغ قبل الخصم 116، ومجموع الخصم 7، وإجمالي الفاتورة 109.

وتنتقل قيم الخصم من البنود إلى رأس الفاتورة. فالعنصر AllowanceTotalAmount يساوي مجموع خصومات البنود، وكذلك قيمة الخصم في كتلة cac:AllowanceCharge على مستوى الفاتورة، ويجب أن يساوي كلاهما مجموع خصومات البنود. فإذا كُتب خصم أحد البنود بإشارة سالبة، انتقلت الإشارة إلى هذين المجموعين أيضًا.

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

من أين تأتي القيمة السالبة في ملف الفاتورة

لا يذكر الدليل أسباب ظهور القيم السالبة في ملفات الفواتير. لكن بعض العمليات المحاسبية قد يمثلها برنامج البائع بسطر سالب، وكل واحدة منها لها في الدليل صيغة بقيم موجبة. ويعرض الجدول التالي هذه الحالات، ومع كل حالة الشرط الذي تخالفه والصيغة التي يضعها الدليل.

الحالة في برنامجك الشرط الذي تخالفه الصيغة التي يضعها الدليل
سطر بكمية سالبة يمثل سلعة مرتجعة داخل فاتورة بيع الكمية أكبر من 0 فاتورة إرجاع مستقلة بالرمز 381 تشير إلى الفاتورة الأصلية، وكميتها موجبة
سطر مستقل بسعر سالب يمثل خصمًا سعر الوحدة أكبر من 0 خصم في كتلة cac:AllowanceCharge داخل البند المخصوم نفسه، بقيمة موجبة
سطر سالب يمثل خصمًا على إجمالي الفاتورة الكمية أو السعر أكبر من 0 توزيع الخصم على البنود، وكتابة حصة كل بند موجبة في بنده
قيمة خصم مكتوبة بإشارة سالبة الخصم بالموجب فقط القيمة نفسها دون إشارة، والمعادلة تطرحها من مبلغ البند
سطر سالب يمثل إنقاص فاتورة قُبلت سابقًا الكمية أو السعر أكبر من 0 فاتورة إرجاع بالرمز 381 تشير إلى تلك الفاتورة، على الكميات فقط

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

فاتورة الإرجاع 381 بدل السطر السالب

الفاتورة التي صدرت عبر نظام الفوترة الوطني لا تُعدَّل بعد إصدارها، ولا يُرسل في فاتورة لاحقة سطر سالب يُنقص أثرها. والتصحيح يكون بفاتورة إرجاع، وعلى الكميات فقط. وتفصيل ما يمكن فعله بعد الإصدار وما لا يمكن في مقال تعديل فاتورة نظام الفوترة الوطني.

يقرأ النظام نوع المستند من العنصر cbc:InvoiceTypeCode. فالقيمة 388 تعني فاتورة جديدة، والقيمة 381 تعني فاتورة إرجاع، وهي من الناحية القانونية إشعار دائن. وتحمل فاتورة الإرجاع في السمة name رمز نوع الفاتورة الأصلية نفسه، ولا يتغير إلا الرقم داخل العنصر، وتُكتب بعملة الفاتورة الأصلية نفسها. فالمثال 381 إرجاع على فاتورة دخل محلية نقدية.

وصف InvoiceTypeCode لفاتورة الإرجاع في الدليل التقني: الرقم 381 للدلالة على فاتورة إرجاع، ونوعها وعملتها حسب الفاتورة الأصلية، وأمثلة رموز إرجاع فاتورة الدخل 011 و021 و111 و121
المصدر: دائرة ضريبة الدخل والمبيعات، الدليل التقني للربط مع نظام الفوترة الوطني من خلال واجهة برمجة التطبيقات (API)، الإصدار 1.5، ص24

فالرمز 381 هو ما يجعل المستند إرجاعًا، والكمية المرتجعة فيه تُكتب موجبة كما في فاتورة البيع. وينص الدليل على أن الكمية المرتجعة يمكن أن تكون «كاملة او جزء منها … برقم صحيح او بأجزاء عشرية»، وتبقى أكبر من الصفر.

ما تحمله فاتورة الإرجاع

يضع الدليل التقني لفاتورة الإرجاع شروطًا تربطها بالفاتورة الأصلية، وكلها بقيم موجبة.

  • مرجع الفاتورة الأصلية. تحمل الكتلة cac:BillingReference رقم الفاتورة الأصلية cbc:ID ومعرّفها الفريد cbc:UUID، وفي cbc:DocumentDescription إجمالي الفاتورة الأصلية.
  • سبب الإرجاع. سبب الإرجاع إلزامي، ويُكتب نصًا حرًا في العنصر cbc:InstructionNote داخل الكتلة cac:PaymentMeans.
  • بيانات البند كما في الأصل. رقم البند cbc:ID واسم السلعة أو الخدمة cbc:Name وسعر الوحدة cbc:PriceAmount تُكتب «كما هو في الفاتورة الاصلية».
  • الإرجاع على الكميات فقط. لا تتجاوز الكمية المرتجعة الكمية المباعة في الفاتورة الأصلية، ويجوز أن تتعدد فواتير الإرجاع الجزئي على فاتورة واحدة حتى تنفد كمياتها.
  • بيانات المشتري نفسها. ينص الدليل على أنه «يجب أن تتوافق بيانات المشتري في فاتورة الإرجاع مع بياناته في فاتورة البيع الأصلية المرتبطة بها».
  • مجاميع الجزء المرتجع وحده. تغطي مجاميع فاتورة الإرجاع «الجزء المراد ارجاعه»، وفي إرجاع فاتورة المبيعات العامة تحمل ضريبتها «مجموع قيم الضريبة المراد ارجاعها من الفاتورة».
ملاحظة الدليل التقني: فاتورة الإرجاع عبارة عن فاتورة بإشعار دائن، والإرجاع على الكميات فقط ولا يتجاوز الكمية المباعة ويجوز مرة واحدة أو أكثر حتى انتهاء الكميات
المصدر: دائرة ضريبة الدخل والمبيعات، الدليل التقني للربط مع نظام الفوترة الوطني من خلال واجهة برمجة التطبيقات (API)، الإصدار 1.5، ص23

ولحد الكمية المرتجعة وما يحدث حين يتجاوز الإرجاع الكمية المباعة مقال مستقل في هذه السلسلة، هو مقال الإرجاع الذي يتجاوز الكمية الأصلية في نظام الفوترة الوطني.

الخصم في الإرجاع الجزئي

إذا كان على البند الأصلي خصم، فيحدد الدليل ما يُكتب منه في بند الإرجاع بهذا النص:

«اذا كان الارجاع لكامل كمية السلعة او الخدمة فيجب وضع الخصم (إن وجد) كاملا، أما اذا كان الارجاع لجزء من الكمية فيجب ان يكون الخصم (إن وجد) جزء من الخصم الكلي للسلعة او الخدمة حسب الكمية المرجعة».

ولا يضع الدليل صيغة حسابية لهذه الحصة، والقراءة الظاهرة لعبارة «حسب الكمية المرجعة» أنها بنسبة الكمية. فعلى سبيل التوضيح لا الصيغة الرسمية، لو أُرجعت 3 وحدات من البند الثاني في المثال السابق (10 وحدات بسعر 5 وخصم 5)، لكان بند الإرجاع كما في الجدول. وكل قيمه موجبة.

العنصر في بند الإرجاع القيمة مصدرها
رقم البند رقم البند الثاني في الفاتورة الأصلية كما هو في الفاتورة الأصلية
الكمية 3 الكمية المرتجعة، موجبة ولا تتجاوز 10
سعر الوحدة 5 كما هو في الفاتورة الأصلية
الخصم 1.500 حصة من الخصم الكلي (5) بنسبة 3 من 10، للتوضيح
مبلغ البند 13.500 3 × 5 − 1.500

ولشرح المستند نفسه وحقوله وأمثلته راجع مقال إشعار الدائن في نظام الفوترة الوطني.

إن كانت الفاتورة الأصلية صادرة من البوابة

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

خطوات الإصلاح قبل إعادة الإرسال

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

  1. اقرأ ملف الاستجابة. سجّل الحالة في EINV_STATUS ونص الرسالة في EINV_MESSAGE قبل أي تعديل، فقد يكون في الفاتورة سبب رفض آخر غير الإشارة.
  2. افحص كل بند. تأكد أن cbc:InvoicedQuantity وcbc:PriceAmount أكبر من 0 في كل بند، وأن كل قيمة خصم مكتوبة دون إشارة سالبة.
  3. حدّد العملية وراء القيمة. اسأل عما أراد البرنامج قوله بالسطر السالب، أهو خصم أم إرجاع أم إنقاص لفاتورة سابقة، واختر الصيغة المقابلة من جدول الحالات أعلاه.
  4. إن كانت خصمًا. انقله إلى كتلة cac:AllowanceCharge في البند المخصوم واكتبه موجبًا، ثم أعد حساب مبلغ البند وضريبته وإجماليه، ثم مجاميع الرأس كلها. فخصم يتغير مكانه دون إعادة حساب المجاميع قد يقود إلى رفض آخر، هو ما يشرحه مقال رسالة Total General Amount is Not Correct.
  5. إن كانت إرجاعًا. احذف السطر السالب من فاتورة البيع، وأرسل فاتورة البيع بما بيع فعلًا. ثم أصدر فاتورة إرجاع بالرمز 381 تشير إلى الفاتورة المقبولة التي يُرجع منها، بكمية موجبة.
  6. أعد الإرسال بالمعرّف نفسه. يوصي الدليل عند فشل الإرسال بإعادة الإرسال برقم الفاتورة cbc:ID ومعرّفها cbc:UUID نفسيهما، لا بمعرّف جديد.
  7. تأكد من القبول. الفاتورة المقبولة تعود حالتها SUBMITTED ومعها رمز QR في الحقل EINV_QR. احفظ رقم الفاتورة ومعرّفها ورمز QR وحالتها، ويجب إظهار رمز QR على فاتورة البائع.

متى تتواصل مع الدائرة

إذا استوفت بنود الفاتورة كل الشروط السابقة وبقيت مرفوضة، فارجع إلى نص الرسالة العائدة، فالسبب حينئذ في عنصر آخر من الملف. ويحيل الدليل التقني الاستفسارات إلى لجنة الدعم الفني لشؤون الفوترة في دائرة ضريبة الدخل والمبيعات، عبر موقع الدائرة.

كيف يساعدك قيود

حين تصدر فاتورتك من برنامج محاسبي، لا تكتب ملف XML بيدك. يبني تكامل قيود مع نظام الفوترة الوطني ملف الفاتورة بصيغة UBL 2.1 ومعرّفها الفريد، ويرسله دون أي تدخل يدوي. ويعمل كذلك على هذه الطبقة.

  • فحص قبل الإرسال. يفحص قيود كل فاتورة على مستوى الحقول لحظة إنشائها، ومنها الرقم الضريبي ونوع المستند وطريقة الدفع ونسبة ضريبة المبيعات العامة واكتمال البنود، وينبهك بأي خطأ قبل إرسالها لتقليل حالات الرفض.
  • حالة كل فاتورة أمامك. تعيد الدائرة حالة الفاتورة ورسالة الخطأ، ويعرضها قيود في لوحة الحالة.
  • قائمة بما يحتاج إعادة إرسال. تعرض لوحة الحالة الفواتير التي لم تُرسل وتحتاج إلى إعادة إرسال.
  • إعادة إرسال بالمعرّف نفسه. تعيد إرسال الفاتورة بمعرّف UUID نفسه.

والفحص المسبق تنبيه لا ضمان. فهو يغطي الحقول المذكورة، ويبقى قبول الفاتورة لنظام الفوترة الوطني وحده.

أين تذهب بعد هذا المقال

قيود · نظام الفوترة الوطني

فوترة إلكترونية ومحاسبة متكاملة في نظام واحد

قيود متكامل مع نظام الفوترة الوطني (JoFotara). تُصدر فاتورتك بالدينار الأردني من قيود فتُقيَّد في دفاترك تلقائيًا وتُرسل إلى النظام، وبعد قبولها يعود عليها رمز QR من دائرة ضريبة الدخل والمبيعات.

الأسئلة الشائعة

لماذا يرفض نظام الفوترة الوطني الكمية أو السعر السالب؟

يشترط الدليل التقني في الكمية وفي سعر الوحدة أن يكون كل منهما عددًا صحيحًا أو عشريًا أكبر من 0، بحد أعلى تسع خانات عشرية. فالبند الذي يحمل كمية أو سعرًا سالبًا لا يستوفي هذا الشرط.

هل يقبل النظام كمية أو سعر وحدة يساوي صفرًا؟

يشترط الدليل أن تكون القيمة أكبر من 0، والصفر لا يستوفي هذا الشرط. لذلك يدخل البند الصفري في الفحص مع البند السالب.

كيف أكتب الخصم على البند دون إشارة سالبة؟

يُكتب الخصم رقمًا موجبًا في العنصر cbc:Amount داخل كتلة AllowanceCharge في البند نفسه، والمعادلة هي التي تطرحه، فمبلغ البند يساوي الكمية × سعر الوحدة − الخصم. وإن كان الخصم على إجمالي الفاتورة فيُوزَّع على البنود قبل الإرسال، لأن النظام لا يقبل خصمًا مستقلًا على الإجمالي.

كيف أُرجع جزءًا من فاتورة مقبولة دون قيم سالبة؟

يُصدر البائع فاتورة إرجاع بالرمز 381 تشير إلى رقم الفاتورة الأصلية ومعرّفها وإجماليها، وتحمل سبب الإرجاع. وتُكتب فيها الكمية المرتجعة موجبة، ولا تتجاوز الكمية المباعة في الأصل، ويبقى رقم البند واسم السلعة وسعر الوحدة كما في الفاتورة الأصلية.

ما رسالة الخطأ التي تظهر عند إرسال قيمة سالبة؟

لا يذكر الدليل التقني رسالة بعينها لهذه الحالة. لذلك اقرأ ما يعود في الحقل EINV_MESSAGE من ملف الاستجابة، واحكم على الفاتورة من الحقل EINV_STATUS، فالحالة NOT_SUBMITTED تعني أنها لم تُقبل.

هل أولّد معرّفًا فريدًا جديدًا عند إعادة الإرسال بعد الإصلاح؟

يوصي الدليل بإعادة الإرسال برقم الفاتورة ومعرّفها الفريد نفسيهما. فالفاتورة المرفوضة لم تُقبل، وتوليد معرّف جديد في كل محاولة قد يؤدي إلى تكرار الفواتير.

المراجع

الأدلّة الإرشادية

تابع رحلة التعلّم

استكشف بقية أدلّة قيود الإرشادية، أو ابدأ بتطبيق ما تعلّمته.

ندوات مباشرة يقدمها فريق قيود لمساعدتك في استخدام البرنامج بسهولة والرد على أسئلتك.

تعرّف على أحدث تحديثات فيود والتحسينات المستمرة والخصائص الجديدة في مكان واحد.

فريقنا جاهز لمساعدتك وتقديم الدعم الفوري لأي مشكلة تواجهها على مدار الساعة