Saltar al contenido principal
POST
Crear una orden de on-ramp
El on-ramp de fiat a cripto convierte moneda fiat local en criptomoneda para tu usuario. Especifica la moneda fiat de origen, la cripto de destino y el método de pago mediante paymentId. Fija el monto de la orden en fiat (fiatAmount) o en cripto (cryptoAmount); si envías ambos, fiatAmount tiene prioridad. Para fijar el tipo de cambio, envía un quoteId de la API de cotizaciones; sin él, la orden se valúa al tipo de cambio vigente al momento de crearla. La respuesta devuelve un orderId que puedes usar para dar seguimiento a la orden durante todo su ciclo de vida mediante los endpoints Obtener orden y Listar órdenes.

Endpoint

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

Encabezados de la solicitud

Parámetros del cuerpo de la solicitud

string
requerido
Nombre completo del país del on-ramp (por ejemplo, "Mexico", "Brazil"). Debe coincidir con el país admitido por el paymentId elegido.
string
requerido
Símbolo (ticker) de la criptomoneda de destino (por ejemplo, "USDT", "USDC", "BTC").
string
requerido
Código ISO 4217 de la moneda fiat con la que paga el usuario (por ejemplo, "MXN", "BRL", "COP").
integer
requerido
ID numérico del método de pago usado para el depósito en fiat. Consulta la tabla de IDs de métodos de pago en la referencia de plantillas de pago.
string
Tu propio ID de referencia de la orden, de hasta 40 caracteres. Debe ser único entre todas las órdenes fiat_to_crypto y crypto_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 se puede usar en lugar de orderId para buscar la orden. Consulta Idempotencia y reintentos.
integer
requerido
ID numérico del comercio al que pertenece la orden. Las solicitudes sin un merchantId válido se rechazan.
decimal
Monto de moneda fiat que paga el usuario (por ejemplo, 1000.00). Envía fiatAmount o cryptoAmount; si envías ambos, fiatAmount tiene prioridad.
decimal
Monto de criptomoneda que recibe el usuario (por ejemplo, 46.73). Se ignora cuando también se envía un fiatAmount positivo.
string
Nota opcional de texto libre adjunta a la orden.
string
Alias de la cuenta virtual que se usará para el depósito en fiat. Obligatorio para los métodos de pago basados en cuentas virtuales.
string
ID de cotización de la API de cotizaciones para fijar un tipo de cambio específico. Omítelo para usar el tipo de cambio spot en tiempo real.
object
Campos adicionales específicos del pago, requeridos por 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

Después de crear la orden, consulta periódicamente GET /v2/order/detail?orderId={orderId}&orderType=fiat_to_crypto para monitorear su estado. Una orden nueva inicia en status: 40 (pago pendiente), o en 10, 11 o 31 cuando se requiere revisión de cumplimiento o documentos de soporte. Las órdenes con métodos de pago automáticos pasan a status: 50 (pagada) mediante la integración bancaria de VelaFi. Para los métodos de pago manuales, llama a POST /v2/order/confirm después de enviar la transferencia para marcar la orden como pagada.

Idempotencia y reintentos

Usa clientId para que la creación de órdenes se pueda reintentar con seguridad.
  • clientId es opcional. Cuando lo envías, debe tener como máximo 40 caracteres y ser único en tu cuenta entre todas las órdenes fiat_to_crypto y crypto_to_fiat, 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. La respuesta no devuelve la orden original; búscala por separado.
  • Un clientId queda vinculado a su orden de forma permanente, incluso después de que la orden se cancela. Usa un clientId nuevo para una orden nueva.
  • Busca una orden por clientId con GET /v2/order/detail?orderType=fiat_to_crypto&clientId={clientId}.
Si una solicitud de creación agota el tiempo de espera o no devuelve respuesta:
  1. Llama a GET /v2/order/detail con el mismo orderType y clientId.
  2. Si encuentras la orden, la solicitud original fue exitosa. No la vuelvas a crear.
  3. Si no la encuentras, 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 se puede consumir en una solicitud de creación que luego se rechaza. Solicita una cotización nueva antes de reintentar.