API > Webhooks - Nuevo Webhook

Webhooks - Nuevo webhook

POST  https://{entorno}.ticketbaiws.eus/webhooks/

Permite crear un webhook para notificar del cambio de estado de una factura cuando se hacen envíos asíncronos.

PARÁMETROS

url string obligatorio
URL a la que enviar el webhook
https://...
secret string obligatorio
Clave para la firma del webhook para validación del contenido. La firma se realiza mediante HMAC SHA256 y la firma se envía en base64 en el header X-Tbaiws-Hmac-Sha256
xajky22kjasy
solo_errores boolean opcional
Parámetro para enviar el webhook únicamente si se producen errores o si la factura es aceptada con errores o avisos
true
activo boolean opcional
Webhook activado. Permite apagar el webhook temporalmente
true


Método de cálculo de firma en PHP:
$calculated_hmac = base64_encode(hash_hmac('sha256', $request_body , $secret, true));

POST https://api.ticketbaiws.eus/webhooks/
$ curl --request POST \
     --url https://api.ticketbaiws.eus/webhooks/ \
     --header 'Accept: application/json' \
     --header 'Content-Type: application/json' \
     --header 'Token: xxx' \
     --header 'Nif: 00000014Z'
	 --data '
{
    "url": "https://www.berein.com/",
    "secret": "xajky22kjasy",
    "solo_errores" : true,
    "activo": true
}'
$ composer require guzzlehttp/guzzle
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://api.ticketbaiws.eus/webhooks/', [
  'body' => '{"url": "https://www.berein.com/","secret": "xajky22kjasy","solo_errores" : true,"activo": true}',
  'headers' => [
    'Accept' => 'application/json',
    'Content-Type' => 'application/json',
    'Token' => 'xxx',
    'Nif' => '00000014Z'
  ],
]);

echo $response->getBody();
$ python -m pip install requests
import requests

url = "https://api.ticketbaiws.eus/webhooks/"
payload = {
    "url": "https://www.berein.com/",
    "secret": "xajky22kjasy",
    "solo_errores" : true,
    "activo": true
}

headers = {"Accept": "application/json", "Token" : "xxx", "Nif" : "00000014Z"}
response = requests.request("POST", url, json=payload, headers=headers)

print(response.text)
CURL *hnd = curl_easy_init();

curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "POST");
curl_easy_setopt(hnd, CURLOPT_URL, "https://api.ticketbaiws.eus/webhooks/");

struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Accept: application/json");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);
curl_easy_setopt(hnd, CURLOPT_POSTFIELDS, '{"url": "https://www.berein.com/","secret": "xajky22kjasy","solo_errores" : true,"activo": true}');

CURLcode ret = curl_easy_perform(hnd);
OkHttpClient client = new OkHttpClient();

MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, '{"url": "https://www.berein.com/","secret": "xajky22kjasy","solo_errores" : true,"activo": true}');

Request request = new Request.Builder()
  .url("https://api.ticketbaiws.eus/webhooks/")
  .post(body)
  .addHeader("Accept", "application/json")
  .addHeader("Token", "xxx")
  .addHeader("Nif", "00000014Z")
  .build();
  
Response response = client.newCall(request).execute();
{ } Response JSON
HTTP/1.1 200 OK
{
    "result": "OK",
    "return": {
        "codigo": "6904a3501874e",
        "url": "https://www.berein.com/",
        "entorno": "test",
        "secret": "xajky22kjasy",
        "solo_errores": true,
        "activo": true,
        "fecha_creado": "2025-10-31T12:53:52+01:00",
        "fecha_modificado": "2025-11-03T10:16:15+01:00"
    },
    "msg": ""
}
Ejemplo notificación JSON
Headers:
array (
 'X-Tbaiws-Hmac-Sha256' => 'Hl+X3FT/r5yH3wsgaku46votvTpUPSLPeDNCiCj+syM=',
 'X-Tbaiws-Topic' => 'cambio_estado',
 'X-Tbaiws-Environment' => 'real',
 'X-Tbaiws-Id' => '6904a3501884e',
 'User-Agent' => 'TbaiWS Hook',
 'Content-Type' => 'application/json',
 'Content-Length' => '144',
 'Connection' => 'close'
)

Payload:
{"nif":"B123456789","serie":"5","numero":"500593135","fecha_emision":"03\\/11\\/2025","estado":"OK","avisos":"null"}

Métodos TicketBAI / Verifactu

Métodos específicos para Verifactu

Métodos específicos para BATUZ BIZKAIA

Otros métodos