How to register your own Stripe App Sandbox OAuth app
Register an OAuth app with Stripe App Sandbox and connect it to Tenklo
This guide shows you how to register your own Stripe App to obtain your OAuth credentials (client id & secret). These are required to let your users grant your app access to their Stripe account. Stripe App Sandbox is a test environment that simulates real installs and OAuth flows without affecting live data, so use it for development and testing before you publish your app. You'll need an activated Stripe account (business info submitted, no charges required) to get started.
If you don't already have one, sign up for a Stripe account.
- If you haven't already, install the Stripe CLI.
- Log in using your Stripe account:
stripe login
Install the Stripe Apps CLI plugin
- Run the following command to install the Stripe Apps plugin:
stripe plugin install apps - Verify the plugin version is 1.5.12 or newer:
stripe apps -v
- Create a new app project using the CLI:
stripe apps create my-stripe-app - This creates a local project folder with a manifest and app code.
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.tenklo.dev/oauth/callback
- sandbox_install_compatible: Set to true Example:
{
"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",
"sandbox_install_compatible": true,
"allowed_redirect_uris": [
"https://api.tenklo.dev/oauth/callback"
]
}Add required permissions and UI (optional)
- Add permissions your app requires to access Stripe resources in the manifest (e.g., read_only, customers:read, etc.).
"permissions": [
{
"permission": "customers:read",
"purpose": "Receive access to the customer's phone number"
}
]- Optionally add a settings view or other UI extensions if your app has a user-facing configuration.
Upload your app to Stripe (requires live account)
- Ensure you're logged into a fully activated (non-sandbox) Stripe account.
- Upload your app to Stripe:
stripe apps upload
Obtain your Client ID and Client Secret
- Go to your app's details page in the Stripe Dashboard.
- Open the External test tab.
- Click Get started if you haven't already configured the external test OAuth setup.
- After setup, Stripe will generate OAuth installation links in the Test OAuth section. Your Client ID will be included in the Sandbox link as a query parameter (e.g.,
client_id=...). - To obtain your Client Secret, go to the API Keys page in the Stripe Dashboard and copy your Secret key (starts with
sk_test_...).
⚠️ Make sure that your client_id and secret key come from the same Stripe sandbox account and environment. Mixing keys from different environments or accounts will result in authorization errors like "Authorization code provided does not belong to you." Save these credentials securely as you'll need them when configuring your integration in Tenklo.
Your App Domain comes from the same Test OAuth section you used to find your Client ID — see Finding your App Domain for the lookup steps.
This value is the same for every connection made through this integration, so set it once on the integration itself rather than per connection: enter it in the App Domain field when creating the stripe-app-sandbox integration in Tenklo, or later from the integration's settings page. If you skip it here, Connect falls back to asking each end user for it instead.
Follow the Quickstart.
For more on building Stripe Apps, see Stripe's Apps documentation.