First, make sure you understand the overall goals of your integration project-make your design decisions before you start building it. For example, if you’re building a Subscription integration, read designing an integration to learn more about design decisions and pricing models to understand how to translate your business model on Stripe.
Next, decide whether you need to create new products and prices in Stripe or import an existing product catalog from another system into Stripe. Create new products and prices in the Dashboard if your product catalog is small or you don’t want to use code. If you have a very large product catalog, use the Products API to import your catalog programmatically.
Multiple products and prices
You can create as many products as you need to represent your product catalog. You can also create multiple prices for each product. Whether you should create multiple products as opposed to multiple prices depends on several factors. Generally, however, you want to:
Create multiple prices for a single product if you’re selling the same item at different price points. For example, if you offer a subscription tier at monthly and yearly rates, create one product for the tier and one price for the monthly rate and another for the yearly rate. See an example of this for a good-better-best flat rate pricing model. (If you’re selling the same item in different currencies, then instead of creating multiple prices, create a single multi-currency Price.)
Create multiple products if the items require different provisioning or fulfillment in your application. In the good-better-best model, for example, you would create a different product for each tier. Similarly, if you have different versions of a product, like different colors or sizes of a t-shirt, you would create a product for each version.
You can copy products from test mode to live mode so that you don’t need to recreate them. Prices associated with the product are also copied over. In the Product detail view in the Dashboard, click Copy to live mode in the upper right corner.
You can only copy test products to live mode once. If you make updates to the test product after the copy, the live product won’t reflect the changes.
Create products and prices
Create a product
To create a product in the Dashboard:
- Go to More > Product catalog.
- Click +Add product.
- Enter the Name of your product.
- (Optional) Add a Description. The description appears at checkout, on the customer portal, and in quotes.
- (Optional) Add an Image of your product. Use a JPEG or PNG file that’s smaller than 2MB. The image appears at checkout.
- (Optional) If you’re using Stripe Tax, select a Tax code for your product. See tax codes for more information about the appropriate category for your product.
- (Optional) Enter a Statement descriptor. This descriptor overrides any account descriptors for recurring payments. Choose something that your customers would recognize on a bank statement.
- (Optional) Enter a Unit label. This describes how you sell your product. For example, if you charge by the seat, enter “seat” so the line item includes “per seat” for the price. Unit labels appear at checkout, and in invoices, receipts, and the customer portal.
To save a product in the Dashboard, you must also add at least one price. You can also create multiple prices for a product. See create a price to learn more.
Create a price
To create a price in the Dashboard, you have to create a product first. You can create multiple prices for a product.
Select a Pricing model. For more details about recurring pricing models, read the pricing model guide.
- Flat-rate pricing: Charge the same price for each unit. If you use this option, select One time or Recurring.
- Package pricing: Charge by the package, or group of units, such as charging 25 USD for every 5 units. Purchases are rounded up by default, so a customer buying 8 units pays 50 USD.
- Graduated pricing: Use pricing tiers that might result in a different price for some units in an order. For example, you might charge 10 USD per unit for the first 100 units and then 5 USD per unit for the next 50. If you use this option, select the currency for the price and fill in the tier table.
- Volume pricing: Charge the same price for each unit based on the total number of units sold. For example, you might charge 10 USD per unit for 50 units, and 7 USD per unit for 100 units. If you use this option, select the currency for the price and fill in the tier table.
- Customer chooses price: Let the payer decide on the amount to pay for your product, service, or cause. Customer chooses price is only compatible with Checkout and Payment Links.
- Usage-based pricing: Charge your customers based on how much of your service they use during the billing cycle.
(Optional) If you’re selling in multiple currencies, click Add another currency to set how much to charge in each currency.
Select a Billing period for recurring prices. You can add a custom period if none of the drop-down options are what you want.
Select whether to Include tax in price. Learn more about taxes and subscriptions.
(Optional) Enter a Price description. Customers don’t see this description.
- Click Create price to save the price. You can edit the price later.
Import products and prices
If you have a very large product catalog, use the Products API to import your catalog programmatically. If you’re importing your product catalog to Stripe, you can use anything as your starting data source, like a product management system or CSV file.
Use the Products API to create a product in Stripe for each product in your system. To map products in your system to products in Stripe, assign each product that you import a unique
id. For each product, use the Prices API to make a corresponding price. Make sure to store the
id of the newly created price. You’ll need to pass this
id when you use the products and prices in your integration.
During development, you might need to run this script multiple times for testing. If you use the same Product ID, you’ll see an error stating that a Product with that ID already exists. If you haven’t used the Product yet, you can delete it using the Stripe Dashboard:
Go to the Products Dashboard and find your Product.
In the Pricing section, click the overflow menu () next to the Price and select Delete Price.
Click the the overflow menu () at the top of the page, and select Delete Product.
Synchronize products and prices
You’ll likely need to run through an import more than once. You can create a script to test the import and, if you want to, synch your original data source with Stripe. To make your script idempotent and resilient to errors, you can safely try to create the product first, then update it if the product already exists.
To keep your product catalog synchronized with Stripe, use webhooks or other mechanisms to trigger product updates in Stripe. To update a product programmatically, use the following pattern.
First, find the existing price associated with the product with list all prices API to make sure the price still matches your data source. Each product should have exactly one active price.
Next, check whether the decimal amount of the price has changed. The
unit_amount_decimal field displays the unit amount in cents.
If the amount doesn’t match, you have to create a new price. When you create a new price, specify the
product ID of the original product, the
currency, and the updated
Finally, update the old price to mark it as
Use products and prices
Now that you have products and prices in Stripe, you can use them in an integration.