Données KVK et KYC : vérifier rapidement vos clients entreprises
KVKBase Team

Données KVK et KYC : vérifier rapidement vos clients entreprises

Utilisez les données KVK dans votre processus KYC : identification de l'entreprise, vérification des UBO et conformité Wwft, avec exemples d'API.

kvkkycconformitévérificationapi

Les entreprises qui intègrent des clients professionnels sont souvent tenues par la loi de les identifier et de les vérifier. La loi néerlandaise relative à la lutte contre le blanchiment de capitaux et le financement du terrorisme (Wwft) s’applique aux experts-comptables, notaires, agents immobiliers, établissements financiers et, de plus en plus, aux plateformes SaaS et aux places de marché. La question centrale de tout processus d’onboarding d’une entreprise est la suivante : cette société est-elle bien celle qu’elle prétend être ?

Les données KVK sont le point de départ. Le registre du commerce néerlandais est la source officielle pour identifier une entreprise aux Pays-Bas. Dans cet article, nous voyons quels champs de données KVK sont utiles pour le KYC, comment les récupérer efficacement via l’API, et ce dont vous avez encore besoin pour un processus de vérification complet.

Pourquoi les données KVK sont le socle du KYC entreprise

Pour une personne physique, on utilise un passeport ou un permis de conduire. Pour une entreprise, c’est l’extrait KVK. Il contient la dénomination enregistrée, l’adresse légale, la forme juridique, la date de constitution et le statut de la société. Ce sont exactement les champs nécessaires pour identifier une entreprise.

L’avantage d’un accès par API par rapport à la demande manuelle d’extraits, c’est la rapidité et la capacité de montée en charge. Plutôt que de faire télécharger et contrôler des extraits à la main par vos collaborateurs, vous pouvez automatiser la vérification dans votre parcours d’onboarding.

{
  "kvkNumber": "12345678",
  "name": "Example BV",
  "legalForm": "BV",
  "registeredAt": "2019-04-15",
  "status": "active",
  "addresses": [
    {
      "type": "visiting",
      "street": "Hoofdstraat",
      "houseNumber": "10",
      "postalCode": "1234 AB",
      "city": "Amsterdam"
    }
  ]
}

Avec l’API KVKBase, vous récupérez ces données en un seul appel. Pas d’extrait à demander, pas de saisie manuelle.

Les cinq contrôles KYC que vous pouvez automatiser avec les données KVK

1. Identification de l’entreprise

L’étape la plus élémentaire : cette société existe-t-elle et son nom correspond-il au numéro KVK ? Il s’agit d’une simple recherche par numéro KVK.

import requests

def verify_company(kvk_number):
    response = requests.get(
        f"https://api.kvkbase.nl/v1/company/{kvk_number}",
        headers={"Authorization": f"Bearer {API_KEY}"}
    )
    data = response.json()
    
    return {
        "exists": response.status_code == 200,
        "name": data.get("name"),
        "legal_form": data.get("legalForm"),
        "status": data.get("status"),  # 'active', 'dissolved', etc.
    }

Si le statut n’est pas active, ou si le numéro KVK n’existe pas, c’est un signal d’alerte immédiat.

2. Contrôle du statut : l’entreprise est-elle active ?

Une société peut être formellement enregistrée tout en étant dissoute, en faillite ou en sursis de paiement. Pour le KYC, vous voulez savoir si l’entreprise est réellement active.

Le suivi du statut des entreprises KVKBase propose aussi des webhooks pour les changements de statut : vous êtes averti automatiquement lorsqu’une société cliente est dissoute. C’est utile pour la surveillance KYC continue, pas seulement à l’onboarding.

3. Vérification de l’adresse

L’adresse indiquée par le client correspond-elle à l’adresse de visite enregistrée au registre du commerce ? Un écart n’est pas forcément une fraude, mais il mérite d’être examiné. Les sociétés qui n’ont qu’une boîte postale sont aussi un point d’attention dans les processus KYC.

def check_address(kvk_number, provided_postal_code, provided_city):
    data = fetch_company_data(kvk_number)
    registered_address = next(
        (a for a in data["addresses"] if a["type"] == "visiting"),
        None
    )
    
    if not registered_address:
        return {"match": False, "reason": "no visiting address registered"}
    
    postal_match = registered_address["postalCode"].replace(" ", "") == provided_postal_code.replace(" ", "")
    city_match = registered_address["city"].lower() == provided_city.lower()
    
    return {
        "match": postal_match and city_match,
        "registered_postal_code": registered_address["postalCode"],
        "registered_city": registered_address["city"]
    }

4. Forme juridique et obligation UBO

La forme juridique détermine en partie les obligations KYC applicables. Un entrepreneur individuel (eenmanszaak) n’a pas à figurer au registre des UBO, car le propriétaire est toujours l’entrepreneur lui-même. Une BV, une NV ou une fondation, si. Le registre KVK vous donne la forme juridique, ce qui permet de déterminer les étapes suivantes à prévoir.

Forme juridiqueInscription au registre UBO requiseDirigeants visibles via KVK
Eenmanszaak (entreprise individuelle)NonOui (propriétaire)
VOF (société en nom collectif)NonOui (associés)
BV (société à responsabilité limitée)OuiPartiellement (administrateurs)
NV (société anonyme)OuiPartiellement (administrateurs)
Stichting (fondation)OuiPartiellement (administrateurs)
CoopérativeOuiPartiellement

Pour les BV et les NV, le registre KVK mentionne les administrateurs et les représentants autorisés. C’est une première étape, mais les bénéficiaires effectifs (UBO) figurent dans le registre UBO distinct. Les données KVK et le registre UBO se complètent.

5. Validation du numéro de TVA

Pour l’onboarding B2B dans l’UE, il faut aussi valider le numéro de TVA. KVKBase propose une validation VIES intégrée : en un seul appel, vous vérifiez le numéro de TVA et confirmez qu’il est actif dans le système VIES de l’UE. C’est une étape indispensable pour traiter correctement les factures, et parfois aussi pour des raisons de conformité.

Plus de détails sur la validation de la TVA dans notre article sur la validation des numéros de TVA via VIES.

Un formulaire de vérification KYC pratique avec saisie automatique

L’approche la plus conviviale pour l’onboarding d’entreprises : le client saisit son numéro KVK, le reste est récupéré automatiquement et un écran de confirmation s’affiche. L’utilisateur bénéficie ainsi d’une saisie simple, associée à un premier contrôle automatisé.

async function onKvkInput(kvkNumber) {
  if (kvkNumber.length !== 8) return;
  
  const res = await fetch(`/api/verify-company?kvk=${kvkNumber}`);
  const data = await res.json();
  
  if (!data.exists || data.status !== 'active') {
    showError('Company not found or not active in the Trade Register.');
    return;
  }
  
  // Remplir le formulaire
  document.getElementById('company-name').value = data.name;
  document.getElementById('legal-form').value = data.legalForm;
  document.getElementById('address').value = `${data.street} ${data.houseNumber}`;
  document.getElementById('postal-code').value = data.postalCode;
  document.getElementById('city').value = data.city;
  
  // Afficher le panneau de confirmation
  showConfirmation(data);
}

Ce schéma fonctionne aussi pour les formulaires de commande. L’article associé sur la saisie automatique des données d’entreprise au checkout couvre l’ensemble du scénario e-commerce.

KYC continu : la surveillance après l’onboarding

Le KYC n’est pas un contrôle ponctuel. Les entreprises évoluent : elles déménagent, changent de dirigeants, font faillite ou sont rachetées. La surveillance continue via l’API KVK vous alerte des changements pertinents.

Mettez en place une tâche périodique qui vérifie le statut de votre portefeuille clients :

from datetime import datetime

def periodic_kyc_check(client_list):
    discrepancies = []
    
    for client in client_list:
        current_data = fetch_company_data(client["kvk_number"])
        
        checks = [
            ("status", client["registered_status"], current_data["status"]),
            ("name", client["registered_name"], current_data["name"]),
            ("postal_code", client["registered_postal_code"], current_data["addresses"][0]["postalCode"])
        ]
        
        for field, old, new in checks:
            if old != new:
                discrepancies.append({
                    "client_id": client["id"],
                    "kvk_number": client["kvk_number"],
                    "field": field,
                    "old": old,
                    "new": new,
                    "detected_at": datetime.now().isoformat()
                })
    
    return discrepancies

Les écarts peuvent être consignés pour le reporting de conformité ou transmis à un responsable conformité pour un examen manuel.

Ce que les données KVK ne couvrent pas

Les données KVK constituent un socle solide, mais pas un système KYC complet. Pour la conformité Wwft, il vous faut généralement aussi :

  • Vérification des UBO : qui sont les bénéficiaires effectifs ? Cette information se trouve dans le registre UBO, pas dans le registre du commerce.
  • Filtrage PPE : un dirigeant est-il une personne politiquement exposée ? Cela nécessite des listes externes.
  • Filtrage des sanctions : la société ou un dirigeant figure-t-il sur une liste de sanctions (UE, ONU, OFAC) ? Cela nécessite des sources de données distinctes.
  • Vérification de documents : pour les profils à risque plus élevé, des documents complémentaires peuvent être souhaitables.

Pour la plupart des applications, les données KVK forment la première couche : rapide, fiable et automatisée. Les contrôles complémentaires constituent une seconde couche, appliquée selon le niveau de risque.

Pour commencer

L’API KVKBase propose une offre gratuite pour tester votre intégration. Vous pouvez démarrer immédiatement avec la documentation de l’API et construire votre propre parcours de vérification. Pour la surveillance continue, KVKBase propose des notifications par webhook : inutile d’interroger l’API en permanence.

Des questions sur votre cas d’usage ? Écrivez-nous via kvkbase.nl/contact.