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

# Stripe App

## Overview

<CardGroup cols={3}>
  <Card title="Pre-built tooling" icon="screwdriver-wrench" href="#pre-built-tooling" />

  <Card title="Pre-built integrations" icon="square-check" href="#pre-built-integrations" />

  <Card title="Access requirements" icon="triangle-exclamation" href="#access-requirements" />

  <Card title="Setup guide" icon="rocket" href="#setup-guide" />

  <Card title="Useful links" icon="circle-info" href="#useful-links" />

  <Card title="API gotchas" icon="biohazard" href="#api-gotchas" />
</CardGroup>

## Pre-built tooling

<AccordionGroup>
  <Accordion title="✅ Authorization">
    | Tools                           | Status |
    | ------------------------------- | ------ |
    | Pre-built authorization (OAuth) | ✅      |
    | Credentials auto-refresh        | ✅      |
    | Pre-built authorization UI      | ✅      |
    | Custom authorization UI         | ✅      |
    | Expired credentials detection   | ✅      |
  </Accordion>

  <Accordion title="✅ Read & write data">
    | Tools                                     | Status                         |
    | ----------------------------------------- | ------------------------------ |
    | Pre-built integrations                    | 🚫 (time to contribute: \<48h) |
    | API unification                           | ✅                              |
    | 2-way sync                                | ✅                              |
    | Webhooks from Nango on data modifications | ✅                              |
    | Real-time webhooks from 3rd-party API     | 🚫 (time to contribute: \<48h) |
    | Proxy requests                            | ✅                              |
  </Accordion>

  <Accordion title="✅ Observability & data quality">
    | Tools                   | Status |
    | ----------------------- | ------ |
    | HTTP request logging    | ✅      |
    | End-to-end type safety  | ✅      |
    | Data runtime validation | ✅      |
    | OpenTelemetry export    | ✅      |
    | Slack alerts on errors  | ✅      |
    | Integration status API  | ✅      |
  </Accordion>

  <Accordion title="✅ Customization">
    | Tools                              | Status                         |
    | ---------------------------------- | ------------------------------ |
    | Create or customize use-cases      | ✅                              |
    | Pre-configured pagination          | 🚫 (time to contribute: \<48h) |
    | Pre-configured rate-limit handling | 🚫 (time to contribute: \<48h) |
    | Per-customer configurations        | ✅                              |
  </Accordion>
</AccordionGroup>

*No pre-built syncs or actions available yet.*

<Tip>Not seeing the integration you need? [Build your own](/guides/functions/functions-guide) independently.</Tip>

| Pre-Requisites        | Status | Comment                                                                                                                                                                                                                                 |
| --------------------- | ------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Paid dev account**  | ✅      | You must have an activated Stripe account (submit business info). No charges required, but activation is mandatory.                                                                                                                     |
| **Paid test account** | ✅      | Stripe does not require or support a paid **test** account. Sandbox accounts are available by default in every account.                                                                                                                 |
| **Partnership**       | ✅      | Not required to develop or publish apps, but Stripe may offer [partnership](https://docs.stripe.com/partners#:~:text=To%20become%20a%20Stripe%20partner,the%20Stripe%20Partner%20Ecosystem%20Agreement.) options for higher visibility. |
| **App review**        | ❌      | Required if you want to publish the app publicly on the Stripe App Marketplace. Stripe will review your app before approval.                                                                                                            |
| **Security audit**    | ✅      | Not strictly required, but apps must follow Stripe’s [security best practices](https://stripe.com/docs/security). A formal audit may be needed depending on your app’s access level and data usage.                                     |

## Setup guide

<Steps>
  <Step title="Create a Stripe account">
    If you don't already have one, sign up for a [Stripe account](https://dashboard.stripe.com/register).
  </Step>

  <Step title="Install Stripe CLI">
    1. If you haven't already, install the [Stripe CLI](https://docs.stripe.com/stripe-cli#install).
    2. Log in using your Stripe account:
       ```shell theme={null}
       stripe login
       ```
  </Step>

  <Step title="Install the Stripe Apps CLI plugin">
    1. Run the following command to install the Stripe Apps plugin:
       ```shell theme={null}
       stripe plugin install apps
       ```
    2. Verify the plugin version is 1.5.12 or newer:
       ```shell theme={null}
       stripe apps -v
       ```
  </Step>

  <Step title="Create your Stripe App">
    1. Create a new app project using the CLI:
       ```shell theme={null}
       stripe apps create my-stripe-app
       ```
    2. This creates a local project folder with a manifest and app code.
  </Step>

  <Step title="Edit the app manifest">
    Open the **stripe-app.json** file and update these fields:

    * **stripe\_api\_access\_type**: Set to **oauth**
    * **distribution\_type**: Set to **public**
    * **allowed\_redirect\_uris**: Add your redirect URI as **[https://api.nango.dev/oauth/callback](https://api.nango.dev/oauth/callback)**. Example:

    ```json theme={null}
    {
      "id": "com.example.my-app",
      "version": "0.0.1",
      "name": "My Stripe App",
      "icon": "./icon.png",
      "permissions": [],
      "stripe_api_access_type": "oauth",
      "distribution_type": "public",
      "allowed_redirect_uris": [
        "https://api.nango.dev/oauth/callback"
      ]
    }
    ```
  </Step>

  <Step title="Add required permissions and UI (optional)">
    1. Add [permissions](https://docs.stripe.com/stripe-apps/reference/permissions) your app requires to access Stripe resources in the manifest (e.g., **read\_only**, **customers:read**, etc.).

    ```json theme={null}
    "permissions": [
        {
            "permission": "customer_read",
            "purpose": "Receive access to the customer’s phone number"
        }
    ]
    ```

    2. Optionally add a **settings view** or other UI extensions if your app has a user-facing configuration.
  </Step>

  <Step title="Upload your app to Stripe (requires live account)">
    1. Ensure you're logged into a fully activated (non-sandbox) Stripe account.
    2. Upload your app to Stripe:
       ```shell theme={null}
       stripe apps upload
       ```
  </Step>

  <Step title="Publish your app">
    * Submit your app for review when you're ready to publish it to the Stripe App Marketplace.
    * When submitting an OAuth app, you must provide a Marketplace install URL. This URL should point to a page that initiates onboarding and installation, and clearly uses the OAuth install links found in the Settings tab of your app.
      <Note>The public OAuth install links from the Settings tab are different from those in the External test tab and must be used for review and production installs. Even though these links are inactive until the app is published, the Stripe App Review team can still use them to install and test your app.</Note>
  </Step>

  <Step title="Obtain your Client ID and Client Secret">
    1. Go to your app’s <strong>Settings</strong> tab in the Stripe Dashboard.
    2. Locate the <strong>Live mode link</strong> under the <strong>Install link</strong> section. The **Client ID** is included as a query parameter in either the **Live mode** or **Test mode** link (e.g., client\_id=...). Use the link for whichever mode you'd like to test or deploy.
    3. To obtain your <strong>Client Secret</strong>, go to the <strong>API Keys</strong> page in the Stripe Dashboard and copy your <strong>Secret key</strong> (starts with <code>sk\_live\_...</code>).
       Save these credentials securely as you'll need them when configuring your integration in Nango.
  </Step>

  <Step title="Next">
    Follow the [*Quickstart*](/getting-started/quickstart).
  </Step>
</Steps>

<Tip>Need help getting started? Get help in the [community](https://nango.dev/slack).</Tip>

## Useful links

| Topic     | Links                                                                                                     |
| --------- | --------------------------------------------------------------------------------------------------------- |
| General   | [Stripe Dashboard](https://dashboard.stripe.com/)                                                         |
|           | [Stripe Documentation](https://docs.stripe.com/)                                                          |
| Developer | [Stripe Apps Overview](https://docs.stripe.com/stripe-apps)                                               |
|           | [Stripe Apps CLI Guide](https://docs.stripe.com/stripe-cli)                                               |
|           | [OAuth for Stripe Apps](https://docs.stripe.com/stripe-apps/api-authentication/oauth)                     |
|           | [Oauth App scopes](https://docs.stripe.com/stripe-apps/reference/permissions)                             |
|           | [App Manifest Reference](https://docs.stripe.com/stripe-apps/reference/app-manifest)                      |
|           | [Testing Your Stripe App](https://docs.stripe.com/stripe-apps/api-authentication/oauth#test-app)          |
|           | [App Marketplace Publishing Guide](https://docs.stripe.com/stripe-apps/publish-app#submit-app-for-review) |
|           | [OAuth Token Exchange](https://docs.stripe.com/stripe-apps/api-authentication/oauth#obtain-access-token)  |

<Note>Contribute useful links by [editing this page](https://github.com/nangohq/nango/tree/master/docs/integrations/all/stripe-app.mdx)</Note>

## Common Scopes

| Permission                                     | Description              |
| ---------------------------------------------- | ------------------------ |
| `payment_intent_read` / `payment_intent_write` | Manage payment flows     |
| `customer_read` / `customer_write`             | Manage customer data     |
| `subscription_read` / `subscription_write`     | Manage recurring billing |
| `invoice_read` / `invoice_write`               | Manage invoices          |
| `charge_read` / `charge_write`                 | Process payments         |
| `account_read`                                 | View connected accounts  |
| `webhook_read`                                 | Manage webhooks          |
| `file_read` / `file_write`                     | Access uploaded files    |

## API gotchas

* The Stripe App is your live production integration, available for installation by real Stripe users. Use this when you're ready to launch your app in a production environment.

<Note>Contribute API gotchas by [editing this page](https://github.com/nangohq/nango/tree/master/docs/integrations/all/stripe-app.mdx)</Note>
