Integration infrastructure overview

Knowledge Center > Zuora RevPro > Zuora Billing - RevPro integration > Integration infrastructure overview

Integration infrastructure overview

Zuora Billing - RevPro Integration is in Limited Availability

The following diagram demonstrates the architecture of Zuora Billing - RevPro Integration:

Zuora Billing - RevPro Integration architecture.png

The Data Sync service for Zuora Billing - RevPro Integration syncs the raw Zuora Billing objects into RevPro Pre-Staging tables. After the data is populated into Pre-Staging tables, RevPro runs the Data Transformation job to transform Zuora Billing object data into RevPro transaction lines and load them into Staging tables. Subsequently, RevPro runs the Data Collection job to collect the transaction lines ready for further revenue processing.

Data Sync service

The Data Sync service includes the following steps:

  1. Export data source objects from Zuora Billing using Data Source API and AQuA API.
  2. Import object data into RevPro Pre-Staging tables without processing.

Exporting object data  

Zuora Billing data source objects can be categorized into two groups: 

  • State object: the object that records the current state of the information. All data on a State object will be synced into its corresponding RevPro Pre-Staging table. 
  • Transaction object: the object that records an action or a snapshot in the system history. For a specified date range, a data source record will be synced if the updated timestamp falls within the specified date range. 

The following table summarizes all the extracted Zuora Billing objects, their corresponding type, and Data Sync actions:

Zuora Billing Object Object Type Data Sync Action
  • Account
  • Accounting Code
  • Contact
  • Product
  • Product Rate Plan
  • Product Rate Plan Charge
  • Product Rate Plan Charge Tier
State Syncs all data into corresponding Pre-Staging tables in RevPro
  • Amendment
  • Invoice Item
  • Invoice
  • Invoice Item Adjustment
  • Rate Plan Charge
  • Rate Plan
  • Rate Plan Charge Tier
  • Subscription
  • Order
  • Order Action
  • Credit Memo
  • Credit Memo Item
  • Debit Memo
  • Debit Memo Item
  • Credit Balance Adjustment
Transaction Only syncs data created or updated within the specified date range

Note that each data object is synced separately.

Importing object data 

After extracting the object data from Zuora Billing, the Data Sync service imports the data into Pre-Staging tables without processing. Each data object is synced in its own Pre-Staging table. For example, the Invoice object data is synced to the RPRO_DS_INVOICE_G table.

Custom fields are also mapped into the corresponding table of their parent objects. However, custom field names in the synchronization destination table are normalized to a range from CF_1 to CF_50. Zuora Billing - RevPro Integration supports mapping a maximum of 50 custom fields.

Data Transformation

The Data Transformation job takes the source objects in Pre-Staging tables and specified query filter as an input parameter, and outputs corresponding RevPro transaction lines in Staging tables. 

Transformation for regular lines

The following diagram describes the data transformation process for booking data:

Booking data transformation
Booking data transformation uses the query filter on Subscription, Order, or any other associated objects to determine the transformation scope. The RatePlanCharge object is used as the driving object and is joined with other objects to construct full information for transformation.

The following diagram describes the data transformation process for billing data:

Billing data transformation

Billing data transformation uses the query filter on Invoice or any other associated objects to determine the scope. InvoiceItem, InvoiceItemAdjustment, CreditMemo, and DebitMemo are used as driving objects and are joined with other objects to construct full information for transformation.

Customization can be introduced at Staging after SO, INV, or CM lines are generated and before collection. 

Transformation for discount lines

Because how a discount is applied to separate charges varies, Zuora Billing - RevPro Integration introduces custom logic to handle discount booking and billing lines. The following table describes how discount lines for booking and billing data are transformed:

  Percentage Discount Fixed Amount Discount
Discount lines for booking

When processing a percentage discount RPC line, RevPro looks for the corresponding regular charge's RPC id and discount booked value by looking up with the discount's RPC id from the discount charge contractual value table on the id field.

If found, generate the discount SO line by using the information from the regular RPC and discount RPC. The discount SO line id is concatenated to:



  • SO start date and end date should use regular charge’s start date and end date.
  • List price should always be zero.
  • Sequence number should concatenate the regular charge one with the discount charge one in the following format: Reg_RPC.version||Disc_RPC.version||Subscription.version||Disc_RPC.updated_date

When processing fixed-amount discount SO lines:
  • List price should be set to zero.
  • Sell price should be derived from the associated “RatePlanChargeTier.DiscountAmount”.
In any other ways, it is processed the same as regular charges.

Discount lines for billing

When processing a discount invoice item of a percentage discount, RevPro searches the regular charge’s RPC id by looking for the appliedToInvoiceItemId field, and traverse to the regular charge’s invoice item. For CreditMemo or DebitMemo, RevPro looks at Invoice_Item_Id field instead of the appliedToInvoiceItemId field. 

After the regular charge’s RPC id is located, the SO line id is constructed in the following format:


When processing an InvoiceItemAdjustment, Credit Memo, or Debit Memo, if the applied-to invoice item (SourceId in IIA, AppliedToItemId in CM or DM item) is a discount invoice item, the rules described above are also applicable.

Discount billing lines of a fixed-amount discount are processed the same as regular billing lines. 

Data Collection

Similar to the integration with other upstream systems, you can run a Data Collection program to collect the transaction lines in Staging tables into RevPro for further revenue processing. See Schedule Jobs to learn how to schedule a job in RevPro.

Best practices

As Zuora Billing and RevPro have different policies and requirements, some best practices are outlined to avoid certain potential issues.

Billing rules configuration

RevPro requires that the total contractual booking amount must equal the billing amount. To meet this requirement, configure the following Billing Rule settings as described below:

  • Enable credit back for removing or canceling one time charges

    Set this setting to Yes. When one-time charges are removed or included in a canceled subscription, RevPro automatically credits back for the remaining revenue that will be recognized on the one-time charge. It will mismatch Zuora Billing if this setting is set to No because Zuora Billing does not generate a credit back, but RevPro does. In this case, the booking data does not equal the billing data in RevPro. You need to manually reconcile in RevPro.

  • Invoice Past End-of-Term when Auto-Renew is OFF and Invoice Past End-of-Term when Auto-Renew is ON

    Both settings should be set to No for all future data. If both fields must be set to Yes based on your business needs, you should manually reconcile between the booking amount and billing amount in RevPro.

Delete transactions or unpost billing documents

Zuora Billing allows deleting transactions, such as subscriptions and amendments, and unposting billing documents. These transactions and billing documents may have already been interfaced with RevPro. However, they cannot be synced automatically into RevPro because of RevPro's audit requirements. Therefore, if you delete transactions or unpost billing documents in Zuora Billing, you have to manually resolve the variances between two systems in RevPro.

Change Bill Cycle Day for customers

When the Bill Cycle Day (BCD) of a customer account is changed, the actual billing amount is updated accordingly due to proration differences. However, this change is not reflected in orders, and thus will cause discrepancies between the booking value and the actual billing value. If you update BCD for customer accounts after the data is synced into RevPro, you should manually reconcile in RevPro to keep consistency.

Remove discount charges after invoicing

If you remove discount charges from a subscription in Zuora on a date within a period that has already been invoiced, the discrepancies between the booking and billing amount will occur in both Zuora and RevPro. This requires manual reconciliation to resolve this issue. 

Last modified



(not set)