Skip to main content
Usa la API para crear una 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 de clientes en Chile y México. Esta guía cubre el tipo account_holder, que abre una empresa como titular de cuenta. Una Entity que solo recibe su parte de los pagos divididos usa el tipo settlement_recipient. Revisa Aceptar pagos divididos.
Completa el flujo a través de la APIUn onboarding que creas a través de la API lleva source en api y permanece en ese canal. No puedes continuar ese onboarding desde el Dashboard: subir los documentos, enviarlo a revisión y seguir el resultado ocurren a través de la API.
El flujo es el mismo en ambos países. Las pestañas de cada paso muestran lo que cambia entre Chile y México: el identificador fiscal, los campos de data, los slots de documentos y el formato del número de cuenta. Los onboardings chilenos no tienen documentos de accionistas, así que se saltan el paso 5.

Antes de comenzar

Necesitas una secret key del Dashboard, en Developers → API keys. La secret key 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

Una Entity es la persona jurídica titular de la cuenta. Crea una para tu cliente con su razón social y su identificador fiscal. El tipo account_holder solo admite empresas, así que holder_id debe identificar a una empresa.
Configura country_code con cl y holder_id con el Rol Único Tributario (RUT) de la empresa. holder_id es obligatorio y debe ser un RUT válido, con o sin puntos y guion. Un RUT inválido devuelve 400 Bad Request con el código invalid_holder_id.
Fintoc guarda el RUT sin puntos ni guion. Un RUT de persona natural crea la Entity, pero crear su onboarding account_holder devuelve 422 Unprocessable Entity con el código holder_type_not_supported.
Guarda el ID de la 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
Verifica que estás usando la clave del modo correcto. Si tu organización no tiene una Entity raíz en ese modo, contacta al soporte de Fintoc antes de crear objetos Entity para clientes.

Paso 2: Crear el onboarding

El Onboarding contiene la revisión de conocimiento del cliente de una Entity. La revisión cubre la empresa, sus representantes legales, su perfil transaccional y sus accionistas. Crea un onboarding por Entity. El cuerpo de la solicitud tiene dos campos de primer nivel, ambos obligatorios. Envía type en account_holder, el tipo que cubre esta guía. El otro valor aceptado, settlement_recipient, tiene su propio flujo en Aceptar pagos divididos. Envía los datos de la revisión en data. Las claves de data dependen del país de la Entity, y todas son obligatorias. Revisa Onboarding de account holder para ver cada campo, valor de enum y regla de validación. 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.
Un onboarding chileno envía siete claves en data: company_basics, company_information, senior_management, legal_representatives, shareholders, transactional_profile y plaft.
Cuatro detalles a tener en cuenta en la respuesta chilena:
  • documents depende de company_basics.incorporation_type. Una empresa traditional abre los slots de arriba. Una one_day_company (Empresa en un Día) abre current_shareholders_certificate en lugar de activities_start_certificate y good_standing_certificate.
  • documents siempre lista uaf_registration_certificate y plaft_manual_and_policies. Solo los subes cuando plaft.uaf_obligated es true.
  • Cada representante legal tiene su propio arreglo documents con dos slots: el anverso y el reverso del documento de identidad.
  • Cada accionista tiene document en null, porque Chile no exige un documento por accionista.
El identification_number del representante legal y el holder_id de los accionistas llevan un RUT cuando nationality es cl. Un representante legal extranjero usa su número de pasaporte.
Un bloque etiquetado como Response (abridged) muestra solo los campos que cambian en ese paso, no el objeto completo. La respuesta completa también devuelve data, que repite los datos de cada paso que enviaste, salvo legal_representatives y shareholders. Cada representante legal y accionista también incluye los campos de identidad de la solicitud. Revisa El objeto Onboarding para ver la estructura completa. Tres detalles aplican en ambos países:
  • submittable es false hasta que cada campo y documento obligatorio esté completo.
  • documents lista cada slot de documento de la empresa y su status, ya sea missing o uploaded. Lee este arreglo para identificar los documentos pendientes.
  • Un accionista de tipo legal_entity puede incluir children anidados.
Los pasos 3, 4 y 5 completan los slots.

Paso 3: Subir los documentos de la empresa

Sube un archivo a cada slot de documento de la empresa del arreglo documents 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. 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 de la empresa chilena acepta solo application/pdf. Los slots que debes completar dependen de los datos que enviaste en el paso 2:Un PUT a un slot que el onboarding no abre, como current_shareholders_certificate en una empresa traditional, devuelve 422 Unprocessable Entity con el código unknown_document_slot.
Repite el proceso para cada slot obligatorio restante. Agrega los archivos de incorporation_amendments y plaft_manual_and_policies de a uno, como muestra Administrar los archivos de un slot.
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 arreglo documents 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 de un onboarding chileno que acepta solo application/pdf. Un onboarding account_holder mexicano no tiene slots multiarchivo:
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:
Las llamadas 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. Cada representante legal necesita dos documentos. Usa el id del representante legal (onblr_...) de la respuesta del paso 2 y envía el slot como último segmento de la ruta. Los dos slots dependen del país:
Sube el anverso y el reverso del documento de identidad como dos archivos. En Chile, la personería no es un slot del representante legal. Súbela al slot de la empresa power_of_attorney en el paso 3.
Un slot que no corresponde al país del onboarding devuelve 422 Unprocessable Entity con el código unknown_document_slot. El ejemplo sube el slot mexicano identification. Un onboarding chileno usa la misma ruta con identification_front o identification_back.
Repite el proceso para el segundo slot y para cada representante legal que hayas declarado.

Paso 5: Subir el documento de cada accionista

Solo los onboardings mexicanos exigen un documento por accionista. Un onboarding chileno se salta este paso: cada accionista chileno tiene document en null, y subir un archivo a ese accionista devuelve 422 Unprocessable Entity con el código shareholder_document_not_required. En México, cada accionista declarado necesita un documento. Usa el id 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 que submittable 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
Un onboarding chileno hace dos verificaciones más cuando lo envías:
  • Estado de Empresa en un Día. Cuando incorporation_type es one_day_company, Fintoc verifica que el RUT de la empresa esté registrado como Empresa en un Día. Si la empresa no lo está, o Fintoc no puede confirmarlo, la llamada devuelve el código not_one_day_company con param en incorporation_type. Si el registro rechaza el RUT de la Entity por inválido, la llamada devuelve el código invalid_rut con param en rut.
  • Controlador efectivo. Al menos un accionista debe tener effective_controller en true. Si no, la llamada devuelve el código effective_controller_required con param en shareholders.

Paso 7: Seguir la revisión

Un onboarding pasa por pending, 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:
Revisa 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 a approved, 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 de ese cliente. El formato del número de cuenta y la moneda dependen del país:
Una Account principal chilena mantiene CLP, y su root_account_number es un número de cuenta bancaria chileno.

Crear cuentas adicionales

La Account 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 modo test, ejecuta toda la secuencia anterior con tu clave sk_test_.... Crea la Entity y el onboarding, sube un archivo de ejemplo a cada slot obligatorio y envía el onboarding. Confirma que submittable pasa a true solo después de que cada slot obligatorio 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.
Para un onboarding chileno en test, envía incorporation_type en traditional. Una one_day_company activa la verificación de Empresa en un Día del paso 6 sobre el RUT de la Entity, también en modo test, así que un RUT de prueba puede bloquear el envío.

Forzar el resultado de la revisión

En modo live, 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 un valor mágico de los datos que enviaste. Este mecanismo funciona como un número de tarjeta de prueba: un valor mágico fuerza un resultado específico. El campo que lleva el valor depende del país:
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.
Fintoc compara el string completo de forma exacta, incluyendo mayúsculas y espacios. ILLEGAL, Illegal y "illegal " con un espacio al final terminan todos en approved.

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)
El 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 muestra un onboarding mexicano y 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 modo test, 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