Webhooks de Agregación
Un webhook es una devolución de llamada web que Belvo utiliza para enviar notificaciones sobre un enlace específico. Necesitarás configurar webhooks para poder usar las APIs de Belvo.
Configurar webhooks
Para configurar un nuevo webhook:
En tu panel de control de Belvo, ve a la sección de webhooks de datos.
En la pestaña Webhooks de Datos, haz clic en +Nuevo webhook.
Completa el formulario de Nuevo webhook con la información requerida.
- URL: la URL para recibir las notificaciones del webhook.
- Authorization: un token de autorización opcional para usar si tu URL está protegida.
Haz clic en Crear webhook.
✳️ ¡Listo! El webhook está ahora configurado y tu aplicación será notificada de nuevos eventos relacionados con tus links.
Por razones de seguridad, puedes agregar una capa adicional de autenticación a tus llamadas de webhook. Cuando crees tu webhook, en el campo Autenticación (Opcional), ingresa ya sea:
Basic
y una cadenausername:password
codificada en base64 (para autenticación Básica)Bearer
y un token (para autenticación Bearer)
Tipos de webhook
Todos los eventos de webhook vienen con una carga útil principal (como se describe en el ejemplo de código).
{
"webhook_id": "aadf41a1fc8e4f79a49f7f04027ac999",
"webhook_type": "ACCOUNTS",
"process_type": "historical_update", // Indica por qué se activó el webhook
"webhook_code": "historical_update", // Tipo de webhook
"link_id": "16f68516-bcbc-4cf7-b815-c500d4204e28", // Enlace
"request_id": "4363b08b-51eb-4350-9c74-5df5ac92a7f6",
"external_id": "your_external_id", // Tu ID externo para el enlace, si proporcionaste uno.
"data": {
// Contenido del webhook. Para más información, consulta la documentación relativa al tipo de Webhook.
}
}
Parámetro | Requerido | Tipo | Descripción | Ejemplo |
---|---|---|---|---|
webhook_id | si | string | El ID del webhook de Belvo. | aadf41a1fc8e4f79a49f7f04027ac999 |
webhook_type | si | string | El recurso al que se refiere este webhook. | ACCOUNTS |
process_type | si | string | El parámetro process_type indica por qué se activó el evento del webhook. Devolvemos uno de los siguientes valores:
| ACCOUNTS |
webhook_code | si | string | El evento que activó el webhook. | STATUS_UPDATE |
external_id | si | string | El identificador único que proporcionaste al crear el objeto. Para cargos y transacciones, este campo siempre devolverá null . | c3c51aaf-aaa3-400c-926d-87ab62e195fd |
data | si | object | Un objeto que contiene datos específicos sobre el evento. Los campos devueltos en este objeto dependen del webhook_type y webhook_code . Para obtener información sobre los datos específicos de un webhook dado, consulta la página dedicada a cada recurso. | {} |
Eventos de error de webhook
A veces, al recuperar información de una institución, puede ocurrir un error. En este caso, el objeto de datos del evento de webhook contendrá la información del error que ocurrió. Por ejemplo:
{
"webhook_id": "5b82fdf536da43039c69a4305ecb1ceb",
"webhook_type": "ACCOUNTS",
"webhook_code": "historical_update",
"link_id": "c7ba4551-ed8d-46ee-9b67-c864a77d6381",
"external_id": "your_external_id",
"data": {
"errors": [ // Detalles del error que ocurrió
{
"code": "service_unavailable",
"message": "Belvo no puede procesar la solicitud debido a un problema interno del sistema o a una respuesta no compatible de una institución"
}
]
}
}
Política de Reintento
Si Belvo llama inicialmente a tu servidor y no recibe un código de estado HTTP 2XX
, intentaremos nuevamente cinco veces usando un retroceso lineal para permitir que tu servidor se recupere de cualquier mal funcionamiento.
Mejores Prácticas de Webhook
Responder a webhooks
Tan pronto como recibas un webhook de Belvo, asegúrate de responder con un código de estado HTTP 2XX
. Si no recibimos una respuesta 2XX
de tu servidor, intentaremos nuevamente cinco veces usando un retroceso lineal para permitir que tu servidor se recupere de cualquier mal funcionamiento.
Lista blanca de direcciones IP salientes
Recomendamos encarecidamente que pongas en la lista blanca estas direcciones IP para que puedas recibir eventos de webhook.
Puedes recibir eventos de webhook desde las siguientes direcciones IP:
3.130.254.46
18.220.61.186
18.223.45.212
Prueba de eventos de webhook
Puedes activar cualquier tipo de evento de webhook (incluidos los eventos de link) desde tu Dashboard de Belvo. Una vez activado, recibirás un payload con datos ficticios. Esta es una excelente manera de probar si puedes recibir webhooks, si has configurado correctamente tu autenticación (si es necesario) y actuar sobre los diversos tipos de eventos.
Para activar un evento:
- Desde el Cambiador de Entorno en tu dashboard de Belvo, selecciona el entorno en el que deseas probar tu webhook.
- Selecciona la pestaña Webhooks.
- Haz clic en el menú desplegable junto a la URL del webhook de Sandbox que deseas probar.
- Selecciona el tipo de evento de webhook que deseas. Esto envía el webhook.
- Expande el cuadro de estado para ver los detalles del evento de webhook.
cuentas
Actualización histórica
Tan pronto como se crea tu enlace bancario, cargamos de manera asincrónica las cuentas disponibles para el enlace y te enviaremos el siguiente webhook:
Webhook Code | Descripción |
---|---|
historical_update | El número total de cuentas encontradas para el enlace. |
En el payload del webhook incluimos el número de cuentas encontradas para el enlace.
{
"webhook_id": "aadf41a1fc8e4f79a49f7f04027ac999",
"webhook_type": "ACCOUNTS",
"process_type": "historical_update",
"webhook_code": "historical_update",
"link_id": "16f68516-bcbc-4cf7-b815-c500d4204e28",
"request_id": "4363b08b-51eb-4350-9c74-5df5ac92a7f6",
"external_id": "your_external_id",
"data": {
"total_accounts": 5 // Número total de cuentas encontradas.
}
}
Una vez que recibas la notificación, puedes obtener más detalles haciendo la siguiente solicitud:
curl --request GET 'https://api.belvo.com/api/accounts/?link=link_id' \
-u [Secret Key ID]:[Secret Key PASSWORD]
Parámetro de consulta | Descripción | Ejemplo |
---|---|---|
link | El link_id que recibiste en la notificación del webhook. | 2f5d361d-dad6-45d4-a0bf-26d479766067 |
Nuevas cuentas disponibles
De acuerdo con la frecuencia de actualización elegida, Belvo recuperará de manera asincrónica datos sobre cualquier nueva cuenta que haya aparecido para el enlace dado desde la última actualización.
Código de Webhook | Descripción |
---|---|
new_accounts_available | El número de nuevas cuentas encontradas en la institución desde la última actualización. |
En el payload del webhook incluimos el número de nuevas cuentas encontradas para el enlace.
{
"webhook_id": "aadf41a1fc8e4f79a49f7f04027ac999",
"webhook_type": "ACCOUNTS",
"process_type": "recurrent_update",
"webhook_code": "new_accounts_available",
"link_id": "16f68516-bcbc-4cf7-b815-c500d4204e28",
"request_id": "4363b08b-51eb-4350-9c74-5df5ac92a7f6",
"external_id": "your_external_id",
"data": {
"new_accounts": 1 // Nuevas cuentas encontradas para el enlace
}
}
Una vez que recibas la notificación, puedes obtener más detalles haciendo la siguiente solicitud:
curl --request GET 'https://api.belvo.com/api/accounts/?link=link_id' \
-u [Secret Key ID]:[Secret Key PASSWORD]
Parámetro de Consulta | Descripción | Ejemplo |
---|---|---|
link | El link_id que recibiste en la notificación del webhook. | 2f5d361d-dad6-45d4-a0bf-26d479766067 |
bills
Actualización histórica
Tan pronto como se crea tu enlace bancario recurrente, cargamos asincrónicamente las facturas disponibles para el enlace y te enviaremos el siguiente webhook:
Código del Webhook | Descripción |
---|---|
historical_update | El número total de facturas encontradas para el enlace. |
En la carga útil del webhook incluimos el número de facturas encontradas para el enlace.
{
"webhook_id": "aadf41a1fc8e4f79a49f7f04027ac999",
"webhook_type": "BILLS",
"process_type": "historical_update",
"webhook_code": "historical_update",
"link_id": "16f68516-bcbc-4cf7-b815-c500d4204e28",
"request_id": "4363b08b-51eb-4350-9c74-5df5ac92a7f6",
"external_id": "your_external_id",
"data": {
"total_bills": 2 // Número total de facturas
}
}
Una vez que recibas la notificación, puedes obtener más detalles haciendo la siguiente solicitud:
curl --request GET 'https://api.belvo.com/api/bills/?link=link_id' \
-u [Secret Key ID]:[Secret Key PASSWORD]
Parámetro de Consulta | Descripción | Ejemplo |
---|---|---|
link | El link_id que recibiste en la notificación del webhook. | 2f5d361d-dad6-45d4-a0bf-26d479766067 |
Nuevas facturas disponibles
De acuerdo con la frecuencia de actualización elegida, Belvo recuperará asincrónicamente datos sobre cualquier nueva factura que haya aparecido para el enlace dado desde la última actualización.
Código de Webhook | Descripción |
---|---|
new_bills_available | El número de nuevas facturas encontradas en la institución desde la última actualización. |
En el payload del webhook incluimos el número de nuevas facturas encontradas para el enlace.
{
"webhook_id": "aadf41a1fc8e4f79a49f7f04027ac999",
"webhook_type": "BILLS",
"process_type": "recurrent_update",
"webhook_code": "new_bills_available",
"link_id": "16f68516-bcbc-4cf7-b815-c500d4204e28",
"request_id": "4363b08b-51eb-4350-9c74-5df5ac92a7f6",
"external_id": "your_external_id",
"data": {
"new_bills": 1 // Número de nuevas facturas
}
}
Una vez que recibas la notificación, puedes obtener más detalles haciendo la siguiente solicitud:
curl --request GET 'https://api.belvo.com/api/bills/?link=link_id&created_at__range=date1,date2' \
-u [Secret Key ID]:[Secret Key PASSWORD]
Parámetro de Consulta | Descripción | Ejemplo |
---|---|---|
link | El link_id que recibiste en la notificación del webhook. | 2f5d361d-dad6-45d4-a0bf-26d479766067 |
created_at__range | El rango de fechas para el cual deseas recibir empleos. Recomendamos que date1 sea la fecha en que recibiste previamente una notificación y date2 sea la fecha en que recibes la notificación actual (ambas en formato YYYY-MM-DD ). | 2024-05-01,2024-06-01 |
consents
Solo recibirás eventos de CONSENT
de webhook para enlaces recurrentes.
Consentimiento a punto de expirar
Si deseas recibir webhooks para consentimientos que están a punto de expirar, por favor contacta a nuestro equipo de soporte.
Puedes recibir un evento openfinance_consent_about_to_expire
cuando el consentimiento para uno de tus enlaces OFDA esté a punto de expirar dentro de los siete días posteriores a la actualización recurrente del enlace.
Por ejemplo, si tienes una tasa de actualización mensual para un enlace que se renueva el segundo día de cada mes, y la fecha de expiración del consentimiento del enlace es el sexto de ese mes, recibirás un evento openfinance_consent_about_to_expire
. Sin embargo, si tienes otro enlace que se renueva el segundo día de cada mes pero la fecha de expiración del consentimiento es el décimo de ese mes, no recibirás un evento.
Una vez que recibas este evento, puedes solicitar a tu usuario que renueve su consentimiento utilizando el My Belvo Portal.
{
"webhook_id": "37a084ee0741437fa7a95393b5636f7b",
"webhook_type": "CONSENT",
"process_type": "recurrent_update",
"webhook_code": "openfinance_consent_about_to_expire",
"link_id": "da9822bb-5bd6-4a0a-b64d-0aefcc9e86b0",
"external_id": null,
"data": {
"consent_id": "9e763d19-15a4-410c-a106-18c0f60ca5eb", // El ID del consentimiento.
"consent_due_date": "2024-12-26T10:45:58.000Z", // Marca de tiempo ISO-8601 de cuándo expirará el consentimiento.
"action": "renew", // Una indicación de qué acción necesitas tomar. Para los webhooks openfinance_consent_about_to_expire, esto siempre se establece en renew.
"institution": "ofmockbank_br_retail", // La institución para la cual el usuario proporcionó su consentimiento.
"institution_display_name": "OF Mockbank", // El nombre para mostrar de la institución.
"institution_icon_logo": "https://logo.com" // La URL del logo de la institución.
}
}
Consentimiento expirado
Puedes recibir un evento consent_expired
cuando el consentimiento para uno de tus enlaces OFDA ha expirado.
Una vez que recibas este evento, puedes solicitar a tu usuario que renueve su consentimiento usando el My Belvo Portal.
{
"webhook_id": "e6f08793f967445fb74ce16beae665bc",
"webhook_type": "CONSENT",
"process_type": "recurrent_update",
"webhook_code": "openfinance_consent_expired",
"link_id": "3d3364b7-0175-483d-a58b-b471f251e533", // El ID del enlace asociado con el consentimiento.
"external_id": null,
"data": {
"consent_id": "29a54e55-21f0-4d02-8e34-797ab7d43940", // El ID del consentimiento.
"action": "renew", // Una indicación de qué acción necesitas tomar. Para los webhooks openfinance_consent_expired, esto siempre se establece en renew.
"institution": "ofmockbank_br_retail", // La institución para la cual el usuario proporcionó su consentimiento.
"institution_display_name": "OF Mockbank", // El nombre para mostrar de la institución.
"institution_icon_logo": "https://logo.com" // La URL del logo de la institución.
}
}
Una vez que recibas la notificación, puedes solicitar a tu usuario que renueve su consentimiento usando el My Belvo Portal.
Consentimiento revocado
Puedes recibir un evento openfinance_consent_with_unrecoverable_resources
cuando un consentimiento ha sido revocado debido a que los recursos preexistentes no están disponibles. Un ejemplo de cuándo podrías recibir este evento es cuando un usuario ha otorgado su consentimiento para acceder a varias cuentas y, en una fecha posterior, cerró esas cuentas.
{
"webhook_id": "e6f08793f967445fb74ce16beae665bc",
"webhook_type": "CONSENT",
"process_type": "recurrent_update",
"webhook_code": "openfinance_consent_with_unrecoverable_resources",
"link_id": "da9822bb-5bd6-4a0a-b64d-0aefcc9e86b0",
"external_id": null,
"data": {
"consent_id": "29a54e55-21f0-4d02-8e34-797ab7d43940", // El ID del consentimiento.
"institution": "ofmockbank_br_retail", // La institución para la cual el usuario proporcionó su consentimiento.
"message": "The consent was revoked because it was unrecoverable" // Mensaje de error sobre el consentimiento revocado.
}
}
Consentimiento temporalmente no disponible
Puedes recibir un evento openfinance_consent_with_temporarily_unavailable_resources
cuando un consentimiento está temporalmente no disponible debido a que los recursos preexistentes no están disponibles. Un ejemplo de cuándo esto puede ocurrir es cuando el usuario otorgó su consentimiento para acceder a una cuenta determinada, pero no ha utilizado esa cuenta por un tiempo (el número de días hasta que una cuenta se marca como inactiva depende de cada institución).
{
"webhook_id": "745156bbbd0d47b0a33ff995d7b4e5d8",
"webhook_type": "CONSENT",
"process_type": "recurrent_update",
"webhook_code": "openfinance_consent_with_temporarily_unavailable_resources",
"link_id": "da9822bb-5bd6-4a0a-b64d-0aefcc9e86b0",
"external_id": null,
"data": {
"consent_id": "29a54e55-21f0-4d02-8e34-797ab7d43940", // El ID del consentimiento.
"institution": "ofmockbank_br_retail", // La institución para la cual el usuario proporcionó su consentimiento.
"message": "The consent is temporarily unusable" // Mensaje de error sobre el consentimiento temporalmente no disponible.
}
}
current-employments
Esta sección menciona actualmente un nuevo recurso que está en desarrollo: Empleos Actuales. Este recurso estará disponible en los próximos días, y actualizaremos esta guía una vez que esté listo.
Actualización histórica
Tan pronto como se crea tu enlace de empleo (para México) y hayas agregado CURRENT_EMPLOYMENTS
a la lista de recursos en fetch_resources
, recuperamos asincrónicamente el estado actual de empleo para el enlace y te enviaremos el siguiente webhook:
Código del Webhook | Descripción |
---|---|
historical_update | El número total de registros de empleo actuales encontrados para el enlace. |
En la carga útil del webhook incluimos el número de registros de empleo actuales encontrados para el enlace.
{
"webhook_id": "03d1ca0d62db4f769488265d141047b7",
"webhook_type": "CURRENT_EMPLOYMENTS",
"process_type": "historical_update",
"webhook_code": "historical_update",
"link_id": "2f5d361d-dad6-45d4-a0bf-26d479766067",
"request_id": "4363b08b-51eb-4350-9c74-5df5ac92a7f6",
"external_id": "your_external_id",
"data": {
"total_current_employments": 1 // El número total de registros de empleo actuales encontrados para el enlace
}
}
Una vez que recibas la notificación, puedes obtener más detalles haciendo la siguiente solicitud:
curl --request GET 'https://api.belvo.com/api/mx/current-employments/?link=link_id' \
-u [Secret Key ID]:[Secret Key PASSWORD]
Parámetro de Consulta | Descripción | Ejemplo |
---|---|---|
link | El link_id que recibiste en la notificación del webhook. | 2f5d361d-dad6-45d4-a0bf-26d479766067 |
employment-metrics
Actualización histórica
Tan pronto como se crea tu enlace de empleo (para SAT México) y hayas agregado EMPLOYMENT_METRICS
a la lista de recursos en fetch_resources
, calculamos asincrónicamente las métricas de empleo para el enlace y te enviaremos el siguiente webhook:
Código del Webhook | Descripción |
---|---|
historical_update | El número total de métricas de empleo generadas para el enlace. |
En la carga útil del webhook incluimos el número de métricas de empleo encontradas para el enlace.
{
"webhook_id": "03d1ca0d62db4f769488265d141047b7",
"webhook_type": "EMPLOYMENT_METRICS",
"process_type": "historical_update",
"webhook_code": "historical_update",
"link_id": "2f5d361d-dad6-45d4-a0bf-26d479766067",
"request_id": "4363b08b-51eb-4350-9c74-5df5ac92a7f6",
"external_id": "your_external_id",
"data": {
"total_employment_metrics": 1 // El número total de informes de métricas de empleo generados
}
}
Una vez que recibas la notificación, puedes obtener más detalles haciendo la siguiente solicitud:
curl --request GET 'https://api.belvo.com/api/employment-metrics/?link=link_id' \
-u [Secret Key ID]:[Secret Key PASSWORD]
Parámetro de Consulta | Descripción | Ejemplo |
---|---|---|
link | El link_id que recibiste en la notificación del webhook. | 2f5d361d-dad6-45d4-a0bf-26d479766067 |
registros-de-empleo
Actualización histórica
Tan pronto como se crea tu enlace de empleo (para SAT México), calculamos de manera asincrónica las métricas de empleo para el enlace y te enviaremos el siguiente webhook:
Código del Webhook | Descripción |
---|---|
historical_update | El número total de registros de empleo encontrados para el enlace. |
En la carga útil del webhook incluimos el número de facturas encontradas para el enlace.
{
"webhook_id": "03d1ca0d62db4f769488265d141047b7",
"webhook_type": "EMPLOYMENT_RECORDS",
"process_type": "historical_update",
"webhook_code": "historical_update",
"link_id": "2f5d361d-dad6-45d4-a0bf-26d479766067",
"request_id": "4363b08b-51eb-4350-9c74-5df5ac92a7f6",
"external_id": "your_external_id",
"data": {
"total_employment_record_profiles": 1 // El número total de perfiles de registros de empleo encontrados para el enlace
}
}
Una vez que recibas la notificación, puedes obtener más detalles haciendo la siguiente solicitud:
curl --request GET 'https://api.belvo.com/api/employment-records/?link=link_id' \
-u [Secret Key ID]:[Secret Key PASSWORD]
Parámetro de Consulta | Descripción | Ejemplo |
---|---|---|
link | El link_id que recibiste en la notificación del webhook. | 2f5d361d-dad6-45d4-a0bf-26d479766067 |
Cambios en el estado de empleo
Comuníquese con nuestro equipo, ¡y ellos le ayudarán a configurarlo!
De acuerdo con la frecuencia de actualización elegida, Belvo recuperará asincrónicamente datos sobre cualquier nuevo cambio en el empleo que haya aparecido para el enlace dado desde la última actualización.
Código de Webhook | Descripción |
---|---|
employment_changes | Una lista de cambios de empleo que han ocurrido para el enlace. |
En la carga útil del webhook incluimos los cambios de empleo identificados para el enlace.
{
"webhook_id": "03d1ca0d62db4f769488265d141047b7",
"webhook_type": "EMPLOYMENT_RECORDS",
"process_type": "recurrent_update",
"webhook_code": "employment_changes",
"link_id": "2f5d361d-dad6-45d4-a0bf-26d479766067",
"request_id": "4363b08b-51eb-4350-9c74-5df5ac92a7f6",
"external_id": "your_external_id",
"data": {
"employment_changes": ["EMPLOYED", "SALARY_INCREASED"] // Lista de cambios desde la última verificación
}
}
Una vez que reciba la notificación, puede obtener más detalles haciendo la siguiente solicitud:
curl --request GET 'https://api.belvo.com/api/employment-records/?link=link_id' \
-u [Secret Key ID]:[Secret Key PASSWORD]
Parámetro de Consulta | Descripción | Ejemplo |
---|---|---|
link | El link_id que recibió en la notificación del webhook. | 2f5d361d-dad6-45d4-a0bf-26d479766067 |
Opciones de cambio de empleo
En tu frecuencia de actualización dada, Belvo extraerá nueva información de empleo para tu enlace y comparará el estado de empleo y la información salarial con la extracción de datos anterior.
Recomendamos una frecuencia de actualización de un mínimo de dos meses. Sin embargo, comunícate con nuestro equipo y podrán asesorarte mejor dependiendo de tu caso de uso.
En el array data.employment_changes
del webhook, puedes recibir uno o más de los siguientes cambios de empleo:
Cambio | Descripción |
---|---|
UNEMPLOYED | El empleado estaba empleado pero fue despedido o renunció a su empleador. |
EMPLOYED | El empleado estaba desempleado en el momento de la última verificación y ahora está empleado. |
EMPLOYEE_CHANGED_JOBS | El empleado cambió de trabajo. |
SALARY_INCREASE | El salario del empleado ha aumentado al menos un 10% desde la última verificación. |
SALARY_DECREASE | El salario del empleado ha disminuido al menos un 10% desde la última verificación. |
Puedes recibir más de un cambio en el array data.employment_changes
, dependiendo de la situación. Por ejemplo, si una persona cambió de trabajo y ahora recibe un salario más alto, entonces en el array data.employment_changes
recibirás:
{
"data": {
"employment_changes": ["EMPLOYEE_CHANGED_JOBS", "SALARY_INCREASE"]
}
}
Escenarios con registros eliminados o faltantes
Belvo envía notificaciones de empleo después de comparar los datos recién recuperados con los datos recuperados anteriormente. Sin embargo, puede haber casos en los que actualicemos un enlace de empleo que no tenga ningún dato de registro de empleo en la base de datos de Belvo. En estos casos, aún recibirás un employment_changes
webhook. Sin embargo, como Belvo verifica los datos recién devueltos contra datos inexistentes en la base de datos de Belvo, en este caso recibirás una de las siguientes combinaciones de cambios de empleo:
Caso cuando se actualiza | Valores |
---|---|
Usuario está empleado | EMPLOYED , EMPLOYEE_CHANGED_JOBS , SALARY_INCREASE |
Usuario está desempleado | UNEMPLOYED |
Esto puede ocurrir debido a cualquiera de las siguientes razones:
Al crear un enlace, estableces stale_in
a un período menor que tu tasa de actualización.
Al crear un enlace, puedes opcionalmente agregar el parámetro stale_in
para controlar cuánto tiempo Belvo almacena los datos derivados del usuario. El período es relativo al timestamp de last_updated_at
del enlace (la última vez que se accedió a la cuenta del usuario).
Por ejemplo, si estableces stale_in
a 62 días cuando creaste un enlace el 01.03.2024, los datos se almacenan en la base de datos de Belvo durante 62 días después de esta fecha. Si luego para el mismo enlace accedes a los datos un mes después (01.04.2024), entonces el conteo se reinicia y Belvo eliminará los datos 62 días después del 01.04.2024.
Sin embargo, si estableces un período stale_in
menor que tu tasa de actualización, Belvo eliminará los datos antes de la próxima actualización. Como resultado, los datos recién devueltos se compararán con datos inexistentes, lo que desencadenará un webhook de employment_changes
con los estados mencionados anteriormente.
Para evitar esto, ya sea:
- No pases el parámetro
stale_in
(que por defecto es 365 días). - Establece un valor
stale_in
que sea mayor que tu tasa de actualización. Por ejemplo, si tienes un período de actualización de 60 días, entonces tu parámetrostale_in
debería establecerse en al menos 62 días.
Cuando realizas un POST para Recuperar registros de empleo, configuras save_data
en false
.
Al recuperar datos de registros de empleo utilizando el Recuperar detalles del registro de empleo, configurar save_data
en false
evita que Belvo almacene los datos. En consecuencia, cualquier dato recién recuperado se comparará con datos inexistentes, lo que resultará en el employment_changes
webhook mencionado anteriormente.
Para evitar esto, recomendamos que configures save_data
en true
.
Datos de registro de empleo eliminados
Si eliminas datos de registro de empleo utilizando la solicitud Eliminar un registro de empleo, todos los datos de esa entrada de empleo se eliminan de la base de datos de Belvo. Durante la próxima actualización, Belvo compara los nuevos datos con los datos eliminados (no existentes), lo que resulta en el employment_changes
webhook mencionado anteriormente.
No hubo datos en la extracción inicial de datos del registro de empleo
En el caso de que una recuperación previa del registro de empleo no haya sido exitosa porque no había datos para el usuario en la institución (lo que resultó en que la API devolviera una respuesta vacía) o la institución de empleo no respondiera, durante la siguiente actualización, Belvo compara los nuevos datos con los datos inexistentes, lo que resulta en el webhook employment_changes
mencionado anteriormente.
empleos-brasil
Actualización histórica
Tan pronto como se crea tu enlace bancario recurrente, cargamos de manera asincrónica la información de empleo disponible para el enlace y te enviaremos el siguiente webhook:
Código del Webhook | Descripción |
---|---|
historical_update | El número total de empleos encontrados para el enlace. |
En la carga útil del webhook incluimos el número de empleos encontrados para el enlace.
{
"webhook_id": "03d1ca0d62db4f769488265d141047b7",
"webhook_type": "EMPLOYMENTS",
"process_type": "historical_update",
"webhook_code": "historical_update",
"link_id": "2f5d361d-dad6-45d4-a0bf-26d479766067",
"request_id": "4363b08b-51eb-4350-9c74-5df5ac92a7f6",
"external_id": "your_external_id",
"data": {
"total_employments": 1 // El número total de perfiles de registros de empleo encontrados para el enlace
}
}
Una vez que recibas la notificación, puedes obtener más detalles haciendo la siguiente solicitud:
curl --request GET 'https://api.belvo.com/api/br/employments/?link=link_id' \
-u [Secret Key ID]:[Secret Key PASSWORD]
Parámetro de Consulta | Descripción | Ejemplo |
---|---|---|
link | El link_id que recibiste en la notificación del webhook. | 2f5d361d-dad6-45d4-a0bf-26d479766067 |
Nuevos empleos disponibles
De acuerdo con la frecuencia de actualización elegida, Belvo recuperará asincrónicamente datos sobre cualquier nuevo empleo que haya aparecido para el enlace dado desde la última actualización.
Código de Webhook | Descripción |
---|---|
new_employments_available | El número de nuevos empleos encontrados desde la última actualización. |
En el payload del webhook incluimos el número de nuevos empleos encontrados para el enlace.
{
"webhook_id": "03d1ca0d62db4f769488265d141047b7",
"webhook_type": "EMPLOYMENTS",
"process_type": "recurrent_update",
"webhook_code": "new_employments_available",
"link_id": "2f5d361d-dad6-45d4-a0bf-26d479766067",
"request_id": "4363b08b-51eb-4350-9c74-5df5ac92a7f6",
"external_id": "your_external_id",
"data": {
"new_employments": 1 // Número de nuevos empleos encontrados desde el último evento
}
}
Una vez que recibas la notificación, puedes obtener más detalles haciendo la siguiente solicitud:
curl --request GET 'https://api.belvo.com/api/br/employments/?link=link_id&created_at__range=date1,date2' \
-u [Secret Key ID]:[Secret Key PASSWORD]
Parámetro de Consulta | Descripción | Ejemplo |
---|---|---|
link | El link_id que recibiste en la notificación del webhook. | 2f5d361d-dad6-45d4-a0bf-26d479766067 |
created_at__range | El rango de fechas para el cual deseas recibir empleos. Recomendamos que date1 sea la fecha en que recibiste previamente una notificación y date2 sea la fecha en que recibes la notificación actual (ambas en formato YYYY-MM-DD ). | 2024-05-01,2024-06-01 |
financial-statements-mexico
Actualización histórica
Tan pronto como se crea tu enlace fiscal, cargamos de manera asincrónica los últimos tres años de estados financieros y te enviaremos el siguiente webhook:
Código del Webhook | Descripción |
---|---|
historical_update | Los últimos tres años de estados financieros. |
En la carga útil del webhook incluimos el número de estados financieros recibidos.
{
"webhook_id": "aadf41a1fc8e4f79a49f7f04027ac999",
"webhook_type": "FINANCIAL_STATEMENTS",
"webhook_code": "historical_update",
"process_type": "historical_update",
"link_id": "2f8ca7a1-c28f-46f2-bb41-21633099a280",
"request_id": "4363b08b-51eb-4350-9c74-5df5ac92a7f6",
"external_id": "COHORT_32_User_6790023X5",
"data": {
"new_financial_statements": 3
}
}
Una vez que recibas la notificación, puedes obtener más detalles haciendo la siguiente solicitud:
curl --request GET \
-u [Secret Key ID]:[Secret Key PASSWORD] \
'https://api.belvo.com/api/financial-statements/?link=link_id'
Parámetro de Consulta | Descripción | Ejemplo |
---|---|---|
link | El link_id que recibiste en la notificación del webhook. | 2f5d361d-dad6-45d4-a0bf-26d479766067 |
Nuevos estados financieros disponibles
Solo aplicable para llamadas POST asincrónicas
Cuando realizas una solicitud "ad hoc" para estados financieros (con el encabezado X-Belvo-Request-Mode: async
), Belvo recuperará de manera asincrónica la información del estado financiero y te enviará el siguiente webhook:
Código del Webhook | Descripción |
---|---|
new_financial_statements_available | El número de nuevos estados financieros encontrados para el link. |
En la carga útil del webhook incluimos el número de nuevos estados financieros encontrados para el link.
{
"webhook_id": "aadf41a1fc8e4f79a49f7f04027ac999",
"webhook_type": "FINANCIAL_STATEMENTS",
"webhook_code": "new_financial_statements_available",
"process_type": "async_post",
"link_id": "16f68516-bcbc-4cf7-b815-c500d4204e28",
"request_id": "4363b08b-51eb-4350-9c74-5df5ac92a7f6",
"external_id": "COHORT_32_User_6790023X5",
"data": {
"new_financial_statements": 1
}
}
Una vez que recibas la notificación, puedes obtener más detalles realizando la siguiente solicitud:
curl --request GET \
-u [Secret Key ID]:[Secret Key PASSWORD] \
'https://api.belvo.com/api/financial-statements/?link=link_id'
Parámetro de Consulta | Descripción | Ejemplo |
---|---|---|
link | El link_id que recibiste en la notificación del webhook. | 2f5d361d-dad6-45d4-a0bf-26d479766067 |
Errores al extraer Estados Financieros
Con el fin de proporcionarte una mayor visibilidad respecto a la extracción de datos de Estados Financieros, hemos incluido un nuevo campo error
en la respuesta de cada estado financiero que recibirás.
Si, para un año determinado en el que un estado financiero está disponible, no podemos recuperar los datos debido a que la institución no proporciona la información en el formato correcto, el campo error
indicará la razón detrás de la extracción fallida:
[
{
"id": "0d3ffb69-f83b-456e-ad8e-208d0998d71d",
"link": "30cb4806-6e00-48a4-91c9-ca55968576c8",
"collected_at": "2022-02-09T08:45:50.406032Z",
"created_at": "2022-02-09T08:45:50.406032Z",
"error": "Unable to validate if the user has an available financial statement for the specified year.",
"year": 2020,
"currency": "MXN",
"balance_sheet": null,
"income_statement": null
}
]
Los posibles mensajes de error son:
Unable to validate if the user has an available financial statement for the specified year.
No available financial statement found for the user for the specified year, preventing data extraction.
Unable to verify if the user has _conceptos vigentes_ for the specified year.
The fiscal institution provided the financial statement in an unrecognized format.
Si recibes cargas de estados financieros con estos errores, por favor contacta a nuestro equipo de soporte.
ingresos
Actualización histórica
Tan pronto como se crea tu enlace bancario y has agregado INCOMES
a la lista de recursos en fetch_resources
, calculamos asincrónicamente los datos de ingresos para el enlace y te enviaremos el siguiente webhook:
Código del Webhook | Descripción |
---|---|
historical_update | El número total de ingresos y flujos de ingresos identificados para el enlace. |
En la carga útil del webhook incluimos el número de ingresos y flujos de ingresos identificados para el enlace.
{
"webhook_id": "75f0c2ca92e64f228da04cc7f5039c03",
"webhook_type": "INCOMES",
"process_type": "historical_update",
"webhook_code": "historical_update",
"link_id": "16f68516-bcbc-4cf7-b815-c500d4204e28",
"request_id": "4363b08b-51eb-4350-9c74-5df5ac92a7f6",
"external_id": "your_external_id",
"data": {
"total_incomes": 1, // Siempre = 1, Indica que el análisis está listo para ser recuperado.
"number_of_income_streams": 5, // Número total de flujos de ingresos identificados.
}
}
Una vez que recibas la notificación, puedes obtener más detalles haciendo la siguiente solicitud:
curl --request GET 'https://api.belvo.com/api/incomes/?link=link_id' \
-u [Secret Key ID]:[Secret Key PASSWORD]
Parámetro de Consulta | Descripción | Ejemplo |
---|---|---|
link | El link_id que recibiste en la notificación del webhook. | 2f5d361d-dad6-45d4-a0bf-26d479766067 |
investment-transactions
Actualización histórica
Tan pronto como se crea tu enlace bancario, cargamos de manera asincrónica las transacciones de inversión disponibles para el enlace y te enviaremos el siguiente webhook:
Código del Webhook | Descripción |
---|---|
historical_update | El número total de transacciones de inversión para el enlace del último año. |
En la carga útil del webhook incluimos el número de transacciones de inversión encontradas para el enlace (incluyendo el número de transacciones de entrada y salida) así como el rango de fechas al que se aplica la información.
{
"webhook_id": "aadf41a1fc8e4f79a49f7f04027ac999",
"webhook_type": "INVESTMENT_TRANSACTIONS",
"process_type": "historical_update",
"webhook_code": "historical_update",
"link_id": "16f68516-bcbc-4cf7-b815-c500d4204e28",
"request_id": "4363b08b-51eb-4350-9c74-5df5ac92a7f6",
"external_id": "your_external_id",
"data": {
"total_transactions": 19, // Número total de transacciones encontradas
"total_inflow_transactions": 10, // Número total de transacciones de entrada
"total_outflow_transactions": 9, // Número total de transacciones de salida
"first_transaction_date": "2023-01-03", // Fecha de la primera transacción
"last_transaction_date": "2024-01-03" // Fecha de la última transacción
}
}
Una vez que recibas la notificación, puedes obtener más detalles haciendo la siguiente solicitud:
curl --request GET \
-u [Secret Key ID]:[Secret Key PASSWORD] \
'https://api.belvo.com/api/br/investment-transactions/?link=link_id'
Parámetro de Consulta | Descripción | Ejemplo |
---|---|---|
link | El link_id que recibiste en la notificación del webhook. | 2f5d361d-dad6-45d4-a0bf-26d479766067 |
Puedes agregar más filtros para reducir los resultados, por ejemplo:
curl --request GET \
-u [Secret Key ID]:[Secret Key PASSWORD] \
'https://api.belvo.com/api/br/investment-transactions/?link=link_id&type=INFLOW'
Parámetro de Consulta | Descripción | Ejemplo |
---|---|---|
link | El link_id que recibiste en la notificación del webhook. | 2f5d361d-dad6-45d4-a0bf-26d479766067 |
type | El tipo de transacción. Puede ser INFLOW o OUTFLOW . | INFLOW |
Nuevas transacciones disponibles
De acuerdo con la frecuencia de actualización elegida, Belvo recuperará asincrónicamente datos sobre cualquier nueva transacción de inversión que haya aparecido para el enlace dado desde la última actualización.
Definimos nuevas transacciones de inversión como transacciones encontradas en la institución para un enlace dado desde la última actualización. Por ejemplo, podrían ser nuevas transacciones de inversión de las últimas 24 horas o nuevas transacciones de inversión de hace unos días que solo fueron agregadas recientemente por la institución.
Código de Webhook | Descripción |
---|---|
new_investment_transactions_available | El número de nuevas transacciones de inversión encontradas en la institución desde la última actualización. |
En el payload del webhook incluimos el número de nuevas transacciones encontradas para el enlace.
{
"webhook_id": "aadf41a1fc8e4f79a49f7f04027ac999",
"webhook_type": "INVESTMENT_TRANSACTIONS",
"process_type": "recurrent_update",
"webhook_code": "new_investment_transactions_available",
"link_id": "16f68516-bcbc-4cf7-b815-c500d4204e28",
"request_id": "4363b08b-51eb-4350-9c74-5df5ac92a7f6",
"external_id": "your_external_id",
"data": {
"new_investment_transactions": 19 // Número de nuevas transacciones encontradas desde el último evento
}
}
Una vez que recibas la notificación, puedes obtener más detalles haciendo la siguiente solicitud:
curl --request GET \
-u [Secret Key ID]:[Secret Key PASSWORD] \
'https://api.belvo.com/api/br/investment-transactions/?link=link_id&type=INFLOW&created_at__range=date1,date2'
Parámetro de Consulta | Descripción | Ejemplo |
---|---|---|
link | El link_id que recibiste en la notificación del webhook. | 2f5d361d-dad6-45d4-a0bf-26d479766067 |
created_at__range | El rango de fechas para el cual deseas recibir transacciones. Recomendamos que date1 sea la fecha en que recibiste previamente una notificación y date2 sea la fecha en que recibes la notificación actual (ambas en formato YYYY-MM-DD ). | 2024-05-01,2024-06-01 |
inversiones
Actualización histórica
Tan pronto como se crea tu enlace bancario, cargamos asincrónicamente las cuentas de inversión disponibles para el enlace y te enviaremos el siguiente webhook:
Código del Webhook | Descripción |
---|---|
historical_update | El número total de cuentas de inversión encontradas para el enlace. |
En la carga útil del webhook incluimos el número de cuentas de inversión encontradas para el enlace.
{
"webhook_id": "aadf41a1fc8e4f79a49f7f04027ac999",
"webhook_type": "INVESTMENTS",
"process_type": "historical_update",
"webhook_code": "historical_update",
"link_id": "16f68516-bcbc-4cf7-b815-c500d4204e28",
"request_id": "4363b08b-51eb-4350-9c74-5df5ac92a7f6",
"external_id": "your_external_id",
"data": {
"total_investments": 5 // Número total de cuentas de inversión encontradas.
}
}
Una vez que recibas la notificación, puedes obtener más detalles haciendo la siguiente solicitud:
curl --request GET 'https://api.belvo.com/api/br/investments/?link=link_id' \
-u [Secret Key ID]:[Secret Key PASSWORD]
Parámetro de Consulta | Descripción | Ejemplo |
---|---|---|
link | El link_id que recibiste en la notificación del webhook. | 2f5d361d-dad6-45d4-a0bf-26d479766067 |
Nueva inversión disponible
De acuerdo con la frecuencia de actualización elegida, Belvo recuperará asincrónicamente datos sobre cualquier nueva cuenta de inversión que haya aparecido para el enlace dado desde la última actualización.
Código de Webhook | Descripción |
---|---|
new_investments_available | El número de nuevas cuentas encontradas en la institución desde la última actualización. |
En el payload del webhook incluimos el número de nuevas cuentas encontradas para el enlace.
{
"webhook_id": "aadf41a1fc8e4f79a49f7f04027ac999",
"webhook_type": "INVESTMENTS",
"process_type": "recurrent_update",
"webhook_code": "new_investments_available",
"link_id": "16f68516-bcbc-4cf7-b815-c500d4204e28",
"request_id": "4363b08b-51eb-4350-9c74-5df5ac92a7f6",
"external_id": "your_external_id",
"data": {
"new_investments": 1 // Nuevas cuentas de inversión encontradas para el enlace
}
}
Una vez que recibas la notificación, puedes obtener más detalles haciendo la siguiente solicitud:
curl --request GET 'https://api.belvo.com/api/br/investments/?link=link_id' \
-u [Secret Key ID]:[Secret Key PASSWORD]
Parámetro de Consulta | Descripción | Ejemplo |
---|---|---|
link | El link_id que recibiste en la notificación del webhook. | 2f5d361d-dad6-45d4-a0bf-26d479766067 |
facturas
Actualizaciones iniciales
Tan pronto como se crea tu enlace fiscal recurrente, cargamos de manera asincrónica los últimos 30 días de historial de facturas. Recibirás dos notificaciones a través de un webhook cuando los últimos 30 días de facturas estén disponibles para que las accedas.
Código de Webhook | Descripción |
---|---|
initial_inflow_update | Los últimos 30 días de facturas de ENTRADA (recibidas). |
initial_outflow_update | Los últimos 30 días de facturas de SALIDA (enviadas). |
Incluimos el número de facturas encontradas durante este período para el tipo de factura, así como las fechas de la primera y última factura en el rango.
{
"webhook_id": "ccc9c589bfcb44bc99ce749229ccf142",
"webhook_type": "INVOICES",
"process_type": "historical_update",
"webhook_code": "initial_inflow_update",
"link_id": "2f5d361d-dad6-45d4-a0bf-26d479766067",
"request_id": "4363b08b-51eb-4350-9c74-5df5ac92a7f6",
"external_id": "your_external_id",
"data": {
"total_invoices": 3456,
"first_invoice_date": "2021-04-05",
"last_invoice_date": "2021-05-05"
}
}
{
"webhook_id": "ccc9c589bfcb44bc99ce749229ccf578",
"webhook_type": "INVOICES",
"process_type": "historical_update",
"webhook_code": "initial_outflow_update",
"link_id": "2f5d361d-dad6-45d4-a0bf-26d479766067",
"data": {
"total_invoices": 3456,
"first_invoice_date": "2021-04-05",
"last_invoice_date": "2021-05-05"
}
}
Una vez que recibas la notificación, puedes obtener más detalles haciendo la siguiente solicitud:
curl --request GET \
-u [Secret Key ID]:[Secret Key PASSWORD] \
'https://api.belvo.com/api/invoices/?type=INFLOW&link=link_id&invoice_date__range=first_invoice_date,last_invoice_date'
curl --request GET \
-u [Secret Key ID]:[Secret Key PASSWORD] \
'https://api.belvo.com/api/invoices/?type=OUTFLOW&link=link_id&invoice_date__range=first_invoice_date,last_invoice_date'
Parámetro de Consulta | Descripción | Ejemplo |
---|---|---|
type | El tipo de factura. Puede ser INFLOW o OUTFLOW . Si recibes un webhook initial_inflow_update , esto debe establecerse en INFLOW . Si recibes un webhook initial_outflow_update , esto debe establecerse en OUTFLOW . | INFLOW |
link | El link_id que recibiste en la notificación del webhook. | 2f5d361d-dad6-45d4-a0bf-26d479766067 |
invoice_date__range | El rango de fechas para el que deseas obtener facturas. Este debe ser el first_invoice_date y last_invoice_date que recibiste en la notificación del webhook. | 2017-07-31,2018-07-31 |
Actualizaciones históricas
Tan pronto como se crea tu enlace fiscal recurrente, cargamos de manera asincrónica los últimos tres años de historial de facturas de ENTRADA y SALIDA para el SAT. Recibirás hasta 6 notificaciones a través de un webhook cada vez que el historial de facturas esté disponible para que lo accedas. Por cada año para el cual Belvo extrae datos, recibirás los siguientes webhooks:
Código del Webhook | Descripción |
---|---|
historical_inflow_update | El último año de facturas de ENTRADA (recibidas). |
historical_outflow_update | El último año de facturas de SALIDA (enviadas). |
En la carga útil del webhook incluimos el número de facturas encontradas durante este período para el tipo de factura, así como las fechas de la primera y última factura en el rango.
{
"webhook_id": "ccc9c589bfcb44bc99ce749229ccf142",
"webhook_type": "INVOICES",
"process_type": "historical_update",
"webhook_code": "historical_inflow_update",
"link_id": "2f5d361d-dad6-45d4-a0bf-26d479766067",
"request_id": "4363b08b-51eb-4350-9c74-5df5ac92a7f6",
"external_id": "your_external_id",
"data": {
"total_invoices": 5333, // Número total de facturas encontradas
"first_invoice_date": "2017-07-31", // Primera factura de entrada encontrada
"last_invoice_date": "2018-07-31" // Última factura de entrada encontrada
}
}
{
"webhook_id": "1ac2917cb25f4e38af9260c0782d3408",
"webhook_type": "INVOICES",
"process_type": "historical_update",
"webhook_code": "historical_outflow_update",
"link_id": "2f5d361d-dad6-45d4-a0bf-26d479766067",
"data": {
"total_invoices": 1000,
"first_invoice_date": "2017-07-31",
"last_invoice_date": "2018-07-31"
}
}
Una vez que recibas la notificación, puedes obtener más detalles haciendo la siguiente solicitud:
curl --request GET \
-u [Secret Key ID]:[Secret Key PASSWORD] \
'https://api.belvo.com/api/invoices/?type=INFLOW&link=link_id&invoice_date__range=first_invoice_date,last_invoice_date'
curl --request GET \
-u [Secret Key ID]:[Secret Key PASSWORD] \
'https://api.belvo.com/api/invoices/?type=OUTFLOW&link=link_id&invoice_date__range=first_invoice_date,last_invoice_date'
Parámetro de Consulta | Descripción | Ejemplo |
---|---|---|
type | El tipo de factura. Puede ser INFLOW o OUTFLOW . Si recibes un webhook historical_inflow_update , esto debe establecerse en INFLOW . Si recibes un webhook historical_outflow_update , esto debe establecerse en OUTFLOW . | INFLOW |
link | El link_id que recibiste en la notificación del webhook. | 2f5d361d-dad6-45d4-a0bf-26d479766067 |
invoice_date__range | El rango de fechas para el cual deseas obtener facturas. Esto debe ser el first_invoice_date y last_invoice_date que recibiste en la notificación del webhook. | 2017-07-31,2018-07-31 |
Nuevas facturas disponibles
De acuerdo con la frecuencia de actualización elegida, Belvo recuperará de manera asincrónica datos sobre cualquier nueva factura que haya aparecido en el sistema del SAT para un enlace dado desde la última actualización.
Código de Webhook | Descripción |
---|---|
new_invoices_available | Una lista de nuevas facturas que se recuperaron desde la última actualización. |
Puedes recibir una notificación new_invoices_available
siempre que haya nuevas facturas disponibles para un enlace fiscal recurrente. Puedes recibir más de un evento de webhook para un enlace al mismo tiempo, dependiendo del tipo de facturas encontradas. Por ejemplo, podrías recibir un evento de webhook para facturas de INFLOW y otro separado para facturas de OUTFLOW.
Definimos nuevas facturas como todas las nuevas facturas encontradas en la institución para este enlace desde nuestra última actualización. Por ejemplo, si tienes una frecuencia de actualización diaria, podrían ser las nuevas facturas de las últimas 24 horas o facturas añadidas por la institución en las últimas 24 horas para días anteriores.
En la carga útil del webhook incluimos el número de facturas encontradas desde la última actualización, el tipo de facturas (INFLOW
o OUTFLOW
), así como un array de id
s de facturas.
{
"webhook_id": "28364bef400f4374a80872b61ba204289",
"webhook_type": "INVOICES",
"process_type": "recurrent_update",
"webhook_code": "new_invoices_available",
"link_id": "0284557b-df47-450a-po09e-7875195c2259",
"request_id": "4363b08b-51eb-4350-9c74-5df5ac92a7f6",
"external_id": "your_external_id",
"data": {
"count": 5,
"type": "INFLOW",
"new_invoices": [
// Un array de IDs de facturas
"7d0afe4c-373d-490c-90e4-06xx4cdd4a17",
"a53759bc-ca02-46f0-b1d5-31xxcd54db41",
"64ecc7df-f322-4934-82f5-3b3ae675ef4a",
"0452ae0d-ax2f-4093-888c-bb2ae826xa0b",
"9c266fff-ee3d-4389-adb3-1c5690d3c032"
]
}
}
Una vez que recibas la notificación, puedes obtener más detalles de las nuevas facturas realizando la siguiente solicitud:
curl --request GET \
-u [Secret Key ID]:[Secret Key PASSWORD] \
'https://api.belvo.com/api/invoices/?link=link_id&id__in=invoice_id_1,invoice_id_2,invoice_id_3'
Parámetro de Consulta | Descripción | Ejemplo |
---|---|---|
link | El link_id que recibiste en la notificación del webhook. | 2f5d361d-dad6-45d4-a0bf-26d479766067 |
id__in | La lista de id s de facturas que recibiste en el data.new_invoices de la notificación del webhook. | 24ccab1d-3a86-4136-a6eb-e04bf52b356f,beb2b197-3cf7-428d-bef3-f415c0d57509 |
Facturas canceladas
De acuerdo con la frecuencia de actualización elegida, Belvo recuperará de manera asincrónica datos sobre cualquier factura cancelada que haya aparecido en el sistema del SAT para un enlace dado desde la última actualización.
Código de Webhook | Descripción |
---|---|
invoices_cancelled | Una lista de facturas canceladas que se recuperaron desde la última actualización. |
Definimos facturas canceladas como todas las facturas existentes con un nuevo estado "cancelado" en la institución para este enlace.
En la carga útil del webhook incluimos el tipo de facturas canceladas (INFLOW
o OUTFLOW
) así como un array de id
s de facturas.
{
"webhook_id": "aadf41a1fc8e4f79a49f7f04027ac999",
"webhook_type": "INVOICES",
"process_type": "recurrent_update",
"webhook_code": "invoices_cancelled",
"link_id": "16f68516-bcbc-4cf7-b815-c500d4204e28",
"request_id": "4363b08b-51eb-4350-9c74-5df5ac92a7f6",
"external_id": "your_external_id",
"data": {
"type": "INFLOW",
"cancelled_invoices": [
// Un array de IDs de facturas
"0a362860-c92f-4414-a731-a772e88ab54b",
"0a376126-c23r-2131-b745-a876d77cd76c"
]
}
}
Una vez que recibas la notificación, puedes obtener más detalles de las facturas canceladas haciendo la siguiente solicitud:
curl --request GET \
-u [Secret Key ID]:[Secret Key PASSWORD] \
'https://api.belvo.com/api/invoices/?link=link_id&id__in=invoice_id_1,invoice_id_2,invoice_id_3'
Parámetro de Consulta | Descripción | Ejemplo |
---|---|---|
link | El link_id que recibiste en la notificación del webhook. | 2f5d361d-dad6-45d4-a0bf-26d479766067 |
id__in | La lista de id s de facturas que recibiste en el data.cancelled_invoices de la notificación del webhook. | 24ccab1d-3a86-4136-a6eb-e04bf52b356f,beb2b197-3cf7-428d-bef3-f415c0d57509 |
enlaces
Recomendamos encarecidamente que utilices nuestro Connect Widget con Modo de Actualización después de recibir un evento de webhook de Link para manejar la actualización de credenciales o token.
Credenciales inválidas
Puedes recibir una notificación de invalid_credentials
siempre que las credenciales de un usuario ya no sean válidas para actualizar un enlace recurrente. Esto puede suceder cuando un usuario cambia sus credenciales bancarias.
Una vez que recibas esta notificación, puedes pedirle a tu usuario que actualice su nueva contraseña usando el hosted widget en Modo de Actualización. Tan pronto como las credenciales sean correctas, el enlace recurrente se actualiza.
Si no estás utilizando el Connect Widget, puedes pedirle a tu usuario que te envíe su nueva contraseña y luego realizar una solicitud de Actualización de Enlace para guardar la nueva contraseña. Por ejemplo, si recibes el siguiente webhook:
{
"webhook_id": "aadf41a1fc8e4f79a49f7f04027ac999",
"webhook_type": "LINK",
"process_type": "recurrent_update",
"webhook_code": "invalid_credentials",
"link_id": "16f68516-bcbc-4cf7-b815-c500d4204e28",
"request_id": "4363b08b-51eb-4350-9c74-5df5ac92a7f6",
"external_id": "your_external_id",
"data": {
"error_code": "login_error", // Error del evento de Webhook
"error_message": "Invalid credentials provided to login to the institution", // Mensaje descriptivo del error
"status": 400
}
}
Una vez que recibas las credenciales requeridas de tu usuario, realiza una solicitud PUT a nuestro endpoint de Links con los detalles actualizados:
curl -X PUT https://api.belvo.com/api/links/{id} \
-H 'Content-Type: application/json' \
-H 'Host: api.belvo.com' \
-H 'cache-control: no-cache' \
-d '{
"password": "{user_provided_password}"
}' \
-u [Secret Key ID]:[Secret Key PASSWORD]
Donde:
{id}
es ellink_id
que recibes en la notificación del webhook.{user_provided_password}
es la contraseña actualizada que recibes de tu usuario.
Enlace eliminado
Cuando utilizas el encabezado X-Belvo-Request-Mode: async
de Belvo al solicitar Eliminar un Enlace, Belvo eliminará de manera asincrónica todos los datos asociados a ese enlace (por ejemplo: transacciones, cuentas, facturas, declaraciones de impuestos, empleos, etc.). Una vez que el proceso se complete, recibirás un evento de webhook link_deleted
indicando que el Enlace y todos los datos asociados se eliminaron con éxito.
{
"webhook_id": "aadf41a1fc8e4f79a49f7f04027ac999",
"webhook_type": "LINK",
"process_type": "async_delete",
"webhook_code": "link_deleted",
"link_id": "30cb4806-6e00-48a4-91c9-ca55968576c8",
"request_id": "4363b08b-51eb-4350-9c74-5df5ac92a7f6",
"external_id": "your_external_id",
"data": null
}
En caso de que haya un error durante el proceso de eliminación del Enlace, se te notificará utilizando el mismo código de webhook pero con detalles adicionales en el campo data
indicando que la eliminación del enlace no fue exitosa y que debes reintentar la solicitud:
{
"webhook_id": "aadf41a1fc8e4f79a49f7f04027ac999",
"webhook_type": "LINK",
"process_type": "async_delete",
"webhook_code": "link_deleted",
"link_id": "30cb4806-6e00-48a4-91c9-ca55968576c8",
"request_id": "4363b08b-51eb-4350-9c74-5df5ac92a7f6",
"external_id": "your_external_id",
"data": {
"error_code": "link_deletion_failed",
"error_message": "Link deletion failed. Please retry the request."
}
}
Si recibes un error más de dos veces para un enlace dado, contacta a nuestro equipo de soporte con el request_id
.
Token requerido
Puedes recibir una notificación de token_required
cada vez que una nueva MFA token sea requerida por la institución para mantener el enlace recurrente funcionando.
Una vez que recibas esta notificación, puedes pedirle a tu usuario que proporcione un nuevo token usando el Connect widget en modo de actualización. Tan pronto como se proporcione el token, el enlace recurrente se actualiza.
Ten en cuenta que hasta que el enlace se actualice, Belvo no enviará ningún webhook relacionado con este enlace.
Si no estás usando el Connect Widget, puedes pedirle a tu usuario que te envíe su nueva contraseña y luego realizar una solicitud de Actualización de Enlace para proporcionar el nuevo MFA token. Por ejemplo, si recibes el siguiente webhook:
{
"webhook_id": "aadf41a1fc8e4f79a49f7f04027ac999",
"webhook_type": "LINK",
"process_type": "recurrent_update",
"webhook_code": "token_required",
"link_id": "30cb4806-6e00-48a4-91c9-ca55968576c8",
"request_id": "4363b08b-51eb-4350-9c74-5df5ac92a7f6",
"external_id": "your_external_id",
"data": {
"error_code": "token_required", // Error del evento Webhook
"error_message": "MFA token was required by the institution", // Mensaje descriptivo del error
"status": 428,
"session": "2675b703b9d4451f8d4861a3eee54449",
"expiry": 9600,
"token_generation_data": {
"instructions": "Use this code to generate the token",
"type": "numeric",
"value": "12345"
}
}
}
Una vez que recibas las credenciales de token requeridas de tu usuario, realiza una solicitud PATCH a nuestro endpoint de Links con el token actualizado:
curl -X PATCH https://api.belvo.com/api/links/ \
-H 'Content-Type: application/json' \
-H 'Host: api.belvo.com' \
-H 'cache-control: no-cache' \
-d '{
"session": "{sessionId}",
"token": "{userToken}",
"link": "{linkId}"
}' \
-u [Secret Key ID]:[Secret Key PASSWORD]
Donde:
{sessionId}
es lasession
que recibes en la notificación del webhook.{userToken}
es el nuevo token que recibes de tu usuario.{linkId}
es ellink_id
que recibes en la notificación del webhook.
propietarios
Actualización histórica
Tan pronto como se crea tu enlace bancario, cargamos de manera asincrónica la información del propietario disponible para el enlace y te enviaremos el siguiente webhook:
Código del Webhook | Descripción |
---|---|
historical_update | El número total de propietarios encontrados para el enlace. |
En la carga útil del webhook incluimos el número de propietarios encontrados para el enlace.
{
"webhook_id": "aadf41a1fc8e4f79a49f7f04027ac999",
"webhook_type": "OWNERS",
"process_type": "historical_update",
"webhook_code": "historical_update",
"link_id": "16f68516-bcbc-4cf7-b815-c500d4204e28",
"request_id": "4363b08b-51eb-4350-9c74-5df5ac92a7f6",
"external_id": "your_external_id",
"data": {
"total_owners": 2 // Número total de propietarios
}
}
Una vez que recibas la notificación, puedes obtener más detalles haciendo la siguiente solicitud:
curl --request GET 'https://api.belvo.com/api/owners/?link=link_id' \
-u [Secret Key ID]:[Secret Key PASSWORD]
Parámetro de Consulta | Descripción | Ejemplo |
---|---|---|
link | El link_id que recibiste en la notificación del webhook. | 2f5d361d-dad6-45d4-a0bf-26d479766067 |
Nuevos propietarios disponibles
De acuerdo con la tasa de actualización elegida, Belvo recuperará asincrónicamente datos sobre cualquier nueva cuenta que haya aparecido para el enlace dado desde la última actualización.
Código de Webhook | Descripción |
---|---|
new_owners_available | El número de nuevos propietarios encontrados desde la última actualización. |
En la carga útil del webhook incluimos el número de nuevos propietarios encontrados para el enlace.
{
"webhook_id": "aadf41a1fc8e4f79a49f7f04027ac999",
"webhook_type": "OWNERS",
"process_type": "recurrent_update",
"webhook_code": "new_owners_available",
"link_id": "16f68516-bcbc-4cf7-b815-c500d4204e28",
"request_id": "4363b08b-51eb-4350-9c74-5df5ac92a7f6",
"external_id": "your_external_id",
"data": {
"new_owners": 1 // Número de nuevos propietarios
}
}
Una vez que recibas la notificación, puedes obtener más detalles haciendo la siguiente solicitud:
curl --request GET 'https://api.belvo.com/api/owners/?link=link_id' \
-u [Secret Key ID]:[Secret Key PASSWORD]
Parámetro de Consulta | Descripción | Ejemplo |
---|---|---|
link | El link_id que recibiste en la notificación del webhook. | 2f5d361d-dad6-45d4-a0bf-26d479766067 |
gastos-recurrentes
Actualización histórica
Tan pronto como se crea tu enlace bancario y hayas agregado RECURRING_EXPENSES
a la lista de recursos en fetch_resources
, calculamos de manera asincrónica los datos de gastos recurrentes para el enlace y te enviaremos el siguiente webhook:
Código del Webhook | Descripción |
---|---|
historical_update | El número total de gastos recurrentes identificados para el enlace. |
En la carga útil del webhook incluimos el número de gastos recurrentes identificados para el enlace.
{
"webhook_id": "aadf41a1fc8e4f79a49f7f04027ac999",
"webhook_type": "RECURRING_EXPENSES",
"process_type": "historical_update",
"webhook_code": "historical_update",
"link_id": "16f68516-bcbc-4cf7-b815-c500d4204e28",
"request_id": "4363b08b-51eb-4350-9c74-5df5ac92a7f6",
"external_id": "your_external_id",
"data": {
"total_recurring_expenses": 23 // Cantidad de gastos recurrentes identificados.
}
}
Una vez que recibas la notificación, puedes obtener más detalles haciendo la siguiente solicitud:
curl --request GET 'https://api.belvo.com/api/recurring-expenses/?link=link_id' \
-u [Secret Key ID]:[Secret Key PASSWORD]
Parámetro de Consulta | Descripción | Ejemplo |
---|---|---|
link | El link_id que recibiste en la notificación del webhook. | 2f5d361d-dad6-45d4-a0bf-26d479766067 |
risk-insights
Actualización histórica
Tan pronto como se crea tu enlace bancario y has agregado RISK_INSIGHTS
a la lista de recursos en fetch_resources
, generamos de manera asincrónica los insights de riesgo para el enlace y te enviaremos el siguiente webhook:
Código del Webhook | Descripción |
---|---|
historical_update | El número total de insights de riesgo identificados para el enlace. |
En la carga útil del webhook incluimos el número de insights de riesgo identificados para el enlace.
{
"webhook_id": "58577409546a4247848055e1e11bbc71",
"webhook_type": "RISK_INSIGHTS",
"process_type": "historical_update",
"webhook_code": "historical_update",
"link_id": "16f68516-bcbc-4cf7-b815-c500d4204e28",
"request_id": "4363b08b-51eb-4350-9c74-5df5ac92a7f6",
"external_id": "your_external_id",
"data": {
"total_risk_insights": 1 // Siempre = 1, Indica que el análisis está listo para ser recuperado.
}
}
Una vez que recibas la notificación, puedes obtener más detalles haciendo la siguiente solicitud:
curl --request GET 'https://api.belvo.com/api/risk-insights/?link=link_id' \
-u [Secret Key ID]:[Secret Key PASSWORD]
Parámetro de Consulta | Descripción | Ejemplo |
---|---|---|
link | El link_id que recibiste en la notificación del webhook. | 2f5d361d-dad6-45d4-a0bf-26d479766067 |
tax-compliance-status
Actualización histórica
Tan pronto como se crea tu enlace fiscal, recuperamos de manera asincrónica el documento de Estado de Cumplimiento Fiscal (Opinión de Cumplimiento de Obligaciones Fiscales) y te enviaremos el siguiente webhook:
Código del Webhook | Descripción |
---|---|
historical_update | El Estado de Cumplimiento Fiscal actual para el usuario. |
En la carga útil del webhook recibirás el número total de documentos de Estado de Cumplimiento Fiscal.
{
"webhook_id": "03d1ca0d62db4f769488265d141047b7",
"webhook_type": "TAX_COMPLIANCE_STATUS",
"process_type": "historical_update",
"webhook_code": "historical_update",
"link_id": "2f5d361d-dad6-45d4-a0bf-26d479766067",
"request_id": "4363b08b-51eb-4350-9c74-5df5ac92a7f6",
"external_id": "your_external_id",
"data": {
"total_tax_compliance_status": 1 // El número total de documentos de estado de cumplimiento fiscal
}
}
Una vez que recibas la notificación, puedes obtener más detalles haciendo la siguiente solicitud:
curl --request GET \
-u [Secret Key ID]:[Secret Key PASSWORD] \
'https://api.belvo.com/api/tax-compliance-status/?link=link_id'
Parámetro de Consulta | Descripción | Ejemplo |
---|---|---|
link | El link_id que recibiste en la notificación del webhook. | 2f5d361d-dad6-45d4-a0bf-26d479766067 |
retenciones-impuestos
Actualización histórica
Tan pronto como se crea tu enlace fiscal, cargamos de manera asincrónica el último año de retenciones fiscales y te enviaremos el siguiente webhook:
Código del Webhook | Descripción |
---|---|
historical_update | El último año de Retenciones Fiscales. |
En la carga útil del webhook incluimos el número total de retenciones fiscales encontradas para el último año, junto con el rango de fechas para el cual recuperamos datos.
{
"webhook_id": "03d1ca0d62db4f769488265d141047b7",
"webhook_type": "TAX_RETENTIONS",
"process_type": "historical_update",
"webhook_code": "historical_update",
"link_id": "2f5d361d-dad6-45d4-a0bf-26d479766067",
"request_id": "4363b08b-51eb-4350-9c74-5df5ac92a7f6",
"external_id": "your_external_id",
"data": {
"total_tax_retentions": 1, // El número total de retenciones fiscales
"first_tax_retention_date": "2023-06-01", // La fecha de la primera retención fiscal encontrada
"last_tax_retention_date": "2023-08-20" // La fecha de la última retención fiscal encontrada
}
}
Una vez que recibas la notificación, puedes obtener más detalles haciendo la siguiente solicitud:
curl --request GET \
-u [Secret Key ID]:[Secret Key PASSWORD] \
'https://api.belvo.com/api/tax-retentions/?link=link_id'
Parámetro de Consulta | Descripción | Ejemplo |
---|---|---|
link | El link_id que recibiste en la notificación del webhook. | 2f5d361d-dad6-45d4-a0bf-26d479766067 |
declaraciones-de-impuestos
Actualización histórica
Tan pronto como se crea tu enlace fiscal, cargamos de manera asincrónica los últimos cinco años de declaraciones de impuestos anuales así como los 12 meses de declaraciones de impuestos mensuales. Recibirás una notificación historical_update
para cada tipo de declaración de impuestos (anual y mensual) cuando el historial de declaraciones de impuestos esté disponible para que lo accedas.
Código de Webhook | Descripción |
---|---|
historical_update | Los últimos 5 años de declaraciones de impuestos anuales. |
historical_update | Los últimos 12 meses de declaraciones de impuestos mensuales. |
En la carga útil del webhook incluimos el tipo de declaraciones de impuestos, el número total de declaraciones de impuestos encontradas, así como el primer y último año de las declaraciones de impuestos recuperadas.
{
"webhook_id": "80fa38b7cad34950b210626abd86bfe9",
"webhook_type": "TAX_RETURNS",
"process_type": "historical_update",
"webhook_code": "historical_update",
"link_id": "2f5d361d-dad6-45d4-a0bf-26d479766067",
"request_id": "4363b08b-51eb-4350-9c74-5df5ac92a7f6",
"external_id": "your_external_id",
"data": {
"type": "yearly", // either yearly or monthly
"total_tax_returns": 2, // Total number of tax returns found
"first_tax_return_year": 2017, // First filed tax return
"last_tax_return_year": 2018 // Last filed tax return
}
}
{
"webhook_id": "80fa38b7cad34950b210626abd866549",
"webhook_type": "TAX_RETURNS",
"process_type": "historical_update",
"webhook_code": "historical_update",
"link_id": "2f5d361d-dad6-45d4-a0bf-26d479766067",
"request_id": "4363b08b-51eb-4350-9c74-5df5ac92a7f6",
"external_id": "your_external_id",
"data": {
"type": "monthly", // either yearly or monthly
"total_tax_returns": 7, // Total number of tax returns found
"first_tax_return_year": 2017, // First filed tax return
"last_tax_return_year": 2018 // Last filed tax return
}
}
Una vez que recibas la notificación, puedes obtener más detalles haciendo la siguiente solicitud:
curl --request GET \
-u [Secret Key ID]:[Secret Key PASSWORD] \
'https://api.belvo.com/api/tax-returns/?link=link_id&ejercicio__range=first_tax_return_year,last_tax_return_year'
Parámetro de Consulta | Descripción | Ejemplo |
---|---|---|
link | El link_id que recibiste en la notificación del webhook. | 2f5d361d-dad6-45d4-a0bf-26d479766067 |
ejercicio__range | El rango de fechas para el que deseas obtener declaraciones de impuestos. Este debe ser el first_tax_return_year y last_tax_return_year que recibiste en la notificación del webhook. | 2017,2020 |
Nuevas declaraciones de impuestos disponibles
De acuerdo con la frecuencia de actualización elegida, Belvo recuperará de manera asincrónica datos sobre cualquier nueva declaración de impuestos que haya aparecido en el sistema del SAT para un enlace dado desde la última actualización.
Código de Webhook | Descripción |
---|---|
new_tax_returns_available | Un conteo de nuevas declaraciones de impuestos desde la última actualización. |
Puedes recibir una notificación new_tax_returns_available
cada vez que haya nuevas declaraciones de impuestos disponibles para un enlace fiscal recurrente. Puedes recibir más de un evento de webhook para un enlace al mismo tiempo, dependiendo del tipo de declaraciones de impuestos encontradas. Por ejemplo, podrías recibir un evento de webhook para declaraciones de impuestos monthly
y otro separado para declaraciones de impuestos yearly
.
Definimos nuevas declaraciones de impuestos como todas las nuevas declaraciones de impuestos encontradas en la institución para este enlace desde nuestra última actualización. Podrían ser nuevas declaraciones de impuestos del último año o también declaraciones de impuestos que fueron agregadas por la institución para años o meses anteriores.
En la carga útil del webhook incluimos el tipo de declaraciones de impuestos (monthly
o yearly
) así como el número de declaraciones de impuestos encontradas desde la última actualización.
{
"webhook_id": "351610c401e34e728900495fda5b970a",
"webhook_type": "TAX_RETURNS",
"process_type": "recurrent_update",
"webhook_code": "new_tax_returns_available",
"link_id": "331ba983-0cfa-4186-93fc-936f3946cca3",
"request_id": "4363b08b-51eb-4350-9c74-5df5ac92a7f6",
"external_id": "your_external_id",
"data": {
"type": "yearly", // puede ser yearly o monthly
"new_tax_returns": 1 // Número total de nuevas declaraciones de impuestos encontradas
}
}
{
"webhook_id": "351610c401e34e728900495fda5b970a",
"webhook_type": "TAX_RETURNS",
"process_type": "recurrent_update",
"webhook_code": "new_tax_returns_available",
"link_id": "331ba983-0cfa-4186-93fc-936f3946cca3",
"request_id": "4363b08b-51eb-4350-9c74-5df5ac92a7f6",
"external_id": "your_external_id",
"data": {
"type": "monthly", // puede ser yearly o monthly
"new_tax_returns": 1 // Número total de nuevas declaraciones de impuestos encontradas
}
}
Una vez que recibas la notificación, puedes obtener más detalles haciendo la siguiente solicitud:
curl --request GET \
-u [Secret Key ID]:[Secret Key PASSWORD] \
'https://api.belvo.com/api/tax-returns/?link=link_id&created_at__range=date1,date2'
Parámetro de Consulta | Descripción | Ejemplo |
---|---|---|
link | El link_id que recibiste en la notificación del webhook. | 2f5d361d-dad6-45d4-a0bf-26d479766067 |
created_at__range | El rango de fechas para el cual deseas recibir declaraciones de impuestos. Recomendamos que date1 sea la fecha en que recibiste una notificación previamente y date2 sea la fecha en que recibes la notificación actual (ambas en formato YYYY-MM-DD ). | 2024-05-01,2024-06-01 |
tax-status
Actualización histórica
Tan pronto como se crea tu enlace fiscal, recuperamos de manera asincrónica el documento de Situación Fiscal (Constancia de Situación Fiscal) y te enviaremos el siguiente webhook:
Código del Webhook | Descripción |
---|---|
historical_update | La última Situación Fiscal para el usuario. |
En el payload del webhook recibirás el número total de documentos de Situación Fiscal para el usuario junto con la última fecha en que se actualizó la Situación Fiscal.
{
"webhook_id": "03d1ca0d62db4f769488265d141047b7",
"webhook_type": "TAX_STATUS",
"webhook_code": "historical_update",
"process_type": "historical_update",
"link_id": "2f5d361d-dad6-45d4-a0bf-26d479766067",
"request_id": "4363b08b-51eb-4350-9c74-5df5ac92a7f6",
"external_id": "your_external_id",
"data": {
"total_tax_status": 1, // Número de situaciones fiscales
"last_status_change_date": "1995-08-01" // Año en que la situación fiscal fue cambiada por última vez
}
}
Una vez que recibas la notificación, puedes obtener más detalles haciendo la siguiente solicitud:
curl --request GET \
-u [Secret Key ID]:[Secret Key PASSWORD] \
'https://api.belvo.com/api/tax-status/?link=link_id'
Parámetro de Consulta | Descripción | Ejemplo |
---|---|---|
link | El link_id que recibiste en la notificación del webhook. | 2f5d361d-dad6-45d4-a0bf-26d479766067 |
transacciones
Actualización histórica
Tan pronto como se crea tu enlace bancario, cargamos asincrónicamente las transacciones disponibles para el enlace y te enviaremos el siguiente webhook:
Código de Webhook | Descripción |
---|---|
historical_update | El número total de transacciones para el enlace del último año. |
En la carga útil del webhook incluimos el número de transacciones encontradas para el enlace (incluyendo el número de transacciones de entrada y salida) así como el rango de fechas al que se aplica la información.
{
"webhook_id": "aadf41a1fc8e4f79a49f7f04027ac999",
"webhook_type": "TRANSACTIONS",
"process_type": "historical_update",
"webhook_code": "historical_update",
"link_id": "16f68516-bcbc-4cf7-b815-c500d4204e28",
"request_id": "4363b08b-51eb-4350-9c74-5df5ac92a7f6",
"external_id": "your_external_id",
"data": {
"total_transactions": 19, // Número total de transacciones encontradas
"total_inflow_transactions": 10, // Número total de transacciones de entrada
"total_outflow_transactions": 9, // Número total de transacciones de salida
"first_transaction_date": "2023-01-03", // Fecha de la primera transacción
"last_transaction_date": "2024-01-03" // Fecha de la última transacción
}
}
Una vez que recibas la notificación, puedes obtener más detalles haciendo la siguiente solicitud:
curl --request GET \
-u [Secret Key ID]:[Secret Key PASSWORD] \
'https://api.belvo.com/api/transactions/?link=link_id'
Parámetro de Consulta | Descripción | Ejemplo |
---|---|---|
link | El link_id que recibiste en la notificación del webhook. | 2f5d361d-dad6-45d4-a0bf-26d479766067 |
Puedes agregar más filtros para reducir los resultados, por ejemplo:
curl --request GET \
-u [Secret Key ID]:[Secret Key PASSWORD] \
'https://api.belvo.com/api/transactions/?link=link_id&type=INFLOW&value_date__range=first_transaction_date,last_transaction_date'
Parámetro de Consulta | Descripción | Ejemplo |
---|---|---|
link | El link_id que recibiste en la notificación del webhook. | 2f5d361d-dad6-45d4-a0bf-26d479766067 |
type | El tipo de transacción. Puede ser INFLOW o OUTFLOW . | INFLOW |
value_date__range | El rango de fechas para el que deseas obtener transacciones. Este debe ser el first_transaction_date y last_transaction_date que recibiste en la notificación del webhook. | 2023-01-03,2024-01-03 |
Nuevas transacciones disponibles
De acuerdo con la frecuencia de actualización elegida, Belvo recuperará asincrónicamente datos sobre cualquier nueva transacción que haya aparecido para el enlace dado desde la última actualización.
Definimos nuevas transacciones como transacciones encontradas en la institución para un enlace dado desde la última actualización. Por ejemplo, estas podrían ser nuevas transacciones de las últimas 24 horas o nuevas transacciones de hace unos días que solo fueron agregadas por la institución recientemente.
Código de Webhook | Descripción |
---|---|
new_transactions_available | El número de nuevas transacciones encontradas en la institución desde la última actualización. |
En el payload del webhook incluimos el número de nuevas transacciones encontradas para el enlace.
{
"webhook_id": "aadf41a1fc8e4f79a49f7f04027ac999",
"webhook_type": "TRANSACTIONS",
"process_type": "recurrent_update",
"webhook_code": "new_transactions_available",
"link_id": "16f68516-bcbc-4cf7-b815-c500d4204e28",
"request_id": "4363b08b-51eb-4350-9c74-5df5ac92a7f6",
"external_id": "your_external_id",
"data": {
"new_transactions": 19 // Número de nuevas transacciones encontradas desde el último evento
}
}
Una vez que recibas la notificación, puedes obtener más detalles haciendo la siguiente solicitud:
curl --request GET \
-u [Secret Key ID]:[Secret Key PASSWORD] \
'https://api.belvo.com/api/transactions/?link=link_id&type=INFLOW&created_at__range=date1,date2'
Parámetro de Consulta | Descripción | Ejemplo |
---|---|---|
link | El link_id que recibiste en la notificación del webhook. | 2f5d361d-dad6-45d4-a0bf-26d479766067 |
created_at__range | El rango de fechas para el cual deseas recibir transacciones. Recomendamos que date1 sea la fecha en que recibiste una notificación previamente y date2 sea la fecha en que recibes la notificación actual (ambas en formato YYYY-MM-DD ). | 2024-05-01,2024-06-01 |
Transacción actualizada
Este webhook está disponible para ambos enlaces únicos y recurrentes
Cada vez que Belvo identifica que una transacción ha sido actualizada en la institución (por ejemplo, un cambio en el campo de descripción o la fecha de valor), enviará el siguiente webhook:
Código del Webhook | Descripción |
---|---|
transactions_updated | El número de transacciones actualizadas junto con la lista de IDs de transacciones. |
En el payload del webhook incluimos el número de transacciones que fueron actualizadas junto con una lista de IDs de transacciones de Belvo.
{
"webhook_id": "28364bef400f4374a80872b61ba204289",
"webhook_type": "TRANSACTIONS",
"process_type": "recurrent_update",
"webhook_code": "transactions_updated",
"link_id": "0284557b-df47-450a-po09e-7875195c2259",
"request_id": "4363b08b-51eb-4350-9c74-5df5ac92a7f6",
"external_id": "your_external_id",
"data": {
"count": 5, // Número total de transacciones actualizadas.
"updated_transactions": [
"7d0afe4c-373d-490c-90e4-06xx4cdd4a17", // El ID de la transacción actualizada.
"a53759bc-ca02-46f0-b1d5-31xxcd54db41",
"64ecc7df-f322-4934-82f5-3b3ae675ef4a",
"0452ae0d-ax2f-4093-888c-bb2ae826xa0b",
"9c266fff-ee3d-4389-adb3-1c5690d3c032"
]
}
}
Una vez que recibas la notificación, puedes obtener la lista completa de transacciones para ese enlace usando la siguiente llamada:
curl --request GET \
-u [Secret Key ID]:[Secret Key PASSWORD] \
'https://api.belvo.com/api/transactions/?link=link_id&id__in=transaction1,transaction2,transaction3
Parámetro de Consulta | Descripción | Ejemplo |
---|---|---|
link | El link_id que recibiste en la notificación del webhook. | 2f5d361d-dad6-45d4-a0bf-26d479766067 |
id__in | La lista de id s de transacciones que recibiste en el data.updated_transactions de la notificación del webhook. | 7d0afe4c-373d-490c-90e4-06xx4cdd4a17,53759bc-ca02-46f0-b1d5-31xxcd54db41,64ecc7df-f322-4934-82f5-3b3ae675ef4a |
Cambios que activan un transactions_updated
webhook
Belvo monitorea los siguientes campos para todas las transacciones y cuando detecta un cambio entre la última vez que recuperó datos y ahora, te enviará un transactions_updated
webhook:
amount
currency
description
value_date
internal_identification
type
status
credit_card_data.bill_internal_identification
(solo OFDA)credit_card_data.credit_card_bill.id
(solo OFDA)
Transacción eliminada
Este webhook está disponible para ambos enlaces únicos y recurrentes
Belvo monitorea y limpia regularmente los datos transaccionales en su base de datos para mejorar la consistencia de los datos que recibes. Cuando se identifica que una transacción está duplicada (lo cual puede ocurrir, por ejemplo, debido a llamadas POST realizadas en rápida sucesión a la API para el mismo enlace), se elimina de la base de datos. En este caso, recibirás un transactions_deleted
webhook con una lista de las transacciones que han sido eliminadas.
{
"webhook_id": "28364bef400f4374a80872b61ba204289",
"webhook_type": "TRANSACTIONS",
"process_type": "recurrent_update",
"webhook_code": "transactions_deleted",
"link_id": "0284557b-df47-450a-po09e-7875195c2259",
"request_id": "4363b08b-51eb-4350-9c74-5df5ac92a7f6",
"external_id": "your_external_id",
"data": {
"count": 5, // Número total de transacciones eliminadas.
"deleted_transactions": [
"7d0afe4c-373d-490c-90e4-06xx4cdd4a17", // El ID de la transacción eliminada.
"a53759bc-ca02-46f0-b1d5-31xxcd54db41",
"64ecc7df-f322-4934-82f5-3b3ae675ef4a",
"0452ae0d-ax2f-4093-888c-bb2ae826xa0b",
"9c266fff-ee3d-4389-adb3-1c5690d3c032"
]
}
}
Webhook de Estado de la Institución (Externo)
Configurar el webhook
Para suscribirse al webhook de Estado de la Institución:
Ve a la página de Estado de la Institución de Belvo.
Haz clic en Subscribe to Updates.
En la navegación superior, haz clic en el icono <>.
En la pestaña de webhooks, proporciona la información requerida y haz clic en Subscribe.
4.1 URL donde deseas recibir el webhook
4.2 Una dirección de correo electrónico para confirmar la URL del webhook.

- En el diálogo, elige sobre qué instituciones deseas recibir actualizaciones y haz clic en Save.

Ahora solo confirma tu dirección de correo electrónico y comenzarás a recibir eventos de estado del webhook para las instituciones que seleccionaste. Pero esperamos que eso no suceda a menudo 😉.
Carga útil del webhook
En la carga útil del webhook que recibes de statuspage.io, los campos clave que debes analizar son:
Campo | Descripción |
---|---|
incident.name | Indica la naturaleza del problema con la institución. |
incident.status | El estado actual del incidente en el momento del webhook. Puede ser: investigating identified monitoring resolved |
components.status | La gravedad de la interrupción de la institución. Puede ser: operational (todo está funcionando) partial_outage (ciertas funcionalidades no están disponibles) major_outage (la institución está completamente no disponible) |
components.name | El nombre de la institución que está afectada. |
La carga útil que recibes es bastante grande, como puedes ver en el ejemplo de código a continuación. Sin embargo, si analizas los campos mencionados anteriormente, tendrás toda la información relevante que necesitas sobre el incidente.
{
"meta":{
"unsubscribe":"http://institutions.belvo.com/?unsubscribe=73cj0w1mm121",
"documentation":"https://help.statuspage.io/knowledge_base/topics/webhook-notifications",
"generated_at":"2021-04-19T14:46:37.135Z"
},
"page":{
"id":"3h4nklhdf7jr",
"status_indicator":"major",
"status_description":"Partial System Outage"
},
"incident":{
"name":"bancoppel_mx_retail: Link creation and existing links operations are showing high error rates", // importante
"status":"investigating", // importante
"created_at":"2021-04-19T14:46:34.737Z",
"updated_at":"2021-04-19T14:46:34.844Z",
"monitoring_at":"None",
"resolved_at":"None",
"impact":"critical",
"shortlink":"https://stspg.io/74hxzgnrmjnt",
"scheduled_for":"None",
"scheduled_until":"None",
"scheduled_remind_prior":false,
"scheduled_reminded_at":"None",
"impact_override":"None",
"scheduled_auto_in_progress":false,
"scheduled_auto_completed":false,
"metadata":{
},
"started_at":"2021-04-19T14:46:34.731Z",
"id":"p3b3zhn5p0pz",
"page_id":"3h4nklhdf7jr",
"incident_updates":[
{
"status":"investigating",
"body":"We are currently investigating this issue related to both link creation and POST calls.",
"created_at":"2021-04-19T14:46:34.841Z",
"wants_twitter_update":false,
"twitter_updated_at":"None",
"updated_at":"2021-04-19T14:46:34.841Z",
"display_at":"2021-04-19T14:46:34.841Z",
"deliver_notifications":true,
"tweet_id":"None",
"id":"m9dcv76z7jwf",
"incident_id":"p3b3zhn5p0pz",
"custom_tweet":"None",
"affected_components":[
{
"code":"1f4dxgqr6pkg",
"name":"🇲🇽 Retail banking - bancoppel_mx_retail",
"old_status":"operational",
"new_status":"major_outage"
}
]
}
],
"postmortem_body":"None",
"postmortem_body_last_updated_at":"None",
"postmortem_ignored":false,
"postmortem_published_at":"None",
"postmortem_notified_subscribers":false,
"postmortem_notified_twitter":false,
"components":[
{
"status":"major_outage", // importante
"name":"bancoppel_mx_retail", // importante
"created_at":"2021-04-13T09:50:24.288Z",
"updated_at":"2021-04-19T14:46:34.768Z",
"position":5,
"description":"None",
"showcase":true,
"start_date":"2021-04-13T00:00:00.000Z",
"id":"1f4dxgqr6pkg",
"page_id":"3h4nklhdf7jr",
"group_id":"bqcwjbwjhvjt"
}
]
}
}