Entity y completar su onboarding. Una vez aprobada, la entidad puede ser titular de objetos Account sin que uses el Dashboard.
Este flujo es para plataformas que crean una Entity por cada cliente, como marketplaces o billeteras que mantienen saldos bajo la razón social de cada cliente. Para crear objetos Account bajo tu propia Entity raíz, revisa Crea más cuentas.
DisponibilidadEl onboarding por API admite objetos
Entity mexicanos. En Chile no puedes abrir una Entity para un cliente, ni por API ni desde el Dashboard. Toda Account chilena pertenece a tu propia Entity raíz. Revisa Crea más cuentas.Antes de comenzar
Necesitas una clave secreta del Dashboard, en Developers → API Keys. La clave que envías selecciona el modo:sk_test_... opera en test y sk_live_... opera en live.
Usa el modo test para construir y verificar tu integración. Usa el modo live para hacer el onboarding de cada cliente real. Son actividades distintas, no dos etapas de un mismo flujo. Un onboarding en test es un objeto distinto de uno en live y nunca se convierte en un onboarding en live. Hacer el onboarding de un cliente en test no avanza el onboarding en live de ese cliente. Los ejemplos de esta página usan una clave de prueba.
Tu organización también necesita su propia Entity raíz (con is_root en true) en el mismo modo que la clave que envías. Fintoc verifica este requisito cuando creas una Entity para un cliente. Para hacer el onboarding de clientes en live, tu organización necesita una Entity raíz en live. Para construir en test, tu organización necesita una Entity raíz en test.
Paso 1: Crear la entidad
UnaEntity es la persona jurídica titular de la cuenta. Crea una para tu cliente con su razón social y su RFC (identificador fiscal mexicano). Configura country_code con mx y holder_id con el RFC del cliente.
Entity (ent_...), porque cada llamada del onboarding usa este valor. Revisa El objeto Entity para ver la lista completa de atributos.
Si tu organización no tiene una Entity raíz en el modo de tu clave de API, Fintoc rechaza la solicitud con 422 Unprocessable Entity, type en invalid_request_error y code en organization_without_operational_root_entity:
Error response
Entity raíz en ese modo, contacta al soporte de Fintoc antes de crear objetos Entity para clientes.
Paso 2: Crear el onboarding
ElOnboarding contiene la revisión de conocimiento del cliente de una Entity. La revisión incluye la información de la empresa, los representantes legales, el perfil transaccional y los accionistas. Crea un onboarding por Entity.
El cuerpo de la solicitud tiene dos campos de primer nivel, ambos obligatorios. Envía en type el tipo de onboarding que quieres crear. El único valor aceptado es account_holder. Envía los datos de la revisión en data, que contiene company_information, legal_representatives, transactional_profile y shareholders. Las cuatro claves son obligatorias. La estructura de data depende de type. Revisa Onboarding de account holder para ver cada campo, valor de enum y regla de validación del tipo account_holder.
Omitir type o data devuelve 400 Bad Request con el código missing_parameter. Un type que no esté entre los valores aceptados devuelve 400 Bad Request con el código invalid_enum. El mensaje de error indica los valores aceptados.
Una Entity mantiene como máximo un onboarding por modo, así que la misma Entity puede mantener un onboarding live y uno test al mismo tiempo. Un segundo onboarding en el mismo modo devuelve 409 Conflict, incluso cuando el primero ya está rejected.
Response (abridged) muestra solo los campos que cambian en ese paso, no el objeto completo. La respuesta completa también devuelve data, que repite el company_information y el transactional_profile que enviaste. Cada representante legal y accionista también incluye los campos de identidad de la solicitud. Revisa El objeto Onboarding para ver la estructura completa.
Cuatro detalles a tener en cuenta en la respuesta:
submittableesfalsehasta que cada campo y documento obligatorio esté completo.documentslista cada slot de documento de la empresa y sustatus, ya seamissingouploaded. Lee este arreglo para identificar los documentos pendientes.- Cada representante legal tiene su propio arreglo
documentscon dos slots. - Cada accionista tiene un único slot
document. Un accionista de tipolegal_entitypuede incluirchildrenanidados.
identification_number del representante legal es una CURP (Clave Única de Registro de Población). El settlement_account es una CLABE (Clave Bancaria Estandarizada) de 18 dígitos. El settlement_account de arriba es un valor de prueba documentado que no corresponde a ninguna cuenta real. Fintoc lo acepta porque su código de banco y su dígito de control son válidos. Una CLABE de puros ceros devuelve 400 Bad Request, porque 000 no es un código de banco soportado. Revisa El objeto Onboarding para ver todos los campos.
Paso 3: Subir los documentos de la empresa
Sube un archivo a cada slot de documento de la empresa del arreglodocuments con PUT .../documents/{slot_key}. Envía el archivo como multipart/form-data en el campo file. El tamaño máximo del archivo es 20 MB.
Un slot acepta un archivo o múltiples archivos. Cada slot de la empresa de un onboarding account_holder mexicano acepta un solo archivo. En un slot de un solo archivo, PUT reemplaza el archivo existente. En un slot multiarchivo, PUT agrega un archivo y conserva los que ya subiste. Revisa Administrar los archivos de un slot.
Cada slot acepta sus propios tipos de contenido:
settlement_bank_statement, proof_of_address, shareholder_structure y articles_of_incorporation.
Un archivo cuyo tipo de contenido el slot no acepta devuelve 422 Unprocessable Entity con el código unsupported_content_type. El mensaje de error lista los tipos de contenido que acepta el slot.
Administrar los archivos de un slot
El arreglodocuments devuelve una entrada por cada archivo subido. Cada entrada subida lleva su propio id. Un slot multiarchivo con tres archivos aparece tres veces en documents, una vez por archivo, con el mismo slot_key. Un slot sin archivos aparece una vez, con status en missing y sin id.
Para agregar un archivo a un slot multiarchivo, llama a POST .../documents/{slot_key} con el mismo cuerpo multipart/form-data que PUT. El ejemplo usa incorporation_amendments, un slot multiarchivo que acepta solo application/pdf. Un onboarding account_holder mexicano no tiene slots multiarchivo, así que POST aplica solo a onboardings que abren uno:
POST en un slot de un solo archivo devuelve 422 Unprocessable Entity con el código single_file_document_slot. Usa PUT para reemplazar el archivo de un slot de un solo archivo.
Para eliminar un archivo, llama a DELETE .../documents/{slot_key}/{document_id} con el id del archivo del arreglo documents:
POST y DELETE devuelven el onboarding actualizado. Un id que no pertenece a ese slot devuelve 404 Not Found con el código missing_resource. Una vez que envías el onboarding, ya no puedes agregar ni eliminar archivos.
Para reemplazar un archivo de un slot multiarchivo, llama a DELETE para ese archivo y luego a POST con el archivo nuevo.
Paso 4: Subir los documentos de cada representante legal
Cada representante legal necesita dos documentos. Usa elid del representante legal (onblr_...) de la respuesta del paso 2 y envía el slot como último segmento de la ruta. El slot identification acepta application/pdf, image/jpeg e image/png. El slot power_of_attorney acepta solo application/pdf.
power_of_attorney y para cada representante legal que hayas declarado.
Paso 5: Subir el documento de cada accionista
Cada accionista declarado necesita un documento. Usa elid del accionista (onbsh_...) de la respuesta del paso 2. Esta ruta no lleva slot, porque Fintoc lo deriva del type del accionista: identification para un natural_person y articles_of_incorporation para un legal_entity. El slot acepta application/pdf, image/jpeg e image/png.
Paso 6: Enviar a revisión
Una vez quesubmittable es true, envía el onboarding para que Fintoc lo revise. El onboarding debe estar en in_progress e incluir cada campo y documento obligatorio. Después del envío, el onboarding pasa a submitted y ya no se puede modificar.
submittable pasa a false cuando el onboarding queda en submitted, porque un onboarding enviado ya no acepta cambios.
Si falta un campo o documento obligatorio, o el onboarding ya no está en in_progress, la llamada devuelve un error 422 Unprocessable Entity. El campo param indica el slot o campo que bloquea el envío:
Error response
Paso 7: Seguir la revisión
Un onboarding pasa porpending, in_progress, submitted y luego approved, rejected o cancelled. Fintoc envía uno de estos eventos de webhook cuando aprueba o rechaza el onboarding:
Suscríbete a estos eventos en el Dashboard, en Developers → Webhooks. Cada evento lleva el onboarding revisado completo, incluidos los datos de cada paso en
data, los documents y los legal_representatives y shareholders declarados, así que no necesitas llamar a la API para leer lo que Fintoc revisó. Revisa el payload de onboarding de una Entity.
No puedes reintentar un onboarding rechazado con la API. Crear un onboarding nuevo para la misma Entity devuelve 409 Conflict, como explica el paso 2. Fintoc puede volver a revisar un onboarding rechazado y aprobarlo, así que tu handler puede recibir entity.onboarding.approved después de entity.onboarding.rejected para el mismo onboarding. Revisa Reintentar tras un rechazo.
Si no usas webhooks, consulta el onboarding directamente:
status para seguir el onboarding. Una vez que status es approved, la Entity está lista para operar.
Paso 8: Obtener la cuenta principal
Cuando el onboarding llega aapproved, Fintoc crea la Account principal de la Entity con estado active, junto con su account number raíz. No necesitas crear la Account principal. Antes de la aprobación, la Entity no tiene ninguna Account, así que ninguna Account queda nunca en pending.
Ambos modos funcionan igual: un onboarding test aprobado crea una Account principal en test, y un onboarding live aprobado crea una en live.
Lista las cuentas de la entidad para obtener la Account principal y guarda el id (acc_...) y el root_account_number (CLABE) de ese cliente.
Crear cuentas adicionales
LaAccount principal basta para enviar y recibir dinero. Crea más objetos Account bajo la misma Entity cuando el cliente necesite saldos separados, uno por centro de costo. Envía el ID de la Entity en entity_id. Cada Account tiene su propio saldo y su account number raíz. Los comprobantes de las transferencias salientes muestran la razón social del cliente. Revisa Crea más cuentas para ver los detalles de creación de cuentas.
Probar la integración
En modotest, ejecuta toda la secuencia anterior con tu clave sk_test_.... Crea la Entity y el onboarding, sube un archivo de ejemplo a cada slot y envía el onboarding. Confirma que submittable pasa a true solo después de que cada slot indica uploaded.
Fintoc selecciona el modo según la clave de API que envías, no según un parámetro de la solicitud. Los cuerpos de solicitud y de respuesta del onboarding no llevan un campo mode. Los onboardings están aislados por modo. Una clave test no puede leer ni operar sobre un onboarding live, y una clave live no puede leer ni operar sobre un onboarding test. Ambos casos devuelven 404 Not Found con el código missing_resource. Fintoc resuelve entity_id en el modo de la clave de API, así que una clave test debe referenciar una Entity que exista en modo test.
Forzar el resultado de la revisión
En modolive, el envío inicia una revisión real de conocimiento del cliente que decide el equipo de cumplimiento de Fintoc. En modo test, el envío dispara una revisión simulada. Usa la revisión simulada para ejercitar los caminos de aprobación y rechazo sin esperar.
Fintoc decide la revisión simulada según el valor de business_activity que enviaste en company_information. Este mecanismo funciona como un número de tarjeta de prueba: un valor mágico fuerza un resultado específico. Tres casos determinan la revisión simulada:
El caso
suspicious deja reviewed_at en null. Úsalo para modelar un onboarding que sigue en revisión y comprobar cómo se comporta tu integración mientras espera una decisión.
Un onboarding test sigue la misma regla de uno por modo, así que después de un rechazo simulado la Entity no puede iniciar un nuevo onboarding test. Para repetir el flujo, crea otra Entity.
Leer el resultado simulado
POST .../submit devuelve 200 OK con status en submitted y reviewed_at en null, en ambos modos. La revisión simulada corre después de la respuesta, así que no tomes la respuesta del envío como el resultado de la revisión. Consulta el onboarding como se muestra en el paso 7, o escucha el evento de webhook.
Fintoc entrega entity.onboarding.approved y entity.onboarding.rejected a los endpoints de webhook registrados en modo test, y el evento lleva "mode": "test".
Webhook event (abridged)
data del evento lleva el onboarding revisado con los mismos campos que el objeto Onboarding, salvo submittable. También mantiene object_name y entity por compatibilidad hacia atrás. El ejemplo recorta data, legal_representatives, shareholders y documents. Revisa el payload de onboarding de una Entity para ver el payload completo. El evento de rechazo lleva el mismo payload, con el type del evento en entity.onboarding.rejected y data.status en rejected.
Qué no simula el modo test
En modotest, Fintoc reproduce el resultado de la revisión y el webhook, y nada más del flujo de cumplimiento:
- Sin motivo de rechazo. Un onboarding rechazado no expone ningún campo que explique la decisión, ni en la API ni en el payload del webhook.
- Sin correos. Fintoc no envía ninguna notificación de envío a los representantes legales en modo
test.
Qué sigue
- Onboarding de account holder para el esquema de
datay los slots de documentos del tipoaccount_holder. - Crea más cuentas para una
Entityaprobada. - Revisa El objeto Onboarding y los endpoints de onboarding en la referencia de la API.