98
edits
mNo edit summary |
|||
| Line 1: | Line 1: | ||
This page explains how | This page explains how VAT calculations are done (or can be done depending on the options chosen) in Dolibarr ERP CRM. | ||
= Standard VAT and rounding rules = | = Standard VAT and rounding rules = | ||
For an example we will use an invoice with two products, based in a country where the totals must be rounded to two decimal places. | |||
{|class="wikitable centre" width="80%" | {|class="wikitable centre" width="80%" | ||
|- valign="top" | |- valign="top" | ||
|| ||A<br>Description||B<br>Quantity||C<br>Unit price||D<br>Vat rate||E<br>Total without tax<br>=(B*C)||F<br>Exact tax amount<br>=(D*E)||nowrap="nowrap"|G<br>Tax amount rounded<br> | || ||A<br>Description||B<br>Quantity||C<br>Unit price||D<br>Vat rate||E<br>Total without tax<br>=(B*C)||F<br>Exact tax amount<br>=(D*E)||nowrap="nowrap"|G<br>Tax amount rounded<br>to 2 dec. places<br>=round(F)||nowrap="nowrap"|H<br>Exact price<br>inc tax<br>=(E+F)||nowrap="nowrap"|I<br>Price inc tax rounded<br>to 2 decimals<br>=(E+G) | ||
|- | |- | ||
||1||nowrap="nowrap"|Product alpha||1||1.24||10%||1.24||0.124||0.12||1.24+0.124=1.364||1.36 | ||1||nowrap="nowrap"|Product alpha||1||1.24||10%||1.24||0.124||0.12||1.24+0.124=1.364||1.36 | ||
| Line 14: | Line 14: | ||
|} | |} | ||
We have | We have two ways to calculate the total of the invoice: summing each rounded line or summing the lines and rounding the total. | ||
1) If we choose to | 1) If we choose to sum the rounded lines (to 2 decimal places) lines, we get: | ||
* Total without tax: 1.24(E1) + 1.24(E2) = '''2.48''' | * Total without tax: 1.24(E1) + 1.24(E2) = '''2.48''' | ||
* Total tax 10%: 0.12(G1) + 0.12(G2) = '''0.24''' (we sum the rounded values of tax on each line) | * Total tax 10%: 0.12(G1) + 0.12(G2) = '''0.24''' (we sum the rounded values of tax on each line) | ||
* Total inc tax (we sum total without tax + total tax): 2.48(Ex) + 0.24(Gx) = '''2.72''' | * Total inc tax (we sum total without tax + total tax): 2.48(Ex) + 0.24(Gx) = '''2.72''' | ||
Note that if we sum rounded price inc tax on each line, we get: 1.36(I1) + 1.36(I2) = '''2.72''' (same result so we know there is no error) | Note that if we sum the rounded price inc. tax on each line, we get: 1.36(I1) + 1.36(I2) = '''2.72''' (the same result, so we know there is no error) | ||
2) If we choose to round ( | 2) If we choose to round the amount (to 2 decimals) after summing the unrounded lines, we get: | ||
* Total without tax: 1.24(E1) + 1.24(E2) = '''2.48''' (same | * Total without tax: 1.24(E1) + 1.24(E2) = '''2.48''' (same as method 1) | ||
* Total tax 10%: (1.24(E1) + 1.24(E2)) * 10% = 0.124 + 0.124 = 0.248 rounded to nearest | * Total tax 10%: (1.24(E1) + 1.24(E2)) * 10% = 0.124 + 0.124 = 0.248 rounded to nearest two decimals gives '''0.25''' (we sum the amount without tax for each lines, calculate vat rate on this and subsequently we round the value to 2 decimals) | ||
* Total inc tax (we sum | * Total inc tax (we sum each line without tax and add the total tax): 2.48 + 0.25 = '''2.73''' | ||
The first point to note is that the result of Method 1 differs from the result of method 2 by 0.01. If you have n times the same line, the difference can be higher but is always lower than/equal to (n-1)*0.01. | |||
Also if you decide to round up or down instead of "to the nearest", you will have same problem (for example with | Also if you decide to round up or down instead of "to the nearest", you will have same problem (for example with rounding down, try with a quantity of 2 on line 2 and you will have same differences between method 1 and 2). Difference will just appears with different data but will still occur, so the problem is not on how we make the rounding but when. | ||
The second point is that if we use method 2, we must not show the column I on the invoice, otherwise the total you show on your invoice (2.73) will not be the same as the total you get summing the totals of each line (1.36+1.36=2.72). Showing column H might be better but the total will still differ because the total (2.73) is rounded and the result of summing column H lines (1.364+1.364=2.728) will still differ. | |||
'''So what to do ?''' | '''So what to do ?''' | ||
* In some countries, | * In some countries, calculations must always be done using method 1 for generating invoices. As this is the default calculation rule for Dolibarr, there is nothing to change from the default configuration.. | ||
* In other countries ( | * In other countries (rarely), calculations must always be done using method 2 for generating invoices. To avoid having the total shown at the top of the invoice that differs from the totals of detailed lines, just do not show column I on invoice. This is the case with Dolibarr default invoice templates, so that's not a problem. To enable this rule of calculation, you must use Dolibarr version 3.5+ and add/override the constant MAIN_ROUNDOFTOTAL_NOT_TOTALOFROUND to 1 (in Home - Setup - Other). | ||
* In most countries, | * In most countries, both methods are possible. In this case just use method 1 that will be more accurate for accounting (since if you use method 2, the total of vat collected on your invoice will not be the sum of F, nor the sum of G and this may create confusion subsequently). If you prefer to use method 2, use Dolibarr version 3.5+ and set constant MAIN_ROUNDOFTOTAL_NOT_TOTALOFROUND to 1 (Home - Setup - Other). | ||
= Second or Third Tax = | = Second or Third Tax = | ||
edits