Skip to main content
El API de Devoluciones permite enviar una o más transacciones en estado LIQUIDADO a devolver. Solo está disponible para los métodos CARD, YAPE y CUOTEALO.
POST /refund
endpoint
La devolución se procesa después del estado AUTORIZADO, cuando la transacción ya se encuentra en LIQUIDADO. Si la operación aún no fue liquidada, el mecanismo correcto es el extorno, no la devolución.

Request

Headers

CampoDescripciónValorTipoObligatorio
AuthorizationToken de identificación para uso del API creado previamente en API de SeguridadBearer <Access Token>StringSI
ALG-API-VERSIONVersión del API a usar1709847567StringSI
payment-facilitator-codeIdentificador del PF, obligatorio para Payment FacilitatorCadena alfanuméricaStringNO

Body

CampoDescripciónEjemploTipoObligatorio
merchant_codeIdentificador del comercio41bb301e-3c37-4332-accb-ed5ec19081e4StringSI
operationsArray que contiene objetos de transacciones a devolverArrayArraySI
operations[].typeTipo de devoluciónTOTAL, PARTIALStringSI
operations[].merchant_operation_numberNúmero de pedido de la operación239766StringSI
operations[].transaction_idCódigo alfanumérico de la transacciónbko66gpi8czns4tcde93q96vdStringNO
operations[].refund_amountMonto a devolver en centavos1050StringSI
operations[].additional_fieldsDiccionario para enviar campos y valores personalizados como key:valueexternal_id:21871054DictionaryNO
Para S/. 10.50 debes enviar 1050. La separación de decimales se aplica según la moneda.

Ejemplo (JSON)

{
  "merchant_code": "41bb301e-3c37-4332-accb-ed5ec19081e4",
  "operations": [
    {
      "type": "TOTAL",
      "merchant_operation_number": "239766",
      "transaction_id": null,
      "refund_amount": "1050",
      "additional_fields": {
        "canal": "WEB",
        "reason": "cliente no reconoció el consumo",
        "description": "solicitud por desconocimiento"
      }
    }
  ]
}

Siguiente paso

Consulta Unitaria de Devolución

Consulta una solicitud puntual usando merchant_code y merchant_operation_number.

Consulta Masiva de Devolución

Lista devoluciones por rango de fechas y filtros operativos.

Response

CampoDescripciónEjemploTipoObligatorio
successIndica si el proceso se realizó correctamentetrue, falseStringSI
actionAcción ejecutadarefundStringSI
merchant_codeIdentificador del comercio41bb301e-3c37-4332-accb-ed5ec19081e4StringSI
operationsArray que contiene objetos de transacciones a devolverArrayArraySI
operations[].refund_idUUID único de la devoluciónUUIDStringSI
operations[].stateEstado de la solicitudREGISTERED, REJECTEDStringSI
operations[].refund_reasonMotivo o detalle asociado al estadoSolicitud recibida y validadaStringSI
operations[].typeTipo de devoluciónTOTAL, PARTIALStringSI
operations[].merchant_operation_numberNúmero de pedido de la operación239766StringSI
operations[].transaction_idCódigo alfanumérico de la transacciónbko66gpi8czns4tcde93q96vdStringSI
operations[].refund_amountMonto a devolver en centavos1050StringSI
operations[].transaction_amountMonto original de la transacción en centavos1050StringSI
operations[].currencyCódigo ISO 4217 de la moneda de la transacción604StringSI
operations[].additional_fieldsDiccionario con campos personalizados enviados en el requestDictionaryDictionaryNO
operations[].payment_methodObjeto relacionado al medio y procesador de pagoObjectObjectSI
operations[].payment_method.nameNombre del método de pagoCARD, YAPE, CUOTEALOStringSI
operations[].payment_method.brandMarca de la tarjetaVISA, MSCD, AMEX, DINCStringSI
operations[].payment_method.masked_panTarjeta enmascarada447411******2240StringSI
operations[].lifecycleArray con el listado de estados por los que pasó la devoluciónArrayArraySI
operations[].lifecycle[].stateEstado de la devoluciónREGISTERED, REJECTEDStringSI
operations[].lifecycle[].dateObjeto con la fecha del cambio de estadoObjectObjectSI
operations[].lifecycle[].date.utc_timeFecha en UTC2025-05-26T06:06:45StringSI
operations[].lifecycle[].date.unix_timeFecha en unix time1748239605IntegerSI
meta.statusObjeto que contiene el resultado del flujo ejecutadoObjectObjectSI
meta.status.codeCódigo que representa el resultado del flujo ejecutado00StringSI
meta.status.message_ilgnObjeto que contiene el mensaje resultante del flujoObjectObjectSI
meta.status.message_ilgn[].localeLocalidad a nivel de lenguaje para el mensaje del flujo ejecutadoes_PEStringSI
meta.status.message_ilgn[].valueMensaje resultante del flujo ejecutadoSe procesó correctamente la peticiónStringSI

Ejemplo (JSON)

{
  "success": "true",
  "action": "refund",
  "merchant_code": "41bb301e-3c37-4332-accb-ed5ec19081e4",
  "operations": [
    {
      "refund_id": "922178aa-ce4c-4c5f-8190-82fa7e009425",
      "state": "REGISTERED",
      "refund_reason": "Solicitud recibida y validada",
      "type": "TOTAL",
      "merchant_operation_number": "239766",
      "transaction_id": "bko66gpi8czns4tcde93q96vd",
      "refund_amount": "1050",
      "transaction_amount": "1050",
      "currency": "604",
      "payment_method": {
        "name": "CARD",
        "brand": "VISA",
        "masked_pan": "447411******2240"
      },
      "additional_fields": {
        "canal": "WEB",
        "reason": "cliente no reconoció el consumo",
        "description": "solicitud por desconocimiento"
      },
      "lifecycle": [
        {
          "state": "REGISTERED",
          "date": {
            "utc_time": "2025-05-26T06:06:45",
            "unix_time": 1748239605
          }
        }
      ]
    }
  ],
  "meta": {
    "status": {
      "code": "00",
      "message_ilgn": [
        {
          "locale": "es_PE",
          "value": "Se procesó correctamente la petición"
        }
      ]
    }
  }
}