Skip to main content

Invoice-level rounding

Zuora

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:

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 to Rounding.
  • 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.