- Cashier applies a 5% discount but the receipt displays it as "4.9%" or "5.1%". Why is it showing inaccurate information?
- Why do a Sales Order and a Receipt with exactly the same products and prices have a different total (on a non-US, non-CA account)?
- I want to set up a promotion “Get 3 pcs for $50”, but the point of sale inaccurately calculates the total as $50.01.
- Why do sales reports calculate an inaccurate VAT?
- Example
- Solution

A discount *changes the price*. Prices, however, are always rounded: it is not possible to charge the customer in thousandths of cents.

Thus, if the original price is $3.85, a 5% discount takes it down to $3.66. (3.6575, to be exact, but we have to round it).

3.66 is the price customer sees on the receipt, and the amount they pay. A discount from 3.85 to 3.66, if re-calculated, is actually a discount of 4.93506...% — which, in a way, is also correct.

The workaround is to decrease the precision of the discount percentage that is displayed on receipt printout. To display the discount percentage as a whole number, please set configuration parameter `receipt_discount_decimals = 0`

. (Customer support can help adjust account configuration parameters.)

By default, Receipts (and Credit Invoices created from Receipts) use a **calculation based on prices with tax** (which works well for retail).

All other documents use a **net price-based calculation** (which works well for B2B).

If the customer only does retail, the recommended solution is to make ALL sales documents use the retail calculation method. Apply configuration parameter:

`all_invoices_use_netprice_calculation_since = "<ISO date>"`

Example:

`all_invoices_use_netprice_calculation_since = 2021-05-01`

Customer support can help adjust account configuration parameters.

Set the parameter's value to a future date, to avoid changing the totals of past documents.

This can be solved, but it requires **Classic back office** (does not work with Berlin back office).

Erply’s default algorithm (called “version 2”) for calculating sale total requires **unit prices with tax** to have a precision of **two decimal places**, and the unit price gets multiplied by quantity. Hence, the items in this example are sold at $16.67 each, and the price can only change in one cent increments. As such, it is impossible to have sale total of $50 exactly.

A more sophisticated algorithm is available; we call it “version 5". In these circumstances, it would return a total of exactly $50.

Version 5 can be enabled by customer support from **Settings > Support Control Panel** (the special page in back office that appears when logging in via Helpdesk Login) and takes effect from the next day. If it brings unforeseen results, then the algorithm can similarly be switched back to version 2.

Erply’s sales reports show the VAT **as it was calculated for each sales transaction separately**, and as it was collected from the customers.

The benefit of this approach is that there is evidence to back it up. In principle, the accountant could inspect all invoice printouts and add up the numbers, and they will get the same result.

The drawback on the other hand is that roundings cumulate, and **the total VAT is not an exact percentage of the net total revenue**.

Let a sample transaction be **€5.00 after VAT, with a VAT rate of 10%**.

For this transaction, net total is €4.55 and VAT is €0.45 — this is the maximum accuracy that is possible with two decimal places.

If this exact transaction occurs a thousand times, the total net revenue will be €4,550 and total tax collected will be €450. **However, €450 makes up only 9.89% of the net revenue**.

In this situation, **we recommend accountants to use their best judgement and prior practice**. In principle, both approaches are possible:

- Ignore the actual collected VAT: report a net revenue of €4,550 and take exactly 10% from it, yielding €455 total VAT. The missing €5 (that was not actually collected) can be filed as a rounding difference.
- Report the net revenue and VAT the same as in Erply.