ringup-vapi-init commands
that wire demos and rehearsals for you.
The sandbox test card
Every sandbox payment runs on one card. When a sandbox call texts a pay link, enter this card:| Field | Value |
|---|---|
| Card number | 4111 1111 1111 1111 |
| Expiry | any future date (for example 12/34) |
| CVV | any 3 digits (for example 111) |
| ZIP / postal code | any (for example 94103) |
To test a declined payment, use
4000 0000 0000 0002. It always declines, so you can
exercise your failure path and the checkout.failed webhook.+14155550142 already has this card on file, so a call from that
number charges the saved card without a link.
Three tiers of testing
Canned demos
npx ringup-vapi-init test builds a complete demo squad in your org: sandbox merchant,
demo caller, try-saying script covering the required and optional branches. Zero contact
with anything you own; test --clean removes it.Rehearsal on a private line
npx ringup-vapi-init stage wires a disposable copy of your own agent to a free test
number. You hear your actual agent, your actual prompts, and the full payment flow on a
real phone call, before anything you own changes.Reading test results
The charge response is ground truth, not the assistant’s words. Only asucceeded
charge result with a payment id and confirmation code proves a payment happened. An agent
can narrate success it did not have; the API result cannot.
Text-chat smoke tests cannot prove voice. Vapi chat pipelines assemble handoffs
differently from voice pipelines. Validate squads with a voice call.