Cómo funciona
- Crea el comercio. VelaFi devuelve un
merchantIdy unkycLinkalojado. - Envía a tu cliente al
kycLinkpara que complete el KYC o KYB. - Consulta periódicamente el estado del comercio hasta que sea
2(Normal). - Activa una cuenta de moneda (canal) para cada moneda que necesite el cliente.
- Opcionalmente, crea cuentas virtuales para que cada pagador del cliente tenga sus propios datos de depósito.
- Usa el
merchantIden cada orden, pago, transferencia y consulta de ese cliente.
Antes de empezar
- Acceso a la API, una clave de API con lista blanca de IP y un token. Consulta Autenticación. Todas las llamadas de esta página se hacen desde tu servidor, con el header
X-BH-TOKEN. - Tu propia cuenta aprobada. Los comercios que creas quedan dentro de tu cuenta de VelaFi. Consulta Comercios para conocer el modelo multicomercio.
- Los datos del cliente listos. Decide si cada cliente es
INDIVIDUALoBUSINESS, y recopila un nombre de comercio y una dirección de correo electrónico para cada uno. - Una página a la que regresar a los usuarios. La envías como
callbackUrl. En la verificación de personas físicas, VelaFi redirige el navegador del usuario a esta URL cuando termina el flujo alojado.
Paso a paso
1
Crea el comercio
Llama a Crear un comercio (Guarda de inmediato el
POST /v2/merchants) con merchantName, email, merchantType (INDIVIDUAL o BUSINESS) y callbackUrl. Envía también industryType (y industryTypeRemark cuando sea other). Para personas físicas, flow selecciona el flujo de KYC (PROFESSIONALS de forma predeterminada, o CONSUMERS), y languageCode define el idioma de la página alojada (en, es, pt, zh).merchantId asociado al cliente en tu sistema. El comercio existe a partir de este momento, incluso antes de la verificación.Rechazos comunes:2
Envía al cliente al enlace de verificación
Redirige el navegador del cliente al Esto no crea un segundo comercio. Falla con
kycLink, o ábrelo en un iframe dentro de tu app. Las personas físicas completan el KYC; las empresas completan el KYB. Consulta Crear un comercio para ver ambas opciones de visualización.El enlace tiene una vigencia limitada. Si el cliente no terminó, o el enlace expiró, obtén uno nuevo llamando otra vez a POST /v2/merchants con el merchantId existente, el mismo merchantType que usaste al crearlo y callbackUrl:-5062 mientras la verificación del comercio está en revisión y con -5063 una vez que fue aprobada.Llegar a tu
callbackUrl solo significa que el cliente salió del flujo alojado. No significa que haya sido aprobado. Revisa siempre el estado en el siguiente paso.3
Revisa el estado del comercio
Llama a Listar comercios (
GET /v2/merchants) y lee status y rejectReason. Envía status=-1: sin él, la lista devuelve solo los comercios aprobados. Filtra con email o merchantName para encontrar un comercio.No hay webhook para la verificación de comercios. Consulta con un intervalo moderado, por ejemplo, cada pocos minutos mientras el cliente se está dando de alta y con menos frecuencia después.
4
Activa las cuentas de moneda
Para cada moneda que necesite el cliente, llama a Maneja el
POST /v2/merchant/accounts con merchantId, fiat y trench (el nombre del canal), además del fieldList del canal. La solicitud varía según el tipo de comercio:- Personas físicas: Activar la cuenta de un comercio persona física
- Empresas: Activar la cuenta de un comercio empresa
status devuelto:Después, consulta
GET /v2/merchant/accounts?merchantId=100001 hasta que el canal muestre status: 2. Cada registro también devuelve el paymentId del canal, que necesitas para cuentas virtuales, pagos y órdenes.Algunos canales tienen requisitos adicionales. BRL Pix - Woovi requiere primero una prueba de vida para personas físicas (Obtener la URL de prueba de vida de Woovi) y los datos completos de la empresa y de los UBO para empresas. Los documentos se deben subir con Subir un archivo. Consulta Activar la cuenta de un comercio para ver todos los canales.Rechazos comunes: -5073 (el comercio todavía no ha pasado el KYC), -5074 (ya está activa), -5062 (la activación ya está pendiente), -5079 (sin permiso de activación para este canal), -4010 (falta un campo obligatorio de fieldList o no es válido).5
Opcional: crea cuentas virtuales
Si el cliente cobra a muchos pagadores, dale a cada pagador sus propios datos de depósito con Crear cuentas virtuales (
POST /v2/merchant/virtual/accounts). Envía merchantId, fiat, el paymentId del canal y un alias de letras y dígitos. Las cuentas virtuales están disponibles para MXN, ARS, BRL y COP, y la cuenta de moneda ya debe estar activa.Lee los datos de depósito con Listar cuentas virtuales. Los depósitos a una cuenta virtual llevan su alias como depositAlias. Consulta Cobrar pagos locales con cuentas virtuales para ver el flujo de cobro completo.Usa el Merchant ID en todas las demás llamadas
ElmerchantId determina el saldo, los límites y las cuentas de quién usa una llamada. Envía el MID del cliente, no el tuyo, en cada llamada que hagas para ese cliente:
Mantén una correspondencia uno a uno entre tu ID de cliente y el MID de VelaFi, y nunca permitas que un valor proporcionado por el cliente elija el MID.
Webhooks que debes manejar
La verificación de comercios y la activación de canales no tienen webhook. Consulta periódicamenteGET /v2/merchants y GET /v2/merchant/accounts como se describe arriba.
Los webhooks se registran por cuenta de VelaFi, no por comercio: un registro por tipo de evento recibe los eventos de todos tus comercios. Los eventos de órdenes, fondeo, retiros de cripto y pagos con stablecoin llevan un merchantId, así que enrútalos con él. Para los eventos que no lo llevan, busca el registro por su ID. Consulta Configuración de webhooks.
Maneja las fallas
- Verificación rechazada (
status: 3). MuestrarejectReasona tu cliente y después solicita un nuevo enlace con el mismomerchantIdymerchantType. - El cliente abandona el flujo (
status: 4). Envía un recordatorio con un enlace nuevo. No crees un nuevo comercio; el nombre y el correo electrónico ya los ocupa el primero. - Activación fallida (
status: 3). LeefailReasonen la respuesta de la activación o en Listar cuentas de comercio. Corrige los datos defieldListo contacta a VelaFi. - Activación pendiente durante mucho tiempo. Los canales pendientes dependen del proveedor. Sigue consultando y contacta a VelaFi si el canal no se activa.
- Timeouts y errores de resultado desconocido (
-1001,-1006,-1007). Es posible que el comercio o el canal se hayan creado. Verifica con Listar comercios o Listar cuentas de comercio antes de volver a llamar. Consulta Códigos de error.
Concilia
GET /v2/merchantsconstatus=-1es la fuente de verdad del estado de verificación y del uso de los límites diarios y mensuales de cada comercio.GET /v2/merchant/accountses la fuente de verdad de qué canales están activos, supaymentId, su saldo y sus límites mensuales de compra/venta.
Prueba en el sandbox
Tu cuenta de sandbox incluye comercios de prueba preconfigurados, y en el sandbox no se realiza ningún KYC/KYB real. Usa esos comercios para probar los resultados de activación, las cuentas virtuales y los flujos de pago posteriores. Escribe tu manejo de estados contra cada código de estado de las tablas de arriba, porque no puedes hacer que un revisor real apruebe o rechace un comercio de sandbox. Consulta Sandbox.Lista de verificación para salir a producción
- Guarda el
merchantIden cuantoPOST /v2/merchantsresponda, y vincúlalo uno a uno con tu cliente. - Maneja cada estado del comercio (
1,2,3,4) y cada estado de activación (0a4), incluidas las redirecciones averifyLink. - Consulta con
status=-1, para que los comercios que todavía no están aprobados no falten en tus resultados. - Vuelve a solicitar los enlaces expirados con el
merchantIdy elmerchantTypeexistentes en lugar de crear un comercio duplicado. - Espera a que el canal muestre
status: 2antes de crear cuentas virtuales o enviar pagos en esa moneda. - Envía el MID del cliente en cada llamada posterior y enruta los eventos de webhook por
merchantId.