Skip to main content
Una cotización tiene tiempo limitado y es de un solo uso. Ejecútala una vez y no la reutilices como plantilla de transferencia. Una transferencia es la ejecución de esa cotización y sigue cambiando tras su creación.

Comprueba la compatibilidad de los recursos

Antes de cotizar, confirma que:
  • La capacidad está lista, pertenece al cliente y coincide con la dirección y el método previstos.
  • Una fuente en stablecoin es una cartera emitida activa que soporta la moneda de entrada.
  • Los recursos de cartera a cartera utilizan la misma moneda y red.
  • Una cuenta o destino de pago fiat está listo y soporta la moneda y el método de salida.

Elige el importe exacto

Crea una cotización con POST /v3/quotes. Envía un lado del importe, ambas monedas y los IDs de recursos derivados de la respuesta con estas cabeceras:
Define in.amount y omite out.amount. La respuesta calcula lo que recibe el destino.
Guarda el data.id, data.status, data.expiresAt, las patas devueltas, la tasa y las comisiones de la cotización. Utiliza las cadenas decimales devueltas; no recalcules los importes ejecutables con aritmética de coma flotante. Después de una cotización con salida exacta financiada con stablecoin, lee GET /v3/customers/{customerId}/accounts/{accountId}. Compara el balances[].available del origen actual para la moneda de entrada con el data.in.amount devuelto. Si los fondos son insuficientes, cambia o financia el origen y crea una nueva cotización. Las cotizaciones con salida exacta financiadas con fiat no utilizan esta comprobación del saldo de la cartera de origen.

Ejecuta una sola vez y recupera de forma segura

Lee la cotización actual con GET /v3/quotes/{quoteId}. Ejecútala solo mientras su estado y expiresAt lo permitan. Crea la transferencia con POST /v3/transfers:
Genera una nueva Idempotency-Key para esta transferencia prevista y persístela antes de enviar la solicitud. Si se pierde la respuesta, reintenta con el mismo método, ruta, cuerpo y clave. No crees una segunda clave de ejecución para recuperar un resultado incierto. Si la API devuelve quote_already_executed, utiliza su transferId para continuar con la transferencia existente. Una respuesta idempotente también puede devolver Idempotency-Replayed: true.

Sigue la transferencia actual

Lee GET /v3/transfers/{transferId} tras la creación y después de cada webhook. Guarda el último data.state, data.stateDetail y data.openTaskIds. Cuando haya IDs de tarea abiertos, obtén GET /v3/transfers/{transferId}/tasks y completa cada tarea usando su revisión y requisitos actuales. Para un movimiento entrante, GET /v3/transfers/{transferId}/instructions puede devolver datos de financiación específicos de la transferencia. Renderiza solo la variante de instrucción devuelta y la referencia exacta. A continuación, implementa Webhooks para que cada actualización asíncrona de transferencia entre en la misma ruta de gestión del estado actual.