verification
SDKverified with stripe-go/v86 v86.3.0verified with stripe-node 22.5.0 (floor)· surface 158 · not implemented 7 · differs 5
use it
# add to stunt.yaml
services:
stripe:
adapter: embedded:stripe-style
# then
$ stunt upThe embedded: source extracts this adapter from the binary — no git clone, fully offline.
how to mock the Stripe API locally
Install stunt, paste the service block above into stunt.yaml, run stunt up — then point your client at localhost instead of Stripe API. It works offline, keeps state across requests and restarts, and every response is synthetic: the route shapes, status codes, pagination, and webhook delivery follow the real Stripe API 2025-01-27.acacia surface — the data is fake, the behavior is real.
backing stores
chargescustomersconnect_accountstransferspayouts
api surface (158)
generated from the adapter manifest — exactly what boots, nothing more · covers 24% of the real API's 568 routes (derived from sdk stripe-node @ 22.5.0 (floor))
158 routes
POST/v1/tokens
GET/v1/events
GET/v1/events/{id}
POST/v1/test_clocks
GET/v1/test_clocks
POST/v1/test_clocks/{id}/advance
GET/v1/test_clocks/{id}
DELETE/v1/test_clocks/{id}
POST/v1/test_helpers/test_clocks
GET/v1/test_helpers/test_clocks
POST/v1/test_helpers/test_clocks/{id}/advance
GET/v1/test_helpers/test_clocks/{id}
DELETE/v1/test_helpers/test_clocks/{id}
POST/v1/charges
GET/v1/charges/{id}
GET/v1/charges
POST/v1/charges/{id}/capture
POST/v1/charges/{id}/refund
POST/v1/payment_intents
POST/v1/payment_intents/{id}/confirm
POST/v1/payment_intents/{id}/capture
GET/v1/payment_intents/{id}
GET/v1/payment_intents
POST/v1/payment_methods
POST/v1/payment_methods/{id}/attach
POST/v1/payment_methods/{id}/detach
GET/v1/payment_methods/{id}
GET/v1/payment_methods
POST/v1/refunds
GET/v1/refunds/{id}
GET/v1/refunds
POST/v1/refunds/{id}/cancel
POST/v1/customers
GET/v1/customers/{id}
GET/v1/customers
POST/v1/customers/{id}
DELETE/v1/customers/{id}
POST/v1/products
GET/v1/products
GET/v1/products/{id}
POST/v1/products/{id}
DELETE/v1/products/{id}
POST/v1/prices
GET/v1/prices
GET/v1/prices/{id}
POST/v1/prices/{id}
POST/v1/subscriptions
GET/v1/subscriptions
GET/v1/subscriptions/{id}
POST/v1/subscriptions/{id}
POST/v1/subscriptions/{id}/cancel
GET/v1/subscription_items
POST/v1/subscription_items
POST/v1/subscription_items/{id}
DELETE/v1/subscription_items/{id}
POST/v1/subscription_items/{id}/usage_records
GET/v1/subscription_items/{id}/usage_records
POST/v1/invoices
GET/v1/invoices
GET/v1/invoices/upcoming
GET/v1/invoices/{id}
POST/v1/invoices/{id}
DELETE/v1/invoices/{id}
POST/v1/invoices/{id}/finalize
POST/v1/invoices/{id}/pay
POST/v1/invoices/{id}/send
POST/v1/invoices/{id}/void
POST/v1/invoices/{id}/mark_uncollectible
GET/v1/invoices/{id}/lines
POST/v1/invoice_items
GET/v1/invoice_items
GET/v1/invoice_items/{id}
POST/v1/invoice_items/{id}
DELETE/v1/invoice_items/{id}
POST/v1/credit_notes
GET/v1/credit_notes
GET/v1/credit_notes/preview
GET/v1/credit_notes/{id}
POST/v1/credit_notes/{id}
POST/v1/credit_notes/{id}/void
POST/v1/coupons
GET/v1/coupons
GET/v1/coupons/{id}
POST/v1/coupons/{id}
DELETE/v1/coupons/{id}
POST/v1/promotion_codes
GET/v1/promotion_codes
GET/v1/promotion_codes/{id}
POST/v1/promotion_codes/{id}
POST/v1/tax_rates
GET/v1/tax_rates
GET/v1/tax_rates/{id}
POST/v1/tax_rates/{id}
DELETE/v1/tax_rates/{id}
GET/v1/balance
GET/v1/balance_transactions
GET/v1/balance_transactions/{id}
GET/v1/disputes
GET/v1/disputes/{id}
POST/v1/disputes/{id}
POST/v1/disputes/{id}/close
GET/v1/application_fees
GET/v1/application_fees/{id}
GET/v1/application_fees/{id}/refunds
POST/v1/application_fees/{id}/refunds
POST/v1/application_fees/{id}/refund
POST/v1/checkout/sessions
GET/v1/checkout/sessions
GET/v1/checkout/sessions/{id}/line_items
POST/v1/checkout/sessions/{id}/expire
GET/v1/checkout/sessions/{id}
GET/c/pay/{id}
POST/v1/setup_intents
GET/v1/setup_intents
POST/v1/setup_intents/{id}/confirm
POST/v1/setup_intents/{id}/cancel
GET/v1/setup_intents/{id}
POST/v1/setup_intents/{id}
POST/v1/webhook_endpoints
GET/v1/webhook_endpoints
GET/v1/webhook_endpoints/{id}
POST/v1/webhook_endpoints/{id}
DELETE/v1/webhook_endpoints/{id}
POST/v1/files
GET/v1/files
GET/v1/files/{id}
POST/v1/file_links
GET/v1/file_links
GET/v1/file_links/{id}
POST/v1/file_links/{id}
POST/v1/accounts
GET/v1/accounts/{id}
POST/v1/accounts/{id}
GET/v1/accounts
POST/v1/accounts/{id}/persons
GET/v1/accounts/{id}/persons
GET/v1/accounts/{id}/persons/{person_id}
POST/v1/accounts/{id}/persons/{person_id}
DELETE/v1/accounts/{id}/persons/{person_id}
GET/v1/persons/{id}
POST/v1/persons/{id}
POST/v1/accounts/{id}/external_accounts
GET/v1/accounts/{id}/external_accounts
GET/v1/accounts/{id}/external_accounts/{ea_id}
DELETE/v1/accounts/{id}/external_accounts/{ea_id}
POST/v1/accounts/{id}/login_links
POST/v1/account_links
POST/v1/transfers
GET/v1/transfers/{id}
GET/v1/transfers
POST/v1/transfers/{id}/reversals
GET/v1/transfers/{id}/reversals
GET/v1/transfers/{id}/reversals/{tr_id}
POST/v1/payouts
GET/v1/payouts
GET/v1/payouts/{id}
POST/v1/payouts/{id}
POST/v1/payouts/{id}/cancel
SDK-verified behaviors (9)
- ✓customer.New (form+bracket body)
- ✓customer.Get round-trip
- ✓paymentintent create+confirm -> succeeded
- ✓charge.New (typed amount round-trip)
- ✓SDK iterator walks has_more pages (4+ over limit=2)
- ✓webhook.ConstructEvent verifies HMAC + parses data.object
- ✓Typed create/get (form+bracket encoded by the SDK)
- ✓autoPagingEach walks has_more pages
- ✓Webhook registration, delivery verified by the SDK's own constructEvent
Not implemented (7)
- No POST /v1/payment_intents/{id}/cancel
- No Payment Links API (/v1/payment_links)
- No Stripe Tax calculation, settings, or registration endpoints
- No Quotes, Identity, Radar, or Issuing APIs
- No Terminal, Financial Connections, Reporting, or Sigma surfaces
- No /v1/billing/meters or meter event stream endpoints
- No ephemeral keys or Apple Pay domain endpoints
Differs from the real API (5)
- Test clocks are one global time offset shared by all objects, not per-object clocks
- No proration lines on item changes; proration_behavior accepted but treated as none
- Checkout hosted page auto-completes 3DS/SCA cards instead of issuing a challenge
- Webhooks go to one sink; registered endpoints gate event types, not per-endpoint URLs
- Lifecycles compressed: refunds settle at +3s, payouts at +60s, disputes in 1 day
want more of the Stripe API surface? adapters are YAML + Starlark — the authoring guide covers adding routes, fixtures, and state machines. Open an issue for anything big first, or just file a PR — merged routes ship in the next release.