Saltar al contenido principal
POST
Crear una orden de pago global
La ruta de pago global de fiat a fiat te permite mover dinero entre países sin tocar cripto en la capa de aplicación: VelaFi gestiona internamente los tramos de on-ramp y off-ramp sobre rieles de stablecoins. Configuras tanto el tramo de on-ramp (donde se cobran los fondos) como el tramo de off-ramp (donde se entregan los fondos) en una sola llamada a la API. Fija el monto del lado del on-ramp (onRampFiatAmount) o del lado del off-ramp (offRampFiatAmount); si envías ambos, onRampFiatAmount tiene prioridad. Un quoteId de la API de cotización fiat/fiat fija el tipo de cambio entre monedas.

Endpoint

Usa https://api-test.velafi.com/v2/order/fiat_to_fiat para pruebas en sandbox.

Headers de la solicitud

Parámetros del cuerpo de la solicitud

Tramo de on-ramp

string
requerido
Nombre completo del país donde se cobra el fiat (por ejemplo, "Mexico").
string
requerido
Código de moneda fiat ISO 4217 en el que paga el remitente (por ejemplo, "MXN").
integer
requerido
ID numérico del método de pago para cobrar el fiat del on-ramp. Consulta los IDs de métodos de pago para ver los valores admitidos.
integer
requerido
ID del comercio para el tramo de on-ramp. Las solicitudes sin un comercio de on-ramp válido se rechazan.
decimal
Monto de fiat que paga el remitente (por ejemplo, 1000.00). Proporciona onRampFiatAmount u offRampFiatAmount; si envías ambos, onRampFiatAmount tiene prioridad.
string
Alias de la cuenta virtual que se usa para el depósito fiat del on-ramp.

Tramo de off-ramp

string
requerido
Nombre completo del país donde se entrega el fiat (por ejemplo, "Argentina").
string
requerido
Código de moneda fiat ISO 4217 que recibe el beneficiario (por ejemplo, "ARS").
integer
requerido
ID numérico del método de pago de usuario del beneficiario que recibe el fiat del off-ramp. Debe ser un userPaymentId válido devuelto por GET /v2/payments.
integer
requerido
ID del comercio para el tramo de off-ramp. Las solicitudes sin un comercio de off-ramp válido se rechazan.
decimal
Monto de fiat que recibe el beneficiario (por ejemplo, 55000.00). Se ignora cuando también se envía onRampFiatAmount con un valor de al menos 0.01.

Parámetros compartidos

string
Tu propio ID de referencia de la orden. Usa como máximo 40 caracteres. Debe ser único entre todas las órdenes fiat_to_fiat de tu cuenta; una segunda solicitud de creación con el mismo clientId se rechaza. Se devuelve en las respuestas de Obtener orden y Listar órdenes. Consulta Idempotencia y reintentos.
string
Nota opcional de texto libre adjunta a la orden.
string
ID de cotización de la API de cotización para fijar el tipo de cambio entre monedas.
object
Campos adicionales específicos del pago para ciertos métodos de pago.

Campos de la respuesta

integer
Código de estado de la respuesta. 200 indica éxito.
string
Mensaje de respuesta legible.
object
Objeto con el resultado de la orden.

Ejemplo

Obtén el estado detallado de las órdenes de fiat a fiat con GET /v2/order/detail?orderId={orderId}&orderType=fiat_to_fiat. La respuesta incluye objetos de información de pago separados para el on-ramp y el off-ramp, y un conjunto de códigos de estado propio (por ejemplo, 41 pago entrante pendiente, 51 pago saliente pendiente, 60 completada; consulta Estados de las órdenes).

Idempotencia y reintentos

Usa clientId para que la creación de órdenes se pueda reintentar de forma segura.
  • clientId es opcional. Usa como máximo 40 caracteres. Debe ser único entre todas las órdenes fiat_to_fiat de tu cuenta, para todos tus comercios.
  • Una solicitud de creación que reutiliza un clientId existente se rechaza con un error de envío repetido y no se crea ninguna orden nueva.
  • Un clientId queda vinculado a su orden de forma permanente, incluso después de que la orden se cancela. Usa un clientId nuevo para cada orden nueva.
  • GET /v2/order/detail busca las órdenes fiat_to_fiat solo por orderId. Para encontrar una orden por clientId, lista las órdenes recientes con GET /v2/orders?orderType=fiat_to_fiat y busca la coincidencia en el campo clientId.
Si una solicitud de creación agota el tiempo de espera o no devuelve respuesta, primero busca su clientId en la lista de órdenes. Si la orden está ahí, no la vuelvas a crear. Si no está, reintenta con el mismo clientId: si la primera solicitud sí creó la orden mientras tanto, el reintento se rechaza como duplicado en lugar de crear una segunda orden.
Un quoteId puede quedar consumido por una solicitud de creación que luego se rechaza. Solicita una nueva cotización antes de reintentar.