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:
- de exacte naam en positie in de bron;
- wat het veld betekent;
- naar welk XML-element het gaat;
- of het verplicht, optioneel of voorwaardelijk is;
- welke formaatregels gelden;
- 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.