- 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
- Al menos una Entity en estado
operational(ver los pasos 1 y 2)
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.waiting_initialization. No puede recibir un split hasta que llegue a operational, lo que sucede cuando se aprueba su onboarding.
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
El onboarding es donde la Entity declara quién es y, lo más importante para Split Payments, la cuenta bancaria donde recibirá el pago. Fintoc lo revisa, y cuando se aprueba, la Entity pasa aoperational.
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 esta Entity en cada split. Es el único campo que Split Payments agrega al onboarding.
No lleva campos de titular: el titular de la cuenta es la empresa que se está onboardeando, así que el identificador fiscal ya se conoce.
Campos del onboarding
Enviar el onboarding
Una vez completa la información, envíala a revisión:
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.
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.
Cómo y cuándo se paga a los destinatarios
Los payouts siguen el calendario de liquidación 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 un payout conGET /v1/payouts/{id}, lístalos 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 se viola alguna regla.
Por entrada
entity_iddebe referenciar una Entity en estadooperational- 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.