VerificacionPago. Se encuentra dentro de str_res_pago en la posición 5.
Tabla consolidada
| Estado | Código | Medio | Descripción | Acción recomendada |
|---|---|---|---|---|
| Aprobado | 1 | Todos | Pago finalizado exitosamente. | Entregar producto. Enviar confirmación al cliente. |
| Pendiente por iniciar | 888 | Todos | Usuario no ha abierto aún el ciclo de pago. | Esperar. Reenviar link si es necesario. |
| Pendiente por finalizar | 999 | PSE / presencial | PSE/banco no ha confirmado. | Mostrar mensaje obligatorio al usuario (ver Mensajes de certificación). Consultar desde la sonda. |
| Pendiente CR | 4001 | TC | Franquicia retuvo para revisión manual. | Mostrar mensaje al usuario. Consultar desde la sonda. Tiempo máximo: 1 día y fracción. |
| Rechazado | 1000 | Todos | Banco/franquicia rechazó la transacción. | Marcar pedido como rechazado. Permitir reintento con nuevo str_id_pago. |
| Error ACH/Banco | 1001 | PSE | Error en comunicación ACH-Banco (se trata como rechazado). | Igual que 1000. |
| Rechazado CR | 4000 | TC | Franquicia rechazó tras revisión. | Marcar rechazado. |
| Error CR | 4003 | TC | Error en el proceso CR (equivale a rechazo). | Marcar rechazado. |
Estados en detalle
1 — Aprobado ✅
El pago fue exitoso. int_pago_terminado también será 1.
Actualizar pedido a “pagado” en tu base de datos.
Entregar producto o activar servicio.
Enviar email de confirmación (ZonaPagos envía el comprobante de pago; tu correo confirma la entrega del producto).
Registrar en logs con el
str_ticketID / str_codigo_transaccion (CUS) para conciliación.888 — Pendiente por iniciar
El usuario aún no ha abierto la str_url del ciclo de pago. No hizo nada todavía.
Es el estado natural tras llamar
/InicioPago y antes de que el usuario haga clic. Si después de 30 minutos sigue en 888, asume que el usuario abandonó.999 — Pendiente por finalizar (PSE / presencial)
La transacción fue iniciada y enviada a la red de pagos, pero aún no llega confirmación definitiva.
Para pagos presenciales (PDF generado, convenios GANA/Efecty) el estado 999 puede durar 1 a 2 días. Tu sonda debe marcar estos pagos para consultar cada hora, no cada 10 minutos.
4001 — Pendiente CR (solo TC)
La franquicia (Visa/MC/AmEx/Diners) retuvo la transacción para revisión manual por riesgo de fraude.
1000 — Rechazado
Rechazo general del banco o franquicia. Razones comunes: fondos insuficientes, tarjeta vencida, bloqueo por seguridad, etc. El API no detalla la razón específica.
Marcar pedido como rechazado.
Permitir reintento con un nuevo
str_id_pago.No reutilizar el
str_id_pago original.1001 — Error ACH/Banco (equivale a rechazado)
Error técnico entre ACH (PSE) y el banco del usuario. Se trata igual que 1000.
4000 — Rechazado CR (solo TC)
La franquicia revisó la transacción retenida en CR y decidió rechazarla.
4003 — Error CR (solo TC)
Error técnico durante el proceso CR. Equivale a rechazo.
Árbol de decisión
Estados obsoletos (no esperes verlos)
Los siguientes códigos existieron en versiones anteriores del API pero fueron eliminados:777— Obsoleto desde v5.0 (mayo 2025).1002— Obsoleto.1003— Obsoleto desde v5.0.1004— Obsoleto desde v5.0.
Estados del pago completo (int_pago_terminado)
Independiente deint_estado_pago, el campo int_pago_terminado indica si el pago (en su conjunto, útil para pagos mixtos) terminó:
| Valor | Significa |
|---|---|
200 | Pago iniciado (aún no ha pasado nada) |
1 | Terminado (aprobado o rechazado, pero cerrado) |
2 | Pendiente — el pago es mixto y no se ha completado en su totalidad |
Ver también
Implementar sonda
El job que maneja los estados pendientes.
Mensajes de certificación
Textos obligatorios para estados 999 y 4001.