Errores y troubleshooting
Códigos HTTP
Sección titulada «Códigos HTTP»| Código | Significado | Cuándo ocurre |
|---|---|---|
200 | OK | Petición exitosa. |
403 | Forbidden | Falta o es inválida la cabecera X-Device-Id. |
404 | Not Found | Ruta inexistente, o moneda inválida al crear orden, o monto por debajo del mínimo, o URLs de redirección malformadas. |
429 | Too Many Requests | Rate limit excedido. Use Retry-After. |
500 | Internal Server Error | Error del backend. Reintente con backoff exponencial; si persiste, contacte soporte. |
Cómo interpretar un 404 en POST /orders/
Sección titulada «Cómo interpretar un 404 en POST /orders/»El 404 agrupa varias causas. El cuerpo de la respuesta suele indicar la concreta:
- Currency inválida — el
input_currencyno coincide con ningún símbolo deGET /currencies. - Monto mínimo no alcanzado —
expected_output_amountpor debajo delmin_amountde la moneda. - URLs de redirección ausentes o malformadas (
merchant_urlok,merchant_urlko).
Troubleshooting rápido
Sección titulada «Troubleshooting rápido»Recibo 403 en todas las peticiones
Sección titulada «Recibo 403 en todas las peticiones»- Verifique que la cabecera se llama exactamente
X-Device-Id(con guiones, case-insensitive en HTTP pero use la forma exacta por si acaso). - Verifique que la key no tenga espacios al inicio/final.
- Verifique que el dispositivo no esté desactivado en el dashboard.
Recibo 404 en POST /orders/ con un símbolo que sí existe
Sección titulada «Recibo 404 en POST /orders/ con un símbolo que sí existe»- Llame a
GET /currenciesy copie el símbolo exacto. Los símbolos son granulares por red (por ejemploUSDC_POLYGON_NXTB, no soloUSDC). - Verifique mayúsculas/minúsculas.
El webhook no llega
Sección titulada «El webhook no llega»- Revise que
notification_urlapunte a una URL pública (no localhost). - Use HTTPS.
- Compruebe que su endpoint devuelve
200rápido (< 5 s). - Verifique el firewall de su servidor.
La firma del webhook no coincide
Sección titulada «La firma del webhook no coincide»Causas comunes (en orden de frecuencia):
- No decodificó la Secret Key desde hex a bytes.
- Parseó y reserializó el body JSON (use el body crudo).
- Añadió trailing newline al body.
- Concatenó
body + nonceen lugar denonce + body. - Comparó con
==en lugar de timing-safe.
Valide con los test vectors oficiales.