Invoice-level rounding
By default, Zuora 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.
This feature is in Limited Availability. If you want to have access to the feature, submit a request at Zuora Global Support.
How invoice-level rounding works
The following example is used to explain 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 setting, you set Rounding Increment to 0.05, and Rounding Mode to Up.
Before the invoice-level rounding feature is enabled, you generate an invoice with the following 2 invoice items from a bill run.
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 feature, the invoice-level rounding feature will have impacts on memo items. The following scenarios are for your reference.
Create 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 Zuora UI
- Write off an invoice through the REST API
- Reverse an invoice through the Zuora UI
- Reverse an invoice through the REST API
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 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:
Query the Rounding Amount in the Zuora 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 Zuora 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.zuora.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 Zuora data sources, we recommend that you export Invoice Items and filter for those items with a
Processing Type
equal toRounding
. - If you re-generate a draft invoice (for example, to add new charges), Zuora will update the Rounding Amount on that invoice automatically. However, if you make manual edits or adjustments to an existing invoice, Zuora 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.