Reduction order transactions
Use reduction orders to track the reduction of a sales order in quantity or in terms. For example, if a customer has purchased 12-month maintenance service through a sales order and then requests to reduce the terms by 3 months, you can create a reduction order to track this request.
The SO based CM-R and RORD transactions can both result in the reduction of the sales order. However, the SO based CM-R transaction is usually used to reduce the quantity of a sales order. The RORD transaction is usually used to reduce the term in a sales order.
Input requirements
The reduction order transactions can be collected by Zuora Revenue with the line type being RORD. When RORD lines are input to Zuora Revenue, the ID of the original SO line must be specified for the RORD line. So that Zuora Revenue can reduce the original SO line accordingly.
To input RORD lines in Zuora Revenue, all the mandatory fields must be present for the RORD line. See Mandatory fields of RORD transactions. Besides, the following specific requirements must be met:
- The Ext. Sell Price field must be a negative value.
- The Ext. List Price field must be a negative value.
- The Quantity field must be a positive value.
- The Cancel Flag or the Return Flag fields must be empty.
Stage validations
Predefined validation rules are also available in the system to validate data on the RORD line. If any validation fails, the RORD line will be stopped in Staging.
Note that some predefined validation rules are to validate the dates on the RORD line and by default disabled. If you enable these validations, the following error codes will be returned when the validation fails. To resolve the validation errors, you need to review the RORD line to ensure revenue recognition can be triggered accordingly.
- RPRO-00353: The start date of the RORD line is earlier than the start date of the SO line, or the end date of the RORD line is later than the end date of the SO line.
- RPRO-00356: The revenue start or end date on the associated SO line has been updated from the UI or through the manual deferral/release action.
A flag called RORD Review Completed is introduced to the Inbound Integration UI for you to skip this validation after you have completed the review on the RORD line. Whenever the RORD line is stopped in Stage due to the above validation errors, you can navigate to Data Interface > Inbound and change this flag on the RORD line to Y. Then, during the next data collection, the system will skip the date validation for the RORD line.
Processing logic
When RORD is collected in Zuora Revenue, the overall revenue of the term or quantity of the SO line is to be adjusted. All the schedules created are associated with the original SO line. If both sales order and invoice schedules are present for the same period, the RORD line will reverse the invoice schedules before the sales order schedules.
- If the RORD value equals to the original SO value, the amount in the deferred status and the amount in the recognized status will be cleared. In this case, the following changes will occur to the original SO line:
-
The Return Flag of the original SO line becomes Y.
-
The recognized amount, deferred amount, and the allocatable amount become null.
-
The extended SSP price and all other SSP related fields become null.
-
Allocation is updated based on the contract modification rules.
-
- If the RORD value is less than the original SO value, the amount in the deferred status will be cleared first. After that, if the RORD value is not completely consumed, the amount is the recognized status will be reduced. In this case, the following changes occur to the original SO line:
-
The Return Flag of the original SO line remains N.
-
The recognized amount, the deferred amount, and the allocatable amount will be updated based on the Ext. Sell Price of the RORD line.
-
The extended SSP price and all SSP related fields will be updated based on the changes in List Price, Sell Price, and Quantity.
-
Allocation is updated based on the contract modification rules.
-
Related profile setting
The CREATE_RORD_CONTRA_ENTRY profile determines whether the Contra AR entry is to be created when RORD lines are collected in Zuora Revenue. Examples of accounting entries are provided in the Accounting entries sections below to help you understand the impact of this profile setting on RORD accounting entries.
CM-RO transaction impact
The transaction type, CM-RO (credit memo for reduction order), is supported in Zuora Revenue to reverse the contra revenue that was created for the RORD line. The RORD schedules to be reversed are determined by the amount of the CM-RO line.
When the CREATE_RORD_CONTRA_ENTRY profile is enabled, there are two circumstances when the CM-RO line is collected.
- If the Contra AR entry that was created for the RORD line has not been posted, the Contra AR entry will be removed from the schedules after the CM-RO line comes in.
- If the CM-RO line is collected after the RC has been posted, the schedules will contain two Contra AR entries. One is created when the RORD line is collected and the other is created when the CM-RO line is collected.
The amortization of the revenue contract will not be impacted by the CM-RO line.
SSP normalization
When the RORD line is collected, the SSP value of the original SO line gets normalized based on the price, term, or quantity of the RORD line. Examples are provided to explain the impact of RORD line on SSP normalization.
SSP based on percentage
In this example, the SSP type is set to be Percentage. The SO line information is shown in the following table. The Ext. SSP Price is calculated based on the Ext. List Price and SSP%. The Allocated and Carve values can also be derived.
Line Type | SO NO | SO Line NO | SO Line ID | Item | Qty | Ext. List Price | Ext. Sell Price | SSP % | Ext. SSP Price | Allocated | Carve |
---|---|---|---|---|---|---|---|---|---|---|---|
SO | SO-1001 | SO1001-1 | 10001 | Hardware | 2 | 1000 | 800 | 75 |
750 (=1000*75%) |
801.53 (=1400*750/1310) |
1.53 |
SO | SO-1001 | SO1001-2 | 10002 | Software | 2 | 800 | 600 | 70 |
560 (=800*70%) |
598.47 (=1400*560/1310) |
-1.53 |
Total | 1400 | 1310 |
Then, the following RORD line is collected to reduce the quantity of the two SO lines.
Line Type | SO NO | SO Line NO | SO Line ID | Item | Qty | Ext. List Price | Ext. Sell Price |
---|---|---|---|---|---|---|---|
RORD | SO-1001 | SO1001-3 | 10001 | Hardware | 1 | -500 | -400 |
RORD | SO-1001 | SO1001-4 | 10002 | Software | 1 | -400 | -300 |
After data collection is done, the Ext. SSP Price is calculated based on the net value of Ext. List Price.
Line Type | SO NO | SO Line NO | SO Line ID | Item | Qty | Ext. List Price | Ext. Sell Price | SSP % | Ext. SSP Price | Allocated | Carve |
---|---|---|---|---|---|---|---|---|---|---|---|
SO | SO-1001 | SO1001-1 | 10001 | Hardware | 1 | 500 | 400 | 75 |
375 (=500*75%) |
400.76 (=700*375/655) |
0.76 |
SO | SO-1001 | SO1001-2 | 10002 | Software | 1 | 400 | 300 | 70 |
280 (=400*70%) |
598.47 (=700*280/655) |
-0.76 |
Total | 700 | 655 |
SSP based on amount
In this example, the SSP type is set to be Amount. The SO line information is shown in the following table. The Ext. SSP Price is calculated based on the following formula:
Ext. SSP Price = SSP Price * Quantity * Term
SO Line ID | Item | Qty | Ext. List Price | Ext. Sell Price | Allocatable | Start Date | End Date | Term | SSP Price | Ext. SSP Price | Allocated | Carve |
---|---|---|---|---|---|---|---|---|---|---|---|---|
SO20001 | Hardware | 1 | 1000 | 800 | 800 | 01/01/2019 | 01/01/2019 | 1 | 900 | 900 |
777.78 (1400*900/1620) |
-22.22 |
SO20002 | Maintenance | 1 | 720 | 600 | 600 | 01/01/2019 | 31/12/2019 | 12 | 60 | 720 |
622.22 (1400*720/1620) |
22.22 |
Total | 1400 | 1620 |
Then, the following RORD line is collected to reduce the term of the maintenance line by 3 months from October to December 2019.
Line Type | SO Line ID | Item | Qty | Ext. List Price | Ext. Sell Price | Start Date | End Date | Term |
---|---|---|---|---|---|---|---|---|
RORD | SO20002 | Maintenance | 1 | -180 | -150 | 01/10/2019 | 31/12/2019 | 3 |
The Ext. SSP Price and Term are changed for the maintenance line. The Allocated Value and Carve are also recalculated as follows:
SO Line ID | Item | Qty | Ext. List Price | Ext. Sell Price | Allocatable | Start Date | End Date | Term | SSP Price | Ext. SSP Price | Allocated | Carve |
---|---|---|---|---|---|---|---|---|---|---|---|---|
SO20001 | Hardware | 1 | 1000 | 800 | 800 | 01/01/2019 | 01/01/2019 | 1 | 900 | 900 |
781.25 (1250*900/1440) |
-18.75 |
SO20002 | Maintenance | 1 | 540 | 450 | 450 | 01/01/2019 | 31/9/2019 | 9 | 60 | 540 |
468.25 (1250*540/1440) |
18.25 |
Total | 1250 | 1440 |
Accounting entries (before 37.001.00.00)
Examples of accounting entries are provided below to help you understand the RORD processing in Zuora Revenue. The impact of CM-RO transactions is also explained.
In this example, the original SO line is collected with the following key fields.
SO NO | Line NO | INV NO | INV Line NO | Item | Ext. Sell Price | Curr | Qty | Revenue Start Date | Revenue End Date |
---|---|---|---|---|---|---|---|---|---|
SO100 | SO100-1 | INV100 | INV100-1 | Hardware | 1200 | USD | 1 | 01/01/2019 | 01/01/2019 |
SO100 | SO100-2 | INV100 | INV100-2 | Maintenance | 600 | USD | 12 | 01/01/2019 | 31/12/2019 |
SO100 | SO100-3 | INV100 | INV100-3 | Support | 360 | USD | 12 | 01/01/2019 | 31/12/2019 |
The hardware line is recognized immediately and the maintenance and support lines are Contract Ratable for one year. The waterfall data for these lines are as follows:
SO NO | Line NO | Item | Curr | Jan-19 | Feb-19 | Mar-19 | Apr-19 | ... | Oct-19 | Nov-19 | Dec-19 |
---|---|---|---|---|---|---|---|---|---|---|---|
SO100 | SO100-1 | Hardware | USD | 1200 | |||||||
SO100 | SO100-2 | Maintenance | USD | 50 | 50 | 50 | 50 | 50 | 50 | 50 | |
SO100 | SO100-3 | Support | USD | 30 | 30 | 30 | 30 | 30 | 30 | 30 |
In the Jan-19 period, the following accounting entries are created:
RC ID | Line NO | Account Type | Currency | Debit | Credit | Comments |
---|---|---|---|---|---|---|
1000 | SO100-1 | Contract Liability | USD | 1200 | Initial Entry | |
1000 | SO100-2 | Contract Liability | USD | 600 | Initial Entry | |
1000 | SO100-3 | Contract Liability | USD | 360 | Initial Entry | |
1000 | SO100-1 | Contract Liability | USD | 1200 | Rev Rec Entry | |
1000 | SO100-1 | Revenue | USD | 1200 | Rev Rec Entry | |
1000 | SO100-2 | Contract Liability | USD | 50 | Rev Rec Entry | |
1000 | SO100-2 | Revenue | USD | 50 | Rev Rec Entry | |
1000 | SO100-3 | Contract Liability | USD | 30 | Rev Rec Entry | |
1000 | SO100-3 | Revenue | USD | 30 | Rev Rec Entry |
The accounting entries for the Feb-19 period are as follows. The same accounting entries will be created for the subsequent periods until Dec-19.
RC ID | Line NO | Account Type | Currency | Debit | Credit | Comments |
---|---|---|---|---|---|---|
1000 | SO100-2 | Contract Liability | USD | 50 | Rev Rec Entry | |
1000 | SO100-2 | Revenue | USD | 50 | Rev Rec Entry | |
1000 | SO100-3 | Contract Liability | USD | 30 | Rev Rec Entry | |
1000 | SO100-3 | Revenue | USD | 30 | Rev Rec Entry |
However, in November, the following RORD line is collected to reduce the maintenance line for two months.
Line Type | SO NO | Line NO | Item | Ext. Sell Price | Qty | Curr | Revenue Start Date | Revenue End Date |
---|---|---|---|---|---|---|---|---|
RORD | SO101 | SO100-1 | Maintenance | -100 | 12 | USD | 01/11/2019 | 31/12/2019 |
If the CREATE_RORD_CONTRA_ENTRY profile is set to No, it means Contra entry will not be created for the RORD line. The accounting entries for the SO100-2 line during the Nov-19 period are created as follows. The same accounting entries will also be created for the Dec-19 period.
RC ID | Line NO | Account Type | Currency | Debit | Credit | Comments |
---|---|---|---|---|---|---|
1000 | SO100-2 | Contract Liability | USD | 50 | Rev Rec Entry | |
1000 | SO100-2 | Revenue | USD | 50 | Rev Rec Entry | |
1000* | SO100-2 | Contract Liability | USD | 50 | RORD Entry | |
1000* | SO100-2 | Revenue | USD | 50 | RORD Entry | |
Entries marked with * are created when the RORD line is collected. |
The amortization value for the revenue contract is as follows:
SO NO | Line NO | Item | Curr | Jan-19 | Feb-19 | Mar-19 | Apr-19 | ... | Oct-19 | Nov-19 | Dec-19 |
---|---|---|---|---|---|---|---|---|---|---|---|
SO100 | SO100-1 | Hardware | USD | 1200 | |||||||
SO100 | SO100-2 | Maintenance | USD | 50 | 50 | 50 | 50 | 50 | 50 | 50 | |
SO100* | SO100-2 | Maintenance | USD | (50) | (50) | ||||||
SO100 | SO100-3 | Support | USD | 30 | 30 | 30 | 30 | 30 | 30 | 30 | |
Entries marked with * are created when the RORD line is collected. |
If the CREATE_RORD_CONTRA_ENTRY profile is set to Yes, the Contra entry is created when the RORD line is collected. The contra amount for the period is calculated based on the RORD schedules and/or the invoice schedules.
-
If both the RORD schedules and invoice schedules are present for the period, the contra amount is calculated based on the minimum of the invoice schedules and the RORD schedules.
-
If either of the two is not present in the period, the contra amount is calculated based on the present schedules.
For the above example, the following accounting entries will be created for the SO100-2 line during the Nov-19 period.
RC ID | Line NO | Account Type | Currency | Debit | Credit | Comments |
---|---|---|---|---|---|---|
1000 | SO100-2 | Contract Liability | USD | 50 | Rev Rec Entry | |
1000 | SO100-2 | Revenue | USD | 50 | Rev Rec Entry | |
1000 | SO100-2 | Contract Liability | USD | 50 | RORD Entry | |
1000 | SO100-2 | Revenue | USD | 50 | RORD Entry | |
1000* | SO100-2 | Contract Liability | USD | 100 | Contract Revenue Entry | |
1000* | SO100-2 | Contra AR | USD | 100 | Contract Revenue Entry | |
Entries marked with * are created when the RORD line is collected. |
In the above example, after the RORD line is collected, the following CM-RO line is input to Zuora Revenue, which reverses the contra revenue that was created for the RORD line.
Line Type | SO NO | SO Line NO | INV NO | INV Line NO | Item | Currency | Ext. Sell Price |
---|---|---|---|---|---|---|---|
CM-RO | SO101 | SO100-1 | INV101 | INV1001-1 | Maintenance | USD | -100 |
In the scenario when the CREATE_RORD_CONTRA_ENTRY profile is set to No, the accounting entries for the SO100-2 line will be created during the Nov-19 period as follows:
RC ID | Line NO | Account Type | Currency | Debit | Credit | Comments |
---|---|---|---|---|---|---|
1000 | SO100-2 | Contract Liability | USD | 50 | Rev Rec Entry | |
1000 | SO100-2 | Revenue | USD | 50 | Rev Rec Entry | |
1000 | SO100-2 | Contract Liability | USD | 50 | RORD Entry | |
1000 | SO100-2 | Revenue | USD | 50 | RORD Entry | |
1000* | SO100-2 | Contract Liability | USD | 100 | CM-RO Entry | |
Entries marked with * are created when the CM-RO line is collected. |
In the scenario when the CREATE_RORD_CONTRA_ENTRY profile is set to Yes, the accounting entries will be created as follows during the Nov-19 period:
RC ID | Line NO | Account Type | Currency | Debit | Credit | Comments |
---|---|---|---|---|---|---|
1000 | SO100-2 | Contract Liability | USD | 50 | Rev Rec Entry | |
1000 | SO100-2 | Revenue | USD | 50 | Rev Rec Entry | |
1000 | SO100-2 | Contract Liability | USD | 50 | RORD Entry | |
1000 | SO100-2 | Revenue | USD | 50 | RORD Entry | |
1000 | SO100-2 | Contract Liability | USD | 100 | RORD Entry | |
1000 | SO100-2 | Contra AR | USD | 100 | RORD Entry | |
1000* | SO100-2 | Contract Liability | USD | 100 | CM-RO Entry | |
1000* | SO100-2 | Contract Liability | USD | 100 | CM-RO Entry | |
1000* | SO100-2 | Contra AR | USD | 100 | CM-RO Entry | |
Entries marked with * are created when the CM-RO line is collected. |
The amortization of the revenue contract will not be impacted by the CM-RO line in both scenarios.
Accounting entries (after 37.001.00.00)
In version 37.001.00.00, an enhancement is delivered regarding the RORD processing, which impacts the accounting behaviors of reduction order transactions. If you use the latest version of Zuora Revenue, for accounting examples of RORD transactions, see RORD and CM-RO accounting entries.