Cotizar un prefondeo (tasa amarrada 30 minutos)
POST/prefondeosProbar
La llamada la hace tu navegador, contra el servidor que elijas arriba. Si la documentación no está servida desde el mismo origen que la API, el navegador puede bloquear la respuesta por CORS: en ese caso abre estas páginas desde la propia API (/docs) o usa el curl de arriba.
const url = 'http://localhost:3000/v1/prefondeos';const options = { method: 'POST', headers: {'x-api-key': '<x-api-key>', 'Content-Type': 'application/json'}, body: '{"montoUsdt":1000000000}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url http://localhost:3000/v1/prefondeos \ --header 'Content-Type: application/json' \ --header 'x-api-key: <x-api-key>' \ --data '{ "montoUsdt": 1000000000 }'Scope prefondeos:write (no viene por defecto en ninguna key: pídelo). Exige Idempotency-Key. Manda uno de los dos montos: montoUsdt (micro-USDT a enviar) o montoBs (céntimos de Bs a recibir). La tasa es la del oráculo con tu spread; la comisión va dentro de la tasa y tus dispersiones con este saldo no pagan comisión por pago. Los Bs nunca se redondean hacia arriba. Manda los USDT a red/direccion del ticket, desde una de tus wallets de origen activas, y avisa con POST /prefondeos/{id}/envio antes de venceEn. Sin ninguna wallet de origen activa responde wallet_origen_requerida.
Sólo con tu key sk_live_. En tu cuenta de pruebas no se cotiza: tu prefondeo de pruebas ya viene cargado (GET /prefondeos).
Authorizations
Sección titulada «Authorizations»Parameters
Sección titulada «Parameters»Header Parameters
Sección titulada «Header Parameters»Único por operación. El alcance es tu cuenta y el modo de la key: una sk_test_ y una sk_live_ no comparten keys. Dura 24 h. Reintentar con la misma key y payload devuelve la respuesta original, con el mismo código HTTP y la cabecera Idempotent-Replayed: true; con otro payload da 409 idempotency_key_reused. Los campos secretos (el url de una gift card, una apiKey nueva, un webhookSecret) sólo llegan en la primera respuesta: al repetir llegan en null.
Request Bodyrequired
Sección titulada «Request Bodyrequired»object
Micro-USDT (1 USDT = 1000000)
Céntimos de Bs
Examples
Mandar 1.000 USDT
{ "montoUsdt": 1000000000}Responses
Sección titulada «Responses»Ticket cotizado
Un ticket de prefondeo. Montos en minor units como texto: micro-USDT (6 decimales) y céntimos de Bs. Tasas en Bs por 1 USDT con 8 decimales.
object
cotizado → enviado (avisaste) → recibido (nuestro equipo lo vio en la red) → cargado (otra persona aprobó: tienes los Bs) → consumido (saldo en 0; vuelve a cargado si se revierte un pago). vencido si no avisaste a tiempo; rechazado si lo cancelaste o no llegó.
pruebas: tu prefondeo de pruebas, ya cargado con Bs simulados (sin wallet)
Red donde se reciben los USDT
Wallet de recepción (la fija nuestro equipo). null en tu cuenta de pruebas o con una sk_test_
Tasa amarrada (con spread)
Llegó en la red después de venceEn; se cargó a la tasa de ese momento
La tasa con la que se cargaron los Bs
USDT que llegaron de más (no se cargan en este ticket)
Bs que le quedan al ticket
Costo en USDT de lo ya gastado
Cargado desde la cuenta de pruebas: no es dinero real
El from de la transferencia que anotó nuestro equipo (una de tus wallets de origen)
Tu wallet de origen registrada
El USDT llegó desde una wallet sin registrar: el ticket espera hasta aquí (72 h, con su tasa) a que la registres y la aprobemos
Sólo tu prefondeo de pruebas: a esta hora se cierra su saldo simulado (te llega prefondeo.vencido)
Example
{ "estado": "cotizado", "origen": "cotizado", "activo": "USDT", "excedenteDestino": "ticket_nuevo"}idempotency_key_required o validation_failed
object
object
Contexto estructurado del error cuando lo hay: qué límite se superó y de cuánto, qué campo es inválido, cuánto saldo había. No aparece en errores internos.
object
Código ESTABLE. Programa contra esto.
Example
{ "error": { "type": "invalid_request_error", "code": "insufficient_balance", "request_id": "req_8a0312ba896772bc441134cd" }}tenant_entorno_no_permitido: con una key sk_test_, o en tu cuenta de pruebas (tu prefondeo de pruebas ya viene cargado)
object
object
Contexto estructurado del error cuando lo hay: qué límite se superó y de cuánto, qué campo es inválido, cuánto saldo había. No aparece en errores internos.
object
Código ESTABLE. Programa contra esto.
Example
{ "error": { "type": "invalid_request_error", "code": "insufficient_balance", "request_id": "req_8a0312ba896772bc441134cd" }}tenant_sin_prefondeo_con_tasa, prefondeo_tope_superado (tickets abiertos o monto máximo por ticket) o wallet_origen_requerida (registra una wallet de origen y espera su aprobación)
object
object
Contexto estructurado del error cuando lo hay: qué límite se superó y de cuánto, qué campo es inválido, cuánto saldo había. No aparece en errores internos.
object
Código ESTABLE. Programa contra esto.
Example
{ "error": { "type": "invalid_request_error", "code": "insufficient_balance", "request_id": "req_8a0312ba896772bc441134cd" }}prefondeo_sin_configurar
object
object
Contexto estructurado del error cuando lo hay: qué límite se superó y de cuánto, qué campo es inválido, cuánto saldo había. No aparece en errores internos.
object
Código ESTABLE. Programa contra esto.
Example
{ "error": { "type": "invalid_request_error", "code": "insufficient_balance", "request_id": "req_8a0312ba896772bc441134cd" }}