# Reembolsar un pago

Este documento aplica a los siguientes países:
Brasil | Chile | México | España | Uruguay
---|---|---|---|---|

Esta guía explica cómo procesar cancelaciones y reembolsos de pagos previamente autorizados con Getnet Web Checkout mediante Global API.
Según el momento en que se solicite el reembolso, el sistema lo gestiona de forma diferente: los reembolsos del mismo día se procesan como cancelaciones (anulando la transacción antes de la liquidación), mientras que los reembolsos del día siguiente se procesan como ajustes (después de que ocurra la liquidación).

El soporte de reembolsos y cancelaciones varía según el país, la marca de tarjeta y el método de pago. Para consultar una referencia completa de los esquemas de tarjetas admitidos y las reglas específicas de cada mercado, consulta [Cancellation and Refunds](/es/web-checkout/core-concepts-wbc/refunds-wbc).

## Requisitos

Antes de seguir los pasos, necesitas:

* Configurar tu Web Checkout mediante [API](/es/web-checkout/first-steps-wbc/configration-by-api) (dependiendo de tu ubicación).
* Generar tu token siguiendo el documento de [Authentication](/es/web-checkout/first-steps-wbc/authentication-token-wbc).

> Getnet ofrece una [Postman Collection](/en/global-api/sep-api/first-steps-api/postman-collection) para ayudarte a replicar estos casos de uso de forma local. También puedes probar la API en sandbox usando la API Reference disponible en la documentación.

## Cómo funciona el momento del reembolso

Getnet Web Checkout mediante Global API gestiona los reembolsos de forma distinta según el momento en que se soliciten respecto a la transacción original:

### Cancelaciones el mismo día (D+0)

Cuando un reembolso se procesa el mismo día que la transacción original, antes del horario de corte diario, se procesa como una **cancelación**. La transacción se anula antes de ingresar al flujo de liquidación de la red.

**Características:**

* Solo se permiten reembolsos totales (no se admiten reembolsos parciales)
* La transacción se anula antes de la liquidación
* El procesamiento es más rápido, ya que los fondos nunca salen de la cuenta del cliente

<Callout type="warning">

las transacciones autorizadas muy cerca del horario de corte pueden requerir de 20 a 30 minutos para confirmarse por completo. En esos casos, realiza la solicitud de cancelación después de que pase el horario de corte, para garantizar que se procese correctamente.

</Callout>

Para conocer los horarios de corte y la disponibilidad específicos de cada país, consulta la [Core Cards reference](/es/web-checkout/reference-wbc/core-cards-wbc).

### Reembolsos al día siguiente (D+1 o posterior)

Cuando un reembolso se procesa el día posterior a la transacción original o más tarde, después del horario de corte diario, se procesa como un **reembolso/ajuste**. En este punto, la transacción ya se envió a través del flujo de liquidación de la red de tarjetas.

**Características:**

* Se permiten reembolsos totales y parciales (según disponibilidad por país)
* Se procesa como una transacción de reembolso independiente a través del sistema de liquidación
* Puede tardar más en reflejarse en la cuenta del cliente

Para obtener información específica de cada país sobre la disponibilidad de reembolsos parciales, consulta la [Core Cards reference](/es/web-checkout/reference-wbc/core-cards-wbc).

El siguiente diagrama ilustra el flujo de reembolso y muestra las rutas diferentes para las cancelaciones el mismo día frente a los reembolsos al día siguiente:

<img height="216" width="938" src="https://static-devportal-ux.sensedia-eng.com/Pagonxt/production/documentations/diagram-refund-a-payment-1772649031631-6v05pg03.png" />

## Proceso de reembolso de un pago

Esta sección te guía a través del proceso de reembolso de una transacción de pago.

**Campos requeridos**
| Atributo | Tipo | Descripción | Ejemplo |
|---|---|---|---|
| `idempotency_key` | String | Identificador único para evitar operaciones duplicadas.|`63c7f8ee-51a6-470d-bb76-ef762b62bfb7`|
| `payment_id`| String | Identificador del pago obtenido en la respuesta de la transacción original.| `2c341d28-491b-4cf8-aec7-eeb60136b7a5`|
| `payment_method`|String| Método de pago usado en la transacción original. |`CREDIT`|
| `amount`| Integer |Importe (igual o menor) de la compra en céntimos.|`118708`|

> **Reembolsos parciales**: el campo `amount` te permite especificar un importe de reembolso parcial (igual o menor al de la transacción original). Sin embargo, los reembolsos parciales solo están disponibles a partir de D+1 y su disponibilidad varía según el país. Para obtener información específica de cada país, consulta la [Core Cards reference](/es/web-checkout/reference-wbc/core-cards-wbc).

### Paso 1: Solicitar el reembolso o la cancelación

A pesar del nombre del endpoint, este gestiona automáticamente tanto las cancelaciones el mismo día como los reembolsos al día siguiente, 
según el momento de la solicitud.

Para procesar un reembolso o una cancelación, usa el [Cancel Payment endpoint](https://docs.globalgetnet.com/en/products/online-payments/regional-api/swagger#tag/payments/POST/dpm/payments-gwproxy/v2/payments/cancel). 

Endpoint|
---|
`POST /cancel`|

#### Ejemplo de solicitud de reembolso total:

```json
curl https://api.globalgetnet.com/dpm/payments-gwproxy/v2/payments/cancel \
  --request POST \
  --header 'Content-Type: application/json' \
  --header 'Authorization: Bearer YOUR_SECRET_TOKEN' \
  --data '{
  "idempotency_key": "a1b2c3d4-e5f6-4789-abcd-ef1234567890",
  "payment_id": "053de7f9-3725-437b-bdfc-bbf3ed0acb75",
  "payment_method": "CREDIT"
}'
```

#### Ejemplo de solicitud de reembolso parcial:
(disponible solo a partir de D+1, sujeto a disponibilidad por país):

```json
curl https://api.globalgetnet.com/dpm/payments-gwproxy/v2/payments/cancel \
  --request POST \
  --header 'Content-Type: application/json' \
  --header 'Authorization: Bearer YOUR_SECRET_TOKEN' \
  --data '{
  "idempotency_key": "b2c3d4e5-f6a7-5890-bcde-fg2345678901",
  "payment_id": "053de7f9-3725-437b-bdfc-bbf3ed0acb75",
  "payment_method": "CREDIT",
  "amount": 50000
}'
```

#### Ejemplo de respuesta exitosa:

```json
{
  "idempotency_key": "a1b2c3d4-e5f6-4789-abcd-ef1234567890",
  "seller_id": "e0ed6f00-fdc5-46d6-9557-6a2cac641b09",
  "payment_id": "053de7f9-3725-437b-bdfc-bbf3ed0acb75",
  "order_id": "ORDER-10187383",
  "amount": 118708,
  "currency": "BRL",
  "status": "CANCELED",
  "reason_code": "00",
  "reason_message": "Cancellation successful",
  "canceled_at": "2025-10-31T14:30:25.166Z"
}
```

#### Ejemplo de respuesta denegada:

```json
{
  "idempotency_key": "a1b2c3d4-e5f6-4789-abcd-ef1234567890",
  "seller_id": "e0ed6f00-fdc5-46d6-9557-6a2cac641b09",
  "payment_id": "053de7f9-3725-437b-bdfc-bbf3ed0acb75",
  "order_id": "ORDER-10187383",
  "amount": 118708,
  "currency": "BRL",
  "status": "DENIED",
  "reason_code": "05",
  "reason_message": "Cancellation not allowed - transaction already settled"
}
```

### Paso 2: Verificar el estado del reembolso

Para confirmar que el reembolso se procesó correctamente, verifica el campo `status` en la respuesta:

* **`CANCELED`**: el reembolso se procesó correctamente
* **`DENIED`**: el reembolso fue rechazado

Si el reembolso fue denegado, revisa los campos `reason_code` y `reason_message` para obtener más detalles sobre el motivo del fallo.

También puedes consultar el estado de la transacción en cualquier momento con el [Get Transaction endpoint](https://docs.globalgetnet.com/en/products/online-payments/regional-api/swagger#tag/payment-record-management/get/dpm/hub-payment-info/v1/payments/info/{payment_id}). Para recibir actualizaciones en tiempo real, se recomienda usar Webhooks para recibir notificaciones ante cada cambio de estado.

## Reembolso de pagos combinados

Los pagos combinados requieren un manejo especial al procesar reembolsos:

**Transacciones con tarjeta**

* La cancelación está disponible para transacciones confirmadas realizadas hace más de 1 día.

**Tarjetas de crédito**

* Los pagos combinados con tarjetas de crédito pueden cancelarse mediante una solicitud que incluya la misma cantidad de objetos de pago enviados en la solicitud de autorización previa.
* Según el estado de autorización de la transacción actual, la cancelación puede revertirse el mismo día (si ya está confirmada) o dentro de los 7 días siguientes.

Para cancelar un pago combinado, usa el [Combined Payments - Cancel endpoint](https://docs.globalgetnet.com/en/products/online-payments/regional-api/swagger#tag/combined-payments/POST/dpm/payments-gwproxy/v2/payments/combined/cancel) en lugar del endpoint de cancelación habitual.

## Buenas prácticas

Al procesar reembolsos, sigue estas buenas prácticas:

1. Ten en cuenta los horarios de corte diarios de tu mercado para saber si tu reembolso se procesará como una cancelación el mismo día o como un reembolso al día siguiente.
2. Recuerda que los reembolsos parciales solo están disponibles a partir de D+1 y su disponibilidad varía según el país. Consulta la [Core Cards reference](/es/global-api/reference-global/core-cards) para obtener información específica de cada país.
3. Usa siempre un `idempotency_key` único para cada solicitud de reembolso, para evitar reembolsos duplicados accidentales.
4. Usa webhooks para recibir actualizaciones en tiempo real sobre el procesamiento de reembolsos, en lugar de hacer polling repetido a la API.
5. Conserva los valores de `payment_id`, `payment_method` y `amount` de la transacción original para facilitar el procesamiento del reembolso.