Skip to main content
El API de Cancelación permite cancelar una transacción generada previamente por el API de Autorización para ecommerce. Con el método DELETE del orquestador, las transacciones se pueden cancelar o extornar según el estado en el que se encuentren.
DELETE /charges/{merchant_code}/{merchant_operation_number}
endpoint
Este endpoint cambia el estado de la operación según el estado actual de la transacción y el método de pago. Si necesitas confirmar el resultado final luego del cambio, apóyate también en Consulta y Notificaciones.

¿Qué cubre esta sección?

Cancelación

Las transacciones en estado REGISTRADO o PENDIENTE pasan a estado CANCELADO para CARD cuando usa Redirect, CUOTEALO, QR, BANK_TRANSFER y PAGOEFECTIVO.

Extorno

Las transacciones en estado AUTORIZADO pasan a estado EXTORNADO para CARD y YAPE.

Validación backend

Usa este endpoint para cerrar correctamente una operación desde backend cuando el negocio requiera anular o revertir el cobro.

Manejo por estado

El comportamiento no es igual para todos los métodos. La transición depende del estado actual de la transacción.

Request

Antes de consumir este endpoint, solicita tu Access Token en Autenticación.

Path

DELETE {{base}}/charges/{merchant_code}/{merchant_operation_number}
CampoDescripciónFormatoTipo
merchant_codeIdentificador del comercio.Cadena alfanuméricaString
merchant_operation_numberNúmero de operación.Cadena alfanuméricaString

Headers

CampoDescripciónValorTipoObligatorio
AuthorizationToken de identificación para uso del API creado previamente en API de Seguridad.Bearer {access_token}StringSI
ALG-API-VERSIONVersión del API a usar.1709847567StringSI
payment-facilitator-codeIdentificador del PF. Uso obligatorio para PF.Cadena alfanuméricaStringNO
Authorization: Bearer {access_token}
ALG-API-VERSION: 1709847567
payment-facilitator-code: {pf_code}

Response

Se devuelve la misma estructura general que el API de Consulta, con las transacciones que se pudieron cancelar o extornar de forma exitosa.

Operación

CampoDescripciónTipoObligatorio
successIndica si el proceso se realizó correctamente. Valores esperados: true o false.BooleanSI
merchant_codeIdentificador del comercio.StringSI
merchant_operation_numberNúmero de pedido de la operación cancelada o extornada. Puede estar presente a nivel raíz según la integración.StringNO
operationVisible cuando se encontró el merchant_operation_number. Objeto con el detalle de la operación.ObjectSI
operation.merchant_operation_numberNúmero de pedido de la operación cancelada o extornada.StringSI
operation.amountMonto de la operación.StringSI
operation.currencyCódigo de moneda de la operación.StringSI
operation.stateVisible cuando la operación se pudo cancelar o extornar. Estado al cual cambió la operación. Valores frecuentes: CANCELADO, EXTORNADO.StringSI
operation.transactionsLista de transacciones canceladas o extornadas sobre la operación. Este objeto cambia según el método de pago: Tarjeta, Transferencia Bancaria, QR, Yape, Cuotéalo, PagoEfectivo.ArraySI
CampoDescripciónTipoObligatorio
operation.transactions[].transaction_idIdentificador único de la transacción afectada.StringSI
operation.transactions[].channelCanal de la transacción. Valor esperado: ecommerce.StringSI
operation.transactions[].stateEstado final de la transacción luego del cambio. Valores frecuentes: CANCELADO, EXTORNADO.StringSI
operation.transactions[].state_reasonObservación o motivo del cambio de estado.StringSI
operation.transactions[].amountMonto de la transacción.StringSI
operation.transactions[].currencyCódigo de la moneda de la transacción.StringSI
operation.transactions[].payment_methodObjeto con información del método de pago usado.ObjectSI
operation.transactions[].continue_urlPuede aparecer si el flujo original generó URL de continuación.StringNO
operation.transactions[].expiration_datePuede aparecer si el flujo original incluía expiración.ObjectNO
operation.transactions[].processor_responseResultado devuelto por la procesadora. En extornos puede incluir datos específicos como reverse_date o reverse_code.ObjectNO
operation.transactions[].authentication_resultResultado de autenticación asociado a la transacción, cuando aplique.ObjectNO
operation.transactions[].risk_evaluationResultado de evaluación antifraude, cuando aplique.ObjectNO
operation.transactions[].additional_fieldsDatos adicionales enviados en la autorización.ObjectNO
operation.transactions[].lifecycleHistorial de estados por los que pasó la transacción.ArraySI
CampoDescripciónTipoObligatorio
metaObjeto que contiene metadatos del flujo ejecutado.ObjectSI
meta.statusObjeto que contiene el resultado del flujo ejecutado.ObjectSI
meta.status.codeCódigo que representa el resultado del flujo ejecutado.StringSI
meta.status.message_ilgnLista de mensajes resultantes del flujo.ArraySI
meta.status.message_ilgn[].localeLocalidad a nivel de lenguaje para el mensaje del flujo ejecutado.StringSI
meta.status.message_ilgn[].valueMensaje resultante del flujo ejecutado.StringSI
La estructura interna de operation.transactions[] se mantiene alineada con el API de Consulta. Lo que cambia principalmente es el estado final alcanzado después de la cancelación o el extorno.

Ejemplo: cancelación exitosa

{
  "success": true,
  "merchant_code": "abc",
  "merchant_operation_number": "2836824",
  "operation": {
    "merchant_operation_number": "2836824",
    "amount": "1000",
    "currency": "604",
    "created_at": {
      "utc_time": "2024-07-05T16:46:12",
      "unix_time": 1720197972
    },
    "state": "CANCELADO",
    "transactions": [
      {
        "transaction_id": "9namjcnjvqzas2t33xyfrqr2h",
        "channel": "ecommerce",
        "state": "CANCELADO",
        "state_reason": "Usuario cancelo el metodo de pago",
        "amount": "1000",
        "currency": "604",
        "additional_fields": null,
        "payment_method": {
          "method_name": "PAGOEFECTIVO",
          "method_details": {
            "callback_url": "https://jjap9ekgee.execute-api.us-east-1.amazonaws.com/development/redirect/prueba/merchant_notification_response"
          }
        },
        "expiration_date": null,
        "processor_response": null,
        "lifecycle": [
          {
            "state": "REGISTRADO",
            "date": {
              "utc_time": "2024-07-05T16:46:12",
              "unix_time": 1720197972
            }
          },
          {
            "state": "PENDIENTE",
            "date": {
              "utc_time": "2024-07-05T16:46:13",
              "unix_time": 1720197973
            }
          },
          {
            "state": "CANCELADO",
            "date": {
              "utc_time": "2024-07-05T16:47:22",
              "unix_time": 1720198042
            }
          }
        ]
      }
    ]
  },
  "meta": {
    "status": {
      "code": "00",
      "message_ilgn": [
        {
          "locale": "es_PE",
          "value": "Se proceso correctamente la peticion"
        }
      ]
    }
  }
}

Ejemplo: extorno exitoso

{
  "success": true,
  "merchant_code": "abc",
  "merchant_operation_number": "8522366",
  "operation": {
    "merchant_operation_number": "8522366",
    "amount": "150",
    "currency": "604",
    "created_at": {
      "utc_time": "2024-07-05T20:34:18",
      "unix_time": 1720211658
    },
    "state": "EXTORNADO",
    "transactions": [
      {
        "transaction_id": "0fuwnd6miwsomisn0ikqivav9",
        "channel": "ecommerce",
        "state": "EXTORNADO",
        "state_reason": "Pago anulado",
        "amount": "150",
        "currency": "604",
        "additional_fields": null,
        "payment_method": {
          "method_name": "CARD",
          "method_details": {
            "redirect_url": null,
            "callback_url": null,
            "masked_pan": "545545******3401",
            "brand": "MASTERCARD",
            "bin": "545545",
            "last_pan": "3401",
            "card_type": "CIRRUS",
            "card_country": "PE",
            "issuer": "SCOTIABANK PERU S.A.A."
          }
        },
        "continue_url": null,
        "expiration_date": null,
        "risk_evaluation": null,
        "authentication_result": null,
        "processor_response": {
          "reverse_date": "05-07-2024 20:34:19",
          "reverse_code": "T90261",
          "brand_transaction_id": "0705203422939657",
          "result_message": {
            "code": "00",
            "description": "Aprobado"
          }
        },
        "lifecycle": [
          {
            "state": "REGISTRADO",
            "date": {
              "utc_time": "2024-07-05T20:34:18",
              "unix_time": 1720211658
            }
          },
          {
            "state": "PENDIENTE",
            "date": {
              "utc_time": "2024-07-05T20:34:19",
              "unix_time": 1720211659
            }
          },
          {
            "state": "AUTORIZADO",
            "date": {
              "utc_time": "2024-07-05T20:34:24",
              "unix_time": 1720211664
            }
          },
          {
            "state": "EXTORNADO",
            "date": {
              "utc_time": "2024-07-05T21:34:24",
              "unix_time": 1720211664
            }
          }
        ]
      }
    ]
  },
  "meta": {
    "status": {
      "code": "00",
      "message_ilgn": [
        {
          "locale": "es_PE",
          "value": "Se proceso correctamente la peticion"
        }
      ]
    }
  }
}

Siguiente paso

API de Consulta

Confirma el estado final de la operación y revisa el detalle por método cuando lo necesites.

Notificaciones

Complementa la cancelación con notificaciones S2S para trazabilidad operativa.