Build a KYC Workflow for European Businesses with One API

2026-04-13 · European Business API

What KYC means for B2B platforms

Know Your Customer (KYC) in a B2B context means verifying that a business is real, active, and who they claim to be. For European businesses, this involves checking:

Most platforms do this manually or with multiple services. The European Business API combines all three checks in one place.

The three-step verification

Step 1: Verify the company (SIRET)

For French businesses, validate the SIRET and retrieve company details:


import httpx

API_KEY = "your_api_key"
HEADERS = {"X-API-Key": API_KEY}

def verify_company(siret: str) -> dict:
    r = httpx.get(
        f"https://frenchbusinessapi.com/sirene/siret/{siret}",
        headers=HEADERS
    )
    if r.status_code != 200:
        return {"valid": False, "reason": "SIRET not found"}

    data = r.json()
    if not data.get("actif"):
        return {"valid": False, "reason": "Company is inactive/closed"}

    return {
        "valid": True,
        "name": data["denomination"],
        "address": f"{data['adresse_ligne1']}, {data['code_postal']} {data['ville']}",
        "naf": data["code_naf"],
        "activity": data["libelle_naf"],
    }

This immediately tells you if the company exists, is active, and what they do. See our SIRET lookup guide for more details.

Step 2: Validate VAT number

For intra-EU transactions, validate the VAT number via VIES:


def verify_vat(vat_number: str) -> dict:
    r = httpx.get(
        f"https://frenchbusinessapi.com/vat/validate/{vat_number}",
        headers=HEADERS
    )
    data = r.json()
    return {
        "valid": data["valid"],
        "vies_checked": data["vies_available"],
        "company_name": data.get("company_name"),
        "country": data["country_code"],
    }

A valid VAT number confirms the business is VAT-registered and gives you their official name and address from VIES. See our VAT validation guide.

Step 3: Verify IBAN

Before setting up payment, validate the customer's bank details:


def verify_iban(iban: str) -> dict:
    r = httpx.get(
        f"https://frenchbusinessapi.com/iban/validate/{iban}",
        headers=HEADERS
    )
    data = r.json()
    return {
        "valid": data["valid"],
        "bank": data.get("bank_name"),
        "bic": data.get("bic"),
        "sepa": data.get("sepa_member"),
    }

A valid IBAN with SEPA membership means you can process payments via SEPA credit transfer or direct debit. See our IBAN validation guide.

Putting it all together

A complete onboarding verification function:


def onboard_customer(siret: str, vat_number: str, iban: str) -> dict:
    results = {
        "company": verify_company(siret),
        "vat": verify_vat(vat_number),
        "iban": verify_iban(iban),
    }

    # Cross-check: company name from SIRET should match VIES
    all_valid = all([
        results["company"]["valid"],
        results["vat"]["valid"],
        results["iban"]["valid"],
    ])

    results["status"] = "approved" if all_valid else "review_required"
    return results

# Usage
result = onboard_customer(
    siret="35600000000048",
    vat_number="FR73356000000",
    iban="FR7630006000011234567890189"
)
print(result["status"])

Three API calls, one status. The entire verification takes under 2 seconds.

Red flags to watch for

Automating the flow

For high-volume onboarding (marketplace sellers, supplier registration), wrap the verification in an async pipeline:


import asyncio

async def verify_batch(customers: list[dict]) -> list[dict]:
    results = []
    for c in customers:
        result = onboard_customer(c["siret"], c["vat"], c["iban"])
        results.append({"customer": c["name"], **result})
        await asyncio.sleep(0.1)  # Respect rate limits
    return results

Beyond France

The VAT and IBAN endpoints cover all EU countries. For company lookup outside France, you'll need country-specific registries. But VAT + IBAN verification works across the entire EU with the same API calls.

Next steps

Ready to build for Europe?

One API for company lookup, VAT validation, IBAN verification, SEPA payments, and more.

Get your API key