Refunds
Refunds operate on a provider capture through
POST /api/payments/captures/{capture_id}/refund.
Request fields are strict: an unrecognized property returns 422 Unprocessable Entity. Send only the documented fields and field names.
Full and partial refunds
Section titled “Full and partial refunds”- Omit the request body, or omit
amount, for a full refund. - Send an
amountfor a partial refund. The schema requires a value greater than zero and accepts the amount representation declared by OpenAPI. - The capture must belong to the merchant represented by the credential.
Supply Idempotency-Key when retrying. Reusing a completed operation’s key
replays its outcome instead of issuing the refund twice. Keep that key attached
to your own refund record and do not reuse it for a different refund intent.
The operation accepts the security alternatives declared in the API contract: a suitably authorized dashboard session, a merchant API key, or a channel API key paired with the merchant header. A browser should never call it with a secret key.
After an accepted response, reconcile transaction state and process
payment.refunded through your duplicate-safe webhook handler.
Current limits
Section titled “Current limits”Refunds target provider captures, not checkout sessions, merchant order IDs, or browser callbacks. A refund response is not a channel statement or remittance record, and the operation does not accept an arbitrary target merchant from the request body.