Pain.008 generator: SEPA-incassobestand maken zonder XML te schrijven

2026-04-06

Je sportschool, vereniging of softwarebedrijf int elke maand bij honderden klanten via automatische incasso. De gegevens staan netjes in Excel, maar je bank wil geen Excel. Die wil een SEPA-incassobestand in XML, en wel precies volgens de regels. Eén verkeerd teken en de hele batch komt terug.

Daar is een pain.008 generator voor: een tool die je betaalgegevens, meestal uit een spreadsheet, omzet naar het exacte XML-formaat dat banken voor SEPA-incasso eisen. Wat anders uren handwerk en foutgevoelig knip- en plakwerk is, wordt een kwestie van uploaden, kolommen koppelen en downloaden.

In dit artikel lees je wat een pain.008-bestand bevat, hoe je je gegevens voorbereidt, hoe je het bestand online of via een API genereert en hoe je de fouten oplost waarop banken het vaakst afkeuren.

Wat is een pain.008-bestand en waarom is het belangrijk?

Laptop met financiële gegevens, pennen en een document op een houten bureau met een banner SEPA Direct Debit

Een pain.008-bestand is het standaardbericht voor SEPA-incasso’s binnen de hele eurozone en de andere SEPA-landen. Het volgt het ISO 20022 XML-formaat en heeft één doel: je bank opdracht geven om incasso’s bij je klanten uit te voeren. Het is dus geen algemeen betaalbestand; voor overboekingen bestaat pain.001.

Element Wat het is Voorbeeld
Incassant-ID Jouw unieke identificatie als incassant NL69ZZZ123456780000
Machtigingskenmerk Unieke referentie van de machtiging van je klant MACHT-2026-001
Naam en IBAN betaler Naam en rekeningnummer van je klant Bakkerij De Molen / NL91ABNA0417164300
Incassodatum De datum waarop je het geld wilt innen 2026-10-25
Bedrag Het exacte bedrag in euro 49.99

De gegevens in de tabel zijn fictieve voorbeelden. Is een van deze elementen fout, dan wordt de incasso of de hele batch geweigerd. Meer over het machtigingskenmerk lees je in wat een UMR of machtigingskenmerk is.

Waarom één standaard

Vóór SEPA had elk land zijn eigen incassoformaat; in Nederland was dat ClieOp03. De pain.008-standaard brengt alles onder in één voorspelbaar kader. Voor je financeteam betekent dat:

  • Minder fouten: vaste velden voor IBAN, BIC en machtiging maken de gegevens eenduidig.
  • Eén bestandstype: of de klant nu bij ING, Rabobank of een Duitse bank zit, je levert hetzelfde formaat aan.
  • Grensoverschrijdend incasseren: een klant in België of Duitsland incasseer je op dezelfde manier als een Nederlandse klant.

Kernpunt: de waarde van pain.008 is betrouwbaarheid. Eén vaste structuur zonder ruimte voor interpretatie, zodat je contributie of abonnementsgeld op tijd binnenkomt.

Waarom een aparte generator?

Kun je de XML niet zelf schrijven? Technisch wel, in de praktijk is het een slecht idee. Eén verkeerd geplaatste tag of een ongeldig teken maakt de hele batch ongeldig. Een pain.008 generator regelt de XML-opmaak op de achtergrond en controleert je gegevens, zodat je een fout IBAN of een ontbrekend veld ziet voordat je uploadt. Wil je eerst de structuur van het bestand begrijpen, bekijk dan het pain.008.001.02 voorbeeld met uitleg.

Je gegevens voorbereiden voor een foutloze conversie

Een goed pain.008-bestand ontstaat niet bij de laatste klik, maar in de gegevens die je erin stopt. De generator is zo goed als je bronbestand. Eén fout in de spreadsheet en je zit in een kringetje van uploaden, afkeur, zoeken en opnieuw beginnen.

Je spreadsheet opschonen

Of je nu met Excel, CSV of JSON werkt: begin met deze drie punten.

  • Datums in één formaat: gebruik voor de incassodatum overal hetzelfde, eenduidige formaat, bij voorkeur JJJJ-MM-DD (2026-11-20). Een kolom met 20-11-2026 naast 20 nov 2026 gaat gegarandeerd mis.
  • Tekstvelden opschonen: haal tekens als &, # of * uit namen en omschrijvingen. Banken accepteren alleen een beperkte tekenset. Zoeken en vervangen in Excel is genoeg.
  • Bedragen als getal: zet bedragen als gewoon getal in de cel, zonder euroteken of tekst ervoor. Bij een Nederlandse Excel zie je 125,50; de generator zet dat om naar 125.50 in de XML, maar alleen als de cel echt een getal is.

Vuistregel: haal alle twijfel uit je bronbestand. Elke kolom bevat één soort gegeven, in één formaat, zonder uitzonderingen.

Gegevens uit andere systemen koppelen

Komen je gegevens uit een ouder systeem of een export met eigen kolomnamen, dan is de mapping je belangrijkste taak. Je koppelt bijvoorbeeld je kolom ‘Klantnummer_machtiging’ aan het veld machtigingskenmerk en ‘Rekeningnummer’ aan IBAN betaler. Staan er nog oude rekeningnummers zonder IBAN in je bestand, zet ze dan eerst om. Werk je nog met oude ClieOp03-exports, lees dan hoe je ClieOp03 naar SEPA XML overzet.

Controleer daarna de IBAN’s. Een ongeldig IBAN is een van de belangrijkste redenen dat een incasso mislukt. Met de gratis IBAN-validator zie je direct of het formaat en het controlegetal kloppen.

Zo genereer je je pain.008 XML-bestand

Je gegevens zijn schoon. Nu de laatste stap: van spreadsheet naar een bestand dat je bank accepteert. Met een goede pain.008 generator zoals GenerateSEPA kan je financeteam dat zelf, zonder ontwikkelaar.

Uploaden en koppelen

Je uploadt je Excel-, CSV- of JSON-bestand en krijgt een koppelscherm te zien. Daar verbind je je kolomkoppen met de standaardvelden van pain.008:

  • je kolom ‘Rekeninghouder’ met naam betaler;
  • je kolom ‘IBAN’ met IBAN betaler;
  • je kolom ‘Incassodatum’ met gewenste incassodatum.

De koppeling wordt onthouden, zodat je volgende maand alleen nog hoeft te uploaden. Je kiest ook of het om een Core- of B2B-incasso gaat.

Infographic in drie stappen over het voorbereiden van gegevens voor pain.008: ruw, opgeschoond en gevalideerd

Van een rommelige spreadsheet naar een geldig XML-bestand is geen sprong, maar een reeks bewuste stappen: opschonen, koppelen, controleren.

Controle voordat het bestand bestaat

Hier verdient een goede generator zich terug. Tijdens het koppelen worden je gegevens gecontroleerd op de fouten die tot afkeur leiden:

  • IBAN’s met een ongeldig controlegetal;
  • ontbrekende verplichte velden, zoals het machtigingskenmerk;
  • datums die niet als datum te lezen zijn;
  • tekst in bedragvelden.

Je lost het probleem op in je scherm, in plaats van dagen later een afkeurmelding van de bank te krijgen. Is alles in orde, dan download je een pain.008.001.02-bestand dat je direct in de zakelijke omgeving van je bank uploadt. Hoe dat per bank werkt, lees je in SEPA XML uploaden bij je bank.

Pain.008 genereren via een API

Handmatig genereren is een prima start. Wil je opschalen, of zitten je incassogegevens al in je eigen software (ERP, facturatieplatform of ledenadministratie), dan is een API de volgende stap. Je systeem stuurt de gegevens van de incassorun en krijgt een geldig pain.008-bestand terug, zonder dat iemand een spreadsheet uploadt.

De API van GenerateSEPA werkt met JSON. Je bundelt de gegevens van de incassant en de lijst met incasso’s in één verzoek. Vereenvoudigd ziet zo’n verzoek er ongeveer zo uit (de exacte veldnamen staan in de API-documentatie):

{
  "creditor_name": "Voorbeeld Diensten B.V.",
  "creditor_iban": "NL91ABNA0417164300",
  "creditor_id": "NL69ZZZ123456780000",
  "collection_date": "2026-11-25",
  "transactions": [
    {
      "amount": 49.99,
      "debtor_name": "Bakkerij De Molen",
      "debtor_iban": "NL38INGB1234567806",
      "mandate_id": "MACHT-001",
      "mandate_date": "2025-01-15",
      "end_to_end_id": "FACT-12345"
    }
  ]
}

Bij succes krijg je het XML-bestand terug, dat je systeem opslaat of klaarzet voor upload bij de bank. Bij een fout krijg je een melding die vertelt wat er mis is, bijvoorbeeld een ongeldig IBAN of een ontbrekend machtigingskenmerk. Die feedback kan je ontwikkelaar loggen en gebruiken om fouten al in de bron af te vangen. Meer technische achtergrond vind je in SEPA XML via een API.

Veelvoorkomende pain.008-fouten oplossen

Man maakt aantekeningen naast een laptop met een tekstballon over het oplossen van betaalfouten

Een bestand dat terugkomt met alleen ‘bestand afgekeurd’ zorgt voor paniek. Meestal zit de oorzaak niet in de XML zelf, maar in je brongegevens.

Fout Typische melding Oplossing
Ongeldig IBAN of BIC Ongeldig controlegetal, bank niet gevonden Regel opzoeken, IBAN controleren in de IBAN-validator en in de bron corrigeren
Incassant-ID ontbreekt of klopt niet Incassant-ID niet opgegeven of onbekend Het ID uit je incassocontract met de bank overnemen, zonder spaties
Machtigingsgegevens Machtiging niet gevonden, ongeldige datum, dubbel kenmerk Kenmerk en datum van ondertekening vergelijken met je machtigingsadministratie

Ongeldig IBAN of BIC is verreweg de meest voorkomende oorzaak. Eén verkeerd cijfer of een verkeerde landcode is genoeg.

Het incassant-ID is je paspoort in de SEPA-wereld. Je krijgt het via je bank bij het afsluiten van je incassocontract. Staat het niet of verkeerd in je bestand, dan wordt de hele batch geweigerd. Twijfel je over het controlegetal, controleer het dan met de gratis incassant-ID-tool.

Machtigingsgegevens. Elke incasso moet gebaseerd zijn op een geldige machtiging. Een incasso mag nooit vóór de datum van ondertekening liggen, en elk machtigingskenmerk hoort bij precies één klant. Komt een incasso na verwerking terug, dan staat de reden in een redencode, zoals MD01 voor een ontbrekende machtiging.

Vuistregel: zie elke afkeur als een gratis les. Snap je waarom het misging, pas dan je voorbereiding aan zodat het niet nog een keer gebeurt.

Je eerste incassobestand: checklist

Stap Wat je doet Wanneer
1 Datums, bedragen en tekst in je spreadsheet opschonen Voor elke run
2 IBAN’s en incassant-ID controleren Voor elke run
3 Kolommen koppelen en Core of B2B kiezen Eenmalig, daarna hergebruiken
4 Bestand genereren en controleren in de SEPA-incasso XML-validator Vlak voor het uploaden
5 Uploaden bij je bank en eventuele redencodes nalopen Na de incassodatum

Een goed incassobestand begint bij schone gegevens en eindigt bij een tool die de XML voor je schrijft. Probeer GenerateSEPA 7 dagen gratis met je eigen Excel-bestand.


Veelgestelde vragen

Wat is het verschil tussen pain.008 en pain.001?
Met pain.008 haal je geld op: het is het bestand voor SEPA-incasso's, bijvoorbeeld voor abonnementen of contributie. Met pain.001 maak je geld over, bijvoorbeeld voor salarissen of leveranciersbetalingen. Gebruik je het verkeerde bericht, dan weigert je bank het bestand.
Wat moet ik doen als mijn bank mijn incassobestand afkeurt?
Lees eerst de foutmelding of redencode van je bank, want die wijst naar de oorzaak. Controleer daarna de bron: ongeldige IBAN's, een fout incassant-ID en ontbrekende of verkeerde machtigingsgegevens zijn de meest voorkomende boosdoeners. Corrigeer de fout in je Excel of CSV en genereer het bestand opnieuw.
Kan ik een pain.008-bestand maken vanuit Excel?
Ja. Met een pain.008 generator upload je je Excel- of CSV-bestand, koppel je de kolommen aan de SEPA-velden zoals naam, IBAN, bedrag en machtigingskenmerk en download je het XML-bestand. Zorg dat datums, bedragen en IBAN's in een vast formaat staan voordat je begint.
Welke gegevens heb ik nodig voor een SEPA-incassobestand?
Je hebt je eigen naam, IBAN en incassant-ID nodig, plus de gewenste incassodatum. Per betaler heb je de naam, het IBAN, het bedrag, het machtigingskenmerk en de datum van ondertekening van de machtiging nodig. Een omschrijving voor op het afschrift is sterk aan te raden.

Gerelateerde artikelen