Skip to main content
Fintoc envía un evento de webhook cada vez que cambia un recurso de tu cuenta. Los nombres de los eventos siguen el patrón resource.event, y el campo data del evento lleva el recurso afectado. Para conocer el envoltorio que acompaña a cada evento, revisa el objeto Event. Para construir un endpoint que reciba eventos, sigue la guía de webhooks, que cubre la validación de firmas y el esquema de reintentos.
No puedes suscribirte al evento link.created con un webhook endpoint. Para recibir el evento, pasa la URL de tu backend cuando configures el widget.
Hoy Fintoc envía los siguientes tipos de eventos y agrega nuevos con el tiempo, así que ignora cualquier tipo que tu integración no reconozca:

Eventos de pago de una invoice

Una invoice llega a paid de dos formas, y los eventos son distintos. Cuando Fintoc cobra la invoice, recibes invoice.payment_succeeded y después invoice.paid. Cuando marcas la invoice como pagada porque tu cliente te pagó fuera de Fintoc, recibes solo invoice.paid. Lee external_payment en el payload para distinguir los dos casos. El valor es false cuando la plata pasó por Fintoc y true cuando no.

Anticipos de invoice

Fintoc envía invoice.upcoming antes de cada ciclo de facturación para que puedas avisarle a tu cliente antes de cobrarle. Contacta a Fintoc para definir con cuántos días de anticipación lo recibes. El payload anticipa una invoice que todavía no existe, así que dos campos se comportan distinto que en el resto de los eventos invoice.*:
  • La invoice no trae id, porque Fintoc todavía no la creó.
  • El resource_id del evento lleva la suscripción, no la invoice.

Payload de onboarding de una Entity

Los eventos entity.onboarding.approved y entity.onboarding.rejected llevan el objeto Onboarding completo, así que puedes leer los datos revisados de cada paso en data, los documents subidos y los legal_representatives y shareholders declarados sin volver a llamar a la API. El payload omite submittable, porque un onboarding ya revisado no se puede volver a enviar. Por compatibilidad hacia atrás, el payload también mantiene dos campos que el objeto Onboarding no tiene:
  • object_name: Siempre onboarding_process.
  • entity: Un resumen de la Entity con su id, holder_id, holder_name y nationality.
Lee type para distinguir los dos tipos de onboarding. Las llaves dentro de data y los slots de documents dependen de type y del país de la Entity.

Account holder

Un onboarding account_holder aprobado permite que la Entity tenga objetos Account en Fintoc. El ejemplo muestra un onboarding account_holder mexicano aprobado:
El ejemplo está abreviado: muestra una entrada por arreglo. Revisa el objeto Onboarding para ver todos los campos de data, legal_representatives, shareholders y documents.

Settlement recipient

Un onboarding settlement_recipient permite que la Entity reciba pagos divididos. data.company_information.settlement_account contiene la cuenta bancaria donde Fintoc le paga su parte a la Entity. Un onboarding settlement_recipient chileno no abre slots de documentos, así que documents y los documents de cada representante legal vienen vacíos. El ejemplo muestra un onboarding settlement_recipient chileno aprobado de una empresa:
Para una Entity que hace el onboarding como persona natural, Fintoc ignora legal_representatives, transactional_profile y shareholders. El payload trae los arreglos legal_representatives y shareholders vacíos, y data contiene solo company_information.

Reintentar tras un rechazo

Lo que puedes hacer después de entity.onboarding.rejected depende del type del onboarding:
  • account_holder: No puedes reintentar con la API. Una Entity tiene un solo onboarding account_holder por modo, así que crear otro devuelve 409 Conflict con el código conflicted_request, incluso después de un rechazo. Contacta al soporte de Fintoc para revisar el caso. Fintoc puede volver a revisar un onboarding rechazado y aprobarlo. En ese caso recibes entity.onboarding.approved con el mismo id de onboarding, así que tu handler debe aceptar una aprobación que llega después de un rechazo.
  • settlement_recipient: Crea un nuevo onboarding para la misma Entity con los datos corregidos. Un onboarding rejected o approved no bloquea uno nuevo. Mientras otro onboarding settlement_recipient de la Entity siga en pending, in_progress o submitted, crear uno nuevo devuelve 409 Conflict.