Docs

Stripe 

Introduction 

Stripe is a payment service provider that business owners can use to accept dozens of payment methods from credit cards to buy now, pay later services. Stripe also provides a way for your business to bill customers with subscriptions or invoices. It supports both recurring payments invoice generation and one time payment invoice generation.

RevRec seamlessly integrates with Stripe, all you have to do is go through the sync interface and configure the connection flows.

Sync Overview 

If you are using Stripe to send invoices to customers, RevRec can be used to pull invoice data from Stripe.

  • RevRec supports pulling invoice data from Stripe to create sales order records from the invoices. In this case, RevRec treats each invoice as an independent contract, the terms of which match the terms of the invoice. This means you will see a new sales order in RevRec for each invoice that gets synced.
  • RevRec also tracks invoices at the customer level. All invoice data from Stripe is pulled based on Customer ID mapping, while sales orders are pulled from the CRM system. It is therefore important that the Customer ID as specified in Stripe matches with that in your CRM system.

Connecting RevRec with Stripe for Invoices 

Note

Only users with Admin role can connect your RevRec site with Stripe.

You can connect your RevRec site directly to Stripe. Follow these steps to integrate the two systems:

  1. After logging in to your RevRec site, navigate to the right environment in which you are integrating Stripe.

  2. Click Sync > Connect to other systems icon.

  3. On the Connect your data pop-up, select Invoices > Stripe.

  4. On the Configure Stripe screen, specify the following connection parameters:

    • Stripe Client Secret: Login to your Stripe account and then click on the Developers. Go to the API Keys tab and click Reveal Key to see the Secret Key. This will be used as Stripe Client Secret for establishing connection.

    • Stripe Account ID: Login to your Stripe account and go to this path: Settings > Account Details. You will see the account id mentioned on the top right corner of the Account Settings grid.

    • Invoice Equals Contract: Enable this setting if each invoice corresponds to a contract. Use this setting to pick invoice data from Stripe and create sales order records based on that data.

    • Use Customer Id Mapping: Enable this setting to map records based on the Customer ID field. You can use this setting to map the invoice data from Stripe using the customer's id with sales order data pulled from CRM.

    • Use Product Id Mapping: Enable this setting to map records based on the Product ID field. You can use this setting to map the invoice data from Stripe using the product id with sales order data pulled from CRM.

    • Date Format: This field can be used along with the Invoice Equals Contract setting. You can select a particular date format from the drop-down list available for this field. RevRec will pick the data for the Service Start Date and Service End Date fields for sales orders based on the date format selected. RevRec looks for these dates in the Memo field of Invoices or Credit Memos created in Stripe. This field will only be used for invoices and their related credit memos which are not linked to any subscription in Stripe.

    • Exclude Products: This field is used to define item records for which invoice data needs to be ignored while pulling data from Stripe. You can define a single item or multiple items to be excluded.
      Value for this field needs to be given in any of the below mentioned JSON formats:

    • TimeZone: This field is used to define the timezone set for the Stripe account. This needs to be provided if the timezone set for your Stripe account is different from UTC.

    • Currency: This field is used to map currency in which data needs to be picked and processed in RevRec.

    • Custom Fields: Custom fields to be copied from Stripe. The value of this property should be a valid JSON with the following format:

    • Customer ID Mapping Custom Field: This field is used to provide the name of the custom field that will be used to pick Customer Id value from Stripe and link it with the Customer Id generated in the CRM.

    • Product ID Mapping Custom Field: This field is used to provide the name of the custom field that will be used to pick Product Id value from Stripe and link it with the Product Id generated in the CRM.

    • Advanced Connection Settings: This field is used to provide additional advanced configuration properties that can be used to pull data from Stripe for specific use cases.
      Note: Contact Implementation team to avail this feature.

  5. Once you are done, click Connect your data to establish the connection between Stripe and RevRec.

Upon establishing a successful connection with Stripe, you will see a success message displayed as follows:

Execution of Invoices Flow 

After establishing the link as described in the previous section, click Stripe.

In the Quick Actions tab, click Edit schedule to schedule an automated data sync from Stripe to RevRec in your preferred frequency. The invoice flow is executed automatically based on the schedule to sync data from Stripe.

Click the Run job option to execute the invoice flow that picks data from Stripe on-demand.

When you execute the invoice flow, you will see a job created on the Sync UI page in the Recent Jobs tab.

If you have not set any accounting period yet, click the Download file icon to download the file and upload it manually using the Import Data in Bulk option.

If you have already scheduled the automated sync, any jobs getting created will load the data automatically and you don't have to load the data manually. You can still download the data file created for a specific job by clicking the Download file icon.

If you are using the Use Customer ID Mapping setting, the downloaded excel file will contain the following tabs.

  • BillingSchedule: Displays all data pulled for invoices, and credit notes.
  • PendingData: This tab will only show up if there are some invoices or credit notes created for a customer or product whose ID doesn't match with any Customer or Product records in CRM.
  • ReconDetails_Invoice: This tab shows a reconciliation between data pulled from Stripe and data that is loaded in RevRec for each period on a customer-by-customer basis.
  • ReconSummary_Invoice: This tab shows a reconciliation between data pulled from Stripe and data that is loaded in RevRec grouped on a period-by-period basis.

The downloaded excel file if you are using the Invoice Equals Contract setting will contain the below tabs:

  • OrderDetails: Displays all sales order records created using the invoice data from Stripe.
  • BillingSchedule: Displays all data pulled for invoices, and credit memos.
  • Product: Displays product data picked from Stripe.
  • Customer: Displays a list of contacts from Stripe as customers to whom sales invoices have been sent.
  • ReconDetails_Invoice: This tab shows a reconciliation between data pulled from Stripe and data that is loaded in RevRec for each period on a customer-by-customer basis.
  • ReconSummary_Invoice: This tab shows a reconciliation between data pulled from Stripe and data that is loaded in RevRec grouped on a period-by-period basis.

Use Cases Supported 

Use Case: Invoice Equals Contract 

RevRec supports the below use cases for pulling data related to Products, Subscriptions, Invoices and Credit Notes from Stripe when the Invoice Equals Contract flag is selected:

Product Plan

Stripe supports two types of product pricing plans:

  • Interval based pricing plans (recurring)
  • One time price (non-recurring)

RevRec uses below logics to pick the product records from Stripe:

  • Create a record for each product by just appending currency suffix to name and product code.
  • Create a record for each price plan related to a product by appending:
    • Currency
    • Interval Frequency
    • Interval

One-Time Invoices

Stripe allows users to create one off invoice which are not linked to any subscription. RevRec will pick the data for the one-time invoices and create a sales order and billing schedule record for each invoice.

The following logics are used:

  • Service Start Date and Service End Date for these invoices will be picked from description (Memo field in Stripe)
  • Different date formats are supported in which the user can provide the data in the Memo field of Invoices / Credit Notes in Stripe. Users can select the specific date format from the drop-down list available in the connection parameters field of Date Format.
  • Invoices marked as Draft or Deleted won't be picked.

Subscription Based Invoices

Stripe allows users to create subscriptions for different product plans. RevRec will pick the data for the invoices linked to these subscriptions and create a sales order and billing schedule record for each invoice.

The following logics are used:

  • Each invoice linked to a subscription will be picked as a separate contract.
  • Service Start Date and Service End Date for these records will be equal to the invoice period defined in Stripe.
  • Invoices marked as Draft or Deleted won't be picked.

Subscription Modification In Stripe

Stripe allows users to modify the existing subscriptions by either upgrading / downgrading plans or adjusting the quantities.

Whatever the case for modification is, Stripe applies a Proration logic to adjust the new invoice generated for modifications in subscription.

RevRec will pick the prorated adjustments from new invoices and create a credit note record for those against the original contract. Assumption in this case is to consider the reason for all such credit notes as Order Change.

Credit Note Treatment

RevRec provides the following default accounting treatments based on the credit note reason codes in Stripe.

Use Case: Future Discounts 

Reason Code

  • Product Unsatisfactory
  • Other

RevRec Default Treatment

The credit note is retrospectively applied - from the order's service start date to the service end date and offsets the revenue stream of the original invoice. Further, the cumulative impact is recognized in the open accounting period.

Use Case: Correction 

Reason Code

  • Fraudulent Charge
  • Duplicate Charge

RevRec Default Treatment

The credit note is retrospectively applied - from the order's service start date to the service end date and offsets the revenue stream of the original invoice. Further, the cumulative impact is recognized in the open accounting period.

Use Case: Plan Change 

Reason Code

  • Order Change

RevRec Default Treatment

This is the case where the customer changes to a different subscription plan in the midst of an existing subscription contract. A credit note is issued on a prorated basis to refund the unused portion of the original plan. RevRec will stop the revenue recognition of the original plan and generate a new revenue schedule for the new plan going forward.

Advanced Configuration

In addition to the above default treatment, you can use the advanced configuration to customize the recognition treatment applied to certain credit note reason codes based on your specific requirements. Please contact your RevRec support team to enable and use the advanced configuration.

Reason Code

  • Product Unsatisfactory
  • Other
  • Fraudulent Charge
  • Duplicate Charge

For all the above reason codes, you can customize the default treatment and opt to:

  • Recognize the full credit note amount in the period of credit note creation, or
  • Apply it prospectively from the credit note creation date till the end of the contract.

Customer ID Mapping 

RevRec supports pulling Sales Order data from CRM and Invoice data from Stripe. For this purpose, users need to select the Use Customer ID Mapping flag while configuring Stripe with RevRec.

After selecting the flag as true, the user also needs to provide the custom field name they will be using to map the customers between CRM and Stripe. The name of this custom field needs to be provided in the connection parameter field Customer ID Mapping Custom field.

In Stripe users can use the Meta Data field available on the Customer Details page for each customer.

Click the Edit button, a pop-up window will open.

Define the value for field Key. This value will be used to define the custom field name to establish a link between the CRM and Stripe Customer records.

For example, if the user defines the value for Key (in Stripe MetaData) as HS_Cus_Id, then the same name should be provided in the connection parameter field of Customer ID Mapping Custom Field

Stripe

RevRec

The value to be provided in the Meta Data custom field created in Stripe should be the ID field value of the same customer name present in the CRM.

For example, if we have a customer name as Jane Smith in CRM having id as cus_NPPJKzE9wCmDpH, then the same id should be set as value for the Meta Data field against customer name Jane Smith in Stripe.

In case the values do not match for the customer id of the CRM record and the Meta Data value in Stripe, then all related invoices and credit notes for that customer will go in Pending Data. Once the user fixes the data discrepancy, then RevRec will create relevant Billing Schedule records for that customers invoices and credit notes records and Pending Data records will automatically be removed for that customer.

Product ID Mapping 

RevRec supports matching the Billing Schedule records pulled from Stripe to be matched with the Order Details records pulled from CRM based on the Product Name and Product Code. For this purpose, users need to select the Use Product ID Mapping flag while configuring Stripe with RevRec.

This flag can only be used if the user has selected the flag Use Customer ID Mapping.

After selecting the flag as true, the user also needs to provide the custom field name they will be using to map the products between CRM and Stripe. The name of this custom field needs to be provided in the connection parameter field Product ID Mapping Custom field.

In Stripe users can use the Meta Data field available on the Product Details page for each product.

Click the Edit MetaData button to define the custom field name and its value.

Define the value for field Key. This value will be used to define the custom field name to establish link between the CRM and Stripe Product records.

For example, if the user defines the value for Key (in Stripe MetaData) as HS_SKU, then the same name should be provided in the connection parameter field of Product ID Mapping Custom Field.

Stripe

RevRec

The value to be provided in the Meta Data custom field created in Stripe should be the Product Code/SKU field value of the same product name present in the CRM.

For example, if we have a product name as Internet Subscription Premium in CRM having SKU as PR_1_Premium, then the same id should be set as value for the Meta Data field against product name Internet Subscription Premium in Stripe.

In case the values do not match for the Product SKU of the CRM record and the Meta Data value in Stripe, then all related invoices and credit notes having that product will go in Pending Data. Once the user fixes the data discrepancy, then RevRec will create relevant Billing Schedule records for that product's invoices and credit notes records and prior created Pending Data records will automatically be removed.

Linking Stripe Invoices with CRM Contracts 

Subscription based Invoices 

RevRec supports matching the Billing Schedule records pulled from Stripe to be matched with the Order Details records pulled from CRM based on the Order Number field. For this purpose, users need to provide a property in the Advanced Connection Settings field.

The property needs to be defined in below JSON format:

{"order_number":"custom field name"}

In above JSON, custom field name will be the value defined as the Key for Meta Data field.

This advanced property can only be used if the user has selected both the flags i.e. Use Customer ID Mapping and Use Product ID Mapping.

In Stripe you can use the Meta Data field available on the Subscription Details page for each Subscription.

Click Edit MetaData button to define the custom field name and its value.

Define the value for field Key. This value will be used to define the custom field name to establish link between the CRM and Stripe Product records.

For example, if the user defines the value for Key (in Stripe MetaData) as HS_SKU, then the same name should be provided in the connection parameter field of Product ID Mapping Custom Field.

Stripe

RevRec

The value to be provided in the Meta Data custom field created in Stripe should be the Deal ID/Opportunity ID value of the Deal/Opportunity created in the CRM for the Customer.

For example, if we have a Deal/Opportunity created in CRM for Customer Name Azeem Naeem having Deal/Opportunity Id as 13216516981 then, value for the Meta Data field against Subscription created in Stripe for Azeem Naeem (having same product as used in CRM Deal/Opportunity) should also be set as 13216516981.

In case the values do not match for the Deal/Opportunity ID of the CRM record and the Meta Data value in Stripe, then all related invoices and credit notes belonging to that Customer and Product will go in Pending Data. Once the user fixes the data discrepancy, then RevRec will create relevant Billing Schedule records for that subscription's invoices and credit notes records and prior created Pending Data records will automatically be removed.

One-time Invoices 

Stripe allows users to create one off invoice which are not linked to any subscription. RevRec will pick the data for the one-time invoices and create a sales order and billing schedule record for each invoice even if Use Customer ID Mapping and Use Product ID Mapping flags are selected.

The following logics are used:

  • Service Start Date and Service End Date for these invoices will be picked from description (Memo field in Stripe)

  • Different date formats are supported in which the user can provide the data in the Memo field of Invoices / Credit Notes in Stripe. Users can select the specific date format from the drop-down list available in the connection parameters field of Date Format.

  • Invoices marked as Draft or Deleted won't be picked.

If the users also want the One-Time Invoices to be linked to contracts in the CRM system, they can provide a property in the Advanced Connection Settings field in addition to the property order_number.

The property needs to be defined in below JSON format:

{"link_one_time_invoice_to_order":true}

This advanced property can only be used if the user has selected both the flags i.e. Use Customer ID Mapping and Use Product ID Mapping and have also defined the property {"order_number":"custom field name"} in the advanced connection settings.

In Stripe users can use the Meta Data field available on the Invoice Details page for each One-Time Invoice.

Users will have to use the same custom field name that they have provided for linking the Subscriptions based invoices.

Was this article helpful?
Loading…