Stripe App
Overview
Pre-built tooling
✅ Authorization
| Tools | Status |
|---|---|
| Pre-built authorization (OAuth) | ✅ |
| Credentials auto-refresh | ✅ |
| Pre-built authorization UI | ✅ |
| Custom authorization UI | ✅ |
| Expired credentials detection | ✅ |
✅ Read & write data
| Tools | Status |
|---|---|
| Pre-built integrations | ✅ |
| API unification | ✅ |
| 2-way sync | ✅ |
| Webhooks from Tenklo on data modifications | ✅ |
| Real-time webhooks from 3rd-party API | 🚫 (time to contribute: <48h) |
| Proxy requests | ✅ |
✅ 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 | ✅ |
✅ 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 | ✅ |
Others
| Function name | Description | Type | Source code |
|---|---|---|---|
cancel-payment-intent | Cancel a Stripe PaymentIntent. | Action | 🔗 Github |
capture-payment-intent | Capture an uncaptured Stripe PaymentIntent. | Action | 🔗 Github |
create-checkout-session | Create a checkout session in Stripe. | Action | 🔗 Github |
create-credit-note | Create a credit note in Stripe to adjust or refund a finalized invoice. | Action | 🔗 Github |
create-customer | Create a customer in Stripe. | Action | 🔗 Github |
create-invoice-item | Create an invoice item in Stripe. | Action | 🔗 Github |
create-invoice | Create an invoice in Stripe | Action | 🔗 Github |
create-payment-intent | Create a payment intent in Stripe. | Action | 🔗 Github |
create-payment-method | Create a payment method in Stripe. | Action | 🔗 Github |
create-price | Create a price in Stripe. | Action | 🔗 Github |
create-product | Create a product in Stripe. | Action | 🔗 Github |
create-refund | Create a refund in Stripe. | Action | 🔗 Github |
create-setup-intent | Create a setup intent in Stripe. | Action | 🔗 Github |
create-subscription | Create a subscription in Stripe. | Action | 🔗 Github |
delete-customer | Delete or archive a customer in Stripe. | Action | 🔗 Github |
delete-invoice-item | Delete an invoice item from Stripe. | Action | 🔗 Github |
delete-invoice | Delete or archive a invoice in Stripe. | Action | 🔗 Github |
delete-payment-intent | Cancel a Stripe PaymentIntent. | Action | 🔗 Github |
delete-price | Archive a price in Stripe. | Action | 🔗 Github |
delete-product | Delete or archive a product in Stripe. | Action | 🔗 Github |
delete-setup-intent | Delete or archive a setup intent in Stripe. | Action | 🔗 Github |
delete-subscription | Delete or archive a subscription in Stripe. | Action | 🔗 Github |
finalize-invoice | Finalize a draft Stripe invoice. | Action | 🔗 Github |
get-checkout-session | Retrieve a single checkout session from Stripe. | Action | 🔗 Github |
get-credit-note | Retrieve a single credit note from Stripe. | Action | 🔗 Github |
get-customer | Retrieve a single customer from Stripe. | Action | 🔗 Github |
get-invoice-item | Retrieve a single invoice item from Stripe. | Action | 🔗 Github |
get-invoice | Retrieve a single invoice from Stripe. | Action | 🔗 Github |
get-payment-intent | Retrieve a single payment intent from Stripe. | Action | 🔗 Github |
get-payment-method | Retrieve a single payment method from Stripe. | Action | 🔗 Github |
get-price | Retrieve a single price from Stripe. | Action | 🔗 Github |
get-product | Retrieve a single product from Stripe. | Action | 🔗 Github |
get-refund | Retrieve a single refund from Stripe. | Action | 🔗 Github |
get-setup-intent | Retrieve a single setup intent from Stripe. | Action | 🔗 Github |
get-subscription | Retrieve a single subscription from Stripe. | Action | 🔗 Github |
list-checkout-sessions | List checkout sessions from Stripe. | Action | 🔗 Github |
list-credit-notes | List credit notes from Stripe. | Action | 🔗 Github |
list-customers | List customers from Stripe. | Action | 🔗 Github |
list-invoice-items | List invoice items from Stripe. | Action | 🔗 Github |
list-invoices | List invoices from Stripe. | Action | 🔗 Github |
list-payment-intents | List payment intents from Stripe. | Action | 🔗 Github |
list-payment-methods | List payment methods from Stripe. | Action | 🔗 Github |
list-prices | List prices from Stripe. | Action | 🔗 Github |
list-products | List products from Stripe. | Action | 🔗 Github |
list-refunds | List refunds from Stripe. | Action | 🔗 Github |
list-setup-intents | List setup intents from Stripe. | Action | 🔗 Github |
list-subscriptions | List subscriptions from Stripe. | Action | 🔗 Github |
pay-invoice | Pay a Stripe invoice. | Action | 🔗 Github |
update-customer | Update a customer in Stripe. | Action | 🔗 Github |
update-invoice-item | Update an invoice item in Stripe. | Action | 🔗 Github |
update-invoice | Update an invoice in Stripe. | Action | 🔗 Github |
update-payment-intent | Update a payment intent in Stripe. | Action | 🔗 Github |
update-price | Update a price in Stripe. | Action | 🔗 Github |
update-product | Update a product in Stripe | Action | 🔗 Github |
update-refund | Update a refund in Stripe. | Action | 🔗 Github |
update-setup-intent | Update a setup intent in Stripe. | Action | 🔗 Github |
update-subscription | Update a subscription in Stripe. | Action | 🔗 Github |
void-credit-note | Void a Stripe credit note. | Action | 🔗 Github |
void-invoice | Void a Stripe invoice. | Action | 🔗 Github |
checkout-sessions | Sync checkout sessions from Stripe. | Sync | 🔗 Github |
credit-notes | Sync credit notes from Stripe. | Sync | 🔗 Github |
customers | Sync customers from Stripe. Incrementally fetches newly created customers using a creation-time checkpoint. Updates to existing customers are not captured; use a customer-events sync for update tracking. | Sync | 🔗 Github |
invoice-items | Sync invoice items from Stripe. | Sync | 🔗 Github |
invoices | Sync invoices from Stripe. | Sync | 🔗 Github |
payment-intents | Sync payment intents from Stripe. | Sync | 🔗 Github |
payment-methods | Sync payment methods from Stripe | Sync | 🔗 Github |
prices | Sync prices from Stripe. | Sync | 🔗 Github |
products | Sync products from Stripe. | Sync | 🔗 Github |
refunds | Sync refunds from Stripe. | Sync | 🔗 Github |
setup-intents | Sync setup intents from Stripe. | Sync | 🔗 Github |
subscriptions | Sync subscriptions from Stripe. | Sync | 🔗 Github |
| 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 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. A formal audit may be needed depending on your app’s access level and data usage. |
Setup guide
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. 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",
"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": "customer_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
- 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.
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.
Obtain your Client ID and Client Secret
- Go to your app’s Settings tab in the Stripe Dashboard.
- Locate the Live mode link under the Install link 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.
- To obtain your Client Secret, go to the API Keys page in the Stripe Dashboard and copy your Secret key (starts with
sk_live_...). Save these credentials securely as you'll need them when configuring your integration in Tenklo.
Follow the Quickstart.
Need help getting started? Get help in the community.
Useful links
Contribute useful links by editing this page
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.
Contribute API gotchas by editing this page