Este flujo utiliza el mismo endpoint base de autorización. Revisa los ambientes y la configuración general en el Overview.
Características del flujo
Tipo de flujo
Asíncrono.
Método de pago
Permite iniciar cobros ecommerce con PagoEfectivo.
Código de pago
El API devuelve un CIP y una URL de pago para que el usuario complete la operación fuera del checkout.
Validación final
El resultado final debe confirmarse por backend con notificación o consulta.
Consideraciones
Este flujo requiere
redirect_url para retornar al comercio cuando finalice la autorización y permite enviar callback_url para notificación host to host.El usuario puede completar el pago después de la sesión inicial usando el CIP o la URL generada por PagoEfectivo. Complementa este flujo con Notificaciones o con Consulta.
Request
Antes de consumir este endpoint, solicita tu
Access Token en Autenticación.Headers
| Campo | Descripción | Valor | Tipo | Obligatorio |
|---|---|---|---|---|
Authorization | Token Bearer obtenido desde autenticación | Bearer {access_token} | String | SI |
Content-Type | Formato del request | application/json | String | SI |
ALG-API-VERSION | Versión del API | 1709847567 | String | SI |
Body
Objeto raíz del request
| Campo | Descripción | Ejemplo | Tipo | Obligatorio |
|---|---|---|---|---|
action | Acción a ejecutar | authorize | String | SI |
channel | Canal de la operación | ecommerce | String | SI |
merchant_code | Código del comercio | your_merchant_code | String | SI |
merchant_operation_number | Identificador único de la operación en el comercio. Debe ser diferente en cada transacción. | 5974483 | String | SI |
payment_method | Objeto con la información del método de pago | Object | Object | SI |
payment_details | Objeto con el detalle del pago y datos del cliente | Object | Object | SI |
Objeto payment_method
| Campo | Descripción | Ejemplo | Tipo | Obligatorio |
|---|---|---|---|---|
method_name | Nombre del método de pago | PAGOEFECTIVO | String | SI |
method_details | Objeto con la información específica de PagoEfectivo | Object | Object | SI |
Objeto payment_method.method_details
| Campo | Descripción | Ejemplo | Tipo | Obligatorio |
|---|---|---|---|---|
redirect_url | URL donde se realizará el redirect cuando finalice la autorización | https://pay-me.com | String | SI |
callback_url | URL donde se realizará la notificación host to host (server to server) | https://pay-me.com/callback | String | NO |
redirect_url debe apuntar a una ruta de tu comercio preparada para recibir el retorno del usuario. Si envías callback_url, asegúrate de que sea accesible desde backend.Objeto payment_details
| Campo | Descripción | Ejemplo | Tipo | Obligatorio |
|---|---|---|---|---|
amount | Monto de la operación en centavos | 15000 | String | SI |
currency | Código de la moneda | 604 | String | SI |
billing | Datos de facturación | Object | Object | SI |
shipping | Datos de envío | Object | Object | SI |
customer | Datos del cliente | Object | Object | SI |
product_details | Lista de productos asociados a la operación | [] | Array | SI |
Para
billing, shipping y customer, usa la estructura ecommerce estándar con first_name, last_name, email, phone y location.Ejemplo de request
Response
La respuesta inicial normalmente deja la transacción en seguimiento. Confirma el resultado final con notificaciones o con consulta antes de actualizar la orden.
Objeto transaction
| Campo | Descripción | Ejemplo | Tipo | Obligatorio |
|---|---|---|---|---|
transaction_id | Identificador único de la transacción | 5hk8rwa3h3cq9oyfs3a28v1ms | String | SI |
channel | Canal por el cual se realizó la transacción | ecommerce | String | SI |
state | Estado actual de la transacción | PENDIENTE | String | SI |
state_reason | Observación o descripción del estado actual | Código CIP generado exitosamente | String | SI |
amount | Monto de la transacción | 15000 | String | SI |
currency | Código de la moneda de la operación | 604 | String | SI |
payment_method | Objeto con información del método de pago usado en la transacción | Object | Object | SI |
expiration_date | Fecha en la que expirará la transacción | Object | Object | NO |
processor_response | Resultado devuelto por la procesadora con datos del CIP | Object | Object | NO |
additional_fields | Datos adicionales enviados en el request | Object | Object | NO |
lifecycle | Historial de estados por los que pasó la transacción | Array | Array | SI |
state puede devolver valores como PENDIENTE o INVALIDO. Cuando el CIP fue generado correctamente, la transacción normalmente queda en PENDIENTE hasta que el usuario complete el pago o expire.Objeto transaction.payment_method
| Campo | Descripción | Ejemplo | Tipo | Obligatorio |
|---|---|---|---|---|
method_name | Nombre del método de pago usado en la transacción | PAGOEFECTIVO | String | SI |
method_details | Objeto que contiene el detalle del método de pago usado en la transacción | Object | Object | SI |
Objeto transaction.payment_method.method_details
| Campo | Descripción | Ejemplo | Tipo | Obligatorio |
|---|---|---|---|---|
callback_url | URL donde se realizará la notificación host to host (server to server) | https://pay-me.com/callback | String | NO |
Objeto transaction.expiration_date
| Campo | Descripción | Ejemplo | Tipo | Obligatorio |
|---|---|---|---|---|
utc_time | Fecha de expiración en UTC | 2024-03-12T22:49:36.018Z | String | NO |
unix_time | Fecha de expiración en unix time | 1711585037 | Integer | NO |
Objeto transaction.processor_response
| Campo | Descripción | Ejemplo | Tipo | Obligatorio |
|---|---|---|---|---|
cip | Código CIP de PagoEfectivo | 1508405 | String | NO |
cip_url | URL de PagoEfectivo con el detalle e indicaciones de pago | https://pre1a.payment.pagoefectivo.pe/72217FA5-4580-4B16-A345-24F028F53356.html | String | NO |
result_message | Mensaje del resultado de la autorización | Object | Object | NO |
Objeto transaction.processor_response.result_message
| Campo | Descripción | Ejemplo | Tipo | Obligatorio |
|---|---|---|---|---|
code | Código del resultado de la autorización | 100 | String | NO |
description | Descripción del resultado de la autorización | Solicitud exitosa. | String | NO |
Objeto transaction.lifecycle
| Campo | Descripción | Ejemplo | Tipo | Obligatorio |
|---|---|---|---|---|
state | Estado registrado en el historial | PENDIENTE | String | SI |
date | Fecha del cambio de estado | Object | Object | SI |
En
lifecycle puedes recibir estados como REGISTRADO, PENDIENTE e INVALIDO.Objeto transaction.lifecycle[].date
| Campo | Descripción | Ejemplo | Tipo | Obligatorio |
|---|---|---|---|---|
utc_time | Fecha en UTC | 2024-03-12T22:49:36.018Z | String | SI |
unix_time | Fecha en unix time | 1710282940 | Integer | SI |
Ejemplo de response
Buenas prácticas
- Confirma el resultado final por backend antes de actualizar la orden.
- Asegúrate de enviar un
merchant_operation_numberúnico por transacción. - No asumas que un CIP generado significa pago completado; interpreta
PENDIENTEcomo un estado intermedio. - Usa
callback_urlsi tu operación necesita confirmación server to server. - Conserva
transaction_id,merchant_operation_number,cip,cip_urly la fecha de expiración para seguimiento, soporte y conciliación.
Errores comunes
Pago asumido como exitoso
Generar el CIP no equivale a recibir el pago. El usuario todavía debe completar el abono en el canal habilitado por PagoEfectivo.
CIP expirado
Si el usuario intenta pagar después de
expiration_date, deberás generar una nueva operación en lugar de reutilizar la anterior.Siguiente paso
Api de Consulta con PagoEfectivo
Verifica cómo consultar una operación iniciada con PagoEfectivo.

