SEPA-bestand maken: opbouw, gegevens en de vier manieren

2026-07-10

De bank vraagt om “een SEPA-bestand” voor je verzamelbetaling of incassorun, en je hebt alleen een lijst met namen, IBAN’s en bedragen in Excel. Het klinkt technisch, maar het is minder ingewikkeld dan het lijkt: je hebt betaalgegevens, en de bank wil die in één vast formaat ontvangen.

Een SEPA-bestand maken betekent dat je die gegevens omzet naar een XML-bestand volgens de ISO 20022-standaard: pain.001 voor overboekingen of pain.008 voor incasso’s. XML met de hand schrijven hoeft niet en moet je ook niet willen. Je bereidt de gegevens goed voor, kiest een manier om het bestand te laten maken en controleert het vóór je het uploadt.

In dit artikel lees je wat een SEPA-bestand is, welke gegevens erin moeten, welke vier manieren er zijn om er een te maken en hoe je afkeur door de bank voorkomt.

Wat is een SEPA-bestand?

Een SEPA-bestand is een XML-bestand waarmee je in één keer meerdere betalingen of incasso’s bij je bank aanlevert. ING, Rabobank, ABN AMRO, bunq, Triodos en de andere banken in het eurogebied accepteren hetzelfde formaat. Sinds de overstap naar SEPA in 2014 vervangt het in Nederland het oude ClieOp03-formaat; daarover lees je meer in ClieOp03 naar SEPA XML.

Overboeking of incasso

Bestand Gebruik Voorbeeld
pain.001 SEPA-overboeking Leveranciers betalen, salarissen, verzamelbetaling
pain.008 SEPA-incasso Contributie, abonnementen, facturen innen

Voor een incasso heb je extra gegevens nodig: je incassant-ID en per klant een machtigingskenmerk en de datum van ondertekening.

De opbouw in vier niveaus

Een SEPA-bestand is geen platte lijst zoals een CSV, maar hiërarchisch:

  1. Document: de buitenste laag om het hele bestand.
  2. Group Header (GrpHdr): gegevens over het hele bestand, zoals het aantal transacties en het totaalbedrag.
  3. Payment Information (PmtInf): een blok met gedeelde gegevens, zoals jouw rekening, de uitvoerings- of incassodatum en bij incasso’s je incassant-ID.
  4. Transacties: per betaling of incasso de tegenpartij, IBAN, bedrag, omschrijving en eventueel het machtigingskenmerk.

Waarom zo? Je bedrijfsnaam en rekening staan één keer in het blok in plaats van duizend keer per regel. En de bank controleert eerst de structuur en dan pas de afzonderlijke velden.

Kernpunt: Het meeste werk zit niet in de XML, maar in de gegevens die erin gaan. Een schone lijst levert bijna altijd een geldig bestand op.

Welke gegevens je nodig hebt

Voor een incassobestand (pain.008) zijn dit de belangrijkste velden:

Veld Verplicht Formaat Voorbeeld
Machtigingskenmerk Ja Tekst, max. 35 tekens MACHT-2026-001
Naam debiteur Ja Tekst, max. 70 tekens Jansen Installatietechniek
IBAN debiteur Ja Max. 34 tekens; een Nederlandse IBAN heeft er 18 NL91ABNA0417164300
Bedrag Ja Getal met punt als decimaalteken 99.50
Incassodatum Ja JJJJ-MM-DD 2026-07-15
Datum ondertekening machtiging Ja JJJJ-MM-DD 2025-11-03
Incassant-ID Ja (één keer per blok) Tekst, begint in Nederland met NL Via je bank
Omschrijving Nee Tekst, max. 140 tekens Factuur 2026-07

Voor een overboekingsbestand (pain.001) heb je naam, IBAN, bedrag, uitvoeringsdatum en omschrijving of betalingskenmerk nodig; machtigingsgegevens vervallen.

Controleer je lijst vooraf

  1. Geen lege verplichte velden. Elke regel heeft een naam, IBAN, bedrag en datum.
  2. Geldige IBAN’s. Juiste lengte, landcode en controlecijfers. Controleer ze met de IBAN-validator.
  3. Bedragen zonder tekens. Geen €-teken, geen duizendtalscheiding.
  4. Datums consequent. Allemaal in de toekomst en in hetzelfde formaat.
  5. Veilige tekens. Vreemde tekens in namen en omschrijvingen kunnen afkeur geven.
  6. Geen dubbele regels. Elk machtigingskenmerk hoort bij één machtiging, elke referentie is uniek.

Vier manieren om een SEPA-bestand te maken

Er is niet één juiste manier. Welke past, hangt af van hoe vaak je betaalt of incasseert en waar je gegevens staan.

Manier Hoe het werkt Past bij
Invoerscherm van je bank Betalingen één voor één invullen in internetbankieren Een handvol betalingen per maand
Export uit je boekhoudpakket Je software maakt zelf het XML-bestand Als je pakket het ondersteunt en je data daar compleet is
Converter Excel of CSV uploaden, kolommen koppelen, XML downloaden Terugkerende batches vanuit spreadsheets
API Je eigen systeem stuurt de gegevens en krijgt XML terug Grote volumes en volledig geautomatiseerde processen

Handmatig XML schrijven: niet doen

Een XML-bestand met de hand opbouwen is traag en foutgevoelig. Het is leerzaam om de structuur te begrijpen, maar niet voor echte betalingen. Wil je zien hoe een compleet bestand eruitziet, bekijk dan het voorbeeld van een pain.008.001.02-bestand.

Met een converter

Met GenerateSEPA upload je je Excel- of CSV-bestand, koppel je één keer welke kolom bij welk SEPA-veld hoort, worden IBAN’s en verplichte velden gecontroleerd en download je het XML-bestand. Een uitgebreide stap-voor-stap-uitleg voor de spreadsheetroute vind je in het artikel over een SEPA-bestand maken vanuit een spreadsheet.

Met een API

Staan je betaalgegevens al in een ERP of eigen applicatie, dan wil je niet exporteren en uploaden. Met de API stuurt je systeem de gegevens en krijgt het het XML-bestand terug. Het uploaden en goedkeuren bij de bank blijft een aparte stap.

Het bestand controleren vóór je uploadt

Een gegenereerd bestand is niet automatisch goed. Vier controles voorkomen de meeste afkeur:

  1. Schemavalidatie. Controleer het bestand tegen het XML-schema. Voor incassobestanden kan dat met de gratis SEPA-incasso XML-validator.
  2. Totalen. Kloppen het aantal transacties en het totaalbedrag met je bronlijst?
  3. Steekproef. Pak een paar regels en vergelijk bedrag, naam en IBAN met de bron.
  4. Vier ogen. De een maakt het bestand, de ander controleert vóór het uploaden.

Welke versie accepteert je bank?

Veel Nederlandse banken werken met pain.001.001.03 voor overboekingen en pain.008.001.02 voor incasso’s, en steeds vaker met nieuwere versies. Laat je niet gek maken door berichten dat je over moet op pain.008.003.02: dat is geen opvolger, maar een oude Duitse variant. Vraag gewoon je bank welke versie ze accepteren, en kies die bij het maken van je bestand.

Praktijkregel: Lever het eerste bestand klein aan, met een paar transacties. Pas als dat goed verwerkt is, stuur je de volledige run.

Lever op tijd aan: je bank hanteert een eigen aanlevertermijn en tijdstip, die in je contract staan. Voor incasso’s geldt daarnaast dat je klant vooraf een aankondiging moet krijgen.

Veelgemaakte fouten en oplossingen

Foutmelding Oorzaak Oplossing
Ongeldige IBAN Typfout of verkeerd formaat IBAN’s controleren vóór de conversie
Ongeldig machtigingskenmerk Dubbel, leeg of te lang Uniek kenmerk, max. 35 tekens
Bestand geweigerd Verkeerde schemaversie Versie afstemmen op wat je bank accepteert
Bedrag klopt niet Tekst, €-teken of komma als decimaal Alleen getallen met een punt
Datum geweigerd Verkeerd formaat of in het verleden JJJJ-MM-DD en een datum in de toekomst
Totaal in header klopt niet Regels handmatig aangepast na het genereren Bron corrigeren en opnieuw genereren

De meeste fouten zijn gegevensfouten die pas bij de validatie zichtbaar worden. Corrigeer daarom de bron en genereer het bestand opnieuw, in plaats van de XML met de hand aan te passen.

Checklist: je eerste SEPA-bestand

Stap Wat je doet Wanneer
1 Bepalen: overboeking (pain.001) of incasso (pain.008) Vóór alles
2 Gegevens exporteren naar Excel of CSV en opschonen Vóór elke run
3 IBAN’s, bedragen, datums en kenmerken controleren Vóór de conversie
4 Bestand laten maken via converter, boekhoudpakket of API Per run
5 Valideren, totalen controleren en steekproef nemen Vóór het uploaden
6 Uploaden, laten goedkeuren en verwerking controleren Binnen de termijn van je bank

Een SEPA-bestand maken wordt routine zodra je de opbouw en de verplichte gegevens kent. Heb je je betaallijst al in Excel? Probeer GenerateSEPA 7 dagen gratis en maak er in een paar minuten een gecontroleerd bestand van.


Veelgestelde vragen

Hoe is een SEPA-bestand opgebouwd?
Een SEPA-bestand is een XML-bestand met vier niveaus: het document, de Group Header met het aantal transacties en het totaalbedrag, een of meer Payment Information-blokken met gedeelde gegevens zoals je rekening en datum, en de afzonderlijke transacties met naam, IBAN en bedrag.
Kan ik een SEPA-bestand maken in Excel?
Excel kan de gegevens bevatten, maar maakt zelf geen geldig SEPA XML-bestand. Daarvoor heb je een converter, je boekhoudpakket of een API nodig die de kolommen aan de juiste XML-velden koppelt en de gegevens controleert.
Welke pain-versie moet ik gebruiken?
De versie die je bank accepteert. Veel Nederlandse banken werken met pain.001.001.03 voor overboekingen en pain.008.001.02 voor incasso's, en steeds vaker met nieuwere versies. pain.008.003.02 is geen opvolger maar een oude Duitse variant; vraag bij twijfel je bank.
Wat moet ik controleren voordat ik het bestand upload?
Valideer het bestand tegen het XML-schema, controleer of het aantal transacties en het totaalbedrag kloppen met je bronlijst, neem een steekproef van een paar regels en laat een collega meekijken. Lever de eerste keer een klein testbestand aan.

Gerelateerde artikelen