SEPA formaten - inleiding tot XML

Financial S
upp
ly C
hai
n
SEPA
SEPA formaten inleiding tot XML
versie maart 2014
ing.be/sepa
INLEIDING
1
INLEIDING TOT XML
2
Wat is XML?
2
Wat is een “root element”?
2
Wat zijn de specificaties van een element (tag)?
2
Hoe worden tags goed geformatteerd?
2
Hoe worden gegevensvelden correct samengesteld?
3
HET VERPLICHT OF OPTIONEEL KARAKTERS VAN EEN TAG (ELEMENT)
4
Wanneer is een tag verplicht of niet?
4
Wat is een “occurrence”?
4
Wat is een index?
4
BERICHTSTRUCTUUR5
Wat is de algemene structuur van een XML-document?
5
Wat is het GroupHeader-blok?
6
Wat is het PaymentInformation-blok?
6
Wat is het CreditTransferTransactionInformation-blok?
6
Wat is het DirectDebitTransactionInformation-blok?
6
Voorbeeld voor Europese overschrijvingen SEPA
7
Voorbeeld voor Europese domiciliëringen SEPA
8
FORMAATVALIDATIETOOL9
Wat is een formaatvalidatietool?
9
Hoe krijg ik toegang tot deze tool?
9
NUTTIGE LINKS10
Inleiding
Dit document heeft tot doel om je migratieproces naar
Europese overschrijvingen SEPA (SCT) en Europese
domiciliëringen SEPA (SDD) te vergemakkelijken.
Dit document tracht je te helpen om het XML-formaat
te begrijpen en voor al je SEPA-transacties te gebruiken.
De EPC (European Payments Council) heeft diverse
documenten op het gebied van SEPA gepubliceerd,
waaronder een Data Model Reference, Rulebooks en
implementatierichtlijnen voor zowel overschrijvingen SEPA
als domiciliëringen SEPA.
waarmee een correct financieel bericht opgesteld kan
worden, menen wij dat er meer informatie noodzakelijk
is om tot een efficiëntere en soepelere overgang met een
bevredigend eindresultaat te komen.
De land- en bankspecifieke gegevens hebben geenszins
invloed op de XML-structuur zoals die door ISO20022 en
EPC gepresenteerd is.
De Rulebooks van het EPC bevatten eisen voor de
bedrijfsvoering en regels voor het gebruik van de SEPAschema’s .
De Implementation Guides specificeren de kerneisen
van SEPA die van toepassing zijn op UNIFI (ISO20022)
XML-standaarden. Zij hebben betrekking op verplichte
berichtgeving tussen banken en optionele, aanbevolen
berichtgeving van de klant naar de bank. UNIFI ISO20022
vormt voor de European Payments Council de facto de
basis voor het opstellen van de richtlijnen voor de Europese
overschrijving SEPA (SCT) en de Europese domiciliëring
SEPA (SDD).
Alle nationale bankorganisaties hebben het EPC Rulebook
verwerkt in een landspecifieke implementatierichtlijn
en hebben landspecifieke elementen aan het document
toegevoegd om dit voor de lokale markt geschikt te maken.
Iedere lokale bank vult de implementatierichtlijnen aan
door een kleine bijlage met bankspecifieke gegevens toe
te voegen.
Een aanvullende succesfactor vormt het gebruik van uw
actuele kennis om een correcte SEPA-migratie te kunnen
realiseren. In dit document willen wij u informatie geven
over hoe u XML-elementen kunt creëren.
We sluiten dit document af met informatie over de hulp
die ING u bij het testen kan bieden.
Wij vestigen graag uw aandacht op het feit dat voor
een soepele verwerking van transacties het uiterste
aanlevertijdstip van ING (ING cut-off times) in acht genomen
dient te worden.
Alhoewel de richtlijnen alle informatie dienen te bevatten
1 Een Rulebook is een verzameling van regels of voorgeschreven standaarden op basis waarvan besluiten worden genomen.
2 Een schema is een verzameling regels, gebruiken en standaarden die door aanbieders van betaaldiensten zijn overeengekomen (SEPA-schema voor overschrijvingen en
SEPA-schema voor incasso/domiciliëring)
SEPA formaten - Inleiding tot XML 1
Inleiding tot XML
Wat is XML?
XML staat voor eXtensible Markup Language: het is een
verzameling regels voor het modelleren van documenten
in een vorm die machines kunnen lezen. XML verschaft een
uniforme methode voor het beschrijven en uitwisselen van
gestructureerde gegevens.
XML is gebaseerd op een “mark up3”. Het is een taal die
gemakkelijker gelezen kan worden dan bestanden met
een “vaste bestandsveldlengte”.
Wat zijn de specificaties van een element
(tag)?
•
XML-tags maken onderscheid tussen hoofdletters en
kleine letters.
•
Tags zijn er in drie ’soorten’:
Specificaties:
•
Een XML-document bestaat uit een karakterstring.
•
De elementen dienen op de juiste wijze genest te zijn
• Ieder document moet één uniek “root element”
bevatten
•
De volgorde is van belang
Geen herhaling van attributen in een element
Voor financiële berichtgeving is het van het allergrootste
belang dat beide partijen het bericht perfect begrijpen.
De verzender en de ontvanger moeten het eens zijn hoe
een bericht geïnterpreteerd dient te worden. De ISO20022standaard verbindt aanvullende regels en restricties aan
het gebruik van XML-berichtgeving. Om met ISO20022 te
kunnen werken, is basiskennis van XML vereist.
Wat is een “root element”?
XML-documenten moeten één element bevatten dat de
‘parent’ is van alle andere elementen. Dit element noemen
we het “root element”. Ieder XML-bericht moet en kan
slechts één “root element” bevatten.
Start-tags: Een start-tag begint met het “<”-karakter
en eindigt met het “>”-karakter.
>
bijv. <sectie>.
>
eind-tags: In XML moeten alle elementen een eindtag hebben. Iedere start-tag moet verplicht worden
afgesloten met een eind-tag “</”.
>
bijv. </sectie>.
> empty-element tags: Deze tags stellen een
programmeur in staat om een vast XML-schema
te maken waarin bepaalde velden geen waarde
hebben als er geen waarde beschikbaar is. Dit
soort tags is in de ISO20022-structuur echter niet
toegestaan. Als er een tag wordt gebruikt, mag het
corresponderende gegevensveld niet leeg gelaten
worden. Er moet minstens één karakter ingevuld
worden.
• Waarden van attributen moeten tussen haakjes
geplaatst worden
•
>
>
bijv. <sectie/>.
•
Tags mogen elkaar niet overlappen
•
Corresponderende start-/eind-tags
> <Adres> is een start-tag en </Adres> is een eind- tag.
>bijv.<Postcode>75002</Postcode>
Hoe worden tags goed samengesteld?
XML is een taal waarin alleen de gegevens tussen een
start-tag en een eind-tag als ‘informatie’ geaccepteerd
worden. Dat betekent dat er zonder probleem spaties of
blanco’s tussen tags kunnen zijn, zonder overigens rekening
te houden met het feit dat dit niet aan het algemene idee
van een leesbare tekst voldoet. Daarom wordt aanbevolen
om geen spaties of blanco’s tussen tags te plaatsen.
Anderzijds is het niet toegestaan om spaties in de tag zelf
te plaatsen. Dat leidt zeker tot een fout XML-bestand.
Bijv. <Naam straat>
3 Tekst die wordt toegevoegd aan de gegevens van een document om informatie daarover mede te delen
SEPA formaten - Inleiding tot XML 2
Hoe worden gegevensvelden correct
samengesteld?
Een gegevensveld is de ruimte tussen een start-tag en
een eind-tag als er geen “child element” is. De karakters
in deze ruimte worden als de waarde van het element
beschouwd. Deze waarde vormt het feitelijke gegeven dat
voor je financiële bericht essentieel is.
Bijv. <PostCode>75002</PostCode>
Voor deze gegevens gelden twee belangrijke voorwaarden:
•
Karakterset
In het begin van een XML-document wordt de
karakterset gedefinieerd. Deze karakterset bepaalt
welke karakters in datavelden gebruikt worden. De
karakterset die wordt gedefinieerd in de ISO20022standaard is de welbekende UTF-8 set. Dit is een vrij
kleine karakterset, waarbinnen de volgende karakters
gebruikt mogen worden.
abcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLMNOPQRSTUVWXYZ
0123456789
/ - ?: ( ) . , ‘ +
Spatie
•
Lengte: Ieder gegevensveld heeft een specifieke lengte.
Dit kan een vaste lengte zijn, zodat een specifieke code
ingevuld kan worden. Maar het kan ook een variabele
lengte zijn, waarbij een maximale lengte wordt
gedefinieerd. De minimale lengte voor gegevensvelden
is altijd 1. Lege velden worden niet aanbevolen.
•
Opmerking: Een spatie is een geldig karakter. Er
wordt ten zeerste aanbevolen om te controleren dat
de inhoud van een gegevensveld direct volgt na de
start-tag en direct wordt gevolgd door een eind-tag.
Bijv. <PostCode>75002</PostCode>
SEPA formaten - Inleiding tot XML 3
Het verplicht of optioneel karakters
van een tag (element)
Wanneer is een tag verplicht of niet?
Sommige elementen in de lay-out van het financiële
bericht zijn verplicht. Andere zijn optioneel en kunnen
naar wens gebruikt worden. Het is nuttig om deze optionele
elementen na te gaan. Zij kunnen bij het “Payment en Cash
Management” voordelen bieden.
Of een element verplicht of optioneel is, zie je bij het
volgende punt. In het hoofdstuk “Berichtstructuur”
hebben we de vrijheid genomen om wat optionele velden
als “aanbevolen’ aan te duiden, omdat we er sterk van
overtuigd zijn dat die voordelen kunnen bieden bij uw
betalingsverwerking.
Wat is een “occurrence”?
Die geeft aan hoe vaak een element herhaald kan worden.
Het aantal aanwezigheden “occurrences” wordt tussen
rechte haken weergegeven.
• [0..1] geeft aan dat het element 0 of 1 keer kan
voorkomen. > Het element is optioneel.
• [1..1] geeft aan dat het element slechts 1 keer kan
voorkomen. > Het element is verplicht.
• [1..n] geeft aan dat het element 1 tot n keer kan
voorkomen. > Het element is verplicht.
‘n’ wordt soms aangeduid met ‘∞’, wat staat voor oneindigheid.
SEPA formaten - Inleiding tot XML 4
De indicatie “Or” is van invloed op de interpretatie van
de status van gegevens. In dat geval kunnen er twee
verschillende “subchildren” gebruikt worden voor één
”child”. Beide zijn correct, maar hebben een andere impact
en gevolgen. De twee verschillende “subchildren” worden
in de “occurrence” als volgt aangegeven:
[0..1] {Or
[0..1] Or}
Wat is een index?
Elk element in de ISO20022-standaard wordt met behulp
van een nummer geïndexeerd. Dat nummer wordt
chronologisch toegewezen op basis van twee niveaus.
Het eerste niveau geeft aan of het gekoppeld is aan de
“header” of aan de betalingsinformatie. Het tweede
niveau van het nummer geeft de volgorde aan waarin elk
element aangeboden dient te worden. Hoewel diverse
elementen optioneel zijn, dient het element in het
geval het wordt toegevoegd wel in de juiste volgorde
toegevoegd te worden.
Berichtstructuur
Wat is de algemene structuur van een
XML-document?
De algemene structuur van een Europese overschrijving
SEPA kan bijvoorbeeld als volgt weergegeven worden:
Het XML-document kan in 3 onderdelen worden
onderverdeeld:
Het eerste deel wordt de proloog genoemd en is van zeer
groot belang. Het stelt diegene die de file aanmaakt in
staat om aan te geven welke XML-versie en karakterset
gebruikt worden. ISO20022 ondersteunt uitsluitend de
versie 1.0 van XML en de karakterset UTF-8.
De proloog van een ISO20022-bestand dient er altijd als
volgt uit te zien:
<?xml version=”1.0” encoding=”UTF-8”?>
Het tweede gedeelte wordt voor de documentdeclaratie
gebruikt. De documentdeclaratie geeft aan welk soort
document gebruikt wordt en definieert de regels waarmee
het document gevalideerd kan worden. De ISO-organisatie
heeft een XSD-schema verstrekt waarin de regels voor
een specifieke documentsoort gedefinieerd zijn. Indien
er een namespace (xmlns) wordt gegeven, kan die in een
validator gebruikt worden om te kijken of het document
qua structuur valide is.
SEPA formaten - Inleiding tot XML 5
De gebruikte xmlns hangt af van de versie van de ISO20022lay-out die gebruikt wordt.
• De volgende documentdeclaratie wordt voor de
Europese overschrijving SEPA gebruikt:
<Document xmlns=”urn:iso:std:iso:20022:tech:xsd:
pa in.001.001.03”>
• De volgende documentdeclaratie wordt voor de
Europese domiciliëring SEPA gebruikt:
<Document xmlns=”urn:iso:std:iso:20022:tech:xsd:
pa in.008.001.02”>
Het derde gedeelte is het hoofdgedeelte en bevat de
volledige boomstructuur van een XML-document.
Hieronder bespreken we deze structuur in meer detail
voor de Europese overschrijving SEPA en de Europese
domiciliëring SEPA.
Wat is het GroupHeader-blok?
Het groupheader-blok is het eerste blok informatie dat
in het document genest is. Dit blok is verplicht en geeft
informatie die voor alle daarna volgende informatie geldt.
Dit blok geeft de opdrachtgevende financiële instelling de
mogelijkheid om bepaalde standaard beveiligingscontroles
uit te voeren. Dergelijke informatie is bijvoorbeeld de
datum en het tijdstip waarop het bestand is aangemaakt.
De indicatie van het totale aantal transacties dat volgt
vormt eveneens een belangrijke factor.
Wat is het PaymentInformation-blok?
Dat heeft betrekking op het batchniveau. Deze bouwsteen
is verplicht en wordt steeds herhaald. Dit blok stelt diegene
die het bestand aanmaakt in staat om zijn transacties in een
logische volgorde te organiseren. Alle transacties binnen
één <PmtInf> worden met dezelfde opdrachtgevende
rekening en op dezelfde uitvoerdatum verwerkt. Dit blok
geeft ook aan of een transactie in het <PmtInf> globaal
of individueel op de rekening geboekt wordt (BtchBookg).
Indien per <PmtInf> slechts één transactie aangeleverd
wordt, heeft het geen zin om de batchboekingsparameter
te gebruiken.
Het PaymentInformation-blok kan diverse transacties
bevatten en dient alle transacties binnen de XML met
dezelfde betalingsinstructies te groeperen. Dit voorkomt
dat dezelfde informatie onnodig herhaald wordt (grotere
bestanden, kans op fouten …).
SEPA formaten - Inleiding tot XML 6
Wat is het CreditTransferTransactionInformation-blok?
Dat heeft betrekking op het transactieniveau van een XML
voor een Europese overschrijving SEPA (pain.001.001.03).
Deze bouwsteen is verplicht en wordt steeds herhaald. Het
blok bevat onder meer elementen die op de creditkant van
de transactie betrekking hebben, zoals de ”Creditor” en
de “Remittance Information”. Terwijl de informatie over
de debetkant voor alle transacties in een batch hetzelfde
zal zijn, wordt de informatie over de begunstigden voor
iedere transactie afzonderlijk aangegeven.
Wat is het DirectDebitTransaction­
Information-blok?
Dat heeft betrekking op het transactieniveau van een XML
voor een Europese domiciliëring SEPA (pain.008.001.02).
Deze bouwsteen is verplicht en wordt steeds herhaald. Het
blok bevat onder meer elementen die op de debetkant
van de transactie betrekking hebben, zoals de ”Debtor”,
de “Mandate Related Information” en de”Remittance
Information”. Terwijl de informatie over de creditkant voor
alle transacties in een batch hetzelfde zal zijn, wordt de
informatie over de schuldenaarkant voor iedere invordering
afzonderlijk aangegeven.
Example for European credit transfers
Voorbeeld voor Europese overschrijvingen SEPA
The GroupHeader Block 1 per xml-file
The PaymentInformation Block (= batch-level) [1…∞] batches per xml-file
Transaction 1
Transaction 2
Transaction 3
SEPA formaten - Inleiding tot XML 7
Transaction Level [1…∞] per batch
Example for European direct debits
Voorbeeld voor Europese domiciliëringen SEPA
The GroupHeader Block 1 per xml-file
The PaymentInformation Block (= batch-level) [1…∞] batches per xml-file
Transaction 1
Transaction 2
Transaction 3
SEPA formaten - Inleiding tot XML 8
Transaction Level [1…∞] per batch
Formaatvalidatietool
ING biedt u de mogelijkheid om online een test uit te voeren
met een formaatvalidatietool.
Wat is een formaatvalidatietool?
De formaatvalidatietool (FVT) is een onlinedienst die
gebruikt kan worden voor het valideren van specifieke, voor
ING bestemde betaalformaatbestanden. Deze bestanden
vormen de ‘enveloppen’ waarin u uw transactie-instructies
stopt die door ING verwerkt dienen te worden. Het biedt
u een hulpmiddel dat u kan gebruiken om veranderingen
in uw huidige formaten door te voeren of testbestanden
tijdens de implementatie te valideren. FVT biedt een snelle,
geautomatiseerde validatie van bestandsformaten. Met deze
tool kunt u het implementatieproces aanzienlijk versnellen
en daarmee een snellere ‘time-to-market’ behalen. Deze
dienst vormt een aanvulling op het huidige bestaande
implementatieproces, maar vormt geen vervanging van
een stap in dat proces.
De gebruikershandleiding is op de website beschikbaar via
de volgende link:
http://www.ingsepa.com/formatvalidationtool/en
(click op HELP).
Hoe krijg ik toegang tot deze tool?
Adress: http://www.ingsepa.com/formatvalidationtool/en
Username: ING10
Password: Format10
SEPA formaten - Inleiding tot XML 9
Nuttige links
The official document on character set conversion (EPC)
http://www.europeanpaymentscouncil.eu/documents/EPC217-08%20Best%20Practices%20-SEPA%20
Requirements%20for%20Character%20Set.pdf
European Payments Council (EPC) – Europese domiciliëringen SEPA
http://www.europeanpaymentscouncil.eu/content.cfm?page=sepa_direct_debit_(sdd)
European Payments Council (EPC) – Europese overschrijvingen SEPA
http://www.europeanpaymentscouncil.eu/content.cfm?page=sepa_credit_transfer
ING België nv – Bank – Vennootschapszetel: Marnixlaan 24, B-1000 Brussel – RPR Brussel – Btw: BE 0403.200.393 – BIC: BBRUBEBB – IBAN: BE45 3109 1560 2789.
Verantwoordelijke uitgever: Inge Ampe – Sint-Michielswarande 60, B-1040 Brussel – 705117N – 03/14 © Editing Team & Graphic Studio – Marketing ING Belgium