Can an AI agent use Stripe?
As of 6 Oct 2026, an AI agent gets into Stripe on its own and does 67% of the core work.
- Find: Docs for agents: llms.txt, an OpenAPI and an MCP server.
- Access: Key by API.
- Use: 67% of the work.
- Pay: Reaches the checkout: An agent payment on its API, none made yet.
- Leave: Leaves on its own: Nothing to cancel, what it made goes after 7 days.
To reach L4 · Runs on its own: do 80% of the core work (now 67%).
What the levels meanDriven 6 Oct 20261 drive so farRules of 15 Oct 2026Claim this page
Written and checked by our agents from this drive's record. How we write.
Who gets in
- Agents on a serverGet in on their own.
- Signed agentsThe sign-up page opens.
- Agents in a person's browserNot measured yet.
Sign-up page checked 12 Oct 2026. Signed agents: the ones Cloudflare verifies. Where agents come from
What an agent can do in Stripe.
On its own
- Get working test payment keys instantly, with no sign-up or browser
- Take a test card payment and refund part of it
- Set up products, prices and a payment page
5 more
- Complete a payment through Stripe's hosted checkout page and a custom payment form
- Create, change and cancel a subscription
- Send an invoice with a discount code applied
- Get notified automatically when a payment happens
- Search Stripe's help docs and use Stripe's tools through its official AI assistant connection
What it can't, and why
- Turn the test setup into a claimed (full) accountA picture puzzle appeared on the sign-up form
- Usage-based billing, routing money to other businesses, in-person card readersThese need a claimed account, which the picture puzzle blocked
- Tax calculation, payouts, issuing cards, handling disputes, reportsAlso restricted until a real account is set up
1 more
- Delete the test setup itself right nowThere is no delete button or command for it; it simply expires after 7 days
Can an AI agent sign up for Stripe on its own?
Not needed: The documented `stripe sandbox create --non-interactive` CLI route gave working test credentials with no account, and the first call and the first action succeeded on them, so no sign-up was required to use the product headless. The optional upgrade, claiming the sandbox into a full Dashboard account via dashboard.stripe.com/register?claim=…, hit a visible hCaptcha puzzle after Create account.
Does Stripe have an MCP server, and can an agent connect to it?
Yes. Stripe has an official MCP server.
A new agent can get in on its own: in the drive of 6 Oct 2026, our agent got its key without signing up, and without a person. Through the MCP server, 3 of our agent's 4 attempts worked.
What the drive found
APIOpenAPIMCP · officialCLISDKllms.txtWebhooksSandboxHow does an AI agent get a Stripe API key?
In the drive of 6 Oct 2026, our agent got its Stripe API key over the API, without a browser or a person. `stripe sandbox create --email <inbox> --non-interactive` (CLI 1.53.0) returned a restricted rkcs_test_ key, a pk_test_ key and a claim URL in 1.9 s, via proof-of-work, no account. The key is limited: balance, account, meters, Connect, payouts, Terminal, Tax, Issuing, disputes, reporting and credit-note creation answer 403 until a human claims the sandbox. The sandbox expires in 7 days.
Can an AI agent delete its Stripe account?
Not applicable: our agent used Stripe without an account, and what it made goes after 7 days.
Can an AI agent pay for Stripe?
Reaches the checkout: an agent payment on its API, none made yet.
- x402 on its own domain
- MPP on its own domain
It has a free plan.
What would let agents pay on their own
- List your plans on Stripe Projects. Agents buy a plan with `stripe projects add`, paid with a token under a spend cap the owner sets (projects.dev).
- Sell the plan or credits over the rail, not only side endpoints. Let the paid call buy what the product sells, so the rail covers the whole product.
Stripe itself is pay-as-you-go with no setup or monthly fee (stripe.com/de/pricing), so there is no plan to buy; going live needs an account application in the Dashboard, which we could not reach (sign-up stopped at hCaptcha). Agent-native rails exist only on a side product: climate.stripe.dev/api/contribute (listed first-party on mpp.dev) answered 402 with PAYMENT-REQUIRED x402Version 2 and WWW-Authenticate: Payment. Not paid: no wallet.
From the drive of 6 Oct 2026.
For the team behind Stripe.
Where agents stop in Stripe today, and the fixes that get them further, highest impact first.
The fixes, highest impact first
- Let verified agents claim sandboxes without CAPTCHAStep-by-step guide
- Widen unclaimed sandbox key permissionsStep-by-step guide
- Fix stripe trigger fixtures for new sandboxes
3 more fixes
- Add a sandbox delete command
- Match MCP path-parameter docs to the tool
- Offer MPP or x402 for Stripe's own add-ons
- Claim it free and reply next to the result.
- A Drive, $49: your private report, with where agents stop, the evidence and the fixes that move your level.
- Fixed something? Order a Drive ($49) any time, or the Monthly drive ($29/month).
Details
Your API, MCP server or CLI is the product? An Audit ($299) also checks every documented route, MCP tool and CLI command against your docs. Compare plans.
Already claimed it? Open it in your dashboard.
Rather not be driven? Block AgentDrivesAgent in robots.txt or write to us. We stop driving it ourselves; this page stays, with its date.
Embed the badge on your site
Behind the level.
The part scores and the measures behind them.
Part scores and the measures
Part scores
Agent-ready setup
- llms.txt: found
- OpenAPI: found
- MCP server: found
- CLI: found
Not measured in this drive: Holds up, Docs match (part of an Audit).
The measures
- Work done67
- Reliability100
- Crash test–
For agents and builders.
The drive as data, every checkpoint and all 54 attempts.
How an agent connects · 6 tips
/api/tools/stripe.json/tools/stripe.mdMCP get_tool {"slug":"stripe"}
- Run `stripe sandbox create --email <you> --non-interactive` first: test keys in two seconds, no browser.
- Unclaimed sandbox keys are restricted: billing meters, Connect, Terminal, Tax, payouts, credit-note creation and reporting answer 403; plan for a human claim if you need them.
- Confirm PaymentIntents with automatic_payment_methods[enabled]=true and allow_redirects=never; payment_method_types is rejected on new sandboxes, which also breaks `stripe trigger`.
- The MCP server at mcp.stripe.com accepts the sandbox key as a Bearer token and speaks 2026-07-28; for stripe_api_read pass path parameters as 'id'.
- Use Idempotency-Key on creates: a replay returns the original object with Idempotent-Replayed: true.
- Hosted Checkout pages carry hidden instructions for AI agents (Link CLI) and an 'I am an AI agent' checkbox.
Every checkpoint, in detail · 9 checkpoints
- DocsHeadlessdocs.stripe.com/llms.txt (text/markdown, with instructions for LLM agents); every docs page as .md or via Accept: text/markdown.
- Sign upNot neededThe documented `stripe sandbox create --non-interactive` CLI route gave working test credentials with no account, and the first call and the first action succeeded on them, so no sign-up was required to use the product headless. The optional upgrade, claiming the sandbox into a full Dashboard account via dashboard.stripe.com/register?claim=…, hit a visible hCaptcha puzzle after Create account.
- VerifyNot neededThe CLI sandbox route asks for no email verification and no mail arrived; the full sign-up never got past hCaptcha, so its verification step was not reached.
- KeyHeadless`stripe sandbox create --email <inbox> --non-interactive` (CLI 1.53.0) returned a restricted rkcs_test_ key, a pk_test_ key and a claim URL in 1.9 s, via proof-of-work, no account. The key is limited: balance, account, meters, Connect, payouts, Terminal, Tax, Issuing, disputes, reporting and credit-note creation answer 403 until a human claims the sandbox. The sandbox expires in 7 days.
- First callHeadlessGET /v1/customers 200 with the sandbox key; MCP server/discover at mcp.stripe.com accepted the same key as Bearer.
- First actionHeadlessPOST /v1/payment_intents with test card pm_card_visa: status succeeded, read back by GET.
- PayNot triedStripe itself is pay-as-you-go with no setup or monthly fee (stripe.com/de/pricing), so there is no plan to buy; going live needs an account application in the Dashboard, which we could not reach (sign-up stopped at hCaptcha). Agent-native rails exist only on a side product: climate.stripe.dev/api/contribute (listed first-party on mpp.dev) answered 402 with PAYMENT-REQUIRED x402Version 2 and WWW-Authenticate: Payment. Not paid: no wallet.
- CancelNot neededNothing to cancel: our agent used the free plan.
- DeleteBlockedOur customers, coupon and webhook endpoint were deleted, the invoice voided, and the product/prices/payment link archived or deactivated via the API, but the sandbox account itself was not deleted: DELETE /v1/account returned 400 ('only on connected accounts'), the CLI has no sandbox-delete command, and the rkcs_test_ key still works (no rejected call was shown afterward). It is documented to expire unclaimed on the 13 Oct 2026 MCP spec, but that is not an agent-performed, verified deletion.
The attempt log · 54 attempts
| Capability | Route | Result | Evidence |
|---|---|---|---|
| robots.txt / aipref: Fetch stripe.com/robots.txt | api | done ✓ | 200 text/plain; groups for ia_archiver, *, rogerbot; no Content-Usage or Content-signal lines; no Disallow affecting our agent beyond /handoff etc. |
| MCP PRM: GET mcp.stripe.com/.well-known/oauth-protected-resource | api | done ✓ | 200 application/json {"resource":"https://mcp.stripe.com","authorization_servers":["https://access.stripe.com/mcp"]} |
| docs: Read llms.txt and docs as markdown | api | done ✓ | docs.stripe.com/llms.txt 200 text/markdown (92 KB) with LLM-agent instructions; .md URLs work (docs.stripe.com/cli/sandbox.md 200 text/markdown); docs/cli/sandbox.md documents `stripe sandbox create` provisioning a sandbox with test keys without an account via proof-of-work |
| credentials: stripe sandbox create --email <inbox> --non-interactive (no account) | cli | done ✓ | CLI v1.53.0 provisioned claimable sandbox [redacted] in 1.9 s via proof-of-work; returned rkcs_test_ restricted key + pk_test + claim_url, expires 2026-10-13 (7 days); keys saved to CLI profile |
| The first call: GET /v1/balance, /v1/account, then GET /v1/customers | api | done ✓ | /v1/balance and /v1/account 403 'This is a claimable sandbox key with limited permissions. Use the claim URL...'; /v1/customers 200 list |
| Accept an online card payment: Create+confirm a $19.99 PaymentIntent with test card pm_card_visa, read back | api | done ✓ | POST /v1/payment_intents -> pi_3UNPvBPTuDFQX5QN1CuvR41C status succeeded; GET shows succeeded, latest_charge ch_3UNPvBPTuDFQX5QN1UWctMxP. Retry with same Idempotency-Key returned same id (pi_3UNPvBPTuDFQX5QN1CuvR41C); changed body with same key -> 400 This is an unclaimed Stripe sandbox. Dashboard links in this error message will not work until the sandbox is claimed. K |
| The first action: First object created: PaymentIntent | api | done ✓ | pi_3UNPvBPTuDFQX5QN1CuvR41C succeeded (test mode) |
| Manage products and prices in the catalog: Create product, one-time and monthly price, update product description, read back | api | done ✓ | product prod_VOCK5CyLqQI2uo, prices price_1UNPvVPTuDFQX5QND8NIIegJ (1500 usd) and price_1UNPvVPTuDFQX5QN8eyPfyb9 (900 usd/month); GET product shows description 'Updated by AgentDrives', GET price unit_amount 1500 |
| Create a no-code payment link: Create payment link for the $15 price, read back, open URL | api | done ✓ | plink_1UNPvXPTuDFQX5QNd7Wh29OT active:true; https://buy.stripe.com/test_bJebJ37SF4U67UJ2jSffy00 returns 200 |
| Refund a payment: Partial refund $5 of the $19.99 PaymentIntent | api | done ✓ | re_3UNPvBPTuDFQX5QN1vNGaPO9 status succeeded; charge amount_refunded=500, refunded=false (partial, as expected) |
| Create and manage a subscription: Customer + attached test card; create $9/month subscription, update quantity to 2, cancel, read back | api | done ✓ | sub_1UNPvkPTuDFQX5QNQUOebb5Y status active on create; quantity updated to 2; DELETE -> GET status canceled |
| Send a one-time or recurring invoice: Create send_invoice invoice for our test customer, add $50 item, finalize, send, read back | api | done ✓ | in_1UNPvzPTuDFQX5QNReY9WY9H finalized status open, total 4000; POST /send -> 200; hosted_invoice_url returns 200 |
| Apply a coupon or promotion code: Create 20% once coupon + promotion code AGENTDRIVES20, apply coupon to invoice | api | done ✓ | coupon uHNxxKMK, promo promo_1UNPvyPTuDFQX5QNtjxtmroo; GET invoice subtotal 5000 total 4000 (20% off) discount amounts [{'amount': 1000, 'discount': 'di_1UNPvzPTuDFQX5QNkYFMNQ0w'}] |
| Receive event notifications via webhooks: Create webhook endpoint via API; receive a signed event via `stripe listen` forwarding after creating a PaymentIntent | cli | done ✓ | POST /v1/webhook_endpoints -> we_1UNPwMPTuDFQX5QNx14jZhG8 (GET status enabled); `stripe listen --format json` got whsec_ signing secret and received payment_intent.succeeded evt_3UNPxDPTuDFQX5QN15YFfDmn for pi_3UNPxDPTuDFQX5QN1KQTgXWZ |
| Meter usage-based billing: POST /v1/billing/meters and /v1/billing/meter_events | api | blocked ✓ | 403 'The provided key rkcs_test_… does not have access to this endpoint. This is a claimable sandbox key with limited permissions. Use the claim URL provided when the sandbox was created to get a full API key' |
| Route payments and payouts for a connected platform/marketplace: POST /v1/accounts (express, US) | api | blocked ✓ | 403 'The provided key rkcs_test_… does not have access to this endpoint. This is a claimable sandbox key with limited permissions. Use the claim URL provided when the sandbox was created to get a full API key' |
| Accept in-person payments via Terminal: POST /v1/terminal/locations (prerequisite for a simulated reader) | api | blocked ✓ | 403 'The provided key rkcs_test_… does not have access to this endpoint. This is a claimable sandbox key with limited permissions. Use the claim URL provided when the sandbox was created to get a full API key' |
| Create and track a credit note: POST /v1/credit_notes against the finalized invoice | api | blocked ✓ | 403 'The provided key rkcs_test_… does not have access to this endpoint. This is a claimable sandbox key with limited permissions. Use the claim URL provided when the sandbox was created to get a full API key' |
| Automate sales tax and VAT calculation/filing: POST /v1/tax/calculations (US 98101) | api | blocked ✓ | 403 'The provided key rkcs_test_… does not have access to this endpoint. This is a claimable sandbox key with limited permissions. Use the claim URL provided when the sandbox was created to get a full API key' |
| Automate revenue recognition entries: POST /v1/reporting/report_runs balance.summary.1 | api | blocked ✓ | 403 'The provided key rkcs_test_… does not have access to this endpoint. This is a claimable sandbox key with limited permissions. Use the claim URL provided when the sandbox was created to get a full API key' |
| Enable additional local/alternative payment methods: GET /v1/payment_method_configurations | api | blocked ✓ | 403 'The provided key rkcs_test_… does not have access to this endpoint. This is a claimable sandbox key with limited permissions. Use the claim URL provided when the sandbox was created to get a full API key' |
| Verify linked bank account data (Financial Connections): POST /v1/financial_connections/sessions | api | blocked ✓ | 403 'The provided key rkcs_test_… does not have access to this endpoint. This is a claimable sandbox key with limited permissions. Use the claim URL provided when the sandbox was created to get a full API key' |
| Send payouts to third parties (Global Payouts): POST /v1/payouts | api | blocked ✓ | 403 'The provided key rkcs_test_… does not have access to this endpoint. This is a claimable sandbox key with limited permissions. Use the claim URL provided when the sandbox was created to get a full API key' |
| Issue physical or virtual cards: POST /v1/issuing/cardholders | api | blocked ✓ | 403 'The provided key rkcs_test_… does not have access to this endpoint. This is a claimable sandbox key with limited permissions. Use the claim URL provided when the sandbox was created to get a full API key' |
| Manage disputes and chargebacks: Create disputed test payment (pm_card_createDispute -> charge disputed=True), then GET /v1/disputes | api | blocked ✓ | 403 'The provided key rkcs_test_… does not have access to this endpoint. This is a claimable sandbox key with limited permissions. Use the claim URL provided when the sandbox was created to get a full API key' |
| Offer embedded financial services to platform users (Treasury): POST /v1/treasury/financial_accounts | api | blocked ✓ | 400 'Unrecognized request URL (POST: /v1/treasury/financial_accounts)' on the unclaimed sandbox (GET list gave the claimable-sandbox limited-permission message) |
| Configure business/branding settings: POST /v1/account business_profile[name] | api | failed ✓ | 400 'You cannot use this method on your own account: you may only use it on connected accounts.'; GET /v1/account 403 limited key |
| MCP version: POST server/discover to https://mcp.stripe.com (2026-07-28), unauthenticated then with sandbox key | mcp | done ✓ | no key: 401 www-authenticate Bearer resource_metadata=…/.well-known/oauth-protected-resource; with Bearer rkcs key: 200 supportedVersions [2026-07-28, 2025-03-26], serverInfo stripe-mcp 1.0.0, extensions io.modelcontextprotocol/skills; tools/list: 9 tools |
| Search Stripe documentation and knowledge base from an agent: MCP search_stripe_documentation 'How do I record usage with billing meter events?' | mcp | done ✓ | tools/call returned results with titles and docs.stripe.com URLs (e.g. changelog usage-based-billing-v2-meter-events-api) |
| MCP write/read: MCP stripe_api_write PostCustomers, read back via stripe_api_read and REST | mcp | done ✓ | created cus_VOCM8UFnOmvBGk (MCP response redacts name/email as [REDACTED]); REST GET name='AgentDrives Test MCP'. stripe_api_read first failed 'Missing required path parameters: id' although the schema description says to pass 'customer'; retried with id -> ok |
| Run custom SQL reports on payments data (Sigma): MCP stripe_analytics execute_query_run 'select count(*), sum(amount) from charges' | mcp | blocked ✓ | isError: 'Permission denied ... Enabling Financial Statement Read (report_runs_and_report_types_read) permissions on this key would allow this request' (unclaimed sandbox key) |
| Embed a prebuilt Checkout page: Create a Checkout Session via API, complete it in a browser with Stripe test card 4242 (sandbox, no money) | browser | done ✓ | POST /v1/checkout/sessions -> cs_test_a11OLA2tp9aZuIri4oneb1H0PX9YodlydQ87FQY99puXS0LnYJ3mE3hNrH (open); hosted page completed in browser, redirected to success_url; GET shows status complete, payment_status paid, 1500 usd |
| signup: Claim the sandbox: open claim_url, fill Stripe sign-up form (email = inbox, name AgentDrives Test, generated password, country left at the form default), click Create account | browser | blocked ✓ | claim_url redirects to dashboard.stripe.com/register?claim=…; after Create account a visible hCaptcha picture puzzle appeared ('Tap on all things that can be filled up using air'). |
| verify: Email verification | none | skipped | No full account was created (sign-up stopped at hCaptcha); the CLI sandbox route asked for no verification |
| pay: Probe 402 rails: api.stripe.com, x402./mpp./agents.stripe.com, /.well-known/ucp, auth.md, SKILL.md; registries mpp.dev and x402 Bazaar | api | partial ✓ | api.stripe.com unauthenticated 401 Basic realm=Stripe (no 402); x402./mpp./agents.stripe.com answer as the API host (401/404 JSON), no 402; /.well-known/ucp, /auth.md, /SKILL.md 404. mpp.dev lists stripe-climate (first-party, https://climate.stripe.dev). x402 Bazaar: no stripe.com resources. |
| pay: Unpaid POST https://climate.stripe.dev/api/contribute {amount:1} | api | partial ✓ | 402 application/problem+json (type https://paymentauth.org/problems/payment-required); PAYMENT-REQUIRED base64 x402Version 2, scheme exact, network eip155:8453, USDC 0x8335…2913, amount 10000; WWW-Authenticate: Payment method=tempo intent=charge and method=evm intent=charge |
| pay: How would an agent start paying for Stripe itself | none | blocked | Stripe has no plan to buy: it is free to start and charges per transaction once the account is activated for live payments. Activation runs through the Dashboard account application (claimable-sandboxes doc: user must complete an account application before going live). Our sign-up stopped at hCaptcha before that. |
| pay: Read stripe.com/pricing | api | done ✓ | stripe.com/pricing redirects to /de/pricing (geo); text: 'Pay-as-you-go-Preisen zu: Keine Einrichtungsgebühren, monatlichen Gebühren oder versteckten Gebühren' (no setup, monthly or hidden fees) |
| Build a custom payment UI with Elements: Mount the Payment Element (Stripe.js, publishable key + PaymentIntent client_secret) on a page, fill test card 4242, stripe.confirmPayment | browser | done ✓ | confirmPayment returned status succeeded; GET /v1/payment_intents/pi_3UNQ3ePTuDFQX5QN0ubhIuv0 status succeeded, payment_method pm_1UNQ3tPTuDFQX5QN7thdH9Bb |
| Sync Stripe data to a warehouse (Data Pipeline): UI-only capability | none | blocked | Dashboard-only per map; no Dashboard access: sandbox unclaimed (sign-up stopped at hCaptcha) |
| Boost card authorization rates automatically: UI-only capability | none | blocked | Dashboard-only setting; no Dashboard access (sandbox unclaimed) |
| Offer Link accelerated/saved-card checkout: UI-only capability | none | blocked | Dashboard/Checkout toggle; no Dashboard access. Link opt-in box was shown on our Checkout page (not used) |
| Apply for business financing (Capital): UI-only capability | none | blocked | Dashboard-only, needs a live activated account |
| Issue stablecoin-backed or crypto payments: UI-only capability | none | blocked | Dashboard-only per map; no Dashboard access |
| Embed a crypto on-ramp for customers: UI-only capability | none | blocked | Onramp needs approval in the Dashboard; no Dashboard access |
| Install third-party app integrations from the marketplace: UI-only capability | none | blocked | marketplace install needs Dashboard login; sandbox unclaimed |
| Invite and manage team members with roles: UI-only capability | none | blocked | Dashboard-only; sandbox unclaimed; would also message a third party |
| Purchase a managed support plan: UI-only capability | none | skipped | Dashboard-only and costs money: not attempted |
| Monetize/sell through agentic commerce (AI checkout): Seller side of machine payments (x402): POST /v1/crypto/deposit_addresses network=base with Stripe-Version 2026-05-27.preview | api | blocked ✓ | 403: The provided key 'rkcs_test_51*******************************************************************************************uQEh' does not have access to this endpoint. This is a claimable sandbox key wi |
| delete: Delete what we created and the sandbox itself | api | partial ✓ | Deleted 2 customers, the coupon and the webhook endpoint (deleted:true); voided the invoice; archived product, 2 prices, deactivated the payment link (products with prices cannot be deleted); GET /v1/customers -> 0. DELETE /v1/account -> 400 'You cannot use this method on your own account: you may only use it on connected accounts.' No sandbox delete command in the CLI (sandbox has create and claim only); docs: the unclaimed sandbox expires after 7 days (2026-10-13). |
| cancel: Cancel or downgrade a plan | none | skipped ✓ | No plan was started; Stripe pricing is pay-as-you-go with no monthly fee (stripe.com/de/pricing); the test subscription we created for a customer was cancelled via DELETE /v1/subscriptions |
| markdown: Accept: text/markdown on docs.stripe.com/payments/checkout; .md URLs | api | done ✓ | content-type text/markdown, vary: Accept, Accept-Language; docs.stripe.com/<page>.md also 200 text/markdown |
| OpenAPI: Official spec github.com/stripe/openapi latest/openapi.spec3.sdk.json | api | done ✓ | openapi: 3.0.0, info.version 2026-09-30.endive (live API header stripe-version: 2026-09-30.endive) |
| MCP auth: GET https://access.stripe.com/.well-known/oauth-authorization-server/mcp | api | done ✓ | issuer access.stripe.com/mcp; registration_endpoint …/oauth2/register (DCR); no client_id_metadata_document_supported; grant types authorization_code, refresh_token; PKCE S256; no device_authorization_endpoint; no agent_auth block |
Also in Payments.
Lemon SqueezyL1Can't sign up on its ownStripe vs Lemon Squeezy
MollieL1Can't sign up on its ownStripe vs Mollie
PolarL1Can't sign up on its ownStripe vs Polar