Skip to main content
POST
cURL

Authorizations

Authorization
string
header
required

Bearer access token from POST /v1/auth/token. Treat it as an opaque string — do not depend on its internal encoding, which has changed before and isn't part of the contract.

Path Parameters

transaction_id
string<uuid>
required

UUID of the transaction being refunded against.

Body

application/json

Refund a transaction whose settlement batch has closed.

While the batch is still open, void the transaction instead. The refund is created as its own transaction, so it carries a request_id idempotency key, just like a sale, rather than an operation_id.

You don't send card details: the refund goes back to the card used on the original transaction.

amount
MoneyAmount · object
required

Refund amount as a {currency, value} money object (≤ original amount − prior refunds). currency must match the transaction being refunded.

request_id
string
required

Merchant idempotency key for the refund transaction.

Required string length: 8 - 64
reason
string | null

Optional human-readable reason for the refund.

Maximum string length: 200

Response

Successful Response

Standard success envelope. Every successful response has this shape, with the operation's own payload under data.

data
TransactionResponse · object | null

The operation's result. Its shape is documented per operation; omitted on responses that carry no payload.

message
string | null

Optional human-readable note. Omitted from the response when not set, which is the case for every payment operation today. Never parse it.

request_id
string | null

Correlation ID for this HTTP request, for logs and support. Send your own in the X-Request-Id header (letters, digits and hyphens, up to 36 characters -- other characters are stripped) or the gateway generates one. This is NOT the request_id idempotency key you send in a transaction body; the two are unrelated.

status
string
default:ok

Always ok on a successful (2xx) response. Errors use a different body shape entirely (RFC 9457 problem details), so branch on the HTTP status code, not on this field.

Last modified on September 15, 2026