Vouchereto API · v1
Hosted redeem widget
The customer already has a voucher. Instead of building a code field, send them to our page: the code never touches your servers, and brute-force protection is handled for you.
Flow
- Create a redeem session with the currency, your customer id and a
return_url. - Redirect to
url(valid 30 minutes). The customer types the code. - We reserve the voucher (and capture it if
auto_capture: true) and redirect toreturn_url?vouchereto_redemption=<id>&status=<reserved|captured>. - Read the redemption with
GET /v1/redemptions/{id}(never trust the query string alone), then capture or cancel it like in the direct API guide.
create a redeem session
POST /v1/redeem-sessions
Idempotency-Key: wallet-7720
{ "currency": "USD", "customer_ref": "user_8842", "return_url": "https://shop.example.com/wallet", "auto_capture": false }
201 Created
{
"id": "5e07fd31-6a4a-47b1-91bb-3c97011252b5",
"object": "redeem_session",
"url": "https://pay.vouchereto.com/r/5e07fd31-6a4a-47b1-91bb-3c97011252b5",
"status": "open",
"auto_capture": false,
"livemode": false,
"expires_at": "2026-10-22T17:53:00.000Z"
}
→ customer returns to
https://shop.example.com/wallet?vouchereto_redemption=f4e8b730-…&status=reserved
auto_capture
| Value | Use when |
|---|---|
false | You must do work before the money is final (default, recommended). Capture within the reservation window. |
true | Crediting cannot fail on your side. The customer returns with a captured redemption. |
The widget opens as a full page redirect today. An embeddable version is planned; it will use the same sessions.
Test it with a code from POST /v1/sandbox/vouchers and a test key.