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.
| Attribuutnaam | Definitie | datatype | lengte | Codelijst |
|---|---|---|---|---|
| messageId | Unieke berichtidentificatie | string | 70 | |
| creationDateTime | Aanmaakdatum en tijd Date | timestamp | ||
| testMessage | Indicatie testbericht | boolean |
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.
| Attribuutnaam | Definitie | datatype | lengte | Codelijst |
|---|---|---|---|---|
| refKey | Unique reference key assigned to an entity. (NL: Entiteitsreferentie is een unieke referentie sleutel die aan een entiteit wordt toegekend.) | string | 70 | |
| rsinNumber | Governmental identification number for legal entities and associations (RSIN) | string | 9 | |
| organizationName | Organisatie naam van de afzender | string | 60 | |
| applicationSenderName | Naam van de applicatie die het bericht heeft aangemaakt* | string | 60 |
* 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. ↩︎
| Attribuutnaam | Definitie | datatype | lengte | Codelijst |
|---|---|---|---|---|
| emailWork | Werk emailadres | string | 60 | |
| workPhoneNumber | Werk telefoonnummer | string | 60 |
| Attribuutnaam | Definitie | datatype | lengte | Codelijst |
|---|---|---|---|---|
| refKey | Unique reference key assigned to an entity. (NL: Entiteitsreferentie is een unieke referentie sleutel die aan een entiteit wordt toegekend.) | string | 70 | |
| rsinNumber | Governmental identification number for legal entities and associations (RSIN) | string | 9 | |
| organizationName | Naam van de ontvanger(s) (organisatie (s)) | string | 60 |
| Attribuutnaam | Definitie | datatype | lengte | Codelijst |
|---|---|---|---|---|
| function | Message function code. (NL: Code waarmee de functie van het bericht wordt aangegeven.) | string | ADNFUN (01; 02;09;54 of 23) | |
| statusType | Status 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). | string | ADNSTS (0; 8) | |
| afdDefinitionName | Soort bericht | string | 80 | |
| afdDefinitionVersion | Versie van de standaard | string | 80 | |
| originalMessageId | Het oorspronkelijke messageId van het bericht dat wordt vervangen door dit bericht | string | 70 | |
| originalMessageType | Message 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)” | string | 0001a; 0001b; 0001c; 00002; 00541; 00542; 00553; 00555b; 00556; 00557 |
| Attribuutnaam | Definitie | datatype | lengte | Codelijst |
|---|---|---|---|---|
| puvCode | ID 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.) | string | AFDIDP (U0003; U0005; ... ;U0765) | |
| rsinNumber | Governmental identification number for legal entities and associations (RSIN) | string | 9 | |
| organizationName | Naam van de pensioenuitvoerder | string | 60 |
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.
| Attribuutnaam | Definitie | datatype | lengte | Codelijst |
|---|---|---|---|---|
| refKey | ID van de pensioenregeling / (Unique reference key assigned to an entity. (NL: Entiteitsreferentie is een unieke referentie sleutel die aan een entiteit wordt toegekend.)) | string | 70 | |
| pensionSchemeName | Naam van de pensioenregeling | string | 60 | |
| startAmount | Totaal pensioenvermogen per startdatum | decimal | ||
| tradingPortfolioId | Portefeuille ID van de custodian (bewaren en beheren van financiële activa) | string | 10 |
| Attribuutnaam | Definitie | datatype | lengte | Codelijst |
|---|---|---|---|---|
| startDate | Begindatum van de gegevensperiode waarop de aanlevering vanuit de PUO wordt gebaseerd of Peildatum | date | ||
| endDate | Einddatum van de gegevensperiode waarop de aanlevering vanuit de PUO wordt gebaseerd | date | ||
| endDate | Einddatum van de gegevensperiode waarover rendement wordt gerapporteerd | date | ||
| tradeDate | Gewenste handelsdatum | date | ||
| investmentOrderSettlementDate | Datum waarop de volledige cyclus van de beleggingsorder afgewikkeld moet zijn | date | ||
| projectionDate | Datum van de projectie van pensioenuitkeringen | date | ||
| instructionDate | Instructiedatum (datum van de bestelling verzonden door de PUO) | date | ||
| participationValuationDate | Prijsdatum van de door de beleggingsadministrateur vastgestelde netto vermogenswaarde (NAV) per unit van de beleggingspool. | date | ||
| valueDate | Currency 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.
| Attribuutnaam | Definitie | datatype | lengte | Codelijst |
|---|---|---|---|---|
| amount | Bedrag in valuta | decimal | ||
| currencyType | Valuta | string | ISOVAL (EUR; USD; …) | |
| collectionAccountIban | IBAN-nummer van debet rekening | string | 34 | |
| description | Omschrijving van de transactie (betaling) | string | 60 | |
| refKey | ID van de expected payment | string | 70 | |
| expectedPensionPaymentDate | Pensioenuitkeringsmoment | date | ||
| amount | Geprojecteerde uitkering over alle cohorten | decimal | ||
| hedgedExpectedPensionPaymentAmount | Af te dekken kasstroom over alle cohorten | decimal | ||
| amount | Geprojecteerde uitkering | decimal | ||
| hedgedExpectedPensionPaymentAmount | Af te dekken kasstroom | decimal |
| Attribuutnaam | Definitie | datatype | lengte | Codelijst |
|---|---|---|---|---|
| refKey | Unique reference key assigned to an entity. (NL: Entiteitsreferentie is een unieke referentie sleutel die aan een entiteit wordt toegekend.) | string | 70 | |
| collectionAccountIban | IBAN-nummer van credit rekening per regeling | string | 34 | |
| collectionAccountInNameOf | Naam van de tegenpartij per regeling | string | 60 | |
| collectionAccountBic | Business Identifier Code (BIC) per regeling | string | 10 | |
| collectionAccountBicCorrespondent | BIC-correspondent per regeling | string | 10 |
| Attribuutnaam | Definitie | datatype | lengte | Codelijst |
|---|---|---|---|---|
| contributionAmount | Som van inleg | decimal | ||
| contributionDate | Datum van ontvangst van de inleg | date | ||
| withdrawalAmount | Som van de uitstroom | decimal | ||
| withdrawalDate | Datum waarop (uiterlijk) de liquiditeiten ten behoeve van de onttrekking zijn vrijgemaakt | date | ||
| netAmount | Som 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 | ||
| netDate | De valutadatum waarop het gesaldeerde netto kasstroombedrag (inleg minus onttrekking) daadwerkelijk door de PUO wordt betaald aan, of ontvangen van, de Vermogensbeheerder | date | ||
| netAmount | Gesaldeerd netto kasstroombedrag per beleggingsportefeuille binnen een regeling. Een negatief bedrag is een netto onttrekking. | decimal | ||
| netDate | De valutadatum waarop het netto kasstroombedrag per beleggingsportefeuille daadwerkelijk door de PUO wordt betaald aan, of ontvangen van, de Vermogensbeheerder | date |
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.
| Attribuutnaam | Definitie | datatype | lengte | Codelijst |
|---|---|---|---|---|
| refKey | ID van het cohort | string | 70 | |
| description | Beschrijving van het cohort | string | 60 | |
| participationStatus | Status van de deelnemers in een cohort | string | ADNDNS (16; 20; 35; 40; 70; 80) | |
| startAge | Startleeftijd in maanden | integer | ||
| endAge | Eindleeftijd in maanden | integer | ||
| reserveIndicator | Indicatie of het cohort een reserve weerspiegelt | boolean | ||
| reserveType | Keuze van het type (reserve feitelijk een) voorziening / type of provision. Bij gedeeld beleggingsbeleid kan worden ingedikt; expliciete code alleen bij separaat beleggingsbeleid. | string | AFDRES (1; 2; 3; 4; 5; 6; 7; 8; 9; 10; 11; 12; 13; 14; 15; 99) | |
| reserveDescription | Beschrijving de reserve bij keuze van "Overige" in reserve type. | string | 60 | |
| startAmount | Pensioenvermogen van het cohort per begindatum | decimal | ||
| netAmount | Som van inleg en onttrekkingen per cohort. Een negatief bedrag is een (netto) onttrekking.) | decimal | ||
| netDate | De valutadatum waarop het gesaldeerde netto kasstroombedrag voor het cohort daadwerkelijk door de PUO wordt betaald aan, of ontvangen van, de Vermogensbeheerder | date | ||
| contributionAmount | Instroom te beleggen door de fiduciair manager | decimal | ||
| withdrawalAmount | Uitstroom te beleggen door de fiduciair manager | decimal | ||
| protectionReturnPercentage | Het behaalde beschermingsrendement in percentage over gegevensperiode per regeling en per cohort | decimal (1E-12) | ||
| excessReturnPercentage | Het behaalde overrendement in percentage over gegevensperiode per regeling en per cohort | decimal (1E-12) | ||
| protectionReturnAmount | Het behaalde beschermingsrendement in valuta van de regeling over gegevensperiode per regeling en per cohort | decimal | ||
| excessReturnAmount | Het behaalde overrendement in valuta van de regeling over gegevensperiode per regeling en per cohort | decimal |
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 verschillendereserveType-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.reserveDescriptionis uitsluitend beschrijvend. De omschrijving kan toelichten of verduidelijken, maar is niet bepalend voor classificatie, routering of beleggingsbeleid.refKeyidentificeert het cohort uniek (zie de algemene toelichting oprefKeyhierboven). Meerdere cohorten met hetzelfdereserveTypezijn toegestaan, mits zij onder hetzelfde beleggingsbeleid vallen.
Zie GitHub issue #111.
| Attribuutnaam | Definitie | datatype | lengte | Codelijst |
|---|---|---|---|---|
| refKey | ID Beleggingsportefeuille / Unique reference key assigned to an entity. (NL: Entiteitsreferentie is een unieke referentie sleutel die aan een entiteit wordt toegekend.) | string | 70 | |
| description | Beschrijving | string | 60 | |
| startExposureAmount | De toedeling van het pensioenvermogen per cohort aan een specifieke investmentportfolio, berekend op basis van de toedelingsregels zoals door de PUO gehanteerd.) | decimal | ||
| startExposurePercentage | Het relatieve aandeel van startExposureAmount ten opzichte van het totale pensioenvermogen per datum.) | decimal | ||
| startAmount | De waarde van de Total Market Value aan het begin van de gegevensperiode | decimal | ||
| netAmount | Som van inleg en onttrekkingen per regeling (net). Een negatief bedrag is een (netto) withdrawal | decimal | ||
| endAmount | De waarde van de Total Market Value aan het eind van de gegevensperiode. Per regeling en beleggingsportefeuille | decimal | ||
| returnPercentage | Het behaalde rendement in percentage over gegevensperiode per regeling en per beleggingsportefeuille | decimal (1E-12) | ||
| returnAmount | Het behaalde rendement in valuta van de regeling over gegevensperiode per regeling en per beleggingsportefeuille | decimal |
| Attribuutnaam | Definitie | datatype | lengte | Codelijst |
|---|---|---|---|---|
| refKey | ID van de beleggingspool per regeling | string | 70 | |
| description | Beschrijving | string | 60 | |
| unitsSummedValueAmount | Waarde per beleggingspool(unitwaarde) | decimal | ||
| preliminaryUnitValueAmount | De door de beleggingsadministrateur vastgestelde netto vermogenswaarde (NAV) per unit van de beleggingspool | decimal (1E-06) | ||
| numberOfUnits | Aantal units uitgegeven voor de beleggingspool, | decimal (1E-06) | ||
| currencyType | Valuta van de pool | string | ISOVAL (EUR; USD; …) | |
| buySellId | Aan- verkoopindicator; ID voor aan-/verkoop per beleggingspool per regeling | string | sell; buy | |
| tradeValueAmount | Waarde transactie per beleggingspool per regeling | decimal |
| Attribuutnaam | Definitie | datatype | lengte | Codelijst |
|---|---|---|---|---|
| refKey | Identifier (bijvoorbeeld ISIN of interne code) | string | 70 | |
| description | De naam van de belegging / de officiële naam van het fonds / van het instrument | string | 60 | |
| currencyType | Valuta van het instrument | string | ISOVAL (EUR; USD; …) | |
| numberOfUnits | Aantal aangekochte units per instrument per regeling per beleggingsportefeuille | decimal (1E-06) | ||
| refKey | Identifier van het beleggingsproduct, bijvoorbeeld ISIN of interne code. | string | 70 | |
| description | Omschrijving van het beleggingsproduct. | string | 60 | |
| tradeDate | handelsdatum (beoogd) | date |
| Attribuutnaam | Definitie | datatype | lengte | Codelijst |
|---|---|---|---|---|
| refKey | Sleutel van de Corporate Action. | string | 70 | |
| description | Omschrijving van de Corporate Action. | string | 60 | |
| corporateActionType | Type Corporate Action. | string | AFDCOA (1; 2; 3; 99) | |
| instructionDate | Instructiedatum van de Corporate Action. | date | ||
| tradeDate | Transactiedatum van de Corporate Action. | date | ||
| paymentDate | Betaaldatum van de Corporate Action. | date | ||
| cashDividendTotalAmount | Totaal contant bedrag van de Corporate Action. | decimal | ||
| cashDividendPerUnitAmount | Contant bedrag per eenheid. | decimal | ||
| currencyType | Valuta van het contante bedrag. | string | 3 | ISOVAL (EUR; USD; GBP; CHF; JPY) |
| stockDividendPerUnitNumber | Aantal stockdividend per eenheid. | decimal | ||
| stockDividendTotalNumber | Totaal aantal stockdividend. | decimal | ||
| newProductName | Naam van het nieuwe product. | string | 60 | |
| newProductIdentifier | Identificatie van het nieuwe product. | string | 60 |
| Attribuutnaam | Definitie | datatype | lengte | Codelijst |
|---|---|---|---|---|
| tradeDate | handelsdatum (feitelijk) | date | ||
| refKey | Unique reference key assigned to an entity. (NL: Entiteitsreferentie is een unieke referentie sleutel die aan een entiteit wordt toegekend.) | string | 70 | |
| adjustmentIndicator | Aangepaste trade instructie | boolean | ||
| buySellId | Aan-, verkoop- of switchrichtingindicator | string | sell; buy; switchfrom; switchto | |
| tradeAmount | Positief bedrag van de transactie in de valuta waarin de belegging luidt; richting volgt uit buySellId | decimal | ||
| tradeQuantity | Positief aantal te verhandelen stukken (units) van de transactie; richting volgt uit buySellId | decimal (1E-06) | ||
| tradePrice | Aankoopprijs / koers | decimal (1E-06) | ||
| switchType | Type switch; one-day of sequential | string | AFDSWI (1; 2) | |
| financialInformationRef | Verwijs hier bij switchfrom/switchto naar de refKey van de andere switch-leg ten behoeve van verbandscontrole. | array | ||
| counterparty | Transfer Agent; de partij die de aankoop/verkoop verricht | string | 70 | |
| broker | Effectenmakelaar die beleggingsorders uitvoert namens klanten op de markt | string | 70 | |
| interestAmount | Bedrag aan van toepassing zijnde rente | decimal | ||
| commissionAmount | Vergoeding voor het uitvoeren van de transactie | decimal | ||
| clearingBroker | Effectenmakelaar verantwoordelijk administratieve en financiële afwikkeling van de transactie | string | 70 | |
| clearingBrokerCashAccount | Geldrekening (IBAN) bij de clearingbroker op naam van de Pensioenuitvoerder | string | 18 |
| Attribuutnaam | Definitie | datatype | lengte | Codelijst |
|---|---|---|---|---|
| refKey | Unique reference key assigned to an entity. (NL: Entiteitsreferentie is een unieke referentie sleutel die aan een entiteit wordt toegekend.) | string | 70 | |
| errorCode | Error code type. (NL: Soort foutmelding code.) | string | ADNFTM (09; 11; 12; 13; 14; 99) | |
| errorCodeExplanation | Explanation of the error message. (NL: Toelichting op de soort foutmelding.) | string | 1000 |
Zie ook de informatie over de error.default in de SIVI All Finance Standard
| Attribuutnaam | Definitie | datatype | lengte | Codelijst |
|---|---|---|---|---|
| refKey | Unique reference key assigned to an entity. (NL: Entiteitsreferentie is een unieke referentie sleutel die aan een entiteit wordt toegekend.) | string | 70 | |
| fileName | Name of the file under which the attachment can be saved. (NL: Naam van het bestand waaronder de bijlage kan worden opgeslagen.) | string | 60 | |
| fileExtension | Extension 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.) | string | pdf; csv; txt |
| Attribuutnaam | Definitie | datatype | lengte | Codelijst |
|---|---|---|---|---|
| currentChunkId | Unique reference (id) of the current chunk. (NL: Unieke referentie van de huidige chunk.) | string | 70 | |
| chunkSequenceNumber | Sequence number of the current chunk. (NL: Volgnummer van de huidige chunk.) | integer | ||
| totalNumberOfChunks | Total number of chunks the message has been split into. (NL: Totale aantal chunks waarin het bericht is opgesplitst.) | integer | ||
| chunkFragmentPaths | Array 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
netAmountennetDateverplicht. - 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
tradeAmountoftradeQuantitygevuld. 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=switchfromen één metbuySellId=switchto. Zij verwijzen naar elkaar viafinancialInformationRef, dat derefKeyvan 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
tradeQuantityentradePricebeide voor, dan geldt per trade:tradeQuantity × tradePrice = tradeAmount. - Bij een switch gaat het bedrag dat uit de
switchfrom-leg komt deswitchto-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.