Registrar webhook
using System.Net.Http.Headers;var client = new HttpClient();var request = new HttpRequestMessage{ Method = HttpMethod.Post, RequestUri = new Uri("https://api.simplo.cl/api/v1/billing/webhooks"), Headers = { { "X-Api-Key", "<X-Api-Key>" }, }, Content = new StringContent("{ \"url\": \"https://mi-app.cl/webhooks/simplo\", \"events\": [ \"dte.accepted\", \"dte.rejected\" ] }") { Headers = { ContentType = new MediaTypeHeaderValue("application/json") } }};using (var response = await client.SendAsync(request)){ response.EnsureSuccessStatusCode(); var body = await response.Content.ReadAsStringAsync(); Console.WriteLine(body);}HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("https://api.simplo.cl/api/v1/billing/webhooks")) .header("X-Api-Key", "<X-Api-Key>") .header("Content-Type", "application/json") .method("POST", HttpRequest.BodyPublishers.ofString("{ \"url\": \"https://mi-app.cl/webhooks/simplo\", \"events\": [ \"dte.accepted\", \"dte.rejected\" ] }")) .build();HttpResponse<String> response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());System.out.println(response.body());const url = 'https://api.simplo.cl/api/v1/billing/webhooks';const options = { method: 'POST', headers: {'X-Api-Key': '<X-Api-Key>', 'Content-Type': 'application/json'}, body: '{"url":"https://mi-app.cl/webhooks/simplo","events":["dte.accepted","dte.rejected"]}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://api.simplo.cl/api/v1/billing/webhooks \ --header 'Content-Type: application/json' \ --header 'X-Api-Key: <X-Api-Key>' \ --data '{ "url": "https://mi-app.cl/webhooks/simplo", "events": [ "dte.accepted", "dte.rejected" ] }'Registra una URL HTTPS para recibir eventos vía webhook. Los eventos se
firman con HMAC-SHA256 usando el secret del webhook; el secret solo
se retorna completo al momento de crear el webhook.
Beta privada: las escrituras vía API key están en beta privada (solicitar acceso: [email protected]); las API keys hoy operan en modo lectura.
Autenticación
Sección titulada «Autenticación»Cuerpo de la peticiónrequerido
Sección titulada «Cuerpo de la peticiónrequerido»object
URL HTTPS donde se enviarán los eventos
Eventos a los que suscribirse
Secret para firma HMAC-SHA256 (se genera automáticamente si no se envía)
Example
{ "url": "https://mi-app.cl/webhooks/simplo", "events": [ "dte.accepted", "dte.rejected" ]}Respuestas
Sección titulada «Respuestas»Webhook registrado
object
Solo se retorna al crear el webhook. Después se enmascara.
Example
{ "id": "7c8d9e0f-1a2b-4c3d-8e5f-6a7b8c9d0e1f", "url": "https://mi-app.cl/webhooks/simplo", "events": [ "dte.accepted", "dte.rejected" ], "secret": "whsec_ejemplo_no_real", "is_active": true, "created_at": "2026-08-01T14:30:00Z"}URL inválida o eventos no soportados
object
Código de error máquina-legible
Mensaje descriptivo del error. Este es el campo canónico para clientes nuevos.
Alias de compatibilidad de message mantenido hacia atrás.
object
Campo con error (dot notation para nested)
Código de validación
Mensaje descriptivo
Acción recomendada para el cliente
Severidad opcional del error
Contexto estructurado opcional para debugging
object
Example
{ "code": "VALIDATION_ERROR", "message": "Error de validacion en los campos enviados", "details": [ { "field": "receptor.rut", "code": "INVALID_RUT", "message": "RUT invalido: digito verificador no coincide" } ], "severity": "critical"}Token o API key inválido o ausente
object
Código de error máquina-legible
Mensaje descriptivo del error. Este es el campo canónico para clientes nuevos.
Alias de compatibilidad de message mantenido hacia atrás.
object
Campo con error (dot notation para nested)
Código de validación
Mensaje descriptivo
Acción recomendada para el cliente
Severidad opcional del error
Contexto estructurado opcional para debugging
object
Example
{ "code": "VALIDATION_ERROR", "message": "Error de validacion en los campos enviados", "details": [ { "field": "receptor.rut", "code": "INVALID_RUT", "message": "RUT invalido: digito verificador no coincide" } ], "severity": "critical"}