Getnet DocsGetnet Docs

Devolver un pago

Esta guía explica cómo devolver (o cancelar) un pago aprobado previamente con la operación Refund del TPV Integrado.

¿Qué es una devolución?

La operación Refund revierte una venta completada, de forma total o parcial. Puedes ejecutarla el mismo día de la venta original o dentro de un plazo de hasta 365 días. Si no envías algún parámetro, el TPV muestra las pantallas de entrada correspondientes. El manual usa el término “Cancellation” para este comando.

Antes de comenzar

Antes de emitir una devolución:

  • Debes crear un Connector y validarlo con Polling
  • El Modo TPV Integrado debe estar activo
  • La transacción original debe ser elegible para la devolución

Paso 1: Ejecuta la devolución

Para realizar una devolución, llama a la operación Refund con los datos de la transacción original. La mayoría de los parámetros son opcionales: si faltan, el TPV los solicita en pantalla. Enviarlos hace que el flujo de automatización sea más fluido.

ParámetroTipoObligatorioDescripción
AuthorizationCodeStringNoCódigo de autorización de la transacción original (por ejemplo, el “AUT” del recibo o el de la respuesta de Sale).
OriginTransDateDateNoFecha de la transacción original, en formato ISO8601 con zona horaria. No puede ser posterior a la fecha actual.
AmountLongNoImporte de la devolución en moneda local. Si se omite, se devuelve el importe total (se admiten devoluciones parciales).
SkipConfirmationBoolNoOmite la pantalla de confirmación.
SkipReceiptBoolNoNo imprime el recibo del cliente.
PrintOnPosBoolNoImprime en el TPV o devuelve el contenido del recibo. Consulta el Capítulo 4 Responsabilidad de impresión.
RefundTypeEnumNoQué parte de una venta se devuelve: SaleWithdrawal (venta y retiro), Sale (solo la venta) o Withdrawal (solo el retiro).

Si omites información obligatoria, el TPV la solicita en pantalla. El TPV y el adquirente aplican las reglas de elegibilidad y de devolución parcial. Puedes emitir varias devoluciones sobre la misma transacción original hasta que la suma de sus importes alcance el total original.

El siguiente ejemplo muestra cómo iniciar una devolución de una venta aprobada previamente. La fecha de la transacción (OriginTransDate) no puede ser posterior a la fecha actual; la fecha que devuelve la venta original es un valor válido.

var refundRequest = new RefundRequest
{
    AuthorizationCode = "551437",
    OriginTransDate = originalSale.AccountingDate,
    Amount = 10000
};

var refundResult = await connector.RefundAsync(refundRequest);

Paso 2: Gestiona la respuesta

Cuando el procesamiento es exitoso, el TPV devuelve una respuesta estructurada con el resultado de la reversión. Los siguientes campos siempre están presentes en una respuesta de devolución exitosa:

{
  "Code": 0,
  "Message": "APPROVED",
  "CommerceCode": "1234567890",
  "TerminalId": "GET00123",
  "AuthorizationCode": "654321",
  "NsuLastSuccessfulMessage": "123456789",
  "ReceiptContent": null
}

Donde:

CampoTipoObligatorioDescripción
CodeIntSíCódigo de respuesta. 0 indica éxito.
MessageStringSíMensaje de resultado (por ejemplo, APPROVED).
CommerceCodeStringSíCódigo de sucursal aprobado por Getnet para procesar transacciones.
TerminalIdStringSíCódigo del terminal TPV.
AuthorizationCodeStringSíCódigo de autorización de la transacción de devolución.
NsuLastSuccessfulMessageStringSíÚltimo mensaje NSU.
ReceiptContentDictNoContenido estructurado del recibo. Es null cuando PrintOnPos es true. Consulta Responsabilidad de impresión.

ReceiptContent es null cuando la solicitud define PrintOnPos como true: el terminal imprime el recibo en lugar de devolverlo.

Verifica siempre los campos Code y Message antes de confirmar la devolución en tu sistema.

Siguientes pasos