Direct API (S2S)

Refunds

How to refund a card payment, and the rules that limit it: full, once, within 29 days.

Tonder's refund functionality lets merchants return funds to customers for card transactions. You use it for returns, cancellations, or any situation requiring a payment reversal. Refunds are processed through the same unified /process/ endpoint using operation_type: "refund".

Refunds are only available for card payments. SPEI, OXXO Pay, and MercadoPago transactions cannot be refunded.

Prerequisites

  • The ID of the original transaction you want to refund.

Important limitations

  • Refunds work exclusively with credit and debit card transactions.
  • Each transaction can be refunded only once, and in full.
  • Refunds must be processed within 29 days after payment confirmation.

Step 1: make the refund request

Send your request to the /process/ endpoint with these four fields:

FieldTypeRequiredDescription
operation_typestringYesMust be "refund".
amountdecimalYesRefund amount (full).
currencystringYesCurrency code (must match the original transaction).
original_transaction_idstringYesID of the original payment transaction.
curl -X POST https://stage.tonder.io/api/v1/process/ \
  -H "Authorization: Token YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "operation_type": "refund",
    "amount": 50.00,
    "currency": "MXN",
    "original_transaction_id": "6ada8797-235e-4674-86de-7b23e90e1163"
  }'

Step 2: handle the response

On a successful request, the API returns an immediate acknowledgment:

{
  "id": "07230c98-e749-4d27-a90d-6f3e117205aa",
  "operation_type": "refund",
  "status": "Success",
  "amount": 50.0,
  "currency": "MXN",
  "client_reference": null,
  "transaction_id": "20832559",
  "provider": "tonder",
  "created_at": "2025-09-18T15:38:38.157382Z",
  "status_code": 201,
  "original_transaction_id": "6ada8797-235e-4674-86de-7b23e90e1163",
  "reason": null,
  "refund_id": "74"
}
FieldDescription
idUnique refund transaction identifier.
operation_typeType of operation ("refund").
statusCurrent refund status ("Success", "Failed", etc.).
amountRefunded amount.
currencyCurrency code.
original_transaction_idID of the original payment transaction.
refund_idInternal refund identifier.
created_atTimestamp when the refund was created.
status_codeHTTP status code of the response.

Always validate id (the unique identifier — store it) and status (the current refund state). Never rely on the HTTP status code alone.

Next steps

Was this page helpful?

On this page