API template library

Stripe mock API and live sandbox

A WireMock simulation of Stripe's REST API — covering payments, customers, billing, Connect, Issuing, Terminal, Treasury, and the v2 endpoints.

Vendor
Stripe
Functionality
Payments, billing, Connect, Issuing
Spec version
2026-09-30.endive
Endpoints
644
Stubs
1062
Protocol
REST
Validation
AI-validated Before publication, an AI agent exercised these endpoints against the real Stripe API through WireMock's recording proxy, and the recorded traffic was used to verify each stub's request and response shapes.

Live sandbox · no signup, no API key

Stripe API (Stateful)

A running WireMock Cloud instance of this template, callable right now from a terminal, a script, or an AI agent.

Base URL
https://library-jy0k6.wiremockapi.cloud

GET List customers (newest first)

curl -s -X GET 'https://library-jy0k6.wiremockapi.cloud/v1/customers'

POST Create a customer

curl -s -X POST 'https://library-jy0k6.wiremockapi.cloud/v1/customers' \
  -H 'Content-Type: application/x-www-form-urlencoded' \
  -d 'email=jenny.rosen%40example.com&name=Jenny%20Rosen'

POST Create and confirm a PaymentIntent with a test card

curl -s -X POST 'https://library-jy0k6.wiremockapi.cloud/v1/payment_intents' \
  -H 'Content-Type: application/x-www-form-urlencoded' \
  -d 'amount=2000&currency=usd&payment_method=pm_card_visa&confirm=true'
Method Path Summary
GET /v1/account Retrieve account
POST /v1/account_links Create an account link
POST /v1/account_sessions Create an Account Session
GET /v1/accounts List all connected accounts
POST /v1/accounts Create an account
DELETE /v1/accounts/{account} Delete an account
GET /v1/accounts/{account} Retrieve account
POST /v1/accounts/{account} Update an account
POST /v1/accounts/{account}/bank_accounts Create an external account
DELETE /v1/accounts/{account}/bank_accounts/{id} Delete an external account
GET /v1/accounts/{account}/bank_accounts/{id} Retrieve an external account
POST /v1/accounts/{account}/bank_accounts/{id} Update a bank account
GET /v1/accounts/{account}/capabilities List all account capabilities
GET /v1/accounts/{account}/capabilities/{capability} Retrieve an Account Capability
POST /v1/accounts/{account}/capabilities/{capability} Update an Account Capability
GET /v1/accounts/{account}/external_accounts List all external accounts
POST /v1/accounts/{account}/external_accounts Create an external account
DELETE /v1/accounts/{account}/external_accounts/{id} Delete an external account
GET /v1/accounts/{account}/external_accounts/{id} Retrieve an external account
POST /v1/accounts/{account}/external_accounts/{id} Update a bank account
POST /v1/accounts/{account}/login_links Create a login link
GET /v1/accounts/{account}/people List all persons
POST /v1/accounts/{account}/people Create a person
DELETE /v1/accounts/{account}/people/{person} Delete a person
GET /v1/accounts/{account}/people/{person} Retrieve a person
POST /v1/accounts/{account}/people/{person} Update a person
GET /v1/accounts/{account}/persons List all persons
POST /v1/accounts/{account}/persons Create a person
DELETE /v1/accounts/{account}/persons/{person} Delete a person
GET /v1/accounts/{account}/persons/{person} Retrieve a person
POST /v1/accounts/{account}/persons/{person} Update a person
POST /v1/accounts/{account}/reject Reject an account
POST /v1/accounts/{account}/unreject Unreject an account
GET /v1/apple_pay/domains GetApplePayDomains
POST /v1/apple_pay/domains PostApplePayDomains
DELETE /v1/apple_pay/domains/{domain} DeleteApplePayDomainsDomain
GET /v1/apple_pay/domains/{domain} GetApplePayDomainsDomain
GET /v1/application_fees List all application fees
GET /v1/application_fees/{fee}/refunds/{id} Retrieve an application fee refund
POST /v1/application_fees/{fee}/refunds/{id} Update an application fee refund
GET /v1/application_fees/{id} Retrieve an application fee
POST /v1/application_fees/{id}/refund PostApplicationFeesIdRefund
GET /v1/application_fees/{id}/refunds List all application fee refunds
POST /v1/application_fees/{id}/refunds Create an application fee refund
GET /v1/apps/installs List all app installs
POST /v1/apps/installs Create an app install
GET /v1/apps/installs/{id} Retrieve an app install
POST /v1/apps/installs/{id} Update an app install
POST /v1/apps/installs/{id}/uninstall Uninstall an app install
GET /v1/apps/secrets List secrets
POST /v1/apps/secrets Set a Secret
POST /v1/apps/secrets/delete Delete a Secret
GET /v1/apps/secrets/find Find a Secret
GET /v1/balance Retrieve balance
GET /v1/balance_settings Retrieve balance settings
POST /v1/balance_settings Update balance settings
GET /v1/balance_transactions List all balance transactions
GET /v1/balance_transactions/{id} Retrieve a balance transaction
GET /v1/balance/history List all balance transactions
GET /v1/balance/history/{id} Retrieve a balance transaction

+584 more endpoints in the full spec.

Unauthenticated WireMock Cloud demo sandbox for Stripe — not an official Stripe sandbox, and it returns simulated example data only.

What's inside the Stripe template

This template covers every operation in Stripe's published OpenAPI description for API version 2026-09-30.endive, v1 and v2 alike, and every resource it creates is stored. A customer you create comes back on retrieve, takes metadata updates, and reads as deleted after a DELETE. Confirming a PaymentIntent mints a linked charge, a partial refund raises that charge's amount_refunded, and an invoice built from pending invoice items carries its lines and totals through finalize (which assigns a number) to paid. Unknown ids get Stripe's own resource_missing error on a 404, so the error-handling branches in your client run too.

  • Payments — PaymentIntents with automatic or manual capture, SetupIntents, payment methods, charges, and refunds
  • Customers — customer records plus their balance transactions, tax ids, cash balance, and saved sources
  • Billing — products, prices, subscriptions and schedules, invoices and invoice items, credit notes, quotes, and meters
  • Disputes & Radar — disputes, early fraud warnings, reviews, and value lists, populated by the fraud test cards
  • Connect — connected accounts, persons, external accounts, transfers, payouts, and application fees
  • Checkout & hosted surfaces — Checkout Sessions, Payment Links, and billing-portal configuration
  • Issuing, Treasury & Terminal — cardholders, cards, and authorizations; financial accounts and money movement; readers and in-person PIN flows
  • v2 API — event destinations, billing meter events and the meter event stream, and core accounts

Example implementation using stripe-python

stripe-python's StripeClient takes a base-address override, so pointing an integration at the sandbox changes the constructor and nothing else:

Code that still configures the module globally works the same way: set stripe.api_base to the sandbox URL next to stripe.api_key. Decline scenarios surface exactly as they do in production — confirm with the insufficient-funds test card and the SDK raises stripe.CardError carrying code card_declined, decline_code insufficient_funds, and HTTP status 402.

That makes the mock a fit for exercising checkout and retry logic in CI without a Stripe account, for scripting a decline or a dispute on demand instead of hunting for the right test-mode setup, and for giving an AI coding agent a payments backend it can call freely.

from stripe import StripeClient

# the sandbox URL, or your own mock's —
# the api key is accepted but never validated
client = StripeClient(
    "sk_test_any_value",
    base_addresses={"api": "https://library-jy0k6.wiremockapi.cloud"},
)

customer = client.v1.customers.create({"email": "jenny@example.com"})
intent = client.v1.payment_intents.create({
    "amount": 2000,
    "currency": "usd",
    "customer": customer.id,
    "payment_method": "pm_card_visa",
    "confirm": True,
})
print(intent.status)  # succeeded

Frequently asked questions

No. Requests succeed with any sk_test-style value or with no Authorization header at all. Never paste a live or restricted key into code aimed at the shared sandbox — it's a public endpoint, and the mock has no use for a real credential.

The documented test payment methods are wired in. pm_card_visa confirms to succeeded; the pm_card_chargeDeclined family returns a 402 card_error with the matching decline_code; pm_card_threeDSecure2Required stops at requires_action; pm_card_createDispute opens a fraudulent dispute in needs_response; pm_card_riskLevelElevated attaches a Radar review. SEPA Direct Debit test IBANs start in processing and settle — to succeeded or back to requires_payment_method — the next time you retrieve the PaymentIntent.

Not fully. List endpoints return the whole stored collection, newest first, with has_more always false — limit and starting_after are ignored, so auto-paging loops end after one page. expand[] leaves related objects as id strings, and the /search endpoints answer with a search_result list that doesn't apply your query. Assertions should look objects up by id rather than rely on page boundaries.

No events are delivered. Webhook endpoints and v2 event destinations can be created and read back, but nothing is POSTed to them, and asynchronous outcomes are modeled as state you observe on retrieval instead. Drive your webhook handler with event payloads directly, or add delivery to a WireMock Cloud copy.

No — it's one shared store, so lists include objects other visitors created, and an Idempotency-Key header is accepted without deduplication: a retried POST creates a second object. For isolated state you can reset between test runs, open the template in your own WireMock Cloud account.

Vendor names identify APIs represented by WireMock template sources. This page does not imply vendor endorsement, certification, partnership, or official integration status.