Appearance
Webhooks
Los webhooks te permiten que Kuenta notifique a tu sistema, mediante una solicitud HTTP saliente, cuando ocurre un evento sobre un crédito de una línea de crédito (credit line) específica.
A diferencia de un modelo de suscripción a eventos genéricos, en Kuenta un webhook es una configuración (URL, cuerpo, autenticación) que se asocia a una línea de crédito y se dispara en dos puntos concretos del ciclo de vida del crédito.
Eventos que disparan un webhook
Hoy existen dos puntos de disparo, ambos configurados en la línea de crédito:
onOrderWebhooks: se dispara cuando se aprueba un pago (orden) sobre una cuota del crédito.onDeliveredWebhooks: se dispara cuando el crédito pasa a estado Desembolsado.
No existe un catálogo abierto de eventos arbitrarios (por ejemplo, creación de una solicitud, firma de un documento, o carga de un documento de perfil). Si tu integración necesita notificarse en un momento distinto a estos dos, contacta a soporte técnico para evaluar agregar un nuevo punto de disparo.
Configuración de un webhook
1. Crear un webhook
http
POST /v1/webhook
Content-Type: application/json
Organization-ID: tu-id-de-organizacion
{
"tag": "notificacion-desembolso",
"url": "https://tu-dominio.com/webhook",
"requestHeader": "{\"Content-Type\":\"application/json\"}",
"requestBody": "{\"creditId\":\"{{ .Credit.ID }}\",\"status\":\"{{ .Credit.Status }}\"}",
"authEnabled": false
}Campos disponibles al crear/actualizar un webhook:
| Campo | Descripción |
|---|---|
tag | Identificador corto del webhook, útil para distinguirlo en los logs. |
url | URL de destino a la que Kuenta enviará la solicitud POST. |
requestHeader | Encabezados HTTP a enviar (JSON), admite la misma sintaxis de plantilla que requestBody. |
requestBody | Cuerpo de la solicitud. Es una plantilla (ver más abajo). |
authEnabled | Si true, Kuenta obtiene un token antes de cada envío (ver "Autenticación saliente"). |
authUrl, authMethod, authRequestBody, authRequestHeader | Configuración de la solicitud previa para obtener el token. |
tokenSourceKey, tokenType, authHeader, tokenHeader | Dónde extraer el token de esa respuesta y cómo inyectarlo en la petición del webhook. |
responseQueries | Mapa de expresiones JSONPath para extraer valores de la respuesta de tu endpoint y guardarlos, disponibles luego para otras plantillas mediante fromWebhook. |
2. Listar webhooks
http
GET /v1/webhooks
Organization-ID: tu-id-de-organizacion3. Obtener un webhook
http
GET /v1/webhook/{webhookid}
Organization-ID: tu-id-de-organizacion4. Actualizar un webhook
http
PUT /v1/webhook/{webhookid}
Content-Type: application/json
Organization-ID: tu-id-de-organizacion
{
"url": "https://tu-nuevo-dominio.com/webhook",
"requestBody": "{\"creditId\":\"{{ .Credit.ID }}\"}"
}5. Eliminar (archivar) un webhook
http
DELETE /v1/webhook/{webhookid}
Organization-ID: tu-id-de-organizacion6. Probar un webhook
Ejecuta el envío inmediatamente con un crédito vacío (sin necesidad de tener un crédito real ni de asociarlo a una línea de crédito) y devuelve el detalle completo de la solicitud/respuesta, útil mientras se configura la plantilla:
http
POST /v1/webhook-test
Content-Type: application/json
Organization-ID: tu-id-de-organizacion
{
"url": "https://tu-dominio.com/webhook",
"requestBody": "{\"ping\":true}"
}7. Ejecutar manualmente un webhook para un crédito existente
http
POST /v1/webhook/{webhookid}/request
Content-Type: application/json
Organization-ID: tu-id-de-organizacion
{
"creditID": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"logID": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d"
}Vincular el webhook a una línea de crédito
Crear un webhook por sí solo no hace que se dispare — debe asociarse a la línea de crédito (credit line) correspondiente, en el campo onOrderWebhooks (pago aprobado) o onDeliveredWebhooks (crédito desembolsado). Esta asociación se configura al editar la línea de crédito, no en el propio webhook. Contacta a soporte técnico o a tu equipo de implementación para configurar esta asociación.
Cuerpo de la solicitud (requestBody)
El campo requestBody (y requestHeader) es una plantilla (sintaxis de text/template de Go, con funciones adicionales tipo Sprig) que se evalúa en el momento del envío contra el crédito que disparó el webhook. Puedes referenciar cualquier campo del crédito y de su deudor, por ejemplo:
{{ .Credit.ID }}
{{ .Credit.Status }}
{{ .Credit.Debtor.Natural.FirstName }}
{{ .Credit.Debtor.Natural.WorkCertificateFileID }}Importante: la plantilla puede incluir identificadores (por ejemplo, el ID de un documento del perfil), pero no el contenido binario ni el Base64 del archivo. Para obtener el archivo, tu sistema debe llamar aparte a:
http
GET /v1/debtor/{debtorId}/profile/{campo}/{fileId}
Authorization: Bearer <access_token>que devuelve el archivo directamente (binario, sin envoltorio JSON ni Base64), autenticado con el mismo token Bearer de tu cliente OAuth.
Autenticación saliente (hacia tu endpoint)
Si tu endpoint requiere autenticación, Kuenta puede obtener un token antes de cada envío:
authEnabled: true+authUrl+authMethod+authRequestBody+authRequestHeader: Kuenta hace una solicitud previa a esa URL para obtener un token.tokenSourceKey+tokenType+authHeader: dónde extraer el token de esa respuesta (del cuerpo o de un header, segúntokenHeader) y en qué header inyectarlo en la petición del webhook.
Nota: Kuenta no agrega una firma HMAC ni un secreto compartido a cada solicitud del webhook. Si necesitas verificar el origen de la petición, acuerda con tu equipo de implementación un encabezado estático (vía requestHeader) que valides de tu lado.
Diagnóstico
Cada envío queda registrado, con la solicitud y la respuesta completas, asociado al crédito que lo disparó. Si un envío falla o tu integración no está recibiendo lo esperado, comparte el tag del webhook y el ID del crédito con soporte técnico para revisar el registro.
Kuenta no reintenta automáticamente un envío fallido (endpoint caído, timeout, respuesta de error, etc.). Si necesitas reenviar una notificación puntual, puede ejecutarse manualmente con POST /v1/webhook/{webhookid}/request (ver arriba). Para integraciones críticas, considera usar la API para consultar el estado del crédito como respaldo en caso de que un envío se pierda.
Próximos pasos
- Consulta el listado completo de endpoints
- Configura tus plantillas de documentos
- Configura tu organización
Soporte
Si necesitas ayuda con la configuración de webhooks:
- Contacta a Soporte técnico