
Stripe Best Practices
OfficialFreeStreamline your Stripe integration with expert guidance.
Free · Opens the source repo
What Stripe Best Practices does
The Stripe Best Practices skill is designed to assist developers and designers in making informed decisions while integrating Stripe into their applications. This skill provides comprehensive guidance on various aspects of Stripe's API, including the selection between Checkout Sessions and PaymentIntents, setting up the Connect platform, managing billing and subscriptions, and ensuring compliance with tax regulations. By leveraging this skill, users can avoid common pitfalls and streamline their integration processes.
With the latest Stripe API version and SDKs readily available, users can ensure they are working with the most current tools. The skill covers critical integration scenarios, such as one-time payments, custom payment forms, and recurring billing setups. Additionally, it emphasizes best practices for security, including API key management and OAuth implementations, ensuring that sensitive information is handled appropriately.
This skill is particularly useful for developers who are building or modifying Stripe integrations, as well as those reviewing existing setups. By consulting the provided references, users can gain deeper insights into specific areas such as tax compliance and financial account management, making it easier to implement robust solutions tailored to their business needs.
Whether you are starting a new project or enhancing an existing integration, the Stripe Best Practices skill serves as a valuable resource for navigating the complexities of Stripe's offerings, helping you to build secure and efficient payment solutions.
When to use it
Use this skill when building, modifying, or reviewing any Stripe integration, especially for payments, subscriptions, or tax compliance.
When not to use it
This skill may not be suitable for users unfamiliar with Stripe's API or those looking for a simple payment solution without the need for extensive configuration.
What you can build with it
New Payment Integration
When building a new payment integration, this skill helps you choose the right API methods and configurations.
Reviewing Existing Integrations
Use this skill to audit and improve existing Stripe setups, ensuring compliance with best practices.
Setting Up Subscriptions
When implementing subscription billing, this skill provides guidance on using the appropriate APIs and handling tax compliance.
How to install Stripe Best Practices
View source1. Install with the skills CLI
npx skills add stripe/ai/stripe-best-practices --agent claude-code2. Or install it manually
Download the skill folder and drop it into ~/.claude/skills/ for all projects, or .claude/skills/ to scope it to one repo. Restart Claude Code so it picks up the new skill.
Anthropic's agentic coding CLI, and the reference implementation of Agent Skills. Drop a skill folder into ~/.claude/skills and Claude Code loads it automatically whenever a task matches the skill's description. Claude Code docs
Inside SKILL.md
Written by stripeLatest Stripe API version: 2026-07-29.dahlia. Always use the latest API version and SDK unless the user specifies otherwise.
Latest SDK versions:
| Language | Latest version |
|---|---|
| Ruby | 19.4.0 |
| Python | 15.4.0 |
| Node.js | 22.4.0 |
| PHP | 21.1.0 |
| Java | 33.2.0 |
| Go | 86.2.0 |
| .NET | 52.2.0 |
If you don’t have a Stripe account, you can call a CLI command to generate working API keys with no registration required. You can install the Stripe CLI (npm i -g @stripe/cli) and run the command stripe sandbox create to get started.
If stripe sandbox create is used, don’t use MCP.
If you try to use MCP after running sandbox creation, first make sure stripe sandbox claim is run. Use stripe whoami --format json for CLI auth checks; do not run stripe config --list.
API key default: Always recommend a restricted API key (RAK) (rk_ prefix) over a secret key (sk_ prefix).
Integration routing
| Building… | Recommended API | Details |
|---|---|---|
| One-time payments | Checkout Sessions | <references/payments.md> |
| Custom payment form with embedded UI | Checkout Sessions + Payment Element | <references/payments.md> |
| Saving a payment method for later | Setup Intents | <references/payments.md> |
| Connect platform or marketplace | Accounts v2 (/v2/core/accounts) | <references/connect.md> |
| Usage-based billing (new integration) | Metronome | <references/billing.md> |
| Subscriptions or recurring billing | Billing APIs + Checkout Sessions | <references/billing.md> |
| Sales tax, VAT, or GST compliance | Stripe Tax + Registrations API | <references/tax.md> |
| Embedded financial accounts / banking | v2 Financial Accounts | <references/treasury.md> |
| Security (key management, RAKs, webhooks, OAuth, 2FA, Connect liability) | See security reference | <references/security.md> |
Read the relevant reference file before answering any integration question or writing code.
Critical rules
-
Before enabling
automatic_tax: { enabled: true }(or calculating tax for a custom PaymentIntent), read the tax reference and confirm the user has an active registration. Without one, Stripe calculates and collects no tax while the user believes tax is on (the most common Stripe Tax mistake). -
Never include
payment_method_typesin any Stripe API call, with one exception: Terminal (in-person payments) integrations must passpayment_method_types: ['card_present']on the PaymentIntent. For all other integrations, omit this parameter entirely to enable dynamic payment methods, which enables you to configure payment method settings from the Dashboard and dynamically display the most relevant eligible payment methods to each customer to maximize conversion. To customize which payment methods you accept, usepayment_method_configurationsorexcluded_payment_method_typesinstead ofpayment_method_types. -
On API version
2026-03-25.dahliaor later, pass the parameterintegration_identifiertocheckout.sessions.createto tag sessions with a custom label for tracking and comparing checkout flows in the Dashboard. The label should include a suffix of 8 random letters. -
Always instantiate a
StripeClientand call methods on that instance. Do not use the deprecated global/module-level API key pattern (stripe.api_key = …,Stripe.setApiKey,stripe.Key = …,StripeConfiguration.ApiKey = …). The global pattern is deprecated in all current SDKs.
Key documentation
When the user’s request does not clearly fit a single domain above, consult:
- Integration Options — Start here when designing any integration.
- API Tour — Overview of Stripe’s API surface.
- Go Live Checklist — Review before launching.
Frequently asked questions about Stripe Best Practices
Similar skills
WinMD API Search
Easily find and explore Windows desktop APIs.
WebMCPify
Transform any web app into an agent-ready platform.
Phoenix Tracing
Instrument LLM applications with OpenInference tracing.
Foundry Hosted Agent CopilotKit
Guidance for developing agentic web apps on Azure.
Power Automate Foundation
Connect AI agents to Power Automate seamlessly.
Power Automate Flow Builder
Efficiently build and deploy Power Automate flows programmatically.
