Pagos

Reembolsar un pago con tarjeta

Reembolsa un pago con tarjeta sin indicar el procesador — Tonder lo resuelve del lado del servidor a partir de la referencia de la transacción. Solo para integraciones API Direct y Web SDK.

POST
/business/{business_id}/payments/{transaction_reference}/refunds

Autorización

Authorization
Authorization<token>

Tu API key con prefijo Token , p. ej. Token <API_KEY>

In: header

Parámetros de ruta

business_id*string

Your business id — the number that appears in your dashboard URL and in Hosted Checkout session ids (cs_97_…).

transaction_reference*string

The unique reference of the original card payment. Required for card transactions.

Cuerpo de la petición

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Cuerpo de la respuesta

application/json

application/json

curl -X POST "https://example.com/business/97/payments/ch_3AbcDEFghiJKLmnO/refunds" \  -H "Content-Type: application/json" \  -d '{    "amount": 100  }'
[
  {
    "id": 123,
    "amount": 100,
    "country": "MX",
    "currency_code": "MXN",
    "transaction_status": "success",
    "checkout_id": "ch_3AbcDEFghiJKLmnO",
    "is_apm": false
  }
]
{
  "detail": "Authentication credentials were not provided."
}
Sin contenido

Antes de integrar

Quién puede llamarlo. Solo integraciones API Direct y Web SDK (@tonder.io/web-sdk). Hosted Checkout, los SDKs móviles y el SDK web legacy reembolsan desde el dashboard — no existe otro endpoint para ellos.

Solo tarjetas. Los pagos con SPEI, OXXO Pay, cash vouchers y Mercado Pago no pueden reembolsarse por este endpoint.

De dónde salen los valores

ValorDónde encontrarlo
business_idEl id de tu negocio — el número en la URL de tu dashboard y en los ids de sesión de Hosted Checkout (cs_97_…).
transaction_referenceLa referencia única del pago con tarjeta original.
amountEl monto a reembolsar, en la moneda de la transacción original, en unidades decimales (100.00).

Lee el tipo de respuesta, no el código de estado

Un reembolso responde HTTP 200 con un arreglo JSON con una transacción de reembolso:

[
  {
    "id": 123,
    "amount": 100.00,
    "country": "MX",
    "currency_code": "MXN",
    "transaction_status": "success",
    "checkout_id": "ch_3AbcDEFghiJKLmnO",
    "is_apm": false
  }
]

No hay 404. Cuando nada coincide con transaction_reference, el endpoint responde igual HTTP 200 — con el string "No payment transaction found to be refunded" en lugar del arreglo. Decide por el tipo de respuesta: un arreglo es un reembolso, un string es "no encontrado".

Ante un 500, revisa antes de reintentar

Las fallas del proveedor llegan como HTTP 500. Un reembolso no es idempotente: antes de reenviar, consulta la transacción original con GET /transactions/{transaction_id}/ y reintenta solo si sigue sin reembolsar — entonces sí, con backoff exponencial.

Las integraciones API Direct también pueden reembolsar por POST /process/ con operation_type: "refund" — ver Reembolsos. Una vía u otra, nunca ambas para el mismo pago.

¿Te resultó útil esta página?