Resuelve un Pago Móvil que no se encuentra
El comprador dice que pagó pero el checkout sigue esperando o verify responde que no se encontró: revisa las reglas de coincidencia, usa la referencia como respaldo, reintenta con seguridad y sabe cuándo contactar a soporte.
Qué vas a hacer
Un Pago Móvil lo envía el comprador desde la app de su banco, así que VEXPay tiene que encontrarlo. Identifica en qué caso estás y sigue los pasos correspondientes.
| Ves | Ve a |
|---|---|
| El checkout alojado sigue esperando después de que el comprador pagó | Checkout alojado |
POST /v1/payments/pago-movil/verify devuelve 400 MOVEMENT_NOT_FOUND o AMOUNT_MISMATCH | Verify por API |
El pago aparece FAILED con expired | Pagos vencidos |
Checkout alojado
VEXPay completa el pago automáticamente cuando la transferencia coincide en las tres cosas: el teléfono que ingresó el comprador, el monto mostrado (con margen de Bs 0,02) y la hora (desde 2 minutos antes de que el comprador empezara hasta el vencimiento de 15 minutos).
- Pregunta cómo pagó el comprador
¿Desde otro teléfono? ¿Otro monto? ¿Dos pagos abiertos en enlaces distintos? Cualquiera de estos impide la coincidencia automática.
- Usa la referencia como respaldo
Después de 5 minutos sin coincidencia, el checkout deja que el comprador elija el banco desde el que pagó y escriba la referencia bancaria. Se encuentra cuando coinciden los últimos 6 dígitos y el monto, la transferencia salió de ese banco, se recibió en los últimos 7 días y no fue reclamada antes.
- Revisa los mensajes
"Aún no hemos recibido…": espera un momento y revisa el número. "salió de otro banco": elige el banco desde el que se envió la transferencia. Un mensaje sobre el monto: el comprador no pagó el monto exacto — contacta al soporte de VEXPay con la referencia.
Verify por API
- Reintenta con espera
El aviso del banco puede llegar unos segundos después de una transferencia real. Reintenta cada 3–5 segundos durante 60–90 segundos con la misma
reference; los reintentos reutilizan el mismo pago. - Revisa la referencia
De 4 a 32 dígitos. Envíala como aparece en el comprobante, o al menos los últimos 6 dígitos.
- Envía los campos opcionales que tengas
Algunos bancos receptores exigen
debtorBankCode(el banco del pagador) ydebtorCellPhone. Envíalos cuando los tengas, ydateMovement(YYYY-MM-DD) cuando la transferencia no sea de hoy. - Revisa el monto
AMOUNT_MISMATCHdevuelve lo esperado y lo recibido. Los bolívares esperados son tuusdAmounta tu tasa del bolívar. CorrigeusdAmounto pide al comprador que complete el monto; la transferencia sigue disponible para reclamarse. - Revisa a dónde pagó el comprador
El comprador debe pagar a la cuenta que devuelve
GET /v1/payments/pago-movil/receiving-account, nunca a una escrita a mano en tu código. - No verifiques dos veces
Después de un 200, vuelve a consultar con
GET /v1/payments/by-ref/:externalRefen lugar de llamar a verify de nuevo.
curl --request POST "${API_URL}/v1/payments/pago-movil/verify" \
--header "content-type: application/json" \
--header "x-api-key: ${VEXPAY_API_KEY}" \
--data '{
"usdAmount": 20.00,
"reference": "00123456",
"debtorBankCode": "0102",
"debtorCellPhone": "584121234567",
"txType": "pago_movil",
"externalRef": "order-2051"
}'Pagos vencidos
Un Pago Móvil alojado que no coincide en 15 minutos pasa a FAILED con expired, y se dispara payment.failed. Una transferencia que llega después no se acredita automáticamente. Contacta al soporte de VEXPay con la referencia bancaria, el monto y la fecha.
Comprueba que funcionó
GET /v1/payments/:idmuestraCOMPLETEDcon la referencia bancaria, y llegópayment.completed.- En Test, las transferencias reales nunca coinciden: usa Simular pago recibido en el checkout, o una clave Test para verify.
Otras causas
| Síntoma | Causa probable | Qué hacer |
|---|---|---|
Pago Móvil no se ofrece, o receiving_account_not_configured | La cuenta receptora no está completa para tu cuenta | Contacta a VEXPay. |
| 400 "no enabled provider supports Pago Móvil" | Pago Móvil no está habilitado para tu cuenta | Contacta a VEXPay. |
| Varias transferencias comparten los mismos últimos 6 dígitos | La coincidencia es ambigua, así que no se reclama nada | Envía la referencia completa y debtorBankCode; contacta al soporte de VEXPay si persiste. |
payment.reversed con bank_not_received | VEXPay determinó que el dinero nunca llegó | Trata el pedido como no pagado. Contacta al soporte de VEXPay para más detalles. |
Relacionado: Verificación de Pago Móvil · Enlace solo Pago Móvil · Concilia tu saldo