Skip to main content
POST /cancel solicita cancelar una autorización activa. El servicio debe comprobar que la cancelación se ejecutó y que el resultado corresponde al operationNumber solicitado.
Cerrar la pantalla del POS no confirma la cancelación. Si no se ejecutó o el resultado corresponde a otra operación, el servicio debe devolver un error, sin informar éxito.

CARD

POST /authorize inicia el cobro y el PinPAD solicita la tarjeta. Si la cancelación falla y el cobro original queda transaction.state: "AUTORIZADO" en una consulta 200/00, puedes evaluar un extorno independiente. Un error de /cancel no ejecuta automáticamente /reversals.

QR

Al generar el QR ya existe una transacción pendiente asociada al operationNumber. Mostrar o escanear el código no confirma el pago. En QR, /cancel solo cancela o inhabilita el código. Ni /cancel ni refund devuelven un monto pagado; /reversals aplica únicamente a CARD. Si recuperas un QR transaction.state: "AUTORIZADO" en una consulta 200/00, conserva el pago aprobado. No lo marques como cancelado, devuelto ni extornado; registra la discrepancia para revisión.

Solicitud

Envía al mismo PinPAD de la autorización original:
No generes otra referencia ni envíes monto, moneda, método o datos de tarjeta.

Resultados por método

Estas reglas aplican a CARD y QR. Evalúa el estado, el código y la validación del servicio; HTTP 200 por sí solo no confirma éxito. Reenviar una cancelación ya finalizada devuelve el resultado guardado; una segunda cancelación en curso devuelve 409 CANCELLATION_IN_PROGRESS. Ejemplos de campos de decisión, sin representar pruebas ejecutadas:
DENIED/14 indica abandono por cierre de autorización en curso; 15 indica abandono con intento (QR cancelado). No confirman cancelación aprobada ni son rechazo típico de tarjeta. Decide con estado y código. No normalices 16 o 17 a 00.

Verificar el resultado final

No existe un endpoint de consulta de cancelación. La respuesta de POST /cancel informa el resultado de esa solicitud. Ante fallo, timeout o incertidumbre, GET /payments/{operationNumber} consulta la pasarela y devuelve success, resultCode, resultMessage y transaction, sin status propio. 00 significa encontrada: lee transaction.state. Este GET no devuelve 202. Aplica el contrato de consulta: En los ciclos del gráfico, repite únicamente el GET. No reenvíes /cancel ni generes otra venta mientras no conozcas el resultado del cobro. Un 202 WAITING_RESULT tardío de /authorize no sustituye un resultado confirmado.

Fallos de cancelación

La matriz no especifica la respuesta cuando la cancelación no se ejecuta o el resultado corresponde a otra operación. No asignes a ese caso un HTTP, código ni cuerpo JSON sin confirmación de desarrollo.

Manejo de 202 y pérdida de conexión

Todas las respuestas incluyen Cache-Control: no-store. HTTP 202 añade Retry-After: 2: espera dos segundos antes de consultar el cobro original. Una desconexión no garantiza recepción de /cancel ni cierre de pantalla.