What you can test

Endpoint-by-endpoint coverage of the sandbox.

Fully supported with sk_test_

Area Endpoints
Checkout POST /v1/checkout/sessions, retrieve, list, PATCH, expire
Products & prices /v1/products, /v1/products/{id}/prices
Customers /v1/customers (create, list, retrieve, update, delete)
Invoices /v1/invoices, items, send, mark_paid, /installments, /payments
Subscriptions /v1/subscriptions (create, list, retrieve, update, cancel)
Refunds POST /v1/refunds, retrieve, list
Payments GET /v1/payments (list, retrieve, status & source filters)
Events GET /v1/events
Webhook endpoints /v1/webhook_endpoints (CRUD, secret rotation, deliveries)
Balance GET /v1/balance (test balance, always zero-settlement)

Objects created with a test key carry "livemode": false.

Live-only (a test key is rejected)

Area Why
/v1/subscription_links Hosted links always create live subscriptions
Payouts There is no money to pay out in test mode
Store API (/v1/store/*) Storefronts run against your live catalogue
Hosted invoice payment pages Test invoices are settled via checkout sessions or mark_paid
Instant payouts, fee ledger, accounting exports Live accounting only

Disputes

Pay with 4000 0000 0000 0259. The payment succeeds, then turns into a dispute: the payment is flagged as disputed and you receive charge.dispute.created on your test webhook endpoint.