Before you start
1
Get a test key
Sign in to the dashboard and create a key under API
Keys. It starts with
rk_test_ and works against the real API with no real money.2
Add a test merchant
Under Merchants, add one. In test mode it is backed by Ringup’s test processor account
automatically: no merchant signup, no OAuth. Copy its
merchant_id (mch_…).The arc
1
Recognize a caller
Ringup recognizes a caller from their phone number, which arrives the instant the call
connects. Try it with your own number:
Response
known: false is the ordinary first call, not an error. By the end of this page the same
request returns your name. See Caller Identity.2
Open a Checkout Session
When the order is ready to pay, create a Checkout Session for the caller at your test
merchant. It resolves the amount, applies the merchant’s
payment policy, and returns the caller’s chargeable cards:
Response
cards is empty: this caller has nothing saved yet. That is exactly what
send_link is for.3
Save a card the way callers do
Text the pay link to the caller (you):Your phone gets an SMS. Open it, enter a name and email, and pay with the test card
4111 1111 1111 1111, any future expiry, any CVC. The page saves the card and settles the
payment against the test processor, and your server (once you
register a webhook) receives checkout.succeeded.4
Now you are a regular: charge the saved card
Run Open a fresh Checkout Session and That is the whole in-agent payment path:
identify again with the same number:Response
cards now carries the Visa you just saved. After the
caller agrees out loud, charge it:Response
identify at the greeting, create_checkout when
the order is ready, charge when the caller says yes. Only succeeded moved money. Open the
session with the merchant’s order_id and it comes back on the charge, the number the agent
reads out as the confirmation. See Charge.5
Add it to your agent
You integrate one of two ways, and every platform guide documents both:
- In your agent (API). Keep the caller in your own agent and add the endpoints you just called. Nothing transfers, and no card data touches your agent. The flexible path.
- Hosted call transfer. Your agent transfers the live call to Ringup’s payment line
(
transfer_to, ortransfer_to_numberfor platforms that only dial numbers), so you write no payment logic. The easiest path.
There is no per-merchant setup in your code: you pass
merchant_id (resolved from the number the
caller dialed) on every call, and each merchant activates for payments the moment its processor
connects. Until then its sessions come back payment_required: "none" and the call runs normally.