KBO - Als bronbeheerder wil ik de gegevens in VR synchroon houden met die van KBO

KBO - Als bronbeheerder wil ik de gegevens in VR synchroon houden met die van KBO

KBO = Kruispuntbank van de Ondernemingen

KBO verenigingen worden geregistreerd met behulp van hun ondernemingsnummer. Al tijdens de registratie wordt de data gevalideerd ten opzichte van KBO en worden er al gegevens overgehaald. Eens geregistreerd, wordt er op regelmatige basis gesynchroniseerd met KBO zodat deze gegevens steeds gelijk blijven.

Data afkomstig vanuit KBO kan je in VR niet wijzigen, wel verrijken.

Validatie bij registratie

Bij registratie van een nieuwe KBO vereniging wordt nagekeken dat:

  • het KBO nummer bestaat

  • Het KBO nummer een rechtspersoon betreft (en dus niet een natuurlijk persoon)

  • Het KBO nummer een Onderneming betreft (dus geen vestigingsplaats)

  • De status in KBO Actief of In oprichting is

  • De rechtsvorm in KBO een van de mogelijke waarden in scope is:

    • Vereniging zonder winstoogmerk

    • internationale vereniging zonder winstoogmerk

    • Private stichting

    • Stichting van openbaar nut

Wanneer aan een van deze voorwaarden niet voldaan is, wordt een foutboodschap wergegeven: Er werd voor dit KBO-nummer geen geldige vereniging gevonden.

Data overnemen bij registratie

Wanneer het opgegeven KBO nummer correct is en verwijst naar een valide vereniging in scope van het register, dan wordt de vereniging geregistreerd in VR en wordt data uit KBO overgenomen.

  • Basisgegevens: De naam, korte naam, startdatum worden overgenomen. Het type van de vereniging is VR wordt gelijk gezet aan de rechtsvorm in KBO

    • In de historiek van de verenigng staan deze gegevens mee in het registratie event.

  • Locaties: Het adres van de maatschappelijke zetel wordt overgenomen voor zover deze voldoet aan de voorwaarden van VR (verplichte velden aanwezig)

    • Als het adres uit KBO niet overgenomen kan worden, dan wordt dit gemeld via een gebeurtenis die via de historiek te raadplegen is (Maatschappelijke zetel volgens KBO kan niet overgenomen worden)

    • Als het adres uit KBO wel overgenomen wordt, dan wordt dit ook gemeld via de historiek (Maatschappelijke zetel volgens KBO werd overgenomen)

  • Contactgegevens: de beschikbare contactgegevens worden overgenomen en krijgen als bron KBO:

    • telefoon en mobiel worden gemapt naar contacttype telefoon

    • website wordt website en e-mail wordt e-mail

    • Wanneer een contactgegeven uit KBO niet voldoet aan de voorwaarden die geldig zijn voor VR contactgegevens, dan wordt dit gemeld via een gebeurtenis die via de historiek te raadplegen is (Contactgegeven kan niet overgenomen worden)

    • Als een contactgegeven uit KBO wel overgenomen wordt, dan wordt dit ook gemeld via de historiek (Contactgegeven werd overgenomen)

  • Vertegenwoordigers (vanaf Q1-2026) : de wettelijke vertegenwoordigers uit KBO worden overgenomen

Synchronisatie van de data

Overzicht

Wanneer een nieuwe KBO vereniging geregistreerd wordt, gaan we ons bij MAGDA abonneren op wijzigingen via Repertorium.RegistreerInschrijving-02.01

Dagelijks stuurt MAGDA een KBO mutatie bestand met daarin alle gewijzigde KBO nummers. Vanuit VR wordt er meerdere keren per dag (om 4u, 7u, 12u en 17u) een proces opgestart om de bestanden die klaar staan op te halen en te verwerken. Zo anticiperen we op een latere levering

Voor elk gewijzigd kbo nummer worden de huidige gegevens in KB0 opgehaald met Onderneming.GeefOnderneming-02.00. Eerst wordt nagekeken of de vereniging in KBO nog voldoet aan de initiële voorwaarden om geregistreerd te worden.

Zo ja, dan worden alle data velden uit KBO vergeleken met de huidige waarden in VR. Voor elk verschil wordt een nieuw event aangemaakt XXXWerdOvergenomenUitKBO en wordt de bijhorende data aangepast. De initiator van dit event is Digitaal Vlaanderen:OVO002949.

Zo nee, dan kijken we na of de status in KBO niet langer Actief of In Oprichting is. In dat geval gaan we de vereniging stopzetten in VR. In alle andere gevallen is er een zeldzame wijziging gebeurd (voorbeeld een VZW is een NV geworden of zoiets) en wordt dat issue op Slack gemeld.

Gedetailleerde beschrijving

Check toelatingsmaatregelen & stoppen KBO-vereniging

Bij synchronisatie wordt gecontroleerd of de KBO vereniging nog steeds voldoet aan de voorwaarden die nodig waren om de vereniging te kunnen registreren. (zie https://vlaamseoverheid.atlassian.net/wiki/spaces/AGB/pages/edit-v2/7566983172#Validatie-bij-registratie ). Als dat niet het geval is, dan zijn er 2 mogelijke gevallen:

  • Status is niet langer Actief of In Oprichting. De vereniging wordt nu beschouwd als gestopt in KBO, met als gevolg

    • Status wordt gestopt

    • Einddatum wordt overgenomen uit KBO (veld Stopzetting.datum of indien dit leeg is, de datum dat de status gewijzigd was (statusKBO.@datumBegin)

    • Een nieuw event wordt toegevoegd aan de historiek: VerenigingWerdGestoptInKBO

    • De vereniging verdwijnt uit de publieke datastroom (publiek zoek en publiek detail)

    • De vereniging kan geen potentiële dubbel meer zijn bij de dubbel detectie

    • Het is nog steeds mogelijk om de data van deze KBO vereniging aan te passen (zoals bvb roepnaam aanpassen)

  • Alle andere gevallen → Deze situatie is zo vreemd en/of zo zeldzaam dat we deze gevallen niet automatisch behandelen.

Synchronisatie van de basisgegevens

De basis gegevens worden een voor een nagekeken. Telkens er 1 item verschilt wordt er een event aangemaakt:

  • naam → NaamWerdGewijzigdInKbo

  • korte naam → KorteNaamWerdGewijzigdInKbo

    • De korte naam kan hiermee ook leeg gemaakt worden

  • rechtsvorm → RechtsvormWerdGewijzigdInKBO

    • Dit is enkel mogelijk indien de nieuwe rechtsvorm ook in scope is, boorbeeld: een VZW die een IVZW geworden is. Dit event verandert het type van de vereniging.

  • startdatum → StartdatumWerdGewijzigdInKbo

Synchronisatie van de maatschappelijke zetel

De maatschappelijke zetel in KBO wordt vergeleken met de waarde die in VR voorkwam. Hierbij onderscheiden we volgende gevallen, afhankelijk of er bij synchronisatie al een maatschappelijke zetel aanwezig is in VR en of de maatschappelijke zetel in KBO al dan niet voldoet aan onze formaat vereisten (alle vereiste velden moeten een waarde hebben)

MZ in VR

MZ in KBO

Welke actie

MZ in VR

MZ in KBO

Welke actie

Niet aanwezig

Voldoet

Event: MaatschappelijkeZetelWerdOvergenomenUitKbo

Niet aanwezig

Voldoet niet

Geen actie

Niet aanwezig

Leeg

Geen actie

Aanwezig

Voldoet

Indien Vorige <> Nieuwe => Event: MaatschappelijkeZetelWerdGewijzigdInKbo

anders geen actie

Aanwezig

Voldoet niet

2 nieuwe events:

MaatschappelijkeZetelWerdVerwijderdUitKbo

MaatschappelijkeZetelKonNietOvergenomenWordenUitKbo

Aanwezig

Leeg

Event:MaatschappelijkeZetelWerdVerwijderdUitKbo

Het adres van de maatschappelijke zetel wordt steeds overgenomen zoals die in KBO staat. Op dit adres wordt geen adresmatch uitgevoerd. Deze locatie heeft dan ook geen adresId.

Synchronisatie van de contactgegevens

Voor elk van de 4 contactgegevens die in KBO kunnen voorkomen (website, e-mail, telefoon, mobiel), worden de waarden uit KBO vergeleken met de waarde in VR.

Ook hierbij onderscheiden we enkele gevallen, afhankelijk of er bij synchronisatie dat contactgegeven al aanwezig is in VR en of dat contactgegeven al dan niet voldoet aan onze formaat vereisten (zoals bvb website moet beginnen met http:// of https://)

Contact in VR

Contact in KBO

Welke actie

Contact in VR

Contact in KBO

Welke actie

Niet aanwezig

Voldoet

Event: ContactgegevenWerdOvergenomenUitKBO (1)(2)

Niet aanwezig

Voldoet niet

Geen actie

Niet aanwezig

Leeg

Geen actie

Aanwezige

Voldoet

Indien Vorige <> Nieuwe => Event: ContactgegevenWerdGewijzigdInKbo

anders geen actie

Aanwezig

Voldoet niet

2 nieuwe events:

ContactgegevenWerdVerwijderdUitKBO

ContactgegevenKonNietOvergenomenWordenUitKBO (2)

Aanwezig

Leeg

Event:ContactgegevenWerdVerwijderdUitKBO

(1) Bij contactgegevens bestaat er een speciale situatie.

  • Stel In KBO is er een nieuw contactgegeven beschikbaar (zoals e-mail: info@vereniging.be), en we volgen het algorithme zoals hierboven beschreven, dan zouden we eigenlijk een nieuw contactgegeven moeten toevoegen in VR met de waarde zoals in KBO en met een beschrijving = ““.

  • Stel nu dat er al zo’n contactgegeven bestaat (aangemaakt door een GI).

  • In dat geval gaan we geen nieuw contactgegeven toevoegen, maar gaan we wel het bestaande contactgegeven aanpassen: bron:initiator wordt dan bron:kbo, alle andere gegevens blijven gelijk. Het event dat hier voor gegenereerd wordt = ContactgegevenWerdInBeheerGenomenDoorKbo. Als dit contactgegeven al zou bestaan, maar de beschrijving is niet leeg, dan is er geen enkel probleem om het nieuwe contactgegeven toe te voegen naast het bestaande.

(2) Het event ContactgegevenKonNietOvergenomenWordenUitKBO zal gegenereerd worden telkens een synchronisatie van een KBO nummer plaatsvindt. Een mogelijke optimalisatie later kan zijn om er voor te zorgen dat dit slechts 1x gegenereerd wordt en de volgende keren niet meer herhaald wordt.

Synchronisatie van de vertegenwoordigers

(vanaf Q1-2026)

De wettelijke vertegenwoordigers uit KBO worden vergeleken met de gekende vertegenwoordigers in het verenigingsregister op basis van het veld INSZ en gelijk getrokken. Eventuele naamswijzigingen worden daarbij ook in rekening genomen.

INSZ in VR

INSZ in KBO

Welke actie

INSZ in VR

INSZ in KBO

Welke actie

Niet aanwezig

Aanwezig

Event: VertegenwoordigerWerdToegevoegdVanuitKBO

Aanwezig

Niet aanwezig

Event: VertegenwoordigerWerdVerwijderdUitKBO

Aanwezig

Aanwezig

Indien naam en voornaam nog steeds gelijk zijn: geen actie,

anders event: VertegenwoordigerWerdGewijzigdInKBO

Data mapping

MAGDA diensten in gebruik

We gebruiken de MAGDA dienst Onderneming.GeefOnderneming-02.00 zowel tijdens registratie als tijdens de synchronisatie.

Om in te schrijven voor latere updates gebruiken we Repertorium.RegistreerInschrijving-02.01

De triggers voor een update worden binnengehaald met Onderneming.PubliceerOndernemingVKBO-02.00

Mapping basisgegevens

Selectie

Een KBO nummer is geldig wanneer

  • het KBO nummer terug te vinden is in deze Magda dienst

  • OndernemingOfVestiging.code = 1 (Onderneming)

  • Rechtsvorm.Code (*) is een van:

    • 017: VZW

    • 026: Private stichting

    • 029: Stichting van openbaar nut

    • 125: IVZW

  • StatusKBO.code (*) = AC (Actief) OF JU (Juridische creatie)

  • SoortOnderneming.code (*) = 2 (Rechtspersoon)

(*) Zie opmerking *Waarden met historiek

Mapping

VR dataset/Veld

KBO veld

Detail

VR dataset/Veld

KBO veld

Detail

naam

Namen.MaatschappelijkeNaam

Zie *Waarden met taalcodes

Zie *Waarden met historiek

korteNaam

Namen.AfgekorteNaam

Zie *Waarden met taalcodes

Zie *Waarden met historiek

startdatum

Start.Datum

 

type

afhankelijk van Rechtsvorm.Code:

  • 017 => VZW

  • 026 => Private stichting

  • 029 => Stichting van openbaar nut

  • 125 => IVZW

Zie *Waarden met historiek

kbo Nummer

Ondernemingsnummer

 

Vertegenwoordiger

Zie selectie Persoon hierboven

Zie *Waarden met historiek

  • INSZ

Persoon.INSZ

 

  • Voornaam

Persoon.Voornaam

 

  • Achternaam

Persoon.Achternaam

 

Mapping locatie

Selectie

We nemen het adres van de maatschappelijke zetel over. Dit vinden we terug door binnen de blok Adressen het adres te nemen met

  • Adres.Type.Code = 001 (Adres van de Zetel)

  • @DatumBegin <= vandaag

  • @DatumEinde is leeg of > vandaag

Mapping

Van dit adres worden deze velden overgenomen

VR dataset/Veld

KBO veld

Detail

VR dataset/Veld

KBO veld

Detail

type

“Maatschappelijke Zetel volgens KBO”

 

straatnaam

Adres.Descripties.Descriptie.Straat.Naam

Zie *Waarden met taalcodes

huisnummer

Adres.Huisnummer

 

busnummer

Adres.Busnummer

 

postcode

Adres.Gemeente.postcode

 

gemeente

Adres.Descripties.Descriptie.Gemeente.Naam

Zie *Waarden met taalcodes

land

Adres.Descripties.Descriptie.Land.Naam

Zie *Waarden met taalcodes

adresvoorstelling

Dit wordt samengesteld uit de vorige elementen zoals bij het aangeven van een adres met componenten

 

Mapping contactgegevens

Selectie

De contactgegevens zijn terug te vinden binnen de blok Adressen door het adres te nemen dat komt uit de selectie adres (zoals hierboven beschreven).

Maak 1 contactgegeven aan per waarde die beschikbaar is in Adres.Descripties.Descriptie.Contact. Het veld FAX wordt niet gemapt.

Mapping

VR dataset/Veld

KBO veld

Detail

VR dataset/Veld

KBO veld

Detail

Type

Telefoonnummer → “Telefoon”

GSM → “Telefoon”

Email → “E-mail”

Website → “Website”

 

Waarde

De waarde van het veld

 

Mapping vertegenwoordigers

Selectie

XML Pad = Onderneming.Functies, MAGDA doc : Functies - Type Onderneming 02.00

Wanneer een KBO nummer geldig is, nemen we de functies over als vertegenwoordigers, maar enkel wanneer

  • @DatumBegin <= vandaag

  • @DatumEinde is leeg of > vandaag

  • AanduidingPersoonOnderneming.code = 1 of 3

  • Persoon.INSZ is ingevuld

  • het functie type (AardFunctie.Code) is een geldige vertegenwoordiger voor de betreffende rechtsvorm (zie tabel hieronder + extra info om te weten waarom juist deze codes)

Code

Functie type

Waar mogelijk

Code

Functie type

Waar mogelijk

00002

Algemeen lasthebber

Alle types

00005

Plaatsvervangende vaste vertegenwoordiger

Alle types

10002  

Bestuurder

Alle types

10003

Vaste vertegenwoordiger

Alle types

10004  

Persoon belast met dagelijks bestuur

Alle types

10007

Gedelegeerd bestuurder

Enkel voor VZW en iVZW

10022

Vertegenwoordiger (niet bestuurder)

Alle types

10030

Vereffenaar

Alle types

90001

Curator

Alle types

90002

Voorlopig bewindvoerder (gerechtelijke reorganisatie en faillissement)

Alle types

90005

Gerechtsmandataris

Alle types

We beperken ons tot deze functies omdat deze als wettelijke vertegenwoordiger van een onderneming van het bepaalde type aanzien worden volgens deze nota: https://economie.fgov.be/sites/default/files/Files/Entreprises/KBO/Lijst-van-functies-die-de-machtiging-verlenen-om-de-onderneming-te-vertegenwoordigen.pdf

Hiermee is er ook een overeenkomst tussen de personen die gelinkt zijn aan een KBO-vereniging in VR en de ondernemingen die geselecteerd worden door ACM (via de KBO webservice) bij het aanmelden als wettelijk vertegenwoordiger van een onderneming.

Mapping

Voor elke vertegenwoordiger worden deze velden overgenomen

VR dataset/Veld

KBO veld

VR dataset/Veld

KBO veld

INSZ

Persoon.INSZ

Voornaam

Persoon.Voornaam

Achternaam

Persoon.Achternaam

Opmerkingen

*Waarden met taalcodes

Sommige dataelementen worden in meerdere talen weergegeven. Kies hier dan de 1e beschikbare waarde in volgorde: NL, FR, DU, ENG. Als er maar 1 waarde beschikbaar is, dan wordt die waarde genomen, ongeacht de taalcode.

Edge: als er meerdere actieve namen zou den zijn en geen enkele van die namen heeft als taalcode NL, FR, DU of ENG, dan wordt de eerste naam in de lijst gekozen, ongeacht welke taalcode daar bij staat.

*Waarden met historiek

Sommige dataelementen worden historisch weergegeven. (Sinds 1/1/2000 was het dit ; Sinds 1/1/2022 was het dat). Voor deze elementen wordt steeds de rij genomen die op de datum van synchronisatie geldig is. Dat is meestal diegene met de hoogste @DatumModificatie. (of bij KBO diegene zonder @DatumEinde)

Intern addendum

Als Digitaal Vlaanderen kunnen we de KBO synchronisatie opvolgen en zelfs de eenmalige synchronisatie van een individuele KBO vereniging aanvragen. Dit werd gedocumenteerd op een interne pagina (die enkel voor Digitaal Vlaanderen beschikbaar is): https://vlaamseoverheid.atlassian.net/wiki/spaces/VG/pages/7569179574