حاسبة ضريبة القيمة المضافة
100 بنسبة 21% تصبح 121 منها 21 ضريبة، و121 بنسبة 21% تعود إلى 100: أضف الضريبة إلى سعر صافٍ أو استخرجها من إجمالي يشملها، واحصل دائمًا على الصافي والضريبة والإجمالي. مجانية في متصفحك.
- مجاني
- يعمل في متصفحك
- دون تسجيل
- بياناتك لا تغادر جهازك
شغّل الأداة مجانًا
مثال محلول
- وضع الحساب
- إضافة الضريبة
- الكمية
- 100
- معدل الضريبة
- 21
- المبلغ الصافي
- 100
- قيمة الضريبة
- 21
- المبلغ الإجمالي
- 121
تحسب ضريبة القيمة المضافة أو ضريبة المبيعات بطريقتين. وتُعيد الصافي والضريبة والإجمالي.
إضافة الضريبة ثم استخراجها
عند الإضافة يكون المبلغ الذي تدخله هو السعر الصافي. فالضريبة هي الصافي مضروبًا في المعدل، والإجمالي هو الصافي زائد الضريبة، فتعطي 100 بنسبة 21% ضريبة قدرها 21 وإجماليًا قدره 121. ويُكتب المعدل نسبة مئوية بسيطة، فالرقم 21 يعني 21%. أما الاستخراج فيعمل بالعكس: يعدّ المبلغ إجماليًا شاملًا للضريبة، ويقسمه على واحد زائد المعدل لإيجاد الصافي، ويعدّ الفرق ضريبة، فتستعيد 121 بنسبة 21% القيمتين 100 و21. وهذا ما تحتاجه لفصل الضريبة عن إجمالي إيصال أو سطر فاتورة شامل للضريبة. ويُسمح بمعدل صفر فتكون الضريبة صفرًا.
التقريب والخطأ الشائع
أشيع خطأ هو طرح المعدل من الإجمالي. ولأن المعدل يُطبَّق على الصافي فإن ذلك يطرح أكثر من اللازم، والقسمة على واحد زائد المعدل هي العملية العكسية الصحيحة. والفخ الثاني هو التقريب. فهنا تُقرَّب القيم الثلاث كل على حدة: عند الإضافة تُحسب الضريبة من الصافي بعد تقريبه ثم يُقرَّب الإجمالي، فيبقى كل سطر متسقًا في المحاسبة بدل أن يعتمد على كسر خفي. ومن دون ذلك قد لا يطابق الصافي مع الضريبة الإجمالي بفارق سنت واحد عند المعدلات غير المألوفة. ويمكنك اختيار من 0 إلى 8 منازل عشرية: أكثر للعملات أو أسعار الوحدات التي تحتاجها، أو 0 للوحدات الكاملة.
الإضافة مقابل الاستخراج
حقل rate نسبة مئوية (21 تعني 21%) يُحوَّل داخليًّا إلى r = rate / 100. والاستخراج عكس الإضافة، وهو ما تستعمله لاستخراج جزء الضريبة من مجموع إيصال أو من بند فاتورة إجمالي. ويُعيد كل فرع الثلاثيّ الكامل من الصافي والضريبة والإجمالي إضافةً إلى mode وrate اللذين أدخلتهما.
تقريب كل مكوّن على نحو مستقل
ولأن المكوّنات الثلاثة تُقرَّب على حدة، يحسب add الضريبة من الصافي المقرَّب ثم يقرّب الإجمالي، مما يُبقي كل بند متّسقًا مع نفسه للمحاسبة بدل اشتقاقه من قيمة وسيطة غير مقرَّبة. وهذا يهمّ عند الدقّة العالية أو المعدلات غير المعتادة حيث قد يجعل كسر خفيّ واحد الصافي زائد الضريبة يبدو مختلفًا عن الإجمالي بمقدار سنت. اختر منازل أكثر للعملات أو أسعار الوحدة التي تحتاجها، أو 0 للعرض بوحدات صحيحة.
الأسئلة الشائعة
ما الفرق بين الإضافة والاستخراج؟
يعامل add المبلغ صافيًا ويضع الضريبة فوقه (gross = net + tax). ويعامل extract المبلغ إجماليًّا شاملًا للضريبة ويستخرج net = gross / (1 + rate/100) والضريبة المحتواة.
كيف يُعطى المعدل؟
رقمًا نسبةً مئوية، فـ 21 تعني 21%. ويجب أن يكون منتهيًا وغير سالب؛ ويُسمح بالصفر ويعطي ضريبة صفرية.
كيف تُقرَّب المبالغ؟
يُقرَّب كلٌّ من net وtax وgross بقاعدة half-up على نحو مستقل إلى المنازل التي تضبطها (من 0 إلى 8، الافتراضي 2)، فتبقى البنود متّسقة مع نفسها.
كيف أضيف ضريبة بنسبة 21% إلى السعر؟
اختر إضافة الضريبة وأدخل السعر الصافي والمعدل بالنسبة المئوية، أي 21 لنسبة 21%. فالسعر الصافي 100 يعطي ضريبة 21 وإجماليًا قدره 121.
لماذا لا يكفي طرح 21% من الإجمالي؟
لأن المعدل يُطبَّق على السعر الصافي لا على الإجمالي. فطرح 21% من 121 يزيل أكثر من الضريبة الفعلية البالغة 21، أما قسمة 121 على 1.21 فتعطي الصافي الصحيح وهو 100.
أدوات ذات صلة
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/dev/vat-calculator \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"mode":"add","amount":100,"rate":21}'const res = await fetch("https://api.kit.forhosting.com/dev/vat-calculator", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"mode": "add",
"amount": 100,
"rate": 21
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/vat-calculator",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"mode": "add",
"amount": 100,
"rate": 21
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/vat-calculator", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"mode":"add","amount":100,"rate":21}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"mode":"add","amount":100,"rate":21}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/vat-calculator", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"mode": "add",
"amount": 100,
"rate": 21
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.vat_calculator",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |
ملاحظات تقنية
فـ mode=add يعامل المبلغ صافيًا ويضيف معدلًا مئويًّا فوقه؛ وmode=extract يعامل المبلغ إجماليًّا شاملًا للضريبة ويستخرج الصافي والضريبة المحتواة سلفًا.
الإضافة مقابل الاستخراج
وفي mode=add يكون المبلغ السعر الصافي: فالصافي يساوي amount، والضريبة تساوي الصافي مضروبًا في r، والإجمالي يساوي الصافي زائد الضريبة، فتُعيد 100 عند 21% صافيًا 100 وضريبة 21 وإجماليًّا 121. وفي mode=extract يكون المبلغ الإجمالي الشامل للضريبة: فالصافي يساوي الإجمالي مقسومًا على (1 + r)، والضريبة تساوي الإجمالي ناقص الصافي، فتستعيد 121 عند 21% صافيًا 100 وضريبة 21.
النطاقات والتحقق والأخطاء المُصنَّفة
ويجب أن يكون mode هو add أو extract تمامًا. ويجب أن يكون decimals عددًا صحيحًا ضمن 0..8. mode وamount وrate كلها مطلوبة. ويجب أن يكون كلٌّ من amount وrate عددًا منتهيًا غير سالب، وتُحدَّد مقاديرهما عند 1e12 لإبقاء النتائج ذات معنى؛ ويُسمح بمعدل صفري ويعطي ببساطة ضريبة صفرية. وأي مخالفة، أو مدخل ليس كائنًا، تُطلق خطأ invalid_input مُصنَّفًا يسمّي المشكلة بدل انهيار غير مُصنَّف، ويحرس extract من معدل قدره 100-% يجعل 1 + r صفرًا.
حالات التكامل
التسعير مع الضريبة فوق السعر
استعمل mode=add لتحويل سعر كتالوج صافٍ إلى سعر إجمالي يراه العميل بمعدل ضريبة القيمة المضافة أو المبيعات المحلي.
تسوية الإيصالات والفواتير
استعمل mode=extract لتقسيم مجموع شامل للضريبة إلى جزأيه الصافي والضريبة للمحاسبة والإقرارات.
أنظمة الدفع والفوترة
استدعِ API لحساب الصافي والضريبة والإجمالي على نحو متّسق عبر سلّة تجارة إلكترونية أو خطّ فوترة بأي معدل.
أسئلة تقنية
ما الذي يُطلق خطأً؟
خطأ invalid_input مُصنَّف لوضع سيّئ، أو مبلغ أو معدل سالب أو غير منتهٍ، أو مقادير فوق 1e12، أو decimals خارج 0..8، أو معدل 100-% في extract.
هل هي مجانية وكم تكلفة API؟
widget المتصفح مجاني؛ ويستعمل API رصيد KIT مدفوعًا مسبقًا يبدأ من $0.002، ولا تُحتسب المهام الفاشلة.