Invoice item amounts are calculated to 11 digits of precision. Before rounding takes place Invoice items are summed to produce an invoice total, and then the total is rounded to 2 decimal places.
This approach is used to avoid revenue leakage, which can occur if each invoice item amount is rounded to 2 decimal places individually ($0.004 would become $0.00 for example). Charges that might be less than a cent include: prorated charges and refunds, taxes, currency conversions, or percentage charges on contract penalties or late fees.
If an invoice was configured to show all invoice items rounded to 2 decimal places, this could result in a discrepancy between the sum of all invoice items and the invoice total. This difference would be due to the rounding on rendered charges and not an error in the billing calculations.
Rounding amounts during rating is governed by the configuration on Rate Groups. The number of decimal places to round the rated amount to is configured on the group using the ‘Amount Precision’ setting. The rounding behavior is configured by setting the ‘Amount Rounding Type’ value (Round Up or Round Half Up rounding).
Global usage precision and rounding type settings can be specified on an Owner as well, under the Mediation & Rating section. These Owner settings are used in the event a rate group exists without an amount precision or rounding type set.
During invoicing taxes are calculated and midpoint rounded to 2 decimals using a floating carry algorithm. This ensures that when multiple taxes are applied to a transaction the individual tax charges always add up to the total tax applied to the transaction.