SEPA purpose code: wat het is en wanneer je het invult
2026-07-19
De salarisbatch moet vandaag nog weg. De IBAN’s zijn gecontroleerd, de bedragen kloppen, de omschrijvingen staan erin. Dan verschijnt er bij de export een veld waar veel teams over struikelen: de purpose code, soms ook betalingsdoel of category purpose genoemd. Moet dat altijd worden ingevuld? Is de omschrijving niet genoeg? En welke code hoort bij salaris, pensioen, huur of een handelsbetaling?
Het korte antwoord: een SEPA purpose code is een gestandaardiseerde code die het soort betaling classificeert. Voor de meeste gewone betalingen is hij optioneel en kun je hem leeg laten. Gebruik hem bewust als een systeem het soort betaling moet herkennen, zoals bij salaris (SALA).
De purpose code in de praktijk
Een typische situatie: je maakt een betaalbestand met salarissen en gewone leveranciersfacturen. Bij de export uit je ERP, bankpakket of Excel verschijnt een extra veld. Iemand vraagt: “Zullen we overal iets invullen, zodat de bank niets afkeurt?”
Begrijpelijk, maar juist dat leidt vaak tot verkeerde beslissingen. Een overbodige code kost onderhoud. Een verkeerde code kan controles of vragen opleveren. En als niemand vastlegt waarom een code werd gebruikt, wordt het bestand bij de volgende run weer met de hand aangepast.
Vuistregel: Dat een veld technisch bestaat, betekent niet dat het in de praktijk verplicht is.
Wie het doel van het veld begrijpt, maakt onderscheid tussen:
- een echte verplichting, als regels of het proces het vragen;
- een zinvol gebruik, als de classificatie voordeel oplevert;
- een bewuste keuze om het leeg te laten, bij een standaardbetaling.
Wat is een SEPA purpose code?
De purpose code classificeert het doel van een betaling. Zie het als een technisch label: in plaats van dat de bank of het ontvangende systeem de vrije tekst moet interpreteren, wordt het soort betaling gestructureerd meegegeven.

Het verschil met de omschrijving
De omschrijving (remittance information) is vrije tekst: een factuurnummer, een periode of een intern kenmerk. Belangrijk voor afletteren en boeken.
De purpose code is gestructureerd. Die beantwoordt niet “welke factuur?”, maar “wat voor soort betaling is dit?”. Banken kunnen die classificatie gebruiken voor automatische verwerking, bijvoorbeeld om salarisbetalingen als zodanig te herkennen.
| Element | Taak |
|---|---|
| Omschrijving | Leesbare informatie voor ontvanger en boekhouding |
| Purpose code | Gestructureerde classificatie voor technische verwerking |
Kernpunt: Een duidelijke omschrijving helpt je boekhouding. Een passende purpose code helpt systemen de betaling te classificeren.
Waar de code technisch terechtkomt
In het ISO 20022-formaat staat de code in de XML als element binnen <Purp><Cd>. Zo blijven twee lagen gescheiden: de inhoudelijke beschrijving in de omschrijving en de technische categorie in de purpose code. Wie dat onderscheid snapt, voorkomt veel discussies bij controles en koppelingen.
Verplicht of optioneel?
De meest gestelde vraag heeft een verrassend duidelijk antwoord: in de meeste gevallen is de SEPA purpose code geen verplicht veld.
Sinds 1 februari 2016 is de BIC voor binnenlandse en grensoverschrijdende SEPA-overboekingen niet meer nodig; het IBAN volstaat. Voor gewone massabetalingen schrijven de SEPA-regels ook geen verplichte purpose code voor.
Waarom de verwarring toch groot is
- De standaard kent het veld. Wie een XML-schema ziet, concludeert dat het altijd nodig is.
- Bankpakketten tonen het veld. Maar zichtbaar is niet hetzelfde als verplicht.
- Sommige bijzondere gevallen vragen wél gestructureerde informatie. Daaruit wordt al snel een regel voor alle betalingen afgeleid.
Wat dit betekent voor je bedrijf
Voor de gewone betalingen van een bedrijf, kantoor of webshop geldt: klopt het IBAN en zijn de andere verplichte gegevens juist, dan wordt de betaling zonder purpose code verwerkt. Dat scheelt complexiteit bij exports uit je ERP of salarispakket, bij Excel- of CSV-lijsten, bij de controle vóór het uploaden en bij bestanden die via een API worden gemaakt.
| Vraag | Gevolg |
|---|---|
| Is het een gewone overboeking binnen Nederland of de EER? | Meestal leeg laten |
| Moet de betaling door systemen als een specifiek soort herkend worden? | Een code overwegen |
| Heeft je bank of proces specifieke eisen? | Vooraf navragen |
Kernpunt: Wie de purpose code uit reflex als verplicht veld behandelt, bouwt meer proceslast in dan de standaard vraagt.
De belangrijkste purpose codes
Is de verplichting van tafel, dan blijft de vraag: wanneer loont een purpose code zakelijk? Meestal als de betaling als een specifieke categorie herkenbaar moet zijn.

| Code | Gebruik | Voorbeeld |
|---|---|---|
| SALA | Salarisbetaling | Maandloon aan medewerkers |
| PENS | Pensioenuitkering | Uitkering vanuit een pensioenregeling |
| TRAD | Handelsbetaling | Betaling voor een goederen- of handelstransactie |
| CBFF | Vermogensopbouw | Inleg in een spaar- of beleggingsregeling |
| RENT | Huur | Huurbetaling, als een gestructureerd label gewenst is |
Denk in toepassingen
- Salarisrun uit de salarisadministratie: moeten medewerkers of bankprocessen de betaling als salaris herkennen, dan is SALA de logische code.
- Gewone leveranciersfactuur: vaak geen code nodig. De echte informatie zit in de omschrijving met factuurnummer of betalingskenmerk.
- Maandelijkse huur: meestal niet verplicht. Wil je de betaling intern of in systemen netjes classificeren, dan kan RENT passen.
De juiste volgorde
- Bepaal inhoudelijk het soort betaling: salaris, pensioen, handel, huur of een gewone factuur?
- Kijk of een gestructureerd label iets toevoegt: heeft een bank, ontvangend systeem of interne workflow die informatie echt nodig?
- Gebruik pas dan de passende code. Anders blijft het veld leeg.
Vuistregel: Voor veel betalingen is géén code de schoonste keuze. Niet omdat het veld onbelangrijk is, maar omdat overbodige classificatie geen beter bestand oplevert.
Ook bij salarissen vervangt de code de rest van de zorg niet: ontvangergegevens, datum, bedrag en omschrijving moeten nog steeds kloppen.
Niet verwarren met redencodes
Een klassieker: purpose codes worden verward met redencodes van storneringen. Purpose codes beschrijven het soort betaling dat je wilt doen. Redencodes, zoals AC06, AM04 of MD07, beschrijven waarom een bank een transactie weigert of terugboekt. Meer daarover lees je in het artikel over SEPA-storneringscodes.
Waar de purpose code in de SEPA XML staat
Voor ontwikkelaars en ERP-beheerders telt uiteindelijk de technische positie. De purpose code staat niet ergens in de vrije tekst, maar op een vaste plek in de transactiegegevens.

De juiste plek
Bij een overboeking staat de code in het blok CdtTrfTxInf, waar ook bedrag, ontvanger en kenmerken van één transactie staan:
| XML-element | Betekenis |
|---|---|
<Purp> |
Ruimte voor het betalingsdoel als gestructureerde categorie |
<Cd> |
De gestandaardiseerde code zelf |
In de praktijk: <Purp><Cd>SALA</Cd></Purp>.
Waarom de exacte plek telt
Banken controleren SEPA-bestanden niet alleen inhoudelijk maar ook op structuur. Typische technische fouten:
- de code staat in de omschrijving in plaats van in het Purp-element;
- het element staat op het verkeerde niveau;
- de waarde is geen geldige code;
- een koppeling schrijft de waarde naar een verkeerd veld.
Meer over de opbouw lees je in het artikel over een SEPA XML-bestand maken.
Kernpunt: Bij XML-betaalbestanden is “bijna goed” niet genoeg. Een veld moet er niet alleen zijn, maar ook op de juiste plek staan.
Een snelle controle
- Staat het element er alleen als het bedoeld is?
- Staat de code in het juiste transactieblok?
- Is het een echte purpose code en geen zelfbedachte afkorting?
- Is de koppeling bij een batch voor elke transactie juist toegepast?
Purpose codes in je Excel, CSV of API
Er zijn twee soorten gebruikers. De ene werkt met Excel of CSV en wil zonder XML-kennis een geldig SEPA-bestand. De andere automatiseert betalingen vanuit een ERP of eigen applicatie. Voor beide is het het makkelijkst als de purpose code een gewoon gegevensveld is.

Voor finance in de webinterface
Gebruik een aparte kolom voor de code, bijvoorbeeld Purpose code. De naam doet er niet toe, de koppeling wel:
- upload het bestand;
- koppel de kolommen aan de SEPA-velden;
- vul alleen een code in waar dat inhoudelijk gewenst is;
- genereer en controleer het XML-bestand.
Handig bij gemengde runs: salarissen krijgen een code, leveranciersbetalingen niet.
Voor ontwikkelaars via de API
Via een API is de purpose code een extra attribuut per transactie in de payload. Je applicatie beslist inhoudelijk of er een code wordt gezet, de API zorgt voor de juiste plek in de XML, en de controle gebeurt vóór het aanleveren. De JSON-koppeling begint bij de API van GenerateSEPA.
Veelgemaakte fouten en hoe je ze voorkomt
| Fout | Wat er gebeurt | Oplossing |
|---|---|---|
| Verplichtveld-reflex | Elk veld wordt uit voorzorg ingevuld, soms met interne afkortingen | Geen inhoudelijke reden? Veld leeg laten |
| Verwarring met redencodes | AC06 of AM04 belanden in het purpose-veld | Purpose codes beschrijven het doel, redencodes de stornering |
| Slechte koppeling | Kolom gekoppeld aan de omschrijving, of code op alle regels gekopieerd | Veldlogica vastleggen, gemengde bestanden bewust behandelen |
| Blind vertrouwen op vrije tekst | Soort betaling alleen in de omschrijving | Gestructureerd veld gebruiken als classificatie echt nodig is |
Spreek intern af wanneer een code wordt gebruikt en wie dat beslist, en controleer vóór het uploaden of alleen geldige codes zijn gebruikt op de juiste XML-plek. De beste foutpreventie is verrassend saai: gebruik purpose codes alleen bewust, verwar ze niet met redencodes en controleer de koppeling.
Maak je SEPA-bestanden uit Excel, CSV of JSON? Met GenerateSEPA koppel je je kolommen eenmalig en krijg je een bankklaar SEPA XML-bestand zonder handwerk in de XML. Probeer het 7 dagen gratis.
Veelgestelde vragen
- Is de SEPA purpose code verplicht?
- Voor de meeste gewone SEPA-overboekingen in batches niet. Het veld bestaat in de standaard, maar is bij de overgrote meerderheid van de betalingen optioneel. Alleen als je bank, een ontvangend systeem of een specifiek proces erom vraagt, vul je het in.
- Vervangt de purpose code de omschrijving?
- Nee. De omschrijving is vrije tekst voor mensen en de boekhouding, zoals een factuurnummer. De purpose code classificeert het soort betaling voor systemen, bijvoorbeeld salaris of handel. Je gebruikt ze naast elkaar.
- Waar staat de purpose code in de SEPA XML?
- In ISO 20022 staat de code per transactie in het element Purp met daaronder Cd, bijvoorbeeld <Purp><Cd>SALA</Cd></Purp>. Je Excel- of ERP-koppeling moet naar dat veld schrijven, niet naar de omschrijving.
- Wat is de meest gemaakte fout met purpose codes?
- Teams verwarren ze met redencodes van storneringen, zoals AM04 of MD07, of vullen uit voorzorg elke regel in. Beide maken het bestand onnodig complex. Gebruik een purpose code alleen als de classificatie echt iets toevoegt.