Enable in-context shopping on AI agentsPrivate preview
Learn how to let your businesses sell their products on AI chat agents.
Private preview
If you’re interested in using agentic commerce to sell your businesses’ products through AI agents, including Instant Checkout in ChatGPT, or to manage transactions between buyers and businesses, join the waitlist.
Share information about your business
To configure your platform and connected accounts for in-context agentic selling, provide the following details:
- Platform Stripe account ID.
- Connected account IDs. Provide a list of connected account IDs to enable for in-context agentic selling. You can send a spreadsheet or a plain text file with one account ID per row.
Upload your product catalog data to Stripe
Prepare your product catalog
Create a CSV file that conforms to the Stripe product catalog specification for each connected account. Stripe shares the specification separately.
Upload the catalog data to Stripe
Deliver the feed through the Stripe APIs. You can send updates every 15 minutes.
Use the sandbox to validate parsing, field mappings, and data quality before enabling live updates.
First, upload your product catalog CSV using the Files API. A successful request returns a File object, which includes the id.
- Specify
data_asmanagement_ manual_ upload purpose. - Make sure the MIME type matches the file format. Acceptable formats include CSV and TSV, where each row represents one product or variant.
- The maximum file size is 200 MB.
curl https://files.stripe.com/v1/files \ -u: \ -H "Stripe-Account: {{CONNECTED_ACCOUNT_ID}}" \ -F purpose=data_management_manual_upload \ -F file="@/path/to/your/file.csv;type=text/csv"sk_test_BQokikJOvBiI2HlWgH4olfQ2
Then, use the Data Management API to create an ImportSet. This call starts catalog processing and makes the data available in the Dashboard. Include the following:
- The file
idreturned - The preview header (for example,
Stripe-Version: 2025-09-30.)clover;udap_ beta=v1
curl https://api.stripe.com/v1/data_management/import_sets \ -H "Stripe-Version: 2025-09-30.clover;udap_beta=v1" \ -H "Stripe-Account: {{CONNECTED_ACCOUNT_ID}}" \ -u: \ -d file={{FILE_ID}} \ --data-urlencode standard_data_format="product_catalog_feed"sk_test_BQokikJOvBiI2HlWgH4olfQ2
Monitor feed status
Stripe processes the catalog data, validating and cleaning it before indexing in a format Stripe validates and cleans the catalog data, indexes it, and converts it to a format for AI agents. Monitor indexing progress using the status field on the import set. The status can be pending, failed, succeeded, succeeded_, pending_, or archived.
curl https://api.stripe.com/v1/data_management/import_sets/{{IMPORT_SET_ID}} \ -u: \ -H "Stripe-Account: {{CONNECTED_ACCOUNT_ID}}"sk_test_BQokikJOvBiI2HlWgH4olfQ2
The response includes the status and any errors:
{ "id": "impset_7MabcdZ8b617780e5145413", "object": "data_management.import_set", "created": 1643992696, "livemode": true, "result": { "errors": { "file": "file_234923sIENc", "row_count": 30 }, "rows_processed": 120, "successes": { "row_count": 90 } }, "status": "succeeded_with_errors" }
If your import status is succeeded_, you can download the error report:
- Find the
result.field in the response.errors. file - Use the Files API to retrieve the error file by its ID.
- The downloaded CSV contains your original data with a leading column named
stripe_that describes why each row failed.error_ message
curl https://files.stripe.com/v1/files/{{ERROR_FILE_ID}}/contents \ -u:sk_test_BQokikJOvBiI2HlWgH4olfQ2
The API returns a CSV file containing only the rows that failed, with a stripe_ column describing each error.
Respond to purchases and fulfill orders
Listen to Stripe webhooks to monitor orders made on AI chat agents.
When an order is confirmed, Stripe emits webhook events that your server can handle to run fulfillment logic. Set up an endpoint on your server to accept, process, and acknowledge these events. See the webhooks guide for step-by-step instructions on integrating with and testing Stripe webhooks.
Stripe emits checkout. and payment_. If your fulfillment logic already handles these events, you don’t need additional integration changes. You can customize your fulfillment logic for in-context agentic selling (for example, by noting in your order confirmation email that the checkout occurred through an agent).
const stripe = require('stripe')(process.env.STRIPE_SECRET_KEY); // Use the secret provided by Stripe CLI for local testing // or your webhook endpoint's secret const endpointSecret = 'whsec_...'; app.post('/webhook', (request, response) => { const sig = request.headers['stripe-signature']; let event; try { event = stripe.webhooks.constructEvent(request.body, sig, endpointSecret); } catch (err) { response.status(400).send(`Webhook Error: ${err.message}`); return; } if (event.type === 'checkout.session.completed') { const session = event.data.object; // Fulfill the order using the session data fulfillCheckout(session.id); } response.status(200).send(); });
Test your integration
You can test your integration directly from the Dashboard in a sandbox:
- Go to the Agentic Commerce page, then click View catalog.
- Hover over the product you want to test, then click Test in Workbench.