E-facturering 2026: hoe KVK-data fouten in je factuurproces voorkomt
KVKBase Team

E-facturering 2026: hoe KVK-data fouten in je factuurproces voorkomt

Verplichte e-facturering nadert voor steeds meer Nederlandse bedrijven. Gebruik KVK-data via de KVKBase API om factuurgegevens automatisch te valideren en kostbare fouten te voorkomen.

kvkapie-factureringfactureringpeppolcompliance

E-facturering is voor steeds meer Nederlandse bedrijven geen optie meer, maar een verplichting. Overheden en grote inkopers stellen het verplicht, en de EU drijft de adoptie verder op met het Peppol-netwerk. Tegelijkertijd blijft een van de meest voorkomende oorzaken van factuurproblemen verrassend simpel: verkeerde bedrijfsgegevens.

Een factuur op een verkeerd adres, een foutieve bedrijfsnaam of een BTW-nummer dat niet meer klopt, kan een betalingsvertraging opleveren van weken. Met de KVKBase API haal je op het moment van factureren altijd de meest actuele gegevens op, rechtstreeks uit het KVK Handelsregister.

Waarom e-facturering hogere eisen stelt aan gegevensbeheer

Bij een gewone PDF-factuur valt een klein foutje in de bedrijfsnaam misschien pas op bij een aanmaning. Bij e-facturering via Peppol of UBL werkt dat anders. De factuur wordt machinaal verwerkt. Als de naam of het adres niet overeenkomt met wat de ontvanger in zijn systeem heeft staan, kan de factuur direct worden afgewezen.

Dat betekent dat gegevens die jarenlang goed genoeg waren voor papieren processen, nu opeens kritisch zijn geworden. Een klant die twee jaar geleden zijn bedrijfsnaam heeft gewijzigd, een vestiging die is verhuisd, een KVK-nummer dat inmiddels aan een andere rechtsvorm is gekoppeld: dit soort wijzigingen moet je weten voordat je factureert.

Wat je nodig hebt voor een correcte e-factuur

Een geldige e-factuur vereist een aantal gegevens die op elk moment actueel moeten zijn:

  • Volledige rechtspersoon naam (zoals ingeschreven bij de KVK)
  • Vestigingsadres (straat, huisnummer, postcode, stad)
  • KVK-nummer (8 cijfers, valide)
  • BTW-nummer (NL + 9 cijfers + B01/B02, valide bij VIES)
  • Rechtsvorm (relevant voor de aanspreekvorm en juridische context)

Al deze velden kun je realtime ophalen via de KVKBase API. Hieronder een voorbeeld van hoe je dat doet bij het aanmaken van een factuur:

import os
import requests

API_KEY = os.environ["KVKBASE_API_KEY"]
BASE_URL = "https://api.kvkbase.nl/api/v1"

def get_invoice_data(kvk_number: str) -> dict:
    """Haal actuele factuurgegevens op voor een bedrijf."""
    response = requests.get(
        f"{BASE_URL}/kvk/{kvk_number}",
        headers={"x-api-key": API_KEY}
    )
    response.raise_for_status()
    data = response.json()

    adres = data.get("adres", {})

    return {
        "kvk_number": kvk_number,
        "company_name": data.get("naam"),
        "legal_form": data.get("rechtsvorm"),
        "street": adres.get("straat"),
        "house_number": adres.get("huisnummer"),
        "postcode": adres.get("postcode"),
        "city": adres.get("stad"),
        "active": data.get("actief", True),
    }

# Gebruik bij aanmaken van een factuur
invoice_data = get_invoice_data("12345678")

if not invoice_data["active"]:
    raise ValueError(f"Bedrijf {invoice_data['company_name']} is niet meer actief in de KVK")

print(f"Factuurgegevens voor: {invoice_data['company_name']}")
print(f"Adres: {invoice_data['street']} {invoice_data['house_number']}, {invoice_data['postcode']} {invoice_data['city']}")

Live validatie bij het invoeren van een KVK-nummer

In veel boekhoud- en factuursystemen type je het KVK-nummer van een nieuwe klant in. Op dat moment kun je direct valideren en de gegevens invullen. Dit voorkomt typefouten en zorgt ervoor dat de factuur meteen compleet is.

// Frontend validatie bij invoer van KVK-nummer
async function validateAndFillCompany(kvkNumber) {
  if (kvkNumber.length !== 8 || isNaN(kvkNumber)) {
    showError("Voer een geldig 8-cijferig KVK-nummer in");
    return;
  }

  const response = await fetch(`/api/kvk-lookup?kvk=${kvkNumber}`);
  if (!response.ok) {
    showError("Bedrijf niet gevonden in het KVK-register");
    return;
  }

  const data = await response.json();

  if (!data.active) {
    showWarning(`${data.company_name} is uitgeschreven uit het KVK-register`);
    return;
  }

  // Vul formulier automatisch in
  document.getElementById("company_name").value = data.company_name;
  document.getElementById("street").value = `${data.street} ${data.house_number}`;
  document.getElementById("postcode").value = data.postcode;
  document.getElementById("city").value = data.city;
  document.getElementById("kvk_number").value = kvkNumber;

  showSuccess("Bedrijfsgegevens opgehaald uit het KVK-register");
}

Gegevens synchroniseren bij bestaande klanten

Nieuwe klanten valideer je bij onboarding, maar bestaande klanten zijn net zo belangrijk. Adressen veranderen, namen worden gewijzigd, filialen sluiten. Een periodieke synchronisatie zorgt ervoor dat je nooit met verouderde gegevens factureert.

from typing import List
import time

def sync_customer_data(customers: List[dict]) -> List[dict]:
    """
    Synchroniseer klantgegevens met actuele KVK-informatie.
    Geeft een lijst terug van klanten waarvan gegevens zijn gewijzigd.
    """
    updated = []

    for customer in customers:
        kvk = customer.get("kvk_number")
        if not kvk:
            continue

        try:
            fresh = get_invoice_data(kvk)

            changes = {}
            field_map = {
                "company_name": "naam_in_crm",
                "street": "straat_in_crm",
                "postcode": "postcode_in_crm",
                "city": "stad_in_crm",
            }

            for api_field, crm_field in field_map.items():
                api_val = (fresh.get(api_field) or "").strip()
                crm_val = (customer.get(crm_field) or "").strip()
                if api_val and api_val.lower() != crm_val.lower():
                    changes[crm_field] = {
                        "oud": crm_val,
                        "nieuw": api_val,
                    }

            if changes:
                updated.append({
                    "kvk_number": kvk,
                    "company": fresh["company_name"],
                    "changes": changes,
                })

            time.sleep(0.2)  # Respecteer rate limits

        except Exception as e:
            print(f"Fout bij synchroniseren van {kvk}: {e}")

    return updated

# Voorbeeld gebruik
changes = sync_customer_data(my_customer_list)
for change in changes:
    print(f"Klant {change['company']} heeft gewijzigde gegevens: {change['changes']}")

BTW-nummer koppelen aan KVK-gegevens

Voor e-facturering heb je naast het KVK-nummer ook het BTW-nummer nodig. De KVKBase API geeft je het KVK-nummer als startpunt; het bijbehorende BTW-nummer kun je ophalen en vervolgens valideren via VIES. Samen geven ze je een volledig beeld van de fiscale en juridische status van je klant.

Een geautomatiseerde factuurflow ziet er dan zo uit:

  1. Klant vult KVK-nummer in bij checkout of onboarding
  2. API haalt naam, adres en rechtsvorm op
  3. VIES-check valideert het opgegeven BTW-nummer
  4. Alle velden worden automatisch ingevuld
  5. Bij elke factuur controleert het systeem of de gegevens nog actueel zijn

Aansluiting op Peppol en UBL

Als je facturen via het Peppol-netwerk verstuurt, ben je verplicht een aantal velden correct in te vullen. De endpoint-ID in Peppol is voor Nederlandse bedrijven doorgaans gebaseerd op het BTW-nummer of het KVK-nummer. Zorg er dus voor dat beide kloppen voordat je een factuur verstuurt.

De KVKBase API geeft je daarvoor de benodigde basisgegevens. De vertaling naar een UBL-factuurstructuur doe je aan de kant van je factuursoftware, maar de bron van de bedrijfsgegevens is altijd het KVK Handelsregister.

Samenvatting

E-facturering stelt hogere eisen aan de kwaliteit van je bedrijfsgegevens. Met de KVKBase API haal je actuele gegevens op direct vanuit het Handelsregister, bij onboarding, bij elke factuur en periodiek als synchronisatie. Zo voorkom je afwijzingen, vertragingen en discussies over foutieve factuurinformatie.

Lees ook: Bedrijfsgegevens automatisch aanvullen bij checkout voor een concrete implementatie van autofill in je bestelproces.