> ## Documentation Index
> Fetch the complete documentation index at: https://docs.base44.com/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> Internal links on these pages omit the .md extension. Append .md to a docs page URL, or send an Accept: text/markdown header, to get that page as markdown.

# Overview

> Move a Stripe integration from sandbox to live, and manage its product and price catalog

> [!NOTE]
>
> The Apps API is in beta. Its endpoints and responses may change.

## From sandbox to live

A sandbox is a Stripe test account Base44 provisions automatically when you install Stripe, with working test credentials from the start. A sandbox is `unclaimed` until you follow its onboarding link to take ownership of it as your own Stripe account, after which it's `claimed`. An `unclaimed` sandbox also becomes `expired` 60 days after creation, and an expired sandbox can no longer be claimed. Installing again provisions a new one.

Claiming only transfers ownership. The account still has to complete Stripe's own activation, such as business details and verification, before it can go live. A claimed sandbox whose activation isn't finished is what [Get Stripe onboarding link](/api-reference/get-stripe-onboarding-link.md) calls resuming, and [Provision live Stripe keys](/api-reference/provision-live-stripe-keys.md) requires activation to finish before it can create keys.

A Stripe integration starts in this sandbox and moves to live mode only when you configure or provision live keys.

1. [Install Stripe integration](/api-reference/install-stripe-integration.md) sets up the sandbox and stores test credentials. It reuses an existing usable installation rather than creating a duplicate.
2. [Get Stripe onboarding link](/api-reference/get-stripe-onboarding-link.md) returns a link to claim the sandbox or resume unfinished activation, refreshing onboarding state as it does.
3. Switch to live mode with either [Configure live Stripe keys](/api-reference/configure-live-stripe-keys.md), which stores keys you already have from Stripe, or [Provision live Stripe keys](/api-reference/provision-live-stripe-keys.md), which creates them after Stripe activation. Provisioning's rate limit is scoped to your account rather than the workspace, documented on its own rate-limit response for the base number. See [Rate limits](/developers/references/apps-api/get-started/rate-limits.md) for the multiplier your plan gets.
4. [Get Stripe integration status](/api-reference/get-stripe-integration-status.md) reports the current mode, the sandbox's claim state, and whether test or live credentials are stored, without returning any API keys.

> [!WARNING]
>
> Onboarding and claim links are one-time credentials. Treat a link returned by these endpoints the same way you'd treat a password.

[Remove Stripe integration](/api-reference/remove-stripe-integration.md) deletes the sandbox record and stored secrets and clears the app's Stripe mode. It does not delete the Stripe account or catalog, revoke credentials at Stripe, or redeploy functions that already deployed with the old credentials.

## The Stripe catalog

The product and price endpoints read and write the catalog of whichever Stripe account the app's stored credentials select. Live keys reach the live catalog, and test keys reach the test catalog, so two apps sharing one Stripe account share its catalog too.

[List Stripe products](/api-reference/list-stripe-products.md) and [List Stripe prices](/api-reference/list-stripe-prices.md) each return a single batch of up to 100 records, with no cursor to retrieve the rest. There's no way to page through a catalog larger than the batch you request.

Updates only touch the fields you send. [Update Stripe product](/api-reference/update-stripe-product.md) and [Update Stripe price](/api-reference/update-stripe-price.md) leave omitted or null fields unchanged, and an empty update body leaves the record as it was. A price's amount, currency, and recurring schedule can't be changed after creation. Creating a product or price is not idempotent. Retrying a create request can leave you with a duplicate.

## Endpoints

### Setup

* [Get Stripe integration status](/api-reference/get-stripe-integration-status.md): See how far Stripe setup has gone, without any credentials.
* [Install Stripe integration](/api-reference/install-stripe-integration.md): Set up a Stripe sandbox and store test credentials.
* [Get Stripe sandbox](/api-reference/get-stripe-sandbox.md): Read the stored sandbox, or `null` if none exists.
* [Get Stripe onboarding link](/api-reference/get-stripe-onboarding-link.md): Get a link to claim the sandbox or resume an unfinished activation.
* [Configure live Stripe keys](/api-reference/configure-live-stripe-keys.md): Switch to live mode with live keys you already have.
* [Provision live Stripe keys](/api-reference/provision-live-stripe-keys.md): Create live keys automatically through Stripe.
* [Remove Stripe integration](/api-reference/remove-stripe-integration.md): Delete the sandbox record and stored Stripe secrets.

### Products

* [List Stripe products](/api-reference/list-stripe-products.md): List products from the configured Stripe account.
* [Create Stripe product](/api-reference/create-stripe-product.md): Create a product.
* [Get Stripe product](/api-reference/get-stripe-product.md): Read a product by its Stripe ID.
* [Update Stripe product](/api-reference/update-stripe-product.md): Change the fields you send on a product.

### Prices

* [List Stripe prices](/api-reference/list-stripe-prices.md): List prices across the account, or for one product.
* [Create Stripe price](/api-reference/create-stripe-price.md): Create a one-time or recurring price for a product.
* [Update Stripe price](/api-reference/update-stripe-price.md): Change the fields you send on a price.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.