Your first routed payment
This is the path the product is built around: a stranger goes from a link to a routed test payment without talking to anyone. Each step below names the screen, what to do on it, and what can refuse you.
Click any step to read what happens there and what can refuse it.
What each step needs
| Step | Needs | Refuses when |
|---|---|---|
| Enrol a second factor | Your password | The code is wrong or replayed within its 30-second step |
| Connect a provider | connections:write (owner, admin, developer) and a fresh second factor | The key is live-shaped, a secret key, unrecognized, rejected by the provider, or under-scoped |
| Create a payment | payments:write | Amount is not a positive integer |
| Confirm and route | payments:write | An attempt is already in flight; no eligible connection (the trace still says why) |
| Mint a key | api_keys:manage and a fresh second factor | A scope outside the fourteen key-grantable ones |
The overview keeps score
The four steps on the overview are read from the database each time. Watch them turn green as you go. If one stays grey after you did the thing, the thing did not happen: reload, then look at the screen the step links to for the refusal.
Where people get stuck
- "Validate and connect" asks for a code. Your second-factor verification is older than five minutes. Enter the code; the request is retried for you.
SECRET_KEY_NOT_ALLOWED_USE_RESTRICTED. You pastedsk_test_…. In Stripe: Developers → API keys → Create restricted key → Write on PaymentIntents, Charges, Refunds, Webhook Endpoints.- The connection is
DEGRADEDwithWEBHOOK_REGISTRATION_SCOPE_MISSING. The key lacks Webhook Endpoints: Write. It still routes. Either recreate the key with the permission and re-validate, or create the endpoint in Stripe at the URL the connection shows and paste thewhsec_secret through the API. - Confirm says
no_eligible_route. Open the trace: the matrix shows which filter stopped each connection. Usually PayNow with Manual capture, or noPAYINconnection on this merchant account. - The payment stays
PROCESSING. The connector worker is dispatching it to the provider sandbox. The outcome arrives by webhook or by the query loop; on a real Stripe sandbox that is seconds.