permissions es lo primero que conviene leer: es la intersección entre los alcances de tu llave y el puesto de quien la emitió, que es exactamente lo que el servidor exige. Si más tarde una llamada responde 403, compárala contra esto antes de suponer un fallo.
Tres cosas deciden si una integración funciona, y las tres son fáciles de pasar por alto.
Los montos son enteros, viajan como cadena, y los decimales son del activo
"10000000000" no son diez mil millones: son 10 000 USDT, porque en este corredor USDT lleva 6 decimales. Lee assetDecimals de la respuesta y no lo fijes en tu código — el mismo símbolo lleva otra escala en otro mercado.
Y va entre comillas: COPM lleva 18 decimales, así que un monto ordinario en pesos supera con nueve órdenes de magnitud el entero más grande que JSON representa exacto. Enviado como número no falla, llega redondeado, y sigue siendo un monto válido.
Un 201 no significa que el dinero se movió
Todo cambio y todo retiro los aprueba una persona en Vectrakpital, sin un umbral por debajo del cual sea automático. Consulta el estado; no des por hecho que crear la solicitud fue el final.
Una llave puede estrecharse sin que la toques
Se emite desde el puesto de una persona y se interseca con ese puesto en cada petición. Si esa persona cambia de rol o se va, la llave lo nota. Emítelas desde un puesto que vaya a durar más que la integración.
Hay un sandbox con los mismos endpoints y el mercado apagado, e independiente de producción: base distinta, llaves distintas. Empieza ahí — en producción cada solicitud que crees le llega a una persona.
URL base
Sandbox
https://sanbox-exchange-back.vectrakpital.com
Producción
https://back.vectrakpital.com
Lo que no se comporta igual está en entornos, y vale la pena leerlo antes que después: las direcciones de depósito de sandbox no son direcciones reales, y la conciliación siempre cuadra ahí, así que un verde no significa lo que parece.