ClieOp03 naar SEPA XML: zo zet je oude betaalbestanden om

2026-07-12

Je haalt een oude export uit het boekhoudpakket, de bank weigert het bestand en in de bestandsnaam staat nog “clieop”. Of een klant met een ledenadministratie uit 2010 vraagt waarom zijn incassorun niet meer werkt. Het antwoord is altijd hetzelfde: dat formaat bestaat niet meer bij de bank.

ClieOp03 naar SEPA XML omzetten betekent dat je de gegevens uit het oude Nederlandse batchformaat (rekeningnummers, bedragen, omschrijvingen, machtigingen) overzet naar een XML-bestand volgens ISO 20022: pain.001 voor overboekingen en pain.008 voor incasso’s. Het bestandsformaat zelf kun je niet “upgraden”. Je moet de data opnieuw opbouwen in de structuur die je bank vandaag verwacht.

Hieronder lees je wat ClieOp03 was, waarom het verdween, hoe een SEPA XML-bestand in elkaar zit en hoe je oude velden correct mapt zonder dat de bank je bestand afkeurt.

Wat was ClieOp03?

ClieOp03 was het Nederlandse standaardformaat voor batchbetalingen en automatische incasso’s. Bedrijven, verenigingen en salarisadministraties leverden er jarenlang hun verzamelbetalingen en incassobestanden mee aan bij de Nederlandse banken. Het was een tekstbestand met vaste recordposities: elke regel had een vaste lengte en elk veld stond op een vaste plek.

Het formaat werkte met de oude Nederlandse rekeningnummers, zonder IBAN en zonder BIC. Machtigingen waren nationale incassomachtigingen, zonder machtigingskenmerk en zonder incassant-ID zoals SEPA die kent.

Waarom ClieOp03 is verdwenen

Met de EU-verordening 260/2012 werd SEPA verplicht voor overboekingen en incasso’s in euro. Nationale formaten zoals ClieOp03 moesten plaatsmaken voor de XML-standaarden van ISO 20022. In Nederland zijn de banken in 2014 definitief overgestapt; sindsdien accepteren ze geen ClieOp03-bestanden meer.

Wat er nog wel rondgaat, zijn de exports. Oudere softwarepakketten, maatwerk uit de administratie of een Excel-sjabloon dat ooit voor ClieOp03 is opgezet, leveren nog steeds data in die oude structuur. Daar zit het echte werk.

Praktijkregel: Zoek niet naar een “ClieOp03-converter” die het bestand één-op-één omzet. Kijk welke gegevens erin staan en of ze genoeg zijn voor een geldig SEPA-bestand.

Wat je mist als je alleen een ClieOp03-export hebt

Een ClieOp03-bestand bevat bijna alles wat je nodig hebt, maar niet alles. Dit zijn de gaten die je bij elke migratie tegenkomt:

Gegeven In ClieOp03 Nodig in SEPA XML
Rekening van de betaler Nederlands rekeningnummer IBAN (BIC is binnen SEPA meestal niet meer verplicht)
Incassant Eigen rekeningnummer en naam Incassant-ID (Creditor Identifier)
Machtiging Nationale machtiging, geen kenmerk Machtigingskenmerk + datum van ondertekening
Type incasso Geen onderscheid eerste/vervolg Sequentietype (FRST, RCUR, OOFF, FNAL)
Referentie Betalingskenmerk of omschrijving End-to-end-ID per transactie
Datum Verwerkingsdatum Gewenste uitvoerings- of incassodatum

Twee punten verdienen extra aandacht.

Rekeningnummers. Oude Nederlandse rekeningnummers moet je omzetten naar IBAN. Dat doe je niet door zelf “NL” en een paar cijfers ervoor te plakken: de controlecijfers en de bankcode moeten kloppen. Lees hoe dat werkt in onze gids over rekeningnummers omzetten naar IBAN en controleer het resultaat met de IBAN-validator.

Machtigingen. Voor een SEPA-incasso heb je per debiteur een machtigingskenmerk en de datum van ondertekening nodig. Banken hebben bij de overstap oude machtigingen omgezet, maar in je eigen administratie moet dat kenmerk ook ergens staan. Ontbreekt het, dan kun je geen geldige pain.008 maken.

Zo is een SEPA XML-bestand opgebouwd

Een ClieOp03-bestand is plat: regels met vaste posities. Een SEPA XML-bestand is hiërarchisch. Dat verschil verklaart waarom je niet zomaar kolommen kunt verschuiven.

Drie niveaus

  • Group Header (GrpHdr): gegevens over het hele bestand, zoals de bestands-ID, het aanmaakmoment, het aantal transacties en het totaalbedrag.
  • Payment Information (PmtInf): een blok met gemeenschappelijke gegevens, zoals jouw rekening, de uitvoeringsdatum en bij incasso’s het incassant-ID en het sequentietype.
  • Transacties: per betaling of incasso het bedrag, de tegenpartij, de IBAN, de referenties en de omschrijving.

Overboeking of incasso

Bericht Gebruik Typisch voorbeeld
pain.001 SEPA-overboeking Crediteuren betalen, salarisbetalingen, verzamelbetaling
pain.008 SEPA-incasso Contributie, abonnementen, facturen innen

Voor een incasso heb je de machtigingsgegevens extra nodig. Haal je die twee door elkaar, dan kan het bestand technisch kloppen en inhoudelijk toch fout zijn.

ClieOp03-velden mappen naar pain.008

Mapping betekent: elk relevant veld uit de bron koppelen aan het juiste XML-element. Bij een incasso-export ziet dat er meestal zo uit:

Bronveld (oude export) SEPA XML-element (pain.008) Toelichting
Machtigingsnummer / klantnummer <MndtId> Uniek machtigingskenmerk
Datum machtiging <DtOfSgntr> Datum van ondertekening
Naam betaler <Dbtr><Nm> Naam van de debiteur
Rekeningnummer betaler <DbtrAcct><Id><IBAN> Eerst omzetten naar IBAN
Naam incassant <Cdtr><Nm> Jouw organisatie
Incassant-ID <CdtrSchmeId> Aanvragen via je bank
Bedrag <InstdAmt> Punt als decimaalteken, twee decimalen
Verwerkingsdatum <ReqdColltnDt> Gewenste incassodatum
Omschrijving <RmtInf><Ustrd> Maximaal 140 tekens
Betalingskenmerk / eigen referentie <EndToEndId> Uniek per transactie

Let op het klantnummer. In de ene administratie is dat ook het machtigingskenmerk, in de andere niet. Dat bepaal je niet aan de kolomnaam, maar door te vragen wie het veld vult en waarvoor.

Idee in het kort: De IT-kant kan een veld technisch uitlezen. Alleen de administratie weet wat het veld betekent. Een goede mapping heeft beide nodig.

Mapping vastleggen

Leg per veld kort vast:

  1. de exacte naam en positie in de bron;
  2. wat het veld betekent;
  3. naar welk XML-element het gaat;
  4. of het verplicht, optioneel of voorwaardelijk is;
  5. welke formaatregels gelden;
  6. wat er gebeurt bij een leeg of ongeldig veld.

Zo hoef je bij de volgende run niet opnieuw te puzzelen, en ziet een collega direct waarom een veld zo is gekoppeld.

Conversiefouten voorkomen

De meeste problemen ontstaan niet in de XML, maar in de brondata. Dit zijn de fouten die we het vaakst zien bij oude exports:

  • Rekeningnummers zonder IBAN of met een verkeerd berekende IBAN.
  • Bedragen in centen of met een komma, terwijl SEPA XML een punt en twee decimalen verwacht (1250.50).
  • Ontbrekende of dubbele machtigingskenmerken, waardoor de bank de incasso weigert.
  • Een verwerkingsdatum die al voorbij is of te kort op de indiening zit.
  • Tekens buiten de SEPA-tekenset in namen en omschrijvingen, zoals oude codering voor ë of é.

Controleer daarom vóór de conversie:

Controle Wat je test Waarom
IBAN Formaat en controlecijfers Voorkomt directe afkeur
Bedrag Numeriek, twee decimalen Geen ongeldige XML-waarden
Machtigingskenmerk Aanwezig en uniek Verplicht bij incasso
Datum Toekomstig en haalbaar Bepaalt de uitvoering
Tekens SEPA-veilige tekens Voorkomt parserfouten

Valideer het XML-bestand daarna tegen het schema. Voor incassobestanden kun je de gratis SEPA-incasso XML-validator gebruiken. En lever de eerste keer een klein testbestand aan, niet meteen de volledige run.

Van eenmalige conversie naar een vast proces

Voor een eenmalige migratie werkt het handmatig prima: export ophalen, omzetten naar Excel of CSV, kolommen benoemen, IBAN’s controleren, XML maken, valideren, testbestand indienen.

Komt de export elke maand terug, dan wil je dat niet elke keer met de hand doen. Juist dan sluipen de dure fouten erin: een verschoven kolom, een vergeten machtigingsdatum, een oud sjabloon.

Met GenerateSEPA upload je het Excel- of CSV-bestand, koppel je de kolommen één keer aan de SEPA-velden en krijg je een gecontroleerd pain.001- of pain.008-bestand terug. Wil je het volledig automatiseren vanuit je ERP of ledenadministratie, dan gebruik je de API: je systeem stuurt de data, krijgt het XML-bestand terug en fouten komen per regel terug.

Wat in elk migratieproject het verschil maakt:

  • Begin klein: eerst een testbestand, dan opschalen.
  • Bewaar bron en resultaat: bij betalingen is herleidbaarheid goud waard.
  • Versioneer je mapping: verandert de export, dan leg je dat vast.
  • Behandel uitzonderingen apart: een losse afwijking hoort niet in de standaardmapping.

Checklist: ClieOp03 naar SEPA XML

Stap Wat je doet Wanneer
1 Export uitlezen en velden benoemen Vóór alles
2 Rekeningnummers omzetten naar IBAN en valideren Vóór de conversie
3 Incassant-ID en machtigingskenmerken compleet maken Vóór de eerste incasso
4 Mapping vastleggen per veld Eenmalig, daarna bijhouden
5 XML genereren en valideren tegen het schema Bij elke run
6 Klein testbestand bij de bank indienen Eerste keer

Heb je nog een oude export liggen? Upload hem als Excel of CSV in GenerateSEPA en kijk binnen een paar minuten of de data compleet is voor een geldig SEPA-bestand.


Veelgestelde vragen

Accepteren Nederlandse banken nog ClieOp03-bestanden?
Nee. Sinds de verplichte overstap naar SEPA in 2014 accepteren Nederlandse banken alleen nog XML-bestanden volgens ISO 20022. Voor overboekingen is dat pain.001, voor incasso's pain.008.
Kan ik een ClieOp03-bestand rechtstreeks omzetten naar SEPA?
Niet één-op-één, want het oude formaat mist gegevens die SEPA verplicht stelt. Je moet rekeningnummers omzetten naar IBAN en bij incasso's een incassant-ID, machtigingskenmerk en ondertekeningsdatum toevoegen. Daarna kun je de data mappen naar het XML-bestand.
Wat is het verschil tussen pain.001 en pain.008?
pain.001 is het bestand voor SEPA-overboekingen, bijvoorbeeld om leveranciers of salarissen te betalen. pain.008 is het bestand voor SEPA-incasso's, waarmee je geld int bij klanten of leden. Voor pain.008 heb je ook machtigingsgegevens nodig.
Wat zijn de meest gemaakte fouten bij het omzetten?
De bekendste fouten zijn verkeerd berekende IBAN's, bedragen met een komma of in centen, ontbrekende of dubbele machtigingskenmerken, datums in het verleden en tekens buiten de SEPA-tekenset. De meeste fouten zitten al in de brondata, dus controleer die vóór de conversie.

Gerelateerde artikelen