De Peppol-ID's van uw klanten vinden en bewaren in Stripe
Door evoicely · Laatst gecontroleerd 21 oktober 2026
Een Peppol-ID bestaat uit een schemacode plus een identificatie, zoals 0208:0765432146: schema 0208 (het Belgische ondernemingsnummer) en het nummer zelf.
Bij een Belgische onderneming hoeft u er zelden om te vragen. Het ondernemingsnummer is het btw-nummer van de onderneming zonder BE, en Belgische Peppol-dienstverleners moeten hun klanten onder dat nummer registreren.
Voor alle anderen zoekt u de ID op in de Peppol Directory of via een SMP-lookup, of vraagt u ze aan de klant.
Stripe heeft er geen veld voor: bewaar het btw-nummer in de tax_ids van de Customer en al het andere in de metadata van de Customer.
Deze pagina behandelt het formaat, het opzoeken, België, Stripe en de fouten die de officiële Peppol-regels opvangen.
Wat een Peppol-ID is
Elke verzender en ontvanger op Peppol wordt aangesproken met een identificatie van deelnemer (participant identifier). Die bestaat uit twee delen: een identificatieschema uit de codelijst Peppol Electronic Address Scheme (EAS), en de waarde die dat schema uitreikt (Peppol Policy for use of Identifiers 4.4.0, policy 3 en 4, Engelstalig). U ziet ze op drie manieren geschreven:
0208:0765432146: schema en waarde, de vorm die de meeste accesspoints en hun API's verwachten.iso6523-actorid-upis::0208:0765432146: de volledige vorm, met het vaste "metaschema" van Peppol ervoor. De API van de Peppol Directory en SMP-lookups gebruiken die vorm (policy 5).<cbc:EndpointID schemeID="0208">0765432146</cbc:EndpointID>: in de factuur zelf, als elektronisch adres van de verkoper (BT-34) en van de koper (BT-49). De Peppol BIS-regels vereisen ze allebei (PEPPOL-EN16931-R020 en R010).
De waarde is niet hoofdlettergevoelig (policy 2: 0088:abc is dezelfde deelnemer als 0088:ABc), maar het schema is niet uitwisselbaar: dezelfde cijfers onder een ander schema zijn een andere deelnemer.
Een onderneming kan onder meer dan één ID geregistreerd zijn, bijvoorbeeld onder haar ondernemingsnummer en haar btw-nummer.
Veelgebruikte schema's
De EAS-lijst telt ruim honderd schema's. Dit zijn de schema's die een Stripe-gebruiker in België of Nederland het vaakst tegenkomt. De namen komen uit de EAS-codelijst van Peppol, de formaatcontroles uit de regels van Peppol BIS Billing 3.0 (beide Engelstalig):
| Schema | Identificatie | Formaat dat de Peppol-regels controleren |
|---|---|---|
0208 | Belgisch ondernemingsnummer (KBO) | 10 cijfers, zonder punten, zonder BE; de laatste twee zijn een modulo-97-controle op de eerste acht (PEPPOL-COMMON-R043) |
9925 | Belgisch btw-nummer | Geen eigen formaatregel in Peppol BIS |
0088 | Global Location Number (GLN) | Een geldig GS1-GLN (PEPPOL-COMMON-R040) |
0106 | Nederlands KVK-nummer (Kamer van Koophandel) | 8 cijfers (PEPPOL-COMMON-R054, een waarschuwing) |
0190 | Nederlands organisatie-identificatienummer (OIN) | 20 cijfers (PEPPOL-COMMON-R055, een waarschuwing) |
9944 | Nederlands btw-nummer | Zoals NL123456789B12 (PEPPOL-COMMON-R056-1, een waarschuwing) |
Een schema dat niet op de lijst staat, faalt op regel PEPPOL-EN16931-CL008. E-mail (EM) staat er niet op, dus een e-mailadres kan geen Peppol-adres zijn.
Belgische klanten: de ID zit in het btw-nummer
Sinds 1 januari 2026 moeten btw-plichtige ondernemingen in België onderling gestructureerde e-facturen uitwisselen, verstuurd over Peppol (efactuur.belgium.be, FOD Financiën). Wie eronder valt, leest u in De Peppol-verplichting in België voor ondernemingen die factureren met Stripe. De ID van de koper vinden is het makkelijke deel:
- Elke Belgische onderneming heeft een ondernemingsnummer van 10 cijfers uit de Kruispuntbank van Ondernemingen (KBO), en haar btw-nummer is datzelfde nummer met
BEervoor (business.belgium.be, Engelstalig).BE0765.432.146geeft dus het ondernemingsnummer0765432146. - Belgische Peppol-registraties gebruiken dat nummer. Volgens de FOD Financiën moet minstens één registratie van een Belgische onderneming onder haar ondernemingsnummer gebeuren (schema
0208), zijn dienstverleners daartoe contractueel verplicht, en hoeft u daardoor niet al uw klanten naar hun Peppol-ID te vragen. U kunt altijd naar het ondernemingsnummer versturen; andere identificaties (btw-nummer, GLN, DUNS enzovoort) worden alleen gebruikt als beide partijen dat afspreken (FOD Financiën: Wat is een Peppol-ID?). - Vraag er dus niet om. Op de vraag "Moet ik een Peppol-ID vragen aan mijn klanten?" antwoordt de FOD Financiën: "Neen." (veelgestelde vragen B2B, vraag 15).
Het juist doen
De meeste Belgische adressen die falen, zijn formaatfouten. We hebben deze varianten in een verder geldige factuur getoetst aan de regels van Peppol BIS Billing 3.0 die onze gratis validator gebruikt:
cbc:EndpointID van de koper | Resultaat |
|---|---|
schemeID="0208" 1111111145 | Geldig |
schemeID="0208" 0111.111.124 | PEPPOL-COMMON-R043: de punten horen bij de schrijfwijze van het nummer, niet bij de identificatie |
schemeID="0208" BE1111111145 | PEPPOL-COMMON-R043: BE hoort bij het btw-nummer, niet bij het ondernemingsnummer |
schemeID="0208" 1111111146 | PEPPOL-COMMON-R043: de controlecijfers kloppen niet |
schemeID="9925" BE1111111145 | Geldig, maar komt alleen bij de koper aan als die ook onder deze ID geregistreerd is |
schemeID="BE:EN" 1111111145 | BR-CL-25 en PEPPOL-EN16931-CL008: geen schema op de EAS-lijst |
De ondernemingsnummers hier zijn fictief; ze doorstaan alleen de controle. Die controle is eenvoudig: de laatste twee cijfers moeten gelijk zijn aan 97 min de rest van de deling van de eerste acht cijfers door 97. Zo rekent de Peppol-regel het ook uit.
Oudere documenten schrijven ondernemingsnummers met 9 cijfers (zonder de 0 vooraan); vul ze aan tot 10 voordat u ze gebruikt. Gebruik het formaatvoorbeeld van Stripe, BE0123456789, niet als testgegeven voor Peppol: de controlecijfers kloppen niet.
In code vraagt het afleiden van de ID uit een Belgisch btw-nummer maar een paar regels:
import re
def be_peppol_id(vat: str) -> str | None:
"""'BE 0765.432.146' -> '0208:0765432146', or None if it isn't a valid Belgian number."""
digits = re.sub(r"[\s.\-]", "", vat.upper()).removeprefix("BE")
if len(digits) == 9: # old 9-digit form
digits = "0" + digits
if not re.fullmatch(r"\d{10}", digits) or 97 - int(digits[:8]) % 97 != int(digits[8:]):
return None
return "0208:" + digits
Een geldig nummer betekent nog niet dat de onderneming al op Peppol zit. Controleer dat voordat u verstuurt, zoals hieronder beschreven.
Een Peppol-ID opzoeken
De Peppol Directory
De Peppol Directory is de zoekdienst van OpenPeppol over de visitekaartjes (business cards) die Peppol-SMP's publiceren. U kunt zoeken op naam of ID, filteren op land, of de Directory vanuit code bevragen. Twee beperkingen zijn belangrijk (Peppol Directory: introduction, Engelstalig):
- Vermelding is vrijwillig. Een onderneming die niet in de Directory staat, kan toch op Peppol zitten. Een onderneming die er wel in staat, is een Peppol-deelnemer.
- Alleen ontvangers staan erin. De Directory toont wie documenten kan ontvangen, en dat is precies wat u nodig hebt om iemand een factuur te sturen.
De REST-API verwacht de volledige identificatie, gecodeerd, en staat hoogstens 2 zoekopdrachten per seconde toe (documentatie van de REST-API, Engelstalig):
curl "https://directory.peppol.eu/search/1.0/json?participant=iso6523-actorid-upis%3A%3A0208%3A0765432146"
Een lege resultatenlijst komt terug met status 200. Kijk dus naar het aantal resultaten, niet naar de statuscode. Zoekt u een ID op bedrijfsnaam, gebruik dan de parameter name of de vrije zoekfunctie op de website, en controleer land en adres voordat u iets bewaart.
SML en SMP: de controle die telt
De Directory is bedoeld voor mensen. Als een accesspoint een document verstuurt, zoekt het de ontvanger op in de Service Metadata Locator (SML), een register op basis van DNS, dat verwijst naar de Service Metadata Publisher (SMP) van de ontvanger. De SMP vermeldt welke documenttypes de deelnemer kan ontvangen en bij welk accesspoint (Policy for use of Identifiers, paragraaf 2.1.2, Engelstalig). "Zit deze klant op Peppol?" betekent dus eigenlijk: "kent de SML deze ID, en aanvaardt de SMP ervan Peppol BIS-facturen?". Anders dan de Directory omvat dat elke geregistreerde ontvanger.
- Met de hand: de SMP- en business card-lookup van OpenPeppol. De FOD Financiën verwijst Belgische gebruikers ernaar: zoek op
0208:gevolgd door het ondernemingsnummer. U ziet wie kan ontvangen, niet wie kan versturen. - Vanuit code: de meeste API's van accesspoints bieden een oproep om een ontvanger te controleren ("verify recipient" of "lookup") die de SML/SMP-lookup voor u doet. Roep die aan vlak voor het versturen, niet één keer bij het bewaren van de ID: registraties veranderen.
Het aan de klant vragen
Buiten België is er vaak geen regel die bepaalt onder welke ID een onderneming geregistreerd is: een Nederlands bedrijf kan op Peppol zitten met zijn KVK-nummer (0106), zijn btw-nummer (9944), of helemaal niet.
Staat het niet in de Directory, vraag dan de crediteurenadministratie om de volledige ID inclusief schema, en zoek die op vóór de eerste factuur. In België vraagt u er alleen naar als de klant facturen wil ontvangen op een andere ID dan zijn ondernemingsnummer.
Waar u de ID in Stripe bewaart
Stripe heeft geen veld voor de Peppol-ID. De documentatie van Stripe over e-facturatie zegt dat u het btw-nummer van de klant in de tax_ids van de Customer zet, en Peppol-ID's in de metadata van de Customer onder een vaste sleutel, bijvoorbeeld peppol_participant_id
(Stripe: e-invoicing, Engelstalig).
Tax IDs voor het btw-nummer
Een Belgisch of Nederlands btw-nummer is een tax ID van het type eu_vat. Stripe controleert EU-btw-nummers in VIES en meldt het resultaat in verification.status (pending, verified, unverified of unavailable). Stripe controleert alleen of het nummer geldig is, niet of naam en adres overeenkomen
(Stripe: customer tax IDs, Engelstalig).
curl https://api.stripe.com/v1/tax_ids \
-u "$STRIPE_SECRET_KEY:" \
-d type=eu_vat \
-d value=BE0765432146 \
-d "owner[type]=customer" \
-d "owner[customer]=cus_123"
Elke factuur draagt een kopie in customer_tax_ids. Die volgt de Customer tot de factuur gefinaliseerd is en ligt daarna vast (Invoice object, Engelstalig). Voeg het btw-nummer dus toe voordat de eerste factuur gefinaliseerd wordt.
Voor een Belgische klant is dat alles wat u nodig hebt: de 0208-ID is er telkens uit af te leiden. Stripe heeft geen type tax ID voor een KVK-nummer of een GLN, dus die komen in de metadata.
Metadata voor al het andere
Bewaar de ID bij de Customer als één waarde in de vorm schema:identificatie, zodat schema en nummer niet van elkaar los kunnen raken:
curl https://api.stripe.com/v1/customers/cus_123 \
-u "$STRIPE_SECRET_KEY:" \
-d "metadata[peppol_participant_id]=0106:12345678"
Normaliseer de ID bij het bewaren: geen spaties of punten, geen voorvoegsel iso6523-actorid-upis::, en zoek hem één keer op zodat tikfouten uw eerste factuur niet halen.
De metadata van de Customer wordt niet naar facturen gekopieerd; wat een factuur omzet, moet de Customer ophalen (of customer uitbreiden met expand) om ze te lezen.
Wat er in de XML terechtkomt
Een fictieve Belgische verkoper factureert aan een fictieve Belgische onderneming. Beide hebben een Belgisch btw-nummer, en beide elektronische adressen gebruiken schema 0208 met het ondernemingsnummer dat uit het btw-nummer is afgeleid.
De Peppol-module van evoicely maakte dit bestand, en het doorstaat de regels van EN 16931 en Peppol BIS Billing 3.0. Een uittreksel; de commentaren zijn achteraf toegevoegd:
<cac:AccountingSupplierParty>
<cac:Party>
<cbc:EndpointID schemeID="0208">1000000120</cbc:EndpointID> <!-- BT-34 -->
...
<cac:PartyTaxScheme>
<cbc:CompanyID>BE1000000120</cbc:CompanyID> <!-- BT-31 -->
...
<cac:AccountingCustomerParty>
<cac:Party>
<cbc:EndpointID schemeID="0208">1111111145</cbc:EndpointID> <!-- BT-49 -->
...
<cac:PartyTaxScheme>
<cbc:CompanyID>BE1111111145</cbc:CompanyID> <!-- BT-48 -->
...
Het btw-nummer houdt zijn voorvoegsel BE; het 0208-adres laat het weg. Onze gratis validator toont het elektronische adres van elke partij met het schema erbij, zodat u kunt nagaan aan welke ID een factuur gericht is.
Wat evoicely vandaag doet
evoicely verstuurt Peppol-facturen voor Belgische verkopers die levering via Peppol inschakelen. Het vraagt u niet om de Peppol-ID's van uw klanten:
- De ID van de koper wordt afgeleid uit de eerste tax ID van het type
eu_vatop de Stripe-factuur, als het factuuradres van de klant in België ligt:0208plus het ondernemingsnummer, met de modulo-97-controle hierboven (een nummer van 9 cijfers wordt aangevuld tot 10). Punten en spaties in het btw-nummer zijn geen probleem. - Vóór het versturen vraagt evoicely aan zijn accesspoint, Recommand, of die ID op Peppol geregistreerd is. Is dat niet zo, dan gaat het document per e-mail, als u levering per e-mail hebt ingeschakeld; anders wordt het gemarkeerd als niet verstuurd, met de reden erbij.
- Uw eigen ID is
0208plus het ondernemingsnummer uit het Belgische btw-nummer in uw instellingen. - Vandaag niet gelezen: een Peppol-ID in de metadata (ook
peppol_participant_id), en elk ander schema dan0208. Klanten buiten België, of Belgische klanten zonder btw-nummer in Stripe, krijgen alleen de XRechnung- en ZUGFeRD-bestanden, met hun e-mailadres als elektronisch adres. - Documenten in testmodus gaan via de testomgeving van Recommand, waar het versturen gesimuleerd wordt en niets bij de koper aankomt.
Checklist
- Zet het btw-nummer van elke zakelijke klant als
eu_vatin de Stripe-tax_idsvoordat diens eerste factuur gefinaliseerd wordt, en controleer of het geverifieerd raakt. - Belgische klanten: leid
0208:plus het ondernemingsnummer van 10 cijfers af uit het btw-nummer. U hoeft er niet om te vragen. - Andere klanten: zoek de ID op in de Peppol Directory of vraag hem op met het schema erbij, en bewaar hem in de metadata van de Customer als
schema:identificatie. - Laat uw accesspoint vlak voor elke verzending bevestigen dat de ID geregistreerd is voor Peppol BIS-facturen. Zorg voor een alternatief voor klanten die dat niet zijn.
- Valideer het bestand. Onze gratis validator past de officiële Peppol-regels toe, inclusief de controlecijfers van 0208-nummers.
Verwante gidsen
- De Peppol-verplichting in België voor ondernemingen die factureren met Stripe: wie sinds 2026 Peppol-facturen moet versturen.
- Common Peppol BIS validation errors (in het Engels): PEPPOL-COMMON-R043 en de rest.
Waar evoicely past
evoicely verstuurt uw Stripe-facturen en -creditnota's over Peppol. Belgische klanten worden aangesproken met het ondernemingsnummer uit hun btw-nummer, nadat evoicely heeft gecontroleerd dat ze op Peppol zitten. Elk document wordt vóór verzending gecontroleerd met de officiële Peppol-regels. Koppel uw Stripe-account, gratis voor 10 e-facturen per maand.
Dit is algemene informatie, geen juridisch of fiscaal advies. Ga met uw boekhouder na wat voor uw onderneming geldt.