How to Bulk Import Products to Stripe from CSV (No Code Required)

CSVImport Team 7 min read

Step-by-step tutorial showing how to import your product catalog into Stripe using a CSV file. No programming required - just upload, map fields, and submit.

Setting up a product catalog in Stripe can be tedious when you have dozens or hundreds of products. Manually entering each product through the Stripe Dashboard? That’s hours of repetitive work. Writing a custom script? That requires programming skills and debugging time.

There’s a faster way: bulk import your products from a CSV file using a no-code tool that connects directly to Stripe’s API.

In this tutorial, I’ll show you exactly how to import a product catalog into Stripe in under 10 minutes, with no coding required.

Table of Contents

  1. What You’ll Need
  2. Step 1: Get Your Stripe API Key
  3. Step 2: Prepare Your CSV File
  4. Step 3: Load the Stripe OpenAPI Spec
  5. Step 4: Select the Products Endpoint
  6. Step 5: Upload Your CSV
  7. Step 6: Map CSV Columns to Stripe Fields
  8. Step 7: Configure Authentication
  9. Step 8: Submit and Track Progress
  10. Verify Your Products in Stripe
  11. Handling Errors

What You’ll Need

Before we start, make sure you have:

Step 1: Get Your Stripe API Key

First, you need your Stripe API key. This allows the import tool to create products in your Stripe account.

  1. Log into your Stripe Dashboard
  2. Click Developers in the top navigation
  3. Select API Keys
  4. Copy your Secret key (starts with sk_test_ for test mode or sk_live_ for production)
Stripe Dashboard showing where to find API keys under Developers section
Find your API key in the Stripe Dashboard under Developers → API Keys

Important: Use your test mode key (sk_test_...) while following this tutorial. You can switch to live mode once you’ve verified everything works correctly.

Step 2: Prepare Your CSV File

Your CSV file needs columns for your product data. The good news: you don’t need to know Stripe’s exact API field names. Use simple, intuitive column names and let the import tool figure out the mapping.

Here’s a simple example:

name,description,unit_amount,currency
Basic Plan,Essential features for small teams,2900,usd
Pro Plan,Advanced features with priority support,7900,usd
Enterprise Plan,Full platform access with dedicated support,19900,usd
CSV file open in a spreadsheet showing product data with columns for name, description, price, and currency
Example product catalog in CSV format - notice the simple column names

Key Fields Explained

CSV ColumnDescription
nameProduct name (required)
descriptionProduct description
unit_amountPrice in cents (e.g., 2900 = $29.00)
currencyCurrency code (usd, eur, gbp, etc.)

Note on pricing: Stripe expects prices in the smallest currency unit. For USD, that’s cents:

Step 3: Load the Stripe OpenAPI Spec

Now let’s use CSVImport to connect to Stripe’s API.

  1. Go to CSVImport
  2. In Step 1, enter Stripe’s OpenAPI specification URL:
https://raw.githubusercontent.com/stripe/openapi/master/openapi/spec3.json
  1. Click Fetch Spec
CSVImport interface showing the OpenAPI spec URL input field with Stripe's spec URL entered
Enter Stripe’s OpenAPI spec URL to load all available endpoints

The tool will parse Stripe’s API specification and discover all available endpoints, field types, and authentication requirements automatically.

Step 4: Select the Products Endpoint

After the spec loads, you’ll see a list of available Stripe API endpoints. We need the one that creates products.

  1. Search or scroll to find POST /v1/products
  2. Click to select it
CSVImport endpoint selection screen showing POST /v1/products endpoint highlighted
Select the POST /v1/products endpoint for creating new products

This endpoint creates a new product in your Stripe catalog each time it’s called. The import tool will call it once for each row in your CSV.

Step 5: Upload Your CSV

Now upload the CSV file you prepared earlier.

  1. Drag and drop your CSV file, or click to browse
  2. The tool will auto-detect the separator (comma, semicolon, tab)
  3. Preview your data to make sure it looks correct
CSVImport CSV upload interface showing a preview of the uploaded product data
Upload your CSV and preview the data before proceeding

The preview shows the first few rows so you can verify:

Step 6: Map CSV Columns to Stripe Fields

This is where CSVImport’s smart field mapping really shines. The tool automatically analyzes your CSV columns and matches them to Stripe’s API fields - even when the names don’t match exactly.

Remember how our CSV used simple column names like currency and unit_amount? Stripe’s API actually expects these nested inside a default_price_data object:

{
  "default_price_data": {
    "currency": "usd",
    "unit_amount": 2900
  }
}

CSVImport figures this out automatically. It matched:

CSVImport field mapping interface showing CSV columns mapped to Stripe API fields with smart matching
Smart field mapping automatically matched “currency” to “default_price_data.currency”

The interface shows visual indicators for each mapping:

You can review and adjust any mappings if needed, but in most cases the auto-detection handles everything correctly. This saves you from having to learn Stripe’s nested API structure - just use intuitive column names and let the tool do the translation.

Step 7: Configure Authentication

Stripe requires authentication for all API calls. The tool detected this from the OpenAPI spec and will prompt you for credentials.

  1. Select Basic Auth as the authentication method
  2. Enter your Stripe API key as the username
  3. Leave the password field empty (Stripe only uses the username field)
CSVImport authentication configuration showing Basic Auth setup for Stripe
Configure Basic Auth with your Stripe API key as the username

Why Basic Auth? Stripe’s API accepts your secret key as a Basic Auth username with an empty password. This is equivalent to using Bearer sk_test_... - both methods work.

Step 8: Submit and Track Progress

You’re ready to import! Click Submit to start the bulk import.

CSVImport progress screen showing real-time import progress with a progress bar
Watch the real-time progress as each product is created in Stripe

The tool processes each CSV row:

  1. Transforms the data to match Stripe’s expected format
  2. Sends a POST request to /v1/products
  3. Records the result (success or error)
  4. Moves to the next row

For large imports, the tool automatically handles rate limiting to stay within Stripe’s API limits.

Success!

Once complete, you’ll see a summary of the import results.

CSVImport success screen showing all products imported successfully
Import complete - all products created successfully

The results show:

Verify Your Products in Stripe

Let’s confirm the products were created correctly in Stripe.

  1. Go to your Stripe Dashboard
  2. Navigate to Products (under the Product catalog section)
  3. You should see your newly imported products
Stripe Dashboard showing the imported products in the product catalog
Your products now appear in the Stripe product catalog

Each product includes:

Handling Errors

Sometimes imports don’t succeed 100% on the first try. Common issues include:

Duplicate Products

If you run the import twice, Stripe will create duplicate products (it doesn’t check for existing names). To avoid this:

Invalid Price Format

Prices must be in the smallest currency unit (cents for USD). For example:

Missing Required Fields

The name field is required by Stripe. Make sure every row has a product name.

API Rate Limits

Stripe allows 100 requests per second in test mode. For very large imports (1000+ products), the tool automatically throttles requests. You can also configure a custom delay between requests in the settings.

What’s Next?

Now that your products are in Stripe, you can:

  1. Add more product details - Update products with images, metadata, and tax codes through the Stripe Dashboard
  2. Create pricing tiers - Add multiple prices to each product for different billing intervals
  3. Set up subscriptions - Use these products in Stripe Billing for recurring revenue
  4. Import customers - Use the same process with POST /v1/customers to import your customer list

Conclusion

Bulk importing products to Stripe doesn’t require writing code or hiring a developer. With a properly formatted CSV and an OpenAPI-driven import tool, you can:

The same approach works for any Stripe resource (customers, prices, coupons) and any API with an OpenAPI specification.


Ready to import your own product catalog? Try CSVImport with your Stripe test account - it’s free for up to 25 rows.

Ready to try CSVImport?

Import your CSV data into any API in minutes. No coding required.

More from the blog

← Back to all articles