Overview
By default, BillHive applies the rounding increment against every invoice item. With this rule, every invoice and taxation item will be rounded separately. The invoice-level rounding feature allows you to apply the rounding increment once, at the invoice total level, instead of against each invoice item.
For example, with this feature enabled, invoice and taxation items can be rounded to the nearest 1 cent, but only the final invoice total will be rounded to the nearest 5 cents.
Working with invoice-level rounding
Let us use the following case to show how the invoice-level rounding feature works.
You work with currencies that do not round to the nearest cent (for example, Swiss francs are typically rounded to the nearest 5 cents). In the Customize Currencies billing (opens in a new tab) setting, you set Rounding Increment to 0.05, and Rounding Mode to Up
| Net Amount | Tax | Processing Type | |
|---|---|---|---|
| Invoice Item 1 | 1 | 0.11 | Charge |
| Invoice Item 2 | 1.01 | 0 | Charge |
| Invoice Total Amount | 2.12 (1+0.11+1.01+0) |
After the invoice-level rounding feature is enabled, while each invoice item is still rounded with the default 0.01 increment, the invoice total amount is rounded from 2.12 to 2.15. As a result, a 0.03 rounding invoice item is created. See the following table for details.
| Net Amount | Tax | Processing Type | |
|---|---|---|---|
| Invoice Item 1 | 1 | 0.11 | Charge |
| Invoice Item 2 | 1.01 | 0 | Charge |
| Invoice Item 3 | 0.03 | 0 | Rounding |
| Invoice Total Amount | 2.15 (1+0.11+1.01+0+0.03+0) |
Impact on memo items
If you have enabled the Invoice Settlement (opens in a new tab) feature, the invoice-level rounding feature will have impacts on memo items. The following scenarios are for your reference.
Creating memo items from rounding invoice items
When you write off or reverse an invoice, rounding invoice items will generate memo items with the same Rounding processing type. This behavior applies to these tasks:
- Write off an invoice through the BillHive UI (opens in a new tab)
- Write off an invoice through the REST API (opens in a new tab)
- Reverse an invoice through the BillHive UI (opens in a new tab)
- Reverse an invoice through the REST API (opens in a new tab)
When you create a credit or debit memo from an invoice, rounding invoice items are blocked from generating any memo items. You will receive an error message. This behavior applies to these tasks:
- Create a credit or debit memo from an invoice through the BillHive UI (opens in a new tab)
- Create a credit memo from an invoice through the REST API (opens in a new tab)
- Create a debit memo from an invoice through the REST API (opens in a new tab)
Creating taxation items from rounding memo items
You can expect to see rounding memo items if the invoice-level rounding feature is enabled, just like how rounding invoice items are created as previously mentioned.
When you create taxation items for a credit memo or debit memo, rounding memo items are blocked from generating any taxation items. This behavior applies to these tasks:
- Create taxation items for a credit memo through the REST API (opens in a new tab)
- Create taxation items for a debit memo through the REST API (opens in a new tab)
Querying the Rounding Amount in the BillHive API
As part of the invoice rounding feature, we have added a new value for ProcessingType of the InvoiceItem object. The value 4 represents a rounding object item.
If you want to use the BillHive API to query the rounding amount, you can use this value to query the invoice item (ProcessingType = '4').
Because the ChargeName for the rounding item is hard-coded to Rounding Amount, you can also query the rounding amount by ChargeName = 'Rounding Amount' or ChargeName like 'Rounding%'.
SOAP Example
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:api="http://api.billhive.com/">
<soapenv:Header>
<api:SessionHeader>
<api:session>
yE82OEz2ZC8RKgBl4T_CBK-2wgFO2tkPV1KjCHbYdEquVr9NcGN_WZag8JGaHT-WINNVqfNrl9QCwwCEH3IYXscjW9UM-YRQi_IjFoky7RYiP-3FI8imkSWlao-YKE33VWNlfHh8w92nIbkMqcI0UTKGaly3O23QIhZHieOLuFCUxITa7c15LXi_p7ytC1Lb
</api:session>
</api:SessionHeader>
</soapenv:Header>
<soapenv:Body>
<api:query>
<api:queryString>
SELECT ChargeName, ChargeAmount FROM InvoiceItem
</api:queryString>
</api:query>
</soapenv:Body>
</soapenv:Envelope>Rounding Amount Invoice Item Object
The following values are stored for all invoice item fields associated with a rounding amount:
| Field | Value |
|---|---|
| AccountingCode | No value |
| ChargeAmount | The amount required to achieve the rounding increment. |
| ChargeDate | The date that your invoice is generated |
| ChargeDescription | Rounding Amount (this cannot be edited) |
| ChargeName | Rounding Amount (this cannot be edited) |
| ChargeNumber | No value |
| CreatedById | Auto-generated |
| CreatedDate | Auto-generated |
| InvoiceId | Auto-generated to connect it to the correct invoice. |
| ProcessingType | 4 (a rounding amount) |
| ProductDescription | No value |
| ProductId | No value |
| Quantity | 1 |
| RatePlanChargeId | No value |
| RevRecCode, RevRecStartDate, RevRecTriggerCondition | No value |
| ServiceStartDate | Set to the invoice date |
| ServiceEndDate | Set to the invoice date |
| SKU | Empty string |
| SubscriptionId | No value |
| TaxAmount | No value |
| TaxCode | No value |
| TaxExemptAmount | No value |
| UnitPrice | The amount required to achieve the rounding increment. |
| UOM | Empty string |
| UpdatedById | Auto-generated |
| UpdatedDate | Auto-generated |
Limitations
The following limitations apply to the invoice rounding feature:
- If you want to export these rounding amounts using BillHive data sources, we recommend that you export Invoice Items and filter for those items with a Processing Type equal to Rounding.
- If you re-generate a draft invoice (for example, to add new charges), BillHive will update the Rounding Amount on that invoice automatically. However, if you make manual edits or adjustments to an existing invoice, BillHive will not perform rounding automatically after such changes are made, so it is your responsibility in this case to also update the Rounding Amount to achieve a properly rounded invoice total.