Hola equipo,
Quiero compartir mi experiencia integrando la API de Búsqueda de Pagos Móviles (C2P Search), ya que enfrenté el error:
0330 – No hay transacciones que coincidan con los campos de búsqueda
Durante varios días, a pesar de que aparentemente todo estaba correcto.
🧠 Contexto
Estoy desarrollando una plataforma que valida pagos de Pago Móvil en tiempo real usando este API.
Stack utilizado:
- Backend: FastAPI (Python)
- Cifrado: AES-128-ECB (según documentación oficial)
- Endpoint:
/sandbox/v1/mobile-payment/search
❗ Problema
El API siempre respondía:
{
"error_list": [
{
"error_code": "0330",
"description": "No hay transacciones que coincidan con los campos de busqueda"
}
]
}
Esto ocurría incluso cuando:
✔ El cifrado era correcto
✔ El payload estaba bien estructurado
✔ Los headers eran correctos
✔ Los números estaban en formato correcto (58XXXXXXXXXX)
✔ El monto y referencia coincidían con el Excel de prueba
🔍 Causa real (no evidente en la documentación)
El problema NO estaba en el código.
El problema era una combinación de:
1. 🔑 Credenciales incorrectas o desactualizadas
El integratorId y terminalId deben coincidir EXACTAMENTE con los últimos valores entregados por el banco.
En mi caso:
"integratorId": 31,
"merchantId": 200284,
"terminalId": "abcde"
⚠️ Si alguno de estos no coincide (por ejemplo usar 1 en vez de 31), el API responde 0330 aunque el resto esté perfecto.
2. 📊 Data de prueba desactualizada
El banco puede enviar múltiples archivos Excel.
No todos están activos en el sandbox.
👉 Es clave usar la data más reciente enviada por el banco.
Ejemplo funcional:
Referencia
Monto
Fecha
87860015898
77655
2026-04-10
3. 🔄 Mapeo correcto de teléfonos
Muy importante:
origin_mobile_number→ teléfono del comerciodestination_mobile_number→ teléfono del cliente pagador
🔐 Cifrado correcto (confirmado)
El cifrado funciona con:
- AES-128-ECB
- Key = SHA256(secret) → primeros 16 bytes
- Base64 output
✅ Resultado esperado (cuando todo está correcto)
{
"transaction_list": [
{
"trx_date": "2026-04-10",
"payment_reference": 87860015898,
"amount": 77655,
"payment_method": "c2p"
}
]
}
🔥 Hallazgo importante
El API permite buscar por referencia de forma flexible:
✔ referencia completa
✔ últimos 4 dígitos
✔ últimos 5
✔ últimos 6
Ejemplo:
"payment_reference": "5898"
Esto devuelve la transacción completa.
🧪 Checklist de debugging
Si obtienes error 0330, valida en este orden:
- ¿Estás usando el integratorId correcto actualizado?
- ¿El terminalId coincide exactamente (string vs número)?
- ¿Estás usando la data más reciente del Excel?
- ¿La fecha trx_date coincide exactamente?
- ¿El monto es EXACTO (sin conversión)?
- ¿El teléfono origen/destino están en el orden correcto?
- ¿El cifrado AES está correctamente aplicado?
🎯 Conclusión
El error 0330 puede ser engañoso:
👉 No significa necesariamente que no exista la transacción
👉 Muchas veces indica un problema de contexto (credenciales / ambiente / data)
Espero que esto ayude a otros desarrolladores a integrar el API más rápido.
Gracias al equipo de Mercantil por el soporte 👍
- Inicie sesión o registrese para enviar comentarios