Guía para desarrolladores
Sitio de VEXPayReferencia de API
Explorar documentación

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.

VesVe 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_MISMATCHVerify por API
El pago aparece FAILED con expiredPagos 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).

  1. 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.

  2. 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.

  3. 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

  1. 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.

  2. Revisa la referencia

    De 4 a 32 dígitos. Envíala como aparece en el comprobante, o al menos los últimos 6 dígitos.

  3. Envía los campos opcionales que tengas

    Algunos bancos receptores exigen debtorBankCode (el banco del pagador) y debtorCellPhone. Envíalos cuando los tengas, y dateMovement (YYYY-MM-DD) cuando la transferencia no sea de hoy.

  4. Revisa el monto

    AMOUNT_MISMATCH devuelve lo esperado y lo recibido. Los bolívares esperados son tu usdAmount a tu tasa del bolívar. Corrige usdAmount o pide al comprador que complete el monto; la transferencia sigue disponible para reclamarse.

  5. 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.

  6. No verifiques dos veces

    Después de un 200, vuelve a consultar con GET /v1/payments/by-ref/:externalRef en lugar de llamar a verify de nuevo.

curlbash
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/:id muestra COMPLETED con 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íntomaCausa probableQué hacer
Pago Móvil no se ofrece, o receiving_account_not_configuredLa cuenta receptora no está completa para tu cuentaContacta a VEXPay.
400 "no enabled provider supports Pago Móvil"Pago Móvil no está habilitado para tu cuentaContacta a VEXPay.
Varias transferencias comparten los mismos últimos 6 dígitosLa coincidencia es ambigua, así que no se reclama nadaEnvía la referencia completa y debtorBankCode; contacta al soporte de VEXPay si persiste.
payment.reversed con bank_not_receivedVEXPay 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