SEPA-incassobestand maken: van Excel naar bankklare XML
2026-04-26
De ledenadministratie van je vereniging staat in Excel. De contributie moet volgende week worden geïncasseerd. De bank vraagt om een “SEPA XML-bestand pain.008”. Je opent een voorbeeldbestand en ziet honderden regels met tags als <DrctDbtTxInf>.
Het goede nieuws: het bestand zelf is niet het moeilijke deel. Het moeilijke deel is van een rommelige spreadsheet naar schone, complete gegevens komen. In dit artikel lees je hoe je een SEPA-incassobestand maakt dat je bank in één keer accepteert: welke gegevens je nodig hebt, hoe je ze voorbereidt, hoe je ze omzet en hoe je de bekende fouten oplost.
De basis: SEPA-incasso en XML

Een incassobestand is een opdracht aan je bank: “schrijf deze bedragen af van deze rekeningen, op deze datum, op basis van deze machtigingen.” Het formaat is pain.008, een ISO 20022-bericht in XML.
Wat je moet hebben vóór je iets genereert
- Een incassocontract met je bank.
- Je incassant-ID.
- Een geldige machtiging per betaler, met machtigingskenmerk en datum van ondertekening.
- De incassodatum en het schema (Core of B2B).
Vuistregel: kun je niet de ondertekende machtiging en het exacte machtigingskenmerk van een incasso aanwijzen, dan ben je nog niet klaar om de XML te maken.
Core of B2B in de praktijk
De meeste bedrijven en verenigingen beginnen met Core, het standaardschema dat ook voor particulieren geldt. B2B is alleen voor zakelijke betalers en vraagt dat de betaler de machtiging bij zijn eigen bank registreert. Zie SEPA Core versus B2B.
Kernpunt: een afgewezen SEPA-bestand is zelden een raadsel van de bank. Meestal is het een probleem met de gegevens dat bij het uploaden zichtbaar wordt.
Je brongegevens voorbereiden

De kolommen die je minimaal nodig hebt
| Bronveld | Waarom het nodig is |
|---|---|
| Naam betaler | Wordt de naam van de debiteur in de XML |
| IBAN betaler | Bepaalt van welke rekening wordt afgeschreven |
| Machtigingskenmerk | Koppelt de incasso aan de machtiging |
| Datum ondertekening | Bewijst dat de machtiging geldig is |
| Bedrag | Het te incasseren bedrag |
| Omschrijving | Geeft de betaler en je eigen administratie context |
| Sequentietype | Eerste, terugkerende of eenmalige incasso |
| Incassodatum | Wanneer de afschrijving plaatsvindt |
Een kant-en-klare opzet vind je in het Excel-sjabloon voor SEPA-incasso of het CSV-sjabloon.
Opmaakregels die rare fouten voorkomen
- IBAN’s zonder spaties, in hoofdletters.
- Bedragen als getal, met één decimaalteken.
- Datums in één formaat, bij voorkeur
JJJJ-MM-DD. - Geen speciale tekens of emoji in namen en omschrijvingen.
- Eén regel per incasso, geen samengevoegde cellen.
Kernpunt: schone gegevens zijn beter dan XML debuggen. Is het bronbestand in orde, dan is de XML zelden nog het probleem.
Een snelle controle vóór het omzetten
- Zoek lege machtigingsvelden.
- Sorteer op IBAN en kijk naar afwijkende waarden; controleer twijfelgevallen met de IBAN-validator.
- Controleer of de sequentietypes kloppen.
- Zorg dat bedragen getallen zijn, geen tekst.
- Filter op vreemde tekens in namen en omschrijvingen.
Een incassobestand maken met een online converter

Hoe het er in de praktijk uitziet
- Upload je Excel- of CSV-bestand.
- Kies “incasso” en het schema (Core of B2B).
- Koppel elke kolom aan een SEPA-veld.
- Vul je eigen gegevens in: naam, IBAN, incassant-ID, incassodatum.
- Bekijk de voorvertoning en los waarschuwingen op.
- Download het pain.008-bestand.
Met GenerateSEPA onthoudt de converter je kolomkoppeling, zodat de volgende maand alleen nog uploaden en downloaden is. Elk IBAN wordt gecontroleerd voordat het bestand wordt gemaakt. Wil je ook de machtigingen in PDF maken uit dezelfde gegevens, dan kan dat met de add-on voor SEPA-machtigingen. Een uitgebreidere uitleg over het koppelen staat in Excel naar SEPA XML.
Valideren, niet alleen omzetten
Een bestand dat is gemaakt, is nog geen bestand dat de bank accepteert. Haal het door de SEPA-incasso XML-validator om schema, totalen en machtigingsgegevens te controleren.
Vuistregel: als de tool een voorvertoning van de gekoppelde velden laat zien, gebruik die. Je vangt er verrassend veel verwisselde kolommen mee.
Incassobestanden automatiseren met een API

Staan je incasso’s al in je eigen applicatie of ERP, dan is uploaden een overbodige stap. Via een API stuur je de gegevens als JSON en krijg je het XML-bestand terug.
Een eenvoudige API-stroom
- Bouw in je applicatie één vast betaalobject per incasso.
- Valideer vóór verzending.
- Stuur de gegevens naar de API.
- Sla het resultaat veilig op.
- Geef duidelijke foutmeldingen terug aan de administratie.
{
"debtor_name": "Jansen Installatietechniek B.V.",
"debtor_iban": "NL00EXAMPLE0123456789",
"mandate_id": "MACHT-001",
"mandate_signature_date": "2025-01-10",
"amount": "1250.00",
"remittance_information": "Factuur 2025-014",
"collection_date": "2025-02-14"
}
Kernpunt: finance wil geaccepteerde incasso’s, development wil betrouwbare processen. De koppeling moet beide waarmaken.
Hoe je het hele incassoproces automatiseert, lees je in SEPA-incasso automatiseren. Voorbeelden per programmeertaal staan in de handleidingen voor Python, PHP en Node.
Veelvoorkomende fouten in het incassobestand
| Foutmelding | Waarschijnlijke oorzaak | Oplossing |
|---|---|---|
| Ongeldig IBAN | Onvolledig, fout of met verborgen spaties | IBAN in de bron corrigeren en opnieuw genereren |
| Verkeerd sequentietype | FRST gebruikt voor een terugkerende incasso of andersom | Machtigingshistorie bekijken en het juiste type kiezen (uitleg) |
| Schemavalidatie mislukt | Verplichte tags ontbreken of staan verkeerd | Valideren tegen het juiste pain.008-schema |
| Machtigingsgegevens ontbreken | Machtigingskenmerk of datum leeg | Gegevens aanvullen in de bron |
| Controletotaal klopt niet |
CtrlSum is niet de som van de posten |
Totaal opnieuw laten berekenen uit de definitieve regels |
| Aantal posten klopt niet |
NbOfTxs wijkt af van het aantal regels |
Opnieuw genereren uit een schone export |
| Ongeldige tekens | Tekens uit Excel die de bank niet accepteert | Namen en omschrijvingen opschonen |
Kernpunt: de bank toetst je bestand aan haar verwachtingen, niet aan jouw bedoelingen.
Krijg je na verwerking storneringen terug, zoek de redencode dan op in het overzicht van R-berichten.
Laatste controle vóór je het bestand naar de bank stuurt
| Controle | Waarom het belangrijk is |
|---|---|
| Bronbestand op een vaste, beveiligde plek | Voorkomt dat oude gegevens opnieuw worden gebruikt |
| XML-bestanden met een vaste naamgeving | Helpt bij controle en terugzoeken |
| Toegang beperkt tot bevoegde medewerkers | Beperkt privacy- en fraude-risico |
| Tijdelijke bestanden verwijderd | Minder blootstelling van bank- en machtigingsgegevens |
| Incassodatum past bij de deadline van je bank | Voorkomt afwijzing of een verschoven datum |
Laatste check: als je morgen aan je bank of accountant moet uitleggen hoe dit bestand tot stand kwam, kun je dan elke regel terugvoeren op een bronrecord en een geldige machtiging?
Heb je je incassogegevens al in Excel of CSV? Maak er in een paar minuten een geldig pain.008-bestand van en probeer GenerateSEPA 7 dagen gratis.
Veelgestelde vragen
- Moet ik naast het incassobestand ook machtigingen in PDF maken?
- Je hebt voor elke incasso een geldige machtiging nodig, op papier of digitaal, die je kunt laten zien als een klant de afschrijving betwist. Het is handig om machtiging en incassobestand uit dezelfde gegevens te maken, zodat machtigingskenmerk en datum altijd overeenkomen.
- Welke gegevens heb ik nodig om een SEPA-incassobestand te maken?
- Je eigen naam, IBAN en incassant-ID, en per incasso de naam en het IBAN van de betaler, het bedrag, het machtigingskenmerk, de datum van ondertekening, het sequentietype en een omschrijving. Daarnaast kies je de incassodatum en het schema, Core of B2B.
- Wat als mijn boekhoudpakket een vreemd formaat exporteert?
- Exporteer dan naar Excel of CSV en zet dat om met een converter waarin je de kolommen zelf koppelt aan de SEPA-velden. Pas de export niet met de hand aan in een teksteditor; dat introduceert meer fouten dan het oplost.
- Moet ik de SEPA XML zelf programmeren?
- Dat kan, maar het kost veel tijd om alle regels goed te krijgen: schemaversie, totalen, sequentietypes en speciale tekens. Meestal is het sneller en veiliger om een bestaande converter of API te gebruiken en je eigen werk te richten op schone brongegevens.