Refund the full captured amount
post/payment/{service}/v1/tenants/{tenant_id}/payments/{payment_id}/refund
Requires an API key
Requires billing:refund. One full refund per payment. Pending refunds are reconciled by reading status. Partial refunds and Connect payouts are outside this initial adapter.
Path parameters
- tenant_idintegerRequired
- servicestringRequired
- payment_idstringRequired
Headers
- idempotency-keystringRequired
Returns · 200
- idstringRequired
- bill_idstringRequired
- tenant_idintegerRequired
- servicestringRequired
- statusenumRequiredOne of
preparing,pending,authorized,captured,canceled,refund_pending,refund_failed,refunded - hold_minorintegerRequired
- captured_minorintegerRequired
- refunded_minorintegerRequired
- currencystringDefault
"USD" - payment_modeenumRequiredlive only for a Stripe payment taken in live mode on a connected account, as the provider recorded it at authorization; test otherwise.One of
test,live - authorized_atstring (date-time) | nullWhen Stripe authorized the hold (the Charge's creation time); null before authorization and for the simulator.
- next_actionobject | nullRequired
POST /payment/{service}/v1/tenants/{tenant_id}/payments/{payment_id}/refund
curl --fail-with-body -X POST "https://api.ivoracharge.com/payment/simulator/v1/tenants/1042/payments/payment_0123456789abcdef/refund" \
-H "Authorization: Bearer $IVORA_API_KEY" \
-H "Idempotency-Key: order-2026-09-30-0001"Response · 200
{
"id": "id_0123456789abcdef",
"bill_id": "bill_0123456789abcdef",
"tenant_id": 1042,
"service": "simulator",
"status": "preparing",
"hold_minor": 1250,
"captured_minor": 1250,
"refunded_minor": 1250,
"currency": "USD",
"payment_mode": "test",
"authorized_at": "2026-09-30T17:00:00Z",
"next_action": {}
}Try it is not available here yetRequests from this page are off until the production API at
https://api.ivoracharge.com is public. Use the code samples from your application server; Ivora grants production access. Keys are created in Developer tools.