Skip to content
Create account
or
Sign in
The Stripe Docs logo
/
Ask AI
Create account
Sign in
Get started
Payments
Finance automation
Platforms and marketplaces
Money management
Developer tools
Get started
Payments
Finance automation
Get started
Payments
Finance automation
Platforms and marketplaces
Money management
Overview
Versioning
Changelog
Upgrade your API version
Upgrade your SDK version
Developer tools
SDKs
API
Testing
Workbench
Event Destinations
Workflows
Stripe CLI
Stripe Shell
Developers Dashboard
Agent toolkit
Stripe health alertsBuilding with LLMsStripe for Visual Studio CodeFile uploads
Security
Security
Extend Stripe
Stripe Apps
Stripe Connectors
    Overview
    Integrate a connector
    Commercetools
    Adobe Commerce
    Mirakl
    NetSuite
    Oracle Opera
    Cegid
    PrestaShop
    Salesforce
      Stripe Connector for Salesforce Platform
      Stripe Billing for Salesforce CPQ
        Set up the connector
        Field defaults and custom mappings
        Accounts and contacts
        Products and prices
        Subscription orders
        Order amendments
        Evergreen orders
        Coupons
        Error handling
        MDQ products
      Salesforce B2C Commerce
    SAP
    Shopware 6
    Stripe Tax for WooCommerce
    Stripe Tax for BigCommerce
    Partner connectors
    Build your own connector
Partners
Partner ecosystem
Partner certification
HomeDeveloper toolsStripe ConnectorsSalesforceStripe Billing for Salesforce CPQ

Products and prices

Learn about syncing your products and prices between Salesforce and Stripe.

Copy page

When you create products and prices in Salesforce, they don’t sync to Stripe immediately. Instead, the products and prices sync to Stripe when they’re used in an activated order. You don’t need to manually create this information in Stripe.

Salesforce is the primary source for product and pricing information. This means all pricing, product descriptions, SKUs, and so on sync from Salesforce to Stripe. Any updates you make to this information in Stripe won’t update the related products and prices in Salesforce. Additionally, if you activate a new order in Salesforce using updated product or pricing information, this action updates corresponding changes you’ve made in Stripe.

Create prices

Pricing data can come from either the Salesforce OrderItem or the linked PricebookEntry. When creating the Stripe price, the connector checks for differences between these Salesforce objects and decides which one to use. If the PricebookEntry data differs from the OrderItem data, the connector uses the OrderItem to create the Stripe price. Otherwise, the connector uses the PricebookEntry.

Re-use Stripe prices

The Stripe Billing Connector for Salesforce CPQ reuses the prices created from a PricebookEntry that the connector previously synced. The connector creates a new price for prices generated using the OrderItem. You can’t reuse order items because they’re unique, but you can reuse pricebook entries across multiple order items. In both cases, the corresponding Stripe price ID is written back to the Salesforce object.

Field mappings for products

The Stripe Billing Connector for Salesforce CPQ creates a product in Stripe even if there isn’t relevant data in Salesforce. All product fields are optional.

Salesforce field (Product2 object)Stripe product
NameName
DescriptionDescription

Field mappings for prices

The connector supports the following price types in Stripe:

  • Licensed prices – If the Billing Type (SBQQ_BillingType_c) field in Salesforce is either None or Advanced, the connector creates a licensed price in Stripe.
  • Metered or usage prices – If the Billing Type (SBQQ_BillingType_c) field in Salesforce is Arrears, the connector creates a metered or usage price.
  • Decimal prices – If the decimal value of your price has more precision than 12 decimal places, the connector rounds your price to 12 decimals.
  • One-off and recurring prices – The connector treats any product with populated subscription fields as a recurring price. Metered prices must be recurring, but you can have tiered one-off prices. If you want to create a one-time price, don’t set the following fields on the Salesforce product:
    • Subscription Pricing (SBQQ__SubscriptionPricing__c)
    • Subscription Type (SBQQ__SubscriptionType__c)
    • Subscription Term (SBQQ__SubscriptionTerm__c)
    • Billing Frequency (SBQQ__BillingFrequency__c)
Salesforce field (PricebookEntry object)Stripe priceNotesRequired
ProductProductMaps the Stripe Product object that’s linked to the Salesforce Product and Pricebook objects with the corresponding Price object in Stripe.
DescriptionDescription
Unit priceUnit amount decimalRepresents the amount billed to the customer at the frequency specified in the Billing Frequency field.
Billing frequencyRecurring, interval countRequired for recurring prices only. Supported values include monthly, quarterly, semi annual, and annual. These values map to the integer-equivalent.
Billing typeRecurring, usage typeRequired for recurring prices only. An Arrears value maps to metered. An Advanced value maps to licensed.
CPQ global term unit settingRecurring, intervalRequired for recurring prices only. This is chosen during setup and isn’t a field-level mapping.
CurrencyCurrencyIf your Salesforce organisation has multi-currency enabled, we map the CurrencyIsoCode on the PricebookEntry to a Stripe currency. Otherwise, we use the default currency from setup.

Tiered pricing using consumption schedules

You can configure tiered pricing in Stripe by setting up a Salesforce Consumption Schedule, and associated rates, for products in Salesforce. Stripe uses the consumption schedule to associate tiered pricing with the line items billed using metered or licensed billing. You can use only one consumption schedule per order line.

Stripe Billing requires an unbounded tier to exist, which means a consumption rate with no value for the upper bound. The connector doesn’t use the processing order on a consumption rate, or the billing term and billing term unit on the consumption schedule associated with the order product. The connector uses the billing frequency and subscription term on the order line instead.

For tiered pricing, the connector maps data from the following Salesforce objects:

  • OrderLine – If the OrderLine data differs from the corresponding PricebookEntry, the connector uses the OrderLine data and creates a new Price object in Stripe.
  • PricebookEntry – The connector uses this value if the pricing data matches the OrderLine and the consumption schedule and rate data aren’t customised on a per-customer basis.
  • Consumption Schedule – Although Salesforce allows you to associate multiple consumption schedules with a product, the connector supports only one consumption schedule per order line.
  • Consumption Rate – The connector uses the rate associated with a consumption schedule to define each tier entry in the Stripe price. You can have multiple rates for a consumption schedule.

Note

You can’t customise the field mapping to generate the tiered pricing configuration in Stripe, or use custom fields for price or tier boundaries.

If you customise the consumption schedule and consumption rate data on a per-customer basis, Stripe creates a new Price object to represent the customised pricing. The new price appears in the Stripe ID field on the Order Line object in Salesforce.

To define a mapping for tiered pricing, add the following PricebookEntry to your prices field mapping. These fields are required.

Salesforce field (PricebookEntry object)Stripe priceNotes
Billing schemeSet to tiered when an order line in Salesforce has a consumption schedule associated with it.
Salesforce consumption scheduleStripe priceNotes
TypeTiers modeA slab type uses graduated. A range type uses volume.

Each consumption rate that’s associated with a consumption schedule results in an additional tiers entry on the Stripe Price object. These fields are required.

Salesforce consumption rateStripe priceNotes
Upper boundTiers, Up toStripe doesn’t have a lower bound and assumes the lower bound value of the first tier is zero. If this value is empty in Salesforce, Stripe uses the inf value to indicate there isn’t a limit for the upper bound.
Pricing methodA per unit value instructs the connector to use the unit_amount_decimal field when mapping the price. If the value is flat fee, the connector uses the flat_amount_decimal field for the price.
PriceTiers, Flat amount decimal or Unit amount decimalThe pricing type used depends on the Pricing Method field.

Manually sync products and prices

When testing in a Salesforce sandbox environment, you can manually sync your entire product catalogue for inspection in your Stripe test account. The manual sync respects any product and price filters you set.

Use the following buttons in the Settings section of the connector:

  • Sync all products – Syncs all products (but not prices) to your Stripe test account, regardless of when they were last updated. This operation occurs in the background and can take a couple minutes to complete. If you delete any products in Salesforce, they aren’t deleted or archived in Stripe.

  • Sync a pricebook – Manually sync a PricebookEntry to your Stripe test account by entering the record ID into the Manual Sync functionality. This operation occurs in the background. If you delete any prices in Salesforce, they aren’t deleted or archived in Stripe. After you create a price and set a recurring billing schedule in Stripe, you can’t update these parameters and sync them from Salesforce. Attempting to do so results in sync errors.

If you already synced a product or price to your Stripe account and want a new sync, you can delete the contents of the Stripe ID field on the Salesforce object in your Salesforce account. Then sync again to create a new resource in Stripe.

Customise product pricing on orders

In the Salesforce CPQ, you can optionally customise the unit price of a product on a quote. If you customise the price, this causes the information to differ from the price that’s linked to the product on the activated order. In this case, the connector creates a unique price in Stripe to represent the customised price. The Stripe price ID appears on the Stripe ID field for the order.

When you create a data mapping with a customised price for an order, the price appears on the order line level and not the Salesforce price book entry level. Pricing is considered customised if any of the related fields (for example, recurring fields, amount, or currency) differ between the price book entry price and the order line price.

Multi-currency support

If your Salesforce organisation has multi-currency enabled, the connector maps the CurrencyIsoCode on the PricebookEntry to the equivalent Stripe currency during Stripe price creation. This makes sure subsequent invoices are billed in the proper currency.

When billing in multiple currencies, consider the following:

Multiple currencies per Stripe customer

Stripe supports one active currency per customer. This means each Stripe customer can’t have multiple active subscriptions that use different currencies. For example, if a customer has an active subscription that’s billed in USD, you must wait until that subscription ends before creating a new subscription in a different currency, such as GBP.

Order amendments

All Salesforce order amendments must use the same currency as the original order. Orders and order amendments can’t have a mix of currencies among the order items.

Exchange rates

The connector doesn’t handle currency conversion. It simply passes through the price and currency pair found on the PricebookEntry.

See also

  • Field defaults and custom mappings
  • Subscription orders
  • MDQ products
Was this page helpful?
YesNo
Need help? Contact Support.
Join our early access programme.
Check out our changelog.
Questions? Contact Sales.
LLM? Read llms.txt.
Powered by Markdoc