Release 2027 (pre-release) · Schemaversie001.05 · Actief
SIVI-bericht 4 (00002): Rendementsinformatie (VB-PUO)
Bericht 4 brengt het beleggingsresultaat van de periode terug naar de pensioenuitvoering: begin- en eindwaarde, netto stromen en rendement per beleggingsportefeuille, in portefeuillevaluta en als percentage. Optioneel wordt het rendement al per cohort gesplitst in beschermingsrendement en overrendement. De PUO deelt het rendement vervolgens toe aan de persoonlijke pensioenvermogens volgens de toedelingsregels van de regeling.
Berichtstructuur
Entiteiten met cardinaliteit [min..max] en aantal attributen; klik voor de entiteitpagina.
- chunking.default[0..1] · 4 attr.
- commonFunctional.default[1..1] · 4 attr.
- commonTechnical.default[1..1] · 3 attr.
- party.receiver[1..1] · 3 attr.
- party.sender[1..1] · 4 attr.
- party.contact[0..9] · 2 attr.
- document.default[0..99] · 3 attr.
- party.pensionProvider[1..1] · 3 attr.
- pension.scheme[1..999] · 2 attr.
- financialInformation.reportingPeriod[1..1] · 2 attr.
- investment.portfolio[1..99] · 7 attr.
- pension.cohort[0..99999] · 13 attr.
- pension.scheme[1..999] · 2 attr.
Attributen(50)
| Entiteit | Attribuut | Type | V/O | Codelijst | Omschrijving |
|---|---|---|---|---|---|
| chunking.default | currentChunkId | string | V | Unieke referentie van de huidige chunk. | |
| chunking.default | chunkSequenceNumber | integer | V | Volgnummer van de huidige chunk. | |
| chunking.default | totalNumberOfChunks | integer | V | Totale aantal chunks waarin het bericht is opgesplitst. | |
| chunking.default | chunkFragmentPaths | array[string] | V | Array van JMESPath-verwijzingen naar de berichtdelen die gebruikt zijn binnen deze chunk. | |
| commonFunctional.default | afdDefinitionVersion | string · max 80 | V | 001.05 | Met AFD definitieversienummer wordt aangegeven over welke versie van de (product)definitie wordt gecommuniceerd. |
| commonFunctional.default | afdDefinitionName | string · max 80 | V | De AFD definitienaam van o.a. webservices en verzekeringsproducten. | |
| commonFunctional.default | originalMessageId | string · max 70 | O | MessageId van het oorspronkelijke bericht, dat wordt vervangen door dit bericht. | |
| commonFunctional.default | function | string | V | ADNFUN | Berichtfunctie |
| commonTechnical.default | creationDateTime | string · format date-time | V | Datum en tijd van het aanmaken van het bericht. | |
| commonTechnical.default | messageId | string · max 70 | V | Unique identification of the message. (AFD 2.0 only) | |
| commonTechnical.default | testMessage | boolean | O | Indicatie of sprake is van een testbericht. | |
| party.receiver | refKey | string · max 70 | V | Entiteitsreferentie is een unieke referentie sleutel die aan een entiteit wordt toegekend. | |
| party.receiver | organizationName | string · max 60 | V | Naam beroeps of branche organisatie. | |
| party.receiver | rsinNumber | string · max 9 | O | Governmental identification number for legal entities and associations. (AFD 2.0 only) | |
| party.sender | refKey | string · max 70 | V | Entiteitsreferentie is een unieke referentie sleutel die aan een entiteit wordt toegekend. | |
| party.sender | applicationSenderName | string · max 60 | O | Naam van de applicatie die de gegevens verzendt. | |
| party.sender | organizationName | string · max 60 | V | Naam beroeps of branche organisatie. | |
| party.sender | rsinNumber | string · max 9 | O | Governmental identification number for legal entities and associations. (AFD 2.0 only) | |
| party.contact | workPhoneNumber | string · max 60 | V | Telefoonnummer werk | |
| party.contact | emailWork | string · max 60 | V | E-mail adres werk | |
| document.default | refKey | string · max 70 | V | Entiteitsreferentie is een unieke referentie sleutel die aan een entiteit wordt toegekend. | |
| document.default | fileExtension | string | V | pdf | csv | txt | Extensienaam van het bestand waaronder de bijlage kan worden opgeslagen. Bijvoorbeeld "PDF", "DOC", etc. |
| document.default | fileName | string · max 60 | V | Naam van het bestand waaronder de bijlage kan worden opgeslagen. | |
| party.pensionProvider | organizationName | string · max 60 | V | Naam beroeps of branche organisatie. | |
| party.pensionProvider | rsinNumber | string · max 9 | O | Governmental identification number for legal entities and associations. (AFD 2.0 only) | |
| party.pensionProvider | puvCode | string | V | AFDIDP | Pensioenuitvoerder |
| pension.scheme | refKey | string · max 70 | V | Entiteitsreferentie is een unieke referentie sleutel die aan een entiteit wordt toegekend. | |
| pension.scheme | pensionSchemeName | string · max 60 | V | Naam van de pensioenregeling. | |
| financialInformation.reportingPeriod | endDate | string · format date | V | Vervaldatum (tot-datum). | |
| financialInformation.reportingPeriod | startDate | string · format date | V | Startdatum (vanaf-datum). | |
| investment.portfolio | refKey | string · max 70 | V | Entiteitsreferentie is een unieke referentie sleutel die aan een entiteit wordt toegekend. | |
| investment.portfolio | startAmount | number · multipleOf 0.01 | V | Bedrag (bijvoorbeeld van opgebouwd kapitaal) bij aanvang van een periode. | |
| investment.portfolio | netAmount | number · multipleOf 0.01 | O | Netto som van inleg en onttrekkingen per regeling. Een negatief bedrag is een (netto) onttrekking. | |
| investment.portfolio | description | string · max 60 | V | Omschrijving | |
| investment.portfolio | endAmount | number · multipleOf 0.01 | V | Waarde (bijvoorbeeld opgebouwd kapitaal) aan het einde van een periode. | |
| investment.portfolio | returnPercentage | number · multipleOf 1e-12 | O | Het behaalde rendement als percentage, over een periode. | |
| investment.portfolio | returnAmount | number · multipleOf 0.01 | V | Het behaalde rendement over een periode. | |
| pension.cohort | refKey | string · max 70 | V | Entiteitsreferentie is een unieke referentie sleutel die aan een entiteit wordt toegekend. | |
| pension.cohort | startAmount | number · multipleOf 0.01 | V | Bedrag (bijvoorbeeld van opgebouwd kapitaal) bij aanvang van een periode. | |
| pension.cohort | description | string · max 60 | V | Omschrijving | |
| pension.cohort | excessReturnPercentage | number · multipleOf 1e-12 | V | Het behaalde overrendement in percentage over gegevensperiode per regeling en per cohort. | |
| pension.cohort | reserveDescription | string · max 60 | O | Omschrijving van het reserve. | |
| pension.cohort | reserveType | string | O | AFDRES | Type reserve |
| pension.cohort | reserveIndicator | boolean | V | Indicatie of een reserve aanwezig is / van toepassing is. | |
| pension.cohort | startAge | number · multipleOf 1 | O | Beginleeftijd. | |
| pension.cohort | endAge | number · multipleOf 1 | O | Eindleeftijd. | |
| pension.cohort | excessReturnAmount | number · multipleOf 0.01 | V | Het behaalde overrendement in valuta van de regeling over gegevensperiode per pensioenregeling en per cohort. | |
| pension.cohort | protectionReturnAmount | number · multipleOf 0.01 | V | Het behaalde beschermingsrendement in valuta van de regeling over gegevensperiode per pensioenregeling en per cohort. | |
| pension.cohort | protectionReturnPercentage | number · multipleOf 1e-12 | V | Het behaalde beschermingsrendement in percentage over een gegevensperiode per pensioenregeling en per cohort. | |
| pension.cohort | participationStatus | string | O | ADNDNS | Deelname status |
Voorbeeldbericht
Bron voorbeeld: SIVI voorbeeldbericht (Voorbeeldbericht_4). Waarden zijn fictief.
{
"commonTechnical": [
{
"entityType": "default",
"messageId": "1234567890123456789012",
"creationDateTime": "2023-10-28T10:00:00Z",
"testMessage": false,
"party": [
{
"entityType": "receiver",
"refKey": "recv001",
"rsinNumber": "123456789",
"organizationName": "Pension Fund A"
},
{
"entityType": "sender",
"rsinNumber": "987654321",
"organizationName": "Insurance Company B",
"refKey": "send001",
"applicationSenderName": "InsurAppV3"
}
]
}
],
"commonFunctional": [
{
"entityType": "default",
"function": "54",
"afdDefinitionName": "VBPUO-001.00-Bericht_4._Rendementsinformatie_(00002)",
"afdDefinitionVersion": "001.05",
"originalMessageId": "98765432109876543210"
}
],
"party": [
{
"entityType": "pensionProvider",
"puvCode": "U0003",
"organizationName": "PensioenFonds B.V.",
"pension": [
{
"entityType": "scheme",
"refKey": "SCHEME456",
"pensionSchemeName": "BasisPensioen",
"financialInformation": [
{
"entityType": "reportingPeriod",
"startDate": "2023-01-01",
"endDate": "2023-12-31"
}
],
"investment": [
{
"entityType": "portfolio",
"refKey": "PORT123",
"description": "Aandelenfonds",
"startAmount": 500000,
"netAmount": 50000,
"endAmount": 575000,
"returnPercentage": 5,
"returnAmount": 25000
}
],
"pension": [
{
"entityType": "cohort",
"refKey": "COHORT101",
"description": "Cohort 2024",
"startAmount": 300000,
"protectionReturnPercentage": 2,
"excessReturnPercentage": 3,
"protectionReturnAmount": 6000,
"excessReturnAmount": 9000,
"reserveIndicator": false,
"startAge": 300,
"endAge": 540
},
{
"entityType": "cohort",
"refKey": "COHORT102",
"description": "Cohort 2025",
"startAmount": 350000,
"protectionReturnPercentage": 2.5,
"excessReturnPercentage": 3.5,
"protectionReturnAmount": 8750,
"excessReturnAmount": 12250,
"reserveIndicator": false,
"startAge": 540,
"endAge": 780
}
]
}
]
}
]
}Variant: Voorbeeldbericht_4-uitgebreid
{
"commonTechnical": [
{
"entityType": "default",
"messageId": "1234567890123456789012",
"creationDateTime": "2023-10-28T10:00:00Z",
"testMessage": false,
"party": [
{
"entityType": "receiver",
"refKey": "recv001",
"rsinNumber": "123456789",
"organizationName": "Pension Fund A"
},
{
"entityType": "sender",
"rsinNumber": "987654321",
"organizationName": "Insurance Company B",
"refKey": "send001",
"applicationSenderName": "InsurAppV3"
}
]
}
],
"commonFunctional": [
{
"entityType": "default",
"function": "54",
"afdDefinitionName": "VBPUO-001.00-Bericht_4._Rendementsinformatie_(00002)",
"afdDefinitionVersion": "001.05",
"originalMessageId": "98765432109876543210"
}
],
"party": [
{
"entityType": "pensionProvider",
"puvCode": "U0003",
"organizationName": "PensioenFonds B.V.",
"pension": [
{
"entityType": "scheme",
"refKey": "SCHEME456",
"pensionSchemeName": "BasisPensioen",
"financialInformation": [
{
"entityType": "reportingPeriod",
"startDate": "2023-01-01",
"endDate": "2023-12-31"
}
],
"investment": [
{
"entityType": "portfolio",
"refKey": "PORT123",
"description": "Aandelenfonds",
"startAmount": 500000,
"netAmount": 50000,
"endAmount": 550000,
"returnPercentage": 5,
"returnAmount": 25000
}
],
"pension": [
{
"entityType": "cohort",
"refKey": "COHORT101",
"description": "Cohort 2024",
"startAmount": 300000,
"protectionReturnPercentage": 2,
"excessReturnPercentage": 3,
"protectionReturnAmount": 6000,
"excessReturnAmount": 9000,
"reserveIndicator": false,
"startAge": 300,
"endAge": 540
},
{
"entityType": "cohort",
"refKey": "COHORT102",
"description": "Cohort 2025",
"startAmount": 350000,
"protectionReturnPercentage": 2.5,
"excessReturnPercentage": 3.5,
"protectionReturnAmount": 8750,
"excessReturnAmount": 12250,
"reserveIndicator": false,
"startAge": 540,
"endAge": 780
}
]
},
{
"entityType": "scheme",
"refKey": "SCHEME789",
"pensionSchemeName": "PlusPensioen",
"financialInformation": [
{
"entityType": "reportingPeriod",
"startDate": "2024-01-01",
"endDate": "2024-12-31"
}
],
"investment": [
{
"entityType": "portfolio",
"refKey": "PORT225",
"description": "Vastgoedfonds",
"startAmount": 600000,
"netAmount": 75000,
"endAmount": 675000,
"returnPercentage": 6,
"returnAmount": 30000
},
{
"entityType": "portfolio",
"refKey": "PORT1225",
"description": "Liquiditeitsfonds",
"startAmount": 330000,
"netAmount": 6000,
"endAmount": 336000,
"returnPercentage": 6,
"returnAmount": 30000
}
]
}
]
}
]
}Variant: Voorbeeldbericht_4-uitgebreid-MinisforumNAB6
{
"commonTechnical": [
{
"entityType": "default",
"messageId": "1234567890123456789012",
"creationDateTime": "2023-10-28T10:00:00Z",
"testMessage": false,
"party": [
{
"entityType": "receiver",
"refKey": "recv001",
"rsinNumber": "123456789",
"organizationName": "Pension Fund A"
},
{
"entityType": "sender",
"rsinNumber": "987654321",
"organizationName": "Insurance Company B",
"refKey": "send001",
"applicationSenderName": "InsurAppV3"
}
]
}
],
"commonFunctional": [
{
"entityType": "default",
"function": "54",
"afdDefinitionName": "VBPUO-001.00-Bericht_4._Rendementsinformatie_(00002)",
"afdDefinitionVersion": "001.05",
"originalMessageId": "98765432109876543210"
}
],
"party": [
{
"entityType": "pensionProvider",
"puvCode": "U0003",
"organizationName": "PensioenFonds B.V.",
"pension": [
{
"entityType": "scheme",
"refKey": "SCHEME456",
"pensionSchemeName": "BasisPensioen",
"financialInformation": [
{
"entityType": "reportingPeriod",
"startDate": "2023-01-01",
"endDate": "2023-12-31"
}
],
"investment": [
{
"entityType": "portfolio",
"refKey": "PORT123",
"description": "Aandelenfonds",
"startAmount": 500000,
"netAmount": 50000,
"endAmount": 550000,
"returnPercentage": 5,
"returnAmount": 25000
}
],
"pension": [
{
"entityType": "cohort",
"refKey": "COHORT101",
"description": "Cohort 2024",
"startAmount": 300000,
"protectionReturnPercentage": 2,
"excessReturnPercentage": 3,
"protectionReturnAmount": 6000,
"excessReturnAmount": 9000,
"reserveIndicator": false,
"startAge": 300,
"endAge": 540
},
{
"entityType": "cohort",
"refKey": "COHORT102",
"description": "Cohort 2025",
"startAmount": 350000,
"protectionReturnPercentage": 2.5,
"excessReturnPercentage": 3.5,
"protectionReturnAmount": 8750,
"excessReturnAmount": 12250,
"reserveIndicator": false,
"startAge": 540,
"endAge": 780
}
]
},
{
"entityType": "scheme",
"refKey": "SCHEME789",
"pensionSchemeName": "PlusPensioen",
"financialInformation": [
{
"entityType": "reportingPeriod",
"startDate": "2024-01-01",
"endDate": "2024-12-31"
}
],
"investment": [
{
"entityType": "portfolio",
"refKey": "PORT225",
"description": "Vastgoedfonds",
"startAmount": 600000,
"netAmount": 75000,
"endAmount": 675000,
"returnPercentage": 6,
"returnAmount": 30000
},
{
"entityType": "portfolio",
"refKey": "PORT1225",
"description": "Liquiditeitsfonds",
"startAmount": 330000,
"netAmount": 6000,
"endAmount": 336000,
"returnPercentage": 6,
"returnAmount": 30000
}
]
}
]
}
]
}Regels en verbandscontroles
- Per portefeuille gelden startAmount, netAmount, returnAmount en endAmount; de ontvanger toetst de plausibiliteit: beginwaarde + netto stromen + rendement = eindwaarde.
- returnPercentage en de overige percentages hebben maximaal twaalf decimalen; bedragen maximaal zes (Release 2026).
- Beschermingsrendement kan direct (werkelijk rendement van een of meer beschermingsportefeuilles) of indirect (via de rentetermijnstructuur) worden bepaald; het bericht kan beide varianten dragen, de PUO blijft verantwoordelijk voor de toedeling.
- Cohortniveau (protectionReturnAmount, excessReturnAmount en percentages) is optioneel; wie het levert, levert het voor alle cohorten van de regeling.
Valkuilen
- Rendement in de verkeerde valuta of zonder wisselkoerseffect: de PUO rekent in euro; leg vast op welk niveau de valuta-omrekening plaatsvindt.
- Meerdere rendementssoorten in één bericht (bijvoorbeeld bruto en netto van kosten) zonder duidelijke description per portefeuille maken de toedeling onbetrouwbaar.
Fouten en oplossingen
- messageId ontbreekt, is leeg of langer dan 70 tekensSchemafout op commonTechnical/0/messageId: 'must have required property' of 'must NOT have more than 70 characters'.
- Dubbele messageId na acceptatie (HTTP 400 met feedback)De ontvanger antwoordt HTTP 400 met een feedbackbericht (statusType 0) op een bericht dat inhoudelijk correct lijkt.
- afdDefinitionVersion onjuist (001.04 versus 001.05)Schemafout 'must be equal to one of the allowed values' op afdDefinitionVersion, of de ontvanger valideert tegen het verkeerde schema en meldt onbekende velden.
- Percentages met meer dan twaalf decimalenSchemafout 'must be multiple of' op returnPercentage, protectionReturnPercentage of excessReturnPercentage.
- reportingPeriod: endDate ligt vóór startDateHet schema accepteert het bericht; de ontvanger wijst het functioneel af of boekt de stromen in de verkeerde periode.
- participationStatus ongeldig (ADNDNS)Schemafout 'must match exactly one schema in oneOf' op pension.cohort.participationStatus.
- reserveType ongeldig (AFDRES)Schemafout 'must match exactly one schema in oneOf' op reserveType.
- reserveIndicator zonder reserveType of reserveDescriptionSchema-valide, maar de ontvanger kan de reserve niet typeren en boekt hem als gewoon cohort.
- endAge kleiner dan startAge, of geen geheel getalBij decimalen een schemafout 'must be integer'; bij verwisselde grenzen accepteert het schema en wijst de ontvanger af.
- currencyType geen ISO 4217-codeSchemafout op currencyType (codelijst ISOVAL).
- Fout ontdekt na acceptatie: het correctieprotocolEen geaccepteerd en verwerkt bericht blijkt inhoudelijk fout (verkeerd bedrag, verkeerd cohort).
Veelgestelde vragen
Wie stuurt bericht 4: de fiduciair manager of de beleggingsadministrateur?
Bij voorkeur de onafhankelijke beleggingsadministrateur (leidende beleggingsadministratie); de standaard laat toe dat de fiduciair manager het stuurt als de keten zo is ingericht.
Hoe verhoudt bericht 4 zich tot het beschermingsrendement in de toedelingsregels?
Bericht 4 levert de bouwstenen: het werkelijke rendement per portefeuille en optioneel de splitsing in beschermings- en overrendement per cohort. De toedeling zelf, inclusief de eventuele theoretische (RTS-)methode, is en blijft een verantwoordelijkheid van de PUO.
Wijzigingsgeschiedenis
- v1.2.0 (november 2024): percentages van 2 naar 12 decimalen.
- v1.3.0 (Release 2026): numerieke formaten naar 6 decimalen.
- v1.4.0 (Release 2027): JSON Schema 2020-12.
Schema-bestand: VBPUO-001.00-Bericht_4._Rendementsinformatie_(00002)_v5.json · JSON-schema (001.05) · GitHub
