- Crear una Entity para cada destinatario
- Hacer el onboarding de la Entity, incluyendo la cuenta donde recibirá el pago
- Crear un Checkout Session con un arreglo
splity enviar al cliente a suredirect_url
Antes de comenzar
- Una cuenta de Fintoc con Collects habilitado
- Tu clave secreta y clave pública
- Información bancaria y de negocio de cada Entity que necesites onboardear
Paso 1: Crear una Entity
Una Entity representa al titular legal que recibe una parte del pago: un vendedor, un socio, un profesional, una unidad de negocio.settlement_recipient de una Entity nueva comienza en waiting_initialization. No puede recibir un split hasta que capabilities.settlement_recipient.status llegue a operational. Fintoc establece este estado después de aprobar el onboarding. El status de primer nivel refleja la capability más avanzada de la Entity. Usa el estado de la capability para determinar si la Entity está disponible para Split Payments.
Si el destinatario ya existe como Entity en tu organización, reutiliza su
id. Crear una segunda Entity con el mismo holder_id devuelve 409 entity_holder_id_already_exists_for_organization.GET /v2/entities — que acepta filtros holder_id, status y is_root — y GET /v2/entities/{id}.
Paso 2: Hacer el onboarding de la Entity
Durante el onboarding, la Entity declara quién es y la cuenta bancaria donde Fintoc paga los fondos del split. Fintoc revisa el onboarding. Después de aprobarlo, la capabilitysettlement_recipient de la Entity pasa a operational.
El onboarding se completa a través de la API, tanto en Chile como en México.
Crear el onboarding
Tipo de onboarding
type es requerido al crear el onboarding. Declara qué hará la Entity con Fintoc, no se puede cambiar después y determina cuánta información pide el onboarding.
settlement_recipient — la Entity solo recibe dinero. Su parte de cada split se transfiere a la cuenta bancaria que declara en settlement_account, y nada más: no mantiene balance en Fintoc, no puede recibir transferencias de terceros y no puede enviar dinero. Como solo recibe pagos, el onboarding pide lo mínimo necesario para identificar a quién se le paga. Este es el valor a usar para Split Payments.
account_holder — la Entity opera una cuenta en Fintoc. Puede recibir transferencias entrantes, enviar salientes y mantener balance. Esa capacidad conlleva un perfil de riesgo más alto, por lo que el onboarding requiere el conjunto completo de información: perfil transaccional, estructura de propiedad y documentos de respaldo.
La cuenta de liquidación
data.company_information.settlement_account es la cuenta donde se transfiere la parte de cada destinatario en cada split. Es el único campo que Split Payments agrega al onboarding. Los campos requeridos de settlement_account dependen del country_code del destinatario.
Chile
México
El campo
settlement_account no lleva campos de titular. El titular de la cuenta es la Entity que está completando el onboarding, así que el identificador fiscal ya se conoce.
Campos del onboarding
Para Entities de empresa en Chile,
business_activity, business_address y phone son opcionales. Puedes omitirlos del ejemplo anterior. Las Entities de empresa en México deben seguir enviando los tres.
Enviar el onboarding
Una vez completa la información, envíala a revisión:Validación automática de la cuenta de liquidación. Al enviar el onboarding, Fintoc valida la
settlement_account enviando un micro-depósito — 1 CLP para Entities chilenas o 0,01 MXN para Entities mexicanas — para confirmar que la cuenta está activa y que su titular coincide con el holder_id de la Entity. Esto ocurre automáticamente en cada envío de un onboarding de tipo settlement_recipient; no necesitas dispararlo por separado.
Dos webhooks te avisan del resultado:
entity.onboarding.approved— la Entity está lista para recibir splitsentity.onboarding.rejected— la revisión falló
La revisión de compliance típicamente toma uno a dos días hábiles. Diseña tu flujo para que el destinatario pueda crearse y mostrarse como pendiente mientras corre la revisión.
Cambiar la cuenta de liquidación
Crea un nuevo onboarding para la misma Entity con la nueva cuenta. Mientras está bajo revisión, la cuenta anterior sigue vigente y la Entity sigue recibiendo splits. Cuando el nuevo onboarding se aprueba, la nueva cuenta reemplaza a la anterior. Si se rechaza, no cambia nada.Paso 3: Crear un Checkout Session con split
Agrega un arreglosplit al Checkout Session. Cada entrada nombra a una Entity y su parte.
Los porcentajes se expresan en puntos base.
10000 = 100%, 1000 = 10%, 1 = 0.01%. Para asignar el 90%, envía 9000.split tal como lo enviaste, junto con el redirect_url de la página de pago. Envía al cliente allí para completar el pago.
En la vuelta, en los webhooks (ver Paso 4), cada entrada del split viene completa: todas incluyen metadata (aunque venga vacío) y un charge_processing_fee explícito (false en las entradas que no absorben la comisión). Al crear la sesión estos campos siguen siendo opcionales: no necesitas enviar metadata, y charge_processing_fee solo se envía en la entrada que absorbe la comisión.
Paso 4: Manejar los eventos posteriores al pago
Cuando el pago llega a un estado final,checkout_session.finished y payment_intent.succeeded incluyen un arreglo split_applied con el monto resuelto para cada destinatario.
split_applied aparece dos veces en checkout_session.finished: una en el propio checkout_session y otra dentro de data.payment_resource.payment_intent. Ambos arreglos tienen exactamente el mismo contenido, así que puedes leer cualquiera de los dos. La copia anidada es la misma que entrega el evento payment_intent.succeeded, que se emite junto con checkout_session.finished.
Eventos a manejar:
Cómo y cuándo se paga a los destinatarios
Las liquidaciones siguen el calendario de liquidaciones de tu organización. En cada ciclo, Fintoc agrupa cada parte que se le debe a la misma Entity en una única transferencia a su cuenta de liquidación: un destinatario que aparece en 200 pagos durante un ciclo recibe una única transferencia. Recupera una liquidación conGET /v1/payouts/{id}, lístalas con GET /v1/payouts y obtén los pagos que cubre con GET /v1/payouts/{id}/resources.
Reglas y validaciones
La solicitud falla con400 invalid_request_error si el arreglo split viola alguna regla.
Por entrada
entity_iddebe referenciar una Entity cuyocapabilities.settlement_recipient.statusseaoperational- El
country_codede la Entity debe coincidir con la moneda del pago - Para
flat:0 < amount <= amount_total - Para
percentage:0 < amount <= 10000
- Entre 1 y 10 entradas
- Sin valores
entity_idduplicados - Todas las entradas deben usar el mismo
type - La suma de todos los montos, después de convertir los porcentajes, debe ser exactamente igual a
amount_total - Para
percentage, los valores deben sumar exactamente10000bps
floor(amount_total * amount / 10000). La diferencia de redondeo acumulada se asigna a la entrada con charge_processing_fee: true.