Stripe App

Overview

Pre-built tooling

✅ Authorization
ToolsStatus
Pre-built authorization (OAuth)✅
Credentials auto-refresh✅
Pre-built authorization UI✅
Custom authorization UI✅
Expired credentials detection✅
✅ Read & write data
ToolsStatus
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
ToolsStatus
HTTP request logging✅
End-to-end type safety✅
Data runtime validation✅
OpenTelemetry export✅
Slack alerts on errors✅
Integration status API✅
✅ Customization
ToolsStatus
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 nameDescriptionTypeSource code
cancel-payment-intentCancel a Stripe PaymentIntent.Action🔗 Github
capture-payment-intentCapture an uncaptured Stripe PaymentIntent.Action🔗 Github
create-checkout-sessionCreate a checkout session in Stripe.Action🔗 Github
create-credit-noteCreate a credit note in Stripe to adjust or refund a finalized invoice.Action🔗 Github
create-customerCreate a customer in Stripe.Action🔗 Github
create-invoice-itemCreate an invoice item in Stripe.Action🔗 Github
create-invoiceCreate an invoice in StripeAction🔗 Github
create-payment-intentCreate a payment intent in Stripe.Action🔗 Github
create-payment-methodCreate a payment method in Stripe.Action🔗 Github
create-priceCreate a price in Stripe.Action🔗 Github
create-productCreate a product in Stripe.Action🔗 Github
create-refundCreate a refund in Stripe.Action🔗 Github
create-setup-intentCreate a setup intent in Stripe.Action🔗 Github
create-subscriptionCreate a subscription in Stripe.Action🔗 Github
delete-customerDelete or archive a customer in Stripe.Action🔗 Github
delete-invoice-itemDelete an invoice item from Stripe.Action🔗 Github
delete-invoiceDelete or archive a invoice in Stripe.Action🔗 Github
delete-payment-intentCancel a Stripe PaymentIntent.Action🔗 Github
delete-priceArchive a price in Stripe.Action🔗 Github
delete-productDelete or archive a product in Stripe.Action🔗 Github
delete-setup-intentDelete or archive a setup intent in Stripe.Action🔗 Github
delete-subscriptionDelete or archive a subscription in Stripe.Action🔗 Github
finalize-invoiceFinalize a draft Stripe invoice.Action🔗 Github
get-checkout-sessionRetrieve a single checkout session from Stripe.Action🔗 Github
get-credit-noteRetrieve a single credit note from Stripe.Action🔗 Github
get-customerRetrieve a single customer from Stripe.Action🔗 Github
get-invoice-itemRetrieve a single invoice item from Stripe.Action🔗 Github
get-invoiceRetrieve a single invoice from Stripe.Action🔗 Github
get-payment-intentRetrieve a single payment intent from Stripe.Action🔗 Github
get-payment-methodRetrieve a single payment method from Stripe.Action🔗 Github
get-priceRetrieve a single price from Stripe.Action🔗 Github
get-productRetrieve a single product from Stripe.Action🔗 Github
get-refundRetrieve a single refund from Stripe.Action🔗 Github
get-setup-intentRetrieve a single setup intent from Stripe.Action🔗 Github
get-subscriptionRetrieve a single subscription from Stripe.Action🔗 Github
list-checkout-sessionsList checkout sessions from Stripe.Action🔗 Github
list-credit-notesList credit notes from Stripe.Action🔗 Github
list-customersList customers from Stripe.Action🔗 Github
list-invoice-itemsList invoice items from Stripe.Action🔗 Github
list-invoicesList invoices from Stripe.Action🔗 Github
list-payment-intentsList payment intents from Stripe.Action🔗 Github
list-payment-methodsList payment methods from Stripe.Action🔗 Github
list-pricesList prices from Stripe.Action🔗 Github
list-productsList products from Stripe.Action🔗 Github
list-refundsList refunds from Stripe.Action🔗 Github
list-setup-intentsList setup intents from Stripe.Action🔗 Github
list-subscriptionsList subscriptions from Stripe.Action🔗 Github
pay-invoicePay a Stripe invoice.Action🔗 Github
update-customerUpdate a customer in Stripe.Action🔗 Github
update-invoice-itemUpdate an invoice item in Stripe.Action🔗 Github
update-invoiceUpdate an invoice in Stripe.Action🔗 Github
update-payment-intentUpdate a payment intent in Stripe.Action🔗 Github
update-priceUpdate a price in Stripe.Action🔗 Github
update-productUpdate a product in StripeAction🔗 Github
update-refundUpdate a refund in Stripe.Action🔗 Github
update-setup-intentUpdate a setup intent in Stripe.Action🔗 Github
update-subscriptionUpdate a subscription in Stripe.Action🔗 Github
void-credit-noteVoid a Stripe credit note.Action🔗 Github
void-invoiceVoid a Stripe invoice.Action🔗 Github
checkout-sessionsSync checkout sessions from Stripe.Sync🔗 Github
credit-notesSync credit notes from Stripe.Sync🔗 Github
customersSync 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-itemsSync invoice items from Stripe.Sync🔗 Github
invoicesSync invoices from Stripe.Sync🔗 Github
payment-intentsSync payment intents from Stripe.Sync🔗 Github
payment-methodsSync payment methods from StripeSync🔗 Github
pricesSync prices from Stripe.Sync🔗 Github
productsSync products from Stripe.Sync🔗 Github
refundsSync refunds from Stripe.Sync🔗 Github
setup-intentsSync setup intents from Stripe.Sync🔗 Github
subscriptionsSync subscriptions from Stripe.Sync🔗 Github
Pre-RequisitesStatusComment
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

Create a Stripe account

If you don't already have one, sign up for a Stripe account.

Install Stripe CLI

  1. If you haven't already, install the Stripe CLI.
  2. Log in using your Stripe account:
    stripe login

Install the Stripe Apps CLI plugin

  1. Run the following command to install the Stripe Apps plugin:
    stripe plugin install apps
  2. Verify the plugin version is 1.5.12 or newer:
    stripe apps -v

Create your Stripe App

  1. Create a new app project using the CLI:
    stripe apps create my-stripe-app
  2. This creates a local project folder with a manifest and app code.

Edit the app manifest

Open the stripe-app.json file and update these fields:

{
  "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)

  1. 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"
    }
]
  1. 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)

  1. Ensure you're logged into a fully activated (non-sandbox) Stripe account.
  2. Upload your app to Stripe:
    stripe apps upload

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.
    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

  1. Go to your app’s Settings tab in the Stripe Dashboard.
  2. 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.
  3. 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.
Need help getting started? Get help in the community.
Contribute useful links by editing this page

Common Scopes

PermissionDescription
payment_intent_read / payment_intent_writeManage payment flows
customer_read / customer_writeManage customer data
subscription_read / subscription_writeManage recurring billing
invoice_read / invoice_writeManage invoices
charge_read / charge_writeProcess payments
account_readView connected accounts
webhook_readManage webhooks
file_read / file_writeAccess 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

On this page