Ga naar inhoud

6 Functionele specificaties

In dit hoofdstuk volgen de functionele specificaties:

  • Datadictionary;

  • Basisbericht;

  • Kruisreferentie basisbericht & berichten.

6.1 Datadictionary

De datadictionary geeft een overzicht van alle gebruikte entiteiten en entiteittypen die worden gebruikt binnen deze standaard.

Entity.entitytype
commonTechnical.default
party.sender
party.contact
party.receiver
commonFunctional.default
party.pensionProvider
pension.scheme
financialInformation.reportingPeriod
financialTransaction.payment
party.creditor
financialTransaction.cashflow
pension.cohort
investment.pool
investment.portfolio
investment.investmentDetails
investment.corporateAction
financialTransaction.trade
error.default
document.default
chunking.default

6.2 Entiteiten en entiteitstypen

In deze paragraaf zijn de diverse entiteiten en de attributen binnen die entiteiten beschreven.

Hieronder volgt een toelichting op de entiteiten. Deze informatie is ontleend aan AFD 2.0 wat via deze link kan worden geraadpleegd.

Let op: het entiteittype is verplicht.

Entiteit.entiteittype Toelichting
commonTechnical.default Deze entiteit bevat technische details over het verzenden en opslaan van berichten. Het vormt als het ware de basis voor de technische aspecten binnen het berichtensysteem.
party.sender De entiteit "party.sender" verwijst naar de afzender van het bericht.
party.contact De entiteit "party.contact" vertegenwoordigt een contactpersoon binnen een juridische entiteit. Deze contactpersonen kunnen worden benaderd voor verdere informatie over het bericht.
party.receiver Deze entiteit vertegenwoordigt de ontvanger van het bericht.
commonFunctional Binnen deze entiteit bevindt zich domeinspecifieke informatie over de inhoud van het bericht. Het geeft context en betekenis aan de functioneledetails in het bericht.
party.pensionProvider

Deze entiteit staat voor een pensioenuitvoerder,

Een pensioenuitvoerder is een pensioenfonds, verzekeraar of premiepensioeninstelling (PPI) waar pensioen wordt opgebouwd voor de werknemer door de werkgever.

pension.scheme Deze entiteit is bevat gegevens op het niveau van de pensioenregeling of het pensioenplan of -schema.
financialInformation.reportingPeriod Deze entiteit heeft betrekking op rapportageperiodes, tijdsintervallen waarvoor wordt gerapporteerd en andere generieke datums.
financialTransaction.payment Deze combinatie van entiteit en entiteittype gegevens over een betaling.
party.creditor Deze entiteit vertegenwoordigt de crediteur; de ontvanger van de betalingen, binnen het ecosysteem waarin de berichten worden uitgewisseld.
financialTransaction.cashflow Deze entiteit behandelt financiële transacties met betrekking tot pensioenen, specifiek gericht op kasstromen.
financialTransaction.payment Deze entiteit bevat informatie over betalingen en toekomstige kasstromen/betalingen.
pension.cohort Deze entiteit bevat informatie over specifieke doelgroepen binnen het pensioenschema.
investment.pool Deze entiteit (beleggingspool) vertegenwoordigt de collecties van uiteenlopende onderliggende beleggingen (liquide, illiquide, fondsen en mandaten).
investment.portfolio Deze entiteit heeft betrekking op beleggingsportefeuilles, die het totaal beheerde vermogen (of een deelvermogen) binnen het collectief weergeven.
investment.investmentDetails Deze entiteit beschrijft individuele beleggingen van een pensioenuitvoerder in aandelen of beleggingsfondsen.
investment.corporateAction Deze entiteit bevat gegevens over corporate-action gebeurtenissen op beleggingsproducten, zoals cash dividend, stockdividend, rebate, unit- en kapitaalverschuivingen en productwijzigingen. Het bericht is bedoeld voor het doorgeven van dergelijke gebeurtenissen vanuit de vermogensbeheerketen aan de PUO.
financialTransaction.trade Deze entiteit heeft betrekking op handelsactiviteiten binnen het pensioenschema.
error In het geval van fouten in het systeem wordt deze entiteit gebruikt om foutmeldingen te genereren en aan te geven wat er precies mis is gegaan.
document Deze entiteit is bedoeld voor het toevoegen van eventuele bijlagen aan berichten.
chunking.default Deze entiteit bevat metadata voor het opsplitsen en samenvoegen van grote berichten in deelberichten (chunking). Indien aanwezig, geeft het aan dat het bericht een deel van een groter logisch bericht is.

6.3 Attributen in entiteiten.entiteitstypen

In de tabellen in deze paragraaf worden de attributen per combinatie van entiteit en entiteitstype beschreven. De beschrijving bevat naast de attribuutnaam een definitie van het attribuut, het datatype van het attribuut, de beoogde maximale lengte van het gegeven en een verwijzing (link) naar een eventuele codelijst.

PM de omschrijving van de attributen in de feedback message kan afwijken van de omschrijving in de inhoudelijke berichten.

De beschrijving van de gebruikte datatypen is te vinden in de manual sivi-all-finance-standard.

Bij het interpreteren van de tabellen hierna is het volgende van belang:

  • Datatype string: In de tabellen hierna wordt bij strings het maximum aantal posities vermeld tenzij wordt verwezen naar een codelijst of een opsomming. In die gevallen is “lengte” leeg.

  • Datatype decimal: heeft in principe maximaal 2 plaatsten achter de “,” (1E-2). Bij afwijking daarvan wordt dat vermeld in de kolom datatype.

De attribuutnamen wijken af van de naamgeving in het consultatiedocument; ze zijn nu – mede – vormgegeven op basis van de AFD 2.0 conventies. In de bijlage 8.4 is de “Vertaaltabel van functionele attributen naar AFD2.0 attributen.

Gebruik van refKey

In de tabellen hieronder komt bij vrijwel elke entiteit het attribuut refKey voor. Dit attribuut dient als unieke identifier van een entiteit. Het doel is dat een entiteit binnen of tussen berichten en bestanden betrouwbaar kan worden herkend en dat ernaar kan worden verwezen — zoals een ISIN een beleggingsinstrument identificeert zonder iets te zeggen over het beleggingsbeleid dat erop van toepassing is.

refKey mag technisch of functioneel herkenbaar zijn, maar er mag geen classificatie, beleggingsbeleid of businesslogica uit worden afgeleid. De inhoudelijke classificatie hoort in de daarvoor bestemde velden (bijvoorbeeld reserveType).

Zie GitHub issue #111.

commonTechnical.default [T1]
The commonTechnical entity covers all information about sending or storing the message. This is typically technical information. (NL: Bericht Algemeen)
Attribuutnaam Definitie datatype lengte Codelijst
messageIdUnieke berichtidentificatiestring70
creationDateTimeAanmaakdatum en tijd Datetimestamp
testMessageIndicatie testberichtboolean

Uniciteit van messageId

De messageId is altijd uniek over alle berichten heen, ongeacht berichtsoort of periode. Gebruik van de messageId voor het groeperen of bundelen van berichten is niet toegestaan. Eventuele samenhang tussen berichten wordt afgeleid uit inhoudelijke kenmerken, zoals de periode waarop het bericht betrekking heeft.

De enige uitzondering is chunking (§7.6): chunks van hetzelfde logische bericht delen dezelfde messageId.

Zie GitHub issue #108.

party.sender [T2]
Sender. (NL: Partij Zender)
Attribuutnaam Definitie datatype lengte Codelijst
refKeyUnique reference key assigned to an entity. (NL: Entiteitsreferentie is een unieke referentie sleutel die aan een entiteit wordt toegekend.)string70
rsinNumberGovernmental identification number for legal entities and associations (RSIN)string9
organizationNameOrganisatie naam van de afzenderstring60
applicationSenderNameNaam van de applicatie die het bericht heeft aangemaakt*string60

* applicationSendername is in AFD 2.0 zowel beschikbaar onder party.sender als onder commonTechnical. Dat blijkt inderdaad niet uit de AFD 2.0 Online raadplegen documentatie (per april 2024). Er is voor gekozen om het attribuut voor VBPUO te plaatsen onder party.sender. ↩︎

party.contact [T3]
A natural person who can be contacted within a legal person for further information. (NL: Partij Contactpersoon)
Attribuutnaam Definitie datatype lengte Codelijst
emailWorkWerk emailadres string60
workPhoneNumberWerk telefoonnummer string60
party.receiver [T4]
Receiver. (NL: Partij Ontvanger)
Attribuutnaam Definitie datatype lengte Codelijst
refKeyUnique reference key assigned to an entity. (NL: Entiteitsreferentie is een unieke referentie sleutel die aan een entiteit wordt toegekend.)string70
rsinNumberGovernmental identification number for legal entities and associations (RSIN)string9
organizationNameNaam van de ontvanger(s) (organisatie (s))string60
commonFunctional.default [T5]
The commonFunctional entity covers all information about the content of the message. This is typically domain-specific information. (NL: Bericht Algemeen)
Attribuutnaam Definitie datatype lengte Codelijst
functionMessage function code. (NL: Code waarmee de functie van het bericht wordt aangegeven.)stringADNFUN (01; 02;09;54 of 23)
statusTypeStatus of the proccessing of the original message for which the status and/or errors are being sent to the Feedback endpoint. Message statuses are either 'Accepted (8 - Geaccepteerd)' or 'Not Accepted (0 - Afgewezen).stringADNSTS (0; 8)
afdDefinitionNameSoort berichtstring80
afdDefinitionVersionVersie van de standaardstring80
originalMessageIdHet oorspronkelijke messageId van het bericht dat wordt vervangen door dit berichtstring70
originalMessageTypeMessage type of the original request to which this message is a response. (NL: Berichtsoort van het oorspronkelijke bericht waarop dit bericht een response is.). Bijvoorbeeld: 0001a uit “Berichtstructuur 1. Vermogen (0001a)”string0001a; 0001b; 0001c; 00002; 00541; 00542; 00553; 00555b; 00556; 00557
party.pensionProvider [T6]
Information on pensionprovider Level (NL: Pensioenuitvoerder: Pensioenfonds, Pensioenverzekeraar, PPI, APF)
Attribuutnaam Definitie datatype lengte Codelijst
puvCodeID van het pensioenuitvoerder (PUV-code) / Unique reference key assigned to an entity. (NL: Entiteitsreferentie is een unieke referentie sleutel die aan een entiteit wordt toegekend.)stringAFDIDP (U0003; U0005; ... ;U0765)
rsinNumberGovernmental identification number for legal entities and associations (RSIN)string9
organizationNameNaam van de pensioenuitvoerderstring60

Bij APF's met meerdere kringen zijn er twee gangbare scenario's voor het gebruik van PUV-codes. Zie de toelichting bij het basisbericht in §6.4.1.

pension.scheme [T7]
Data on pension scheme level
Attribuutnaam Definitie datatype lengte Codelijst
refKeyID van de pensioenregeling / (Unique reference key assigned to an entity. (NL: Entiteitsreferentie is een unieke referentie sleutel die aan een entiteit wordt toegekend.))string70
pensionSchemeNameNaam van de pensioenregelingstring60
startAmountTotaal pensioenvermogen per startdatumdecimal
tradingPortfolioIdPortefeuille ID van de custodian (bewaren en beheren van financiële activa)string10
financialInformation.reportingPeriod [T8]
Reportingperiod Information
Attribuutnaam Definitie datatype lengte Codelijst
startDateBegindatum van de gegevensperiode waarop de aanlevering vanuit de PUO wordt gebaseerd of Peildatumdate
endDateEinddatum van de gegevensperiode waarop de aanlevering vanuit de PUO wordt gebaseerddate
endDateEinddatum van de gegevensperiode waarover rendement wordt gerapporteerddate
tradeDateGewenste handelsdatumdate
investmentOrderSettlementDateDatum waarop de volledige cyclus van de beleggingsorder afgewikkeld moet zijndate
projectionDateDatum van de projectie van pensioenuitkeringendate
instructionDateInstructiedatum (datum van de bestelling verzonden door de PUO)date
participationValuationDatePrijsdatum van de door de beleggingsadministrateur vastgestelde netto vermogenswaarde (NAV) per unit van de beleggingspool.date
valueDateCurrency date. (NL: Valutadatum)date

Datumconventies voor startDate en projectionDate

Om inconsistent gebruik van datums tussen ketenpartijen te voorkomen, hanteert de standaard de volgende conventie:

Veld Bericht Conventie Voorbeeld
startDate Bericht 1 (Vermogen) Laatste dag van de voorgaande maand 31-01-2025
projectionDate Bericht 3 (Pensioenprojectie) Laatste dag van de voorgaande maand 31-01-2025
firstExpectedPaymentDate Bericht 3 (Pensioenprojectie) Eerste dag van de lopende maand 01-02-2025

Deze aanpak biedt duidelijkheid en voorspelbaarheid in de keten. Zie GitHub issue #94.

financialTransaction.payment [T9]
Information about payments. (NL: Betaalinformatie)
Attribuutnaam Definitie datatype lengte Codelijst
amountBedrag in valutadecimal
currencyTypeValutastringISOVAL (EUR; USD; …)
collectionAccountIbanIBAN-nummer van debet rekeningstring34
descriptionOmschrijving van de transactie (betaling)string60
refKeyID van de expected paymentstring70
expectedPensionPaymentDatePensioenuitkeringsmomentdate
amountGeprojecteerde uitkering over alle cohortendecimal
hedgedExpectedPensionPaymentAmountAf te dekken kasstroom over alle cohortendecimal
amountGeprojecteerde uitkering decimal
hedgedExpectedPensionPaymentAmountAf te dekken kasstroomdecimal
Veldlengte `collectionAccountIban` gecorrigeerd van 10 naar 34 (internationale IBAN-maxlengte conform ISO 13616). Zie GitHub issue [#135](https://github.com/Stichting-SIVI/VBPUOdsk/issues/135).
party.creditor [T10]
The party that has a claim. (NL: Partij Crediteur)
Attribuutnaam Definitie datatype lengte Codelijst
refKeyUnique reference key assigned to an entity. (NL: Entiteitsreferentie is een unieke referentie sleutel die aan een entiteit wordt toegekend.)string70
collectionAccountIbanIBAN-nummer van credit rekening per regelingstring34
collectionAccountInNameOfNaam van de tegenpartij per regelingstring60
collectionAccountBicBusiness Identifier Code (BIC) per regelingstring10
collectionAccountBicCorrespondentBIC-correspondent per regelingstring10
Veldlengte `collectionAccountIban` gecorrigeerd van 10 naar 34. Zie GitHub issue [#135](https://github.com/Stichting-SIVI/VBPUOdsk/issues/135).
financialTransaction.cashflow [T11]
The sum of contributions and withdrawals on all cohorts
Attribuutnaam Definitie datatype lengte Codelijst
contributionAmountSom van inlegdecimal
contributionDateDatum van ontvangst van de inlegdate
withdrawalAmountSom van de uitstroomdecimal
withdrawalDateDatum waarop (uiterlijk) de liquiditeiten ten behoeve van de onttrekking zijn vrijgemaaktdate
netAmountSom van inleg en onttrekkingen per regeling (net). Een negatief bedrag is een (netto) withdrawal. / Verschil tussen inleg en onttrekking. Een negatief bedrag is een (netto) onttrekking.)decimal
netDateDe valutadatum waarop het gesaldeerde netto kasstroombedrag (inleg minus onttrekking) daadwerkelijk door de PUO wordt betaald aan, of ontvangen van, de Vermogensbeheerderdate
netAmountGesaldeerd netto kasstroombedrag per beleggingsportefeuille binnen een regeling. Een negatief bedrag is een netto onttrekking.decimal
netDateDe valutadatum waarop het netto kasstroombedrag per beleggingsportefeuille daadwerkelijk door de PUO wordt betaald aan, of ontvangen van, de Vermogensbeheerderdate

Veldgebruik in financialTransaction.cashflow

In de SPR-context wordt financialTransaction.cashflow direct onder pension.scheme gebruikt. De entiteit zelf is optioneel, maar komt zij voor, dan zijn netAmount en netDate verplicht; de velden voor in- en uitstroom zijn optioneel (zie §6.3.1).

In de FPR-context wordt de financialTransaction.cashflow entiteit onder investment.portfolio gebruikt en zijn netAmount en netDate verplicht.

pension.cohort [T12]
Information on cohort (pension target audience) level
Attribuutnaam Definitie datatype lengte Codelijst
refKeyID van het cohortstring70
descriptionBeschrijving van het cohortstring60
participationStatusStatus van de deelnemers in een cohortstringADNDNS (16; 20; 35; 40; 70; 80)
startAgeStartleeftijd in maandeninteger
endAgeEindleeftijd in maandeninteger
reserveIndicatorIndicatie of het cohort een reserve weerspiegeltboolean
reserveTypeKeuze van het type (reserve feitelijk een) voorziening / type of provision. Bij gedeeld beleggingsbeleid kan worden ingedikt; expliciete code alleen bij separaat beleggingsbeleid.stringAFDRES (1; 2; 3; 4; 5; 6; 7; 8; 9; 10; 11; 12; 13; 14; 15; 99)
reserveDescriptionBeschrijving de reserve bij keuze van "Overige" in reserve type.string60
startAmountPensioenvermogen van het cohort per begindatumdecimal
netAmountSom van inleg en onttrekkingen per cohort. Een negatief bedrag is een (netto) onttrekking.)decimal
netDateDe valutadatum waarop het gesaldeerde netto kasstroombedrag voor het cohort daadwerkelijk door de PUO wordt betaald aan, of ontvangen van, de Vermogensbeheerderdate
contributionAmountInstroom te beleggen door de fiduciair managerdecimal
withdrawalAmountUitstroom te beleggen door de fiduciair managerdecimal
protectionReturnPercentageHet behaalde beschermingsrendement in percentage over gegevensperiode per regeling en per cohortdecimal (1E-12)
excessReturnPercentageHet behaalde overrendement in percentage over gegevensperiode per regeling en per cohort decimal (1E-12)
protectionReturnAmountHet behaalde beschermingsrendement in valuta van de regeling over gegevensperiode per regeling en per cohortdecimal
excessReturnAmountHet behaalde overrendement in valuta van de regeling over gegevensperiode per regeling en per cohortdecimal

Leeftijdscohorten: standaardinrichting

In de standaardinrichting worden jaarlijkse leeftijdscohorten gebruikt. Dit betekent dat tussen twee opeenvolgende startAge-waarden in beginsel een verschil van 12 maanden wordt gehanteerd: startAge is een veelvoud van 12 (0, 12, 24, ...) en endAge = startAge + 11. Kleinere stappen (bijvoorbeeld maandelijks) zijn niet uitgesloten, maar de jaarlijkse indeling geldt als referentiemodel. Zie GitHub issue #111.

Cohorten met waarde 0

Voor alle berichten met cohorten (bericht 1 tot en met 4) geldt: een cohort met waarde 0 mag worden meegestuurd met de waarde 0 of worden weggelaten. Meesturen maakt het onderscheid zichtbaar tussen "de waarde is 0" en "het cohort ontbreekt"; weglaten houdt het bericht compact. Partijen moeten beide kunnen verwerken. Wat het ontbreken van een cohort betekent, leggen ketenpartijen vast in hun afspraken (TOM/SLA). Bij grote berichten kan het chunking-mechanisme uitkomst bieden. Zie GitHub issue #100.

Dit geldt ook voor cohorten die een reserve of voorziening vertegenwoordigen (reserveIndicator = true). Het weglaten van een reserve betekent dus niet vanzelf dat de waarde 0 is.

De standaard kent geen aparte representatie voor "niets te melden": partijen gebruiken daarvoor de waarde 0 of laten het cohort weg. Een veld zonder waarde (in JSON: null) kent de standaard niet: een veld wordt met een waarde aangeleverd, of het wordt weggelaten.

Reserves en voorzieningen: rolverdeling van velden

Verbandscontrole. Is reserveIndicator = true, dan is reserveType verplicht. reserveDescription is bij reserveType 99 (Overige) gewenst en bij de andere codes mogelijk. Beide velden zijn in het model optioneel; de verplichting van reserveType volgt uit deze regel. De reservevelden staan alleen op pension.cohort, niet op investment.portfolio.

Voor cohorten die een reserve of voorziening vertegenwoordigen (reserveIndicator = true) geldt de volgende rolverdeling:

  • reserveType (codelijst AFDRES) is de inhoudelijke classificatie en de uitsluitende sleutel voor het beleggingsbeleid. Reserves of voorzieningen met een verschillend beleggingsbeleid vereisen een verschillende reserveType-waarde. De codelijst is per release 2027 uitgebreid met codes 9 t/m 15. Bij gedeeld beleggingsbeleid kan worden ingedikt; een expliciete code is alleen nodig bij separaat beleggingsbeleid. Dit geldt voor zowel SPR als FPR. Zie GitHub issue #134.
  • reserveDescription is uitsluitend beschrijvend. De omschrijving kan toelichten of verduidelijken, maar is niet bepalend voor classificatie, routering of beleggingsbeleid.
  • refKey identificeert het cohort uniek (zie de algemene toelichting op refKey hierboven). Meerdere cohorten met hetzelfde reserveType zijn toegestaan, mits zij onder hetzelfde beleggingsbeleid vallen.

Zie GitHub issue #111.

investment.portfolio [T13]
Beleggingsportefeuille
Attribuutnaam Definitie datatype lengte Codelijst
refKeyID Beleggingsportefeuille / Unique reference key assigned to an entity. (NL: Entiteitsreferentie is een unieke referentie sleutel die aan een entiteit wordt toegekend.)string70
descriptionBeschrijvingstring60
startExposureAmountDe toedeling van het pensioenvermogen per cohort aan een specifieke investmentportfolio, berekend op basis van de toedelingsregels zoals door de PUO gehanteerd.)decimal
startExposurePercentageHet relatieve aandeel van startExposureAmount ten opzichte van het totale pensioenvermogen per datum.)decimal
startAmountDe waarde van de Total Market Value aan het begin van de gegevensperiodedecimal
netAmountSom van inleg en onttrekkingen per regeling (net). Een negatief bedrag is een (netto) withdrawaldecimal
endAmountDe waarde van de Total Market Value aan het eind van de gegevensperiode. Per regeling en beleggingsportefeuilledecimal
returnPercentageHet behaalde rendement in percentage over gegevensperiode per regeling en per beleggingsportefeuilledecimal (1E-12)
returnAmountHet behaalde rendement in valuta van de regeling over gegevensperiode per regeling en per beleggingsportefeuilledecimal
investment.pool [T14]
Beleggingspool / beleggingsportefeuille
Attribuutnaam Definitie datatype lengte Codelijst
refKeyID van de beleggingspool per regelingstring70
descriptionBeschrijvingstring60
unitsSummedValueAmountWaarde per beleggingspool(unitwaarde)decimal
preliminaryUnitValueAmountDe door de beleggingsadministrateur vastgestelde netto vermogenswaarde (NAV) per unit van de beleggingspooldecimal (1E-06)
numberOfUnitsAantal units uitgegeven voor de beleggingspool, decimal (1E-06)
currencyTypeValuta van de poolstringISOVAL (EUR; USD; …)
buySellIdAan- verkoopindicator; ID voor aan-/verkoop per beleggingspool per regelingstringsell; buy
tradeValueAmountWaarde transactie per beleggingspool per regelingdecimal
`marketValueAmount` is per release 2027 uit de standaard verwijderd; de netto vermogenswaarde wordt uitsluitend via `preliminaryUnitValueAmount` uitgedrukt. De veldnaam `preliminary` is historisch gegroeid en wordt in een toekomstige release opgeschoond. Zie GitHub issue [#128](https://github.com/Stichting-SIVI/VBPUOdsk/issues/128).
investment.investmentDetails [T15]
Een belegging in zowel liquide (makkelijk verhandelbare) als illiquide (beperkt verhandelbare) fondsen of groepen (pools) daarvan.
Attribuutnaam Definitie datatype lengte Codelijst
refKeyIdentifier (bijvoorbeeld ISIN of interne code)string70
descriptionDe naam van de belegging / de officiële naam van het fonds / van het instrumentstring60
currencyTypeValuta van het instrument stringISOVAL (EUR; USD; …)
numberOfUnitsAantal aangekochte units per instrument per regeling per beleggingsportefeuilledecimal (1E-06)
refKeyIdentifier van het beleggingsproduct, bijvoorbeeld ISIN of interne code.string70
descriptionOmschrijving van het beleggingsproduct.string60
tradeDatehandelsdatum (beoogd)date
investment.corporateAction [T16]
Een Corporate Action behorend bij het beleggingsproduct.
Attribuutnaam Definitie datatype lengte Codelijst
refKeySleutel van de Corporate Action.string70
descriptionOmschrijving van de Corporate Action.string60
corporateActionTypeType Corporate Action.stringAFDCOA (1; 2; 3; 99)
instructionDateInstructiedatum van de Corporate Action.date
tradeDateTransactiedatum van de Corporate Action.date
paymentDateBetaaldatum van de Corporate Action.date
cashDividendTotalAmountTotaal contant bedrag van de Corporate Action.decimal
cashDividendPerUnitAmountContant bedrag per eenheid.decimal
currencyTypeValuta van het contante bedrag.string3ISOVAL (EUR; USD; GBP; CHF; JPY)
stockDividendPerUnitNumberAantal stockdividend per eenheid.decimal
stockDividendTotalNumberTotaal aantal stockdividend.decimal
newProductNameNaam van het nieuwe product.string60
newProductIdentifierIdentificatie van het nieuwe product.string60
financialTransaction.trade [T17]
Handelen/ orderen; Kopen en verkopen
Attribuutnaam Definitie datatype lengte Codelijst
tradeDatehandelsdatum (feitelijk)date
refKeyUnique reference key assigned to an entity. (NL: Entiteitsreferentie is een unieke referentie sleutel die aan een entiteit wordt toegekend.)string70
adjustmentIndicatorAangepaste trade instructieboolean
buySellIdAan-, verkoop- of switchrichtingindicatorstringsell; buy; switchfrom; switchto
tradeAmountPositief bedrag van de transactie in de valuta waarin de belegging luidt; richting volgt uit buySellIddecimal
tradeQuantityPositief aantal te verhandelen stukken (units) van de transactie; richting volgt uit buySellIddecimal (1E-06)
tradePriceAankoopprijs / koersdecimal (1E-06)
switchTypeType switch; one-day of sequentialstringAFDSWI (1; 2)
financialInformationRefVerwijs hier bij switchfrom/switchto naar de refKey van de andere switch-leg ten behoeve van verbandscontrole.array
counterpartyTransfer Agent; de partij die de aankoop/verkoop verrichtstring70
brokerEffectenmakelaar die beleggingsorders uitvoert namens klanten op de marktstring70
interestAmountBedrag aan van toepassing zijnde rentedecimal
commissionAmountVergoeding voor het uitvoeren van de transactiedecimal
clearingBrokerEffectenmakelaar verantwoordelijk administratieve en financiële afwikkeling van de transactiestring70
clearingBrokerCashAccountGeldrekening (IBAN) bij de clearingbroker op naam van de Pensioenuitvoerderstring18
error.default [Te]
Error message. (NL: Foutmelding)
Attribuutnaam Definitie datatype lengte Codelijst
refKeyUnique reference key assigned to an entity. (NL: Entiteitsreferentie is een unieke referentie sleutel die aan een entiteit wordt toegekend.)string70
errorCodeError code type. (NL: Soort foutmelding code.)stringADNFTM (09; 11; 12; 13; 14; 99)
errorCodeExplanationExplanation of the error message. (NL: Toelichting op de soort foutmelding.)string1000

Zie ook de informatie over de error.default in de SIVI All Finance Standard

document.default [T18]
Information about an attachment/document. (NL: Bijlage)
Attribuutnaam Definitie datatype lengte Codelijst
refKeyUnique reference key assigned to an entity. (NL: Entiteitsreferentie is een unieke referentie sleutel die aan een entiteit wordt toegekend.)string70
fileNameName of the file under which the attachment can be saved. (NL: Naam van het bestand waaronder de bijlage kan worden opgeslagen.)string60
fileExtensionExtension of the file under which the attachment can be saved. For example "pdf", "doc", etc. (NL: Extensienaam van het bestand waaronder de bijlage kan worden opgeslagen. Bijvoorbeeld "PDF", "DOC", etc.)stringpdf; csv; txt
chunking.default [T19]
Chunking" (splitting large messages) into partial messages. (NL: Deelbericht / "chunking" (opsplitsen grote berichten))
Attribuutnaam Definitie datatype lengte Codelijst
currentChunkIdUnique reference (id) of the current chunk. (NL: Unieke referentie van de huidige chunk.)string70
chunkSequenceNumberSequence number of the current chunk. (NL: Volgnummer van de huidige chunk.)integer
totalNumberOfChunksTotal number of chunks the message has been split into. (NL: Totale aantal chunks waarin het bericht is opgesplitst.)integer
chunkFragmentPathsArray of JMESPath references to the message fragments used within the current chunk. (NL: Array van JMESPath-verwijzingen naar de berichtdelen die gebruikt zijn binnen deze chunk.)array

6.3.1 Verbandscontroles cashflowbericht (0001b)

Structuurregel: cohort óf beleggingsportefeuille (berichten 2 en 3)

In de berichten 2 en 3 mag de uitsplitsing onder een pension.scheme óf per cohort plaatsvinden (pension.cohort, de SPR-route), óf per beleggingsportefeuille (investment.portfolio, de FPR-route), niet allebei. Een bericht dat binnen één regeling beide uitsplitsingen gebruikt, is niet geldig. In bericht 2 is de uitsplitsing optioneel: een regeling met alleen de cashflow direct onder de regeling is geldig. In bericht 3 wordt per regeling precies één uitsplitsing gebruikt.

De gegevens direct onder de regeling vallen buiten deze regel en gelden in beide routes: in bericht 2 de cashflow financialTransaction.cashflow (0..1), in bericht 3 de betalingen op regelingniveau. In bericht 4 geldt de regel niet: de beleggingsportefeuille is daar verplicht (1..99) en de uitsplitsing per cohort is een optionele aanvulling.

Cashflowblokken in bericht 2

  • In elk cashflowblok, direct onder de regeling, per cohort en per beleggingsportefeuille, zijn netAmount en netDate verplicht.
  • Elke gebruikte beleggingsportefeuille bevat precies één financialTransaction.cashflow.
  • Per regeling bevat het bericht minstens één cashflow: direct onder de regeling, per cohort of per beleggingsportefeuille.

Somcontroles bij cohortuitsplitsing (SPR-route)

Wanneer in de SPR-route pension.cohort wordt gebruikt als uitsplitsing van de cashflow op regelingniveau, moeten de detailbedragen aansluiten op het totaal. Dit is een reconciliatiecontrole: de controle dat de som van de afzonderlijke cohortbedragen overeenkomt met het eerder opgegeven bedrag op cohort-regelingniveau — ofwel, de onderdelen tellen op tot het geheel.

  • scheme.netAmount = som(cohort.netAmount)
  • scheme.contributionAmount = som(cohort.contributionAmount)
  • scheme.withdrawalAmount = som(cohort.withdrawalAmount)

Deze somcontroles zijn van toepassing op de SPR-route en niet automatisch op de FPR-route. In de FPR-route staat het totaal in de cashflow direct onder de regeling, naast de cashflows per beleggingsportefeuille. Of de som van de portefeuillebedragen op dat totaal moet aansluiten, is niet vastgelegd; een somcontrole voor de FPR-route maakt daarom geen deel uit van de standaard. Pas deze controles uitsluitend toe wanneer totalen en onderliggende uitsplitsingen gelijktijdig aanwezig zijn.

Technische borging

De verbandscontroles in deze paragraaf zijn functioneel vastgesteld. Technisch worden verbandscontroles geborgd in het bestand (..)-validationRules.json dat bij de JSON-schema's van elk bericht hoort. Voor deze controles is die technische borging nog niet gemodelleerd.

6.3.2 Verbandscontroles orderopdracht en orderconfirmation (00541, 00542)

Bericht 5: bedrag óf aantal

  • Per trade-instructie is exact één van tradeAmount of tradeQuantity gevuld. Beide vullen is niet toegestaan; beide leeg laten alleen bij de leg van een switch die niet stuurt.
  • Een switch bestaat uit twee legs: één met buySellId = switchfrom en één met buySellId = switchto. Zij verwijzen naar elkaar via financialInformationRef, dat de refKey van de andere leg bevat.
  • Per switchpaar draagt precies één leg precies één van beide velden; de andere leg draagt geen van beide.

Bericht 6: aantal, koers en bedrag sluiten aan

  • Komen tradeQuantity en tradePrice beide voor, dan geldt per trade: tradeQuantity × tradePrice = tradeAmount.
  • Bij een switch gaat het bedrag dat uit de switchfrom-leg komt de switchto-leg in. Bij een switch tussen beleggingsproducten in verschillende valuta geldt deze controle niet: de berichten bevatten geen wisselkoers.

Zie §4.3.5 voor de toelichting, en GitHub issues #115 en #116.

Technische borging. Ook voor deze controles is de technische borging in (..)-validationRules.json nog niet gemodelleerd.