CompanyBelgium

API v2: Reference Data, btw-validatie en realtime webhooks

Company Belgium API v2 voegt Reference Data-endpoints toe (NACE, rechtsvormen), Belgische btw-validatie, betalingsrisicoscore en HMAC-ondertekende webhooks.

19 april 20268 min leestijd

In het kort

Company Belgium API v2 introduceert vier structurele nieuwigheden: Reference Data-endpoints voor NACE-codes en rechtsvormen (ontworpen voor client-side caching), realtime Belgische btw-nummervalidatie, een betalingsrisicoscore van 0-100, en HMAC-SHA256-ondertekende webhooks om KBO-events in push te ontvangen in plaats van polling. v1 blijft ondersteund tot eind 2026.

Waarom v2?

Onze v1 KBO BCE-API leverde wat beloofd was: Belgische bedrijfsdata en Company Belgium-verrijking netjes ontsluiten. Maar het gebruik leerde ons twee dingen: integrators willen push in plaats van polling, en ze willen stabiele referentietabellen in plaats van bij elke oproep codes te moeten vertalen.

v2 draait parallel aan v1 en introduceert vier structurele nieuwigheden: Reference Data, btw-validatie, risicoscoring en webhooks.

Reference Data

NACE-codes, rechtsvormen en activiteitsgroepen zijn nu beschikbaar via eigen endpoints:

  • GET /api/v2/reference/nace-codes?lang=nl
  • GET /api/v2/reference/juridical-forms?lang=nl
  • GET /api/v2/reference/activity-groups?lang=nl

Deze tabellen veranderen zelden. Ze zijn bedoeld om client-side gecacht te worden (ETag + 24u Cache-Control).

TypeScript
1
2
3
4
5
class="code-comment">// Laad NACE-codes bij opstart, cache in memory
const res = await fetch(class="code-string">"https:class="code-comment">//companybelgium.be/api/v2/reference/nace-codes?lang=nl", {
  headers: { class="code-string">"X-API-Key": key, class="code-string">"X-API-Secret": secret }
});
const naceCodes = await res.json();

Belgische btw-validatie

Veelgevraagd endpoint:

Terminal
1
2
3
4
curl -X POST https://companybelgium.be/api/v2/vat/validate \
  -H "X-API-Key: pk_live_..." \
  -H "X-API-Secret: sk_live_..." \
  -d '{"vatNumber": "BE 0200.065.765"}'

Retourneert de genormaliseerde versie, de status (valid / invalid / bad_format) en het gekoppelde KBO-ondernemingsnummer. Dit mechanisme vormt ook de kern van onze Belgische facturatiemodule met automatische intracom-verlegging.

Betalingsrisicoscore

Terminal
1
2
3
curl https://companybelgium.be/api/v2/companies/0200065765/payment-risk \
  -H "X-API-Key: pk_live_..." \
  -H "X-API-Secret: sk_live_..."

Retourneert een score 0–100 en een categorie (low / moderate / high / critical), opgebouwd uit geaggregeerde signalen.

Realtime webhooks

De meest structurele toevoeging. Abonneer op events:

  • company.updated
  • company.status_changed
  • company.filing_deposited
  • establishment.created
  • establishment.closed

Elk event gaat als POST naar uw URL, ondertekend met HMAC SHA-256 via een gedeeld geheim. Header X-Espero-Signature.

TypeScript
1
2
3
4
5
6
7
8
9
import crypto from class="code-string">"crypto";

function verify(rawBody: string, signature: string, secret: string) {
  const expected = crypto
    .createHmac(class="code-string">"sha256", secret)
    .update(rawBody)
    .digest(class="code-string">"hex");
  return crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(signature));
}

Exponentiële retry tot 24u, adminpagina om een event manueel opnieuw af te spelen. Lees onze gids over webhooks en realtime notificaties voor het volledige beveiligingsprotocol.

Authenticatie en quota

Auth blijft op een public key + secret-paar, ongewijzigd sinds v1. Quota zijn ruimer op v2.

Migratie vanaf v1

v1 blijft ondersteund tot eind 2026. Voor de meeste gevallen: vervang /api/ door /api/v2/ in uw URL's. Een gedetailleerde migratiegids volgt volgende sprint. Raadpleeg alvast de referentiegids REST-endpoints voor de volledige routestructuur van v2.

Veelgestelde vragen

Wat is het verschil tussen de v1 en v2 van de Company Belgium BCE API ?

v1 dekt de identiteit van Belgische bedrijven: KBO-nummer, benaming, adres, NACE, status. v2 voegt vier extra lagen toe: Reference Data-endpoints voor NACE-codes en rechtsvormen met 24 u client-side cache, realtime Belgische btw-nummervalidatie, een betalingsrisicoscore 0-100, en HMAC-SHA256-ondertekende webhooks. Beide versies draaien parallel en delen hetzelfde authenticatiemechanisme.

Hoe werkt de Belgische btw-nummervalidatie via de v2 API ?

Stuur een POST-aanvraag naar /api/v2/vat/validate met het te controleren btw-nummer. Het endpoint normaliseert het formaat, verifieert de Belgische structuur en retourneert de status valid, invalid of bad_format samen met het gekoppelde KBO-ondernemingsnummer. Zolang het nummer niet geldig is, blijft de factuur in concept in de Company Belgium-facturatiemodule.

Wat zijn de Reference Data in de v2 API en waarom ze cachen ?

Reference Data zijn drie stabiele referentietabellen: NACE-codes met beschrijvingen in FR/NL/EN, rechtsvormen en activiteitsgroepen. Ze zijn toegankelijk via eigen endpoints met een Cache-Control-header van 24 u en een ETag. Het idee is die tabellen eenmalig bij het opstarten van de applicatie te laden en in het geheugen te bewaren, in plaats van bij elke bedrijfsopzoeking een codebeschrijving op te vragen.

Hoe beveilig ik de ontvangst van KBO-webhooks van de v2 API ?

Elke webhook wordt als POST naar uw URL verzonden met een X-Espero-Signature-header die een HMAC-SHA256 van het body bevat, berekend met uw gedeeld geheim. Aan de ontvangerskant herberekent u de HMAC van de ontvangen ruwe body en vergelijkt u die met de handtekening via crypto.timingSafeEqual om timingaanvallen te vermijden. Een exponentieel retry-systeem tot 24 u garandeert levering bij tijdelijke onbeschikbaarheid van uw endpoint.

Klaar om te beginnen?

Maak gratis een account aan en ontvang uw API-sleutels in enkele minuten.

Reacties

Reacties laden…

Laat een reactie achter

Niet gepubliceerd — alleen om u te verwittigen.

Reacties worden gemodereerd voor publicatie.

Gerelateerde artikelen