Release 2027 (pre-release) · Schemaversie001.05 · Actief
SIVI-bericht 2 (0001b): Cashflow (VB-PUO)
Bericht 2 geeft de geldstromen van de periode door: premies en inkomende waardeoverdrachten (instroom), uitkeringen en uitgaande overdrachten (uitstroom) en verschuivingen tussen cohorten. De stromen worden per regeling en per cohort aangeleverd, óf gesaldeerd als netto cashflow. Ook stortingen in en onttrekkingen aan reserves (solidariteitsreserve, compensatiedepot) lopen via dit bericht.
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.
- financialTransaction.cashflow[0..1] · 6 attr.
- investment.portfolio[0..99] · 2 attr.
- financialTransaction.cashflow[1..1] · 2 attr.
- pension.cohort[0..99999] · 12 attr.
- pension.scheme[1..999] · 2 attr.
Attributen(52)
| 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). | |
| financialTransaction.cashflow | netAmount | number · multipleOf 0.01 | O | Netto som van inleg en onttrekkingen per regeling. Een negatief bedrag is een (netto) onttrekking. | |
| financialTransaction.cashflow | withdrawalDate | string · format date | O | Datum waarop (uiterlijk) de liquiditeiten voor de onttrekking zijn vrijgemaakt. | |
| financialTransaction.cashflow | withdrawalAmount | number · multipleOf 0.01 | O | Som van de uitstroom. | |
| financialTransaction.cashflow | contributionDate | string · format date | O | Datum van ontvangst van inleg. | |
| financialTransaction.cashflow | contributionAmount | number · multipleOf 0.01 | O | Som van de inleg. | |
| financialTransaction.cashflow | netDate | string · format date | O | Datum waarop gesaldeerde instroom en uitstroom wordt gefaciliteerd. | |
| investment.portfolio | refKey | string · max 70 | V | Entiteitsreferentie is een unieke referentie sleutel die aan een entiteit wordt toegekend. | |
| investment.portfolio | description | string · max 60 | V | Omschrijving | |
| financialTransaction.cashflow | netAmount | number · multipleOf 0.01 | V | Netto som van inleg en onttrekkingen per regeling. Een negatief bedrag is een (netto) onttrekking. | |
| financialTransaction.cashflow | netDate | string · format date | V | Datum waarop gesaldeerde instroom en uitstroom wordt gefaciliteerd. | |
| pension.cohort | refKey | string · max 70 | V | Entiteitsreferentie is een unieke referentie sleutel die aan een entiteit wordt toegekend. | |
| pension.cohort | netAmount | number · multipleOf 0.01 | O | Netto som van inleg en onttrekkingen per regeling. Een negatief bedrag is een (netto) onttrekking. | |
| pension.cohort | withdrawalAmount | number · multipleOf 0.01 | O | Som van de uitstroom. | |
| pension.cohort | contributionAmount | number · multipleOf 0.01 | O | Som van de inleg. | |
| pension.cohort | netDate | string · format date | O | Datum waarop gesaldeerde instroom en uitstroom wordt gefaciliteerd. | |
| pension.cohort | description | string · max 60 | V | Omschrijving | |
| 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 | participationStatus | string | O | ADNDNS | Deelname status |
Voorbeeldbericht
Bron voorbeeld: SIVI voorbeeldbericht (Voorbeeldbericht_2). Waarden zijn fictief.
{
"commonTechnical": [
{
"entityType": "default",
"creationDateTime": "2023-12-28T12:00:00Z",
"messageId": "msg123456",
"testMessage": false,
"party": [
{
"entityType": "sender",
"refKey": "SEND123",
"organizationName": "Zender Organisatie",
"applicationSenderName": "ApplicatieNaam",
"party": [
{
"entityType": "contact",
"emailWork": "[email protected]",
"workPhoneNumber": "+31678717607"
}
]
},
{
"entityType": "receiver",
"refKey": "REC123",
"rsinNumber": "987654321",
"organizationName": "Ontvanger Organisatie"
}
]
}
],
"commonFunctional": [
{
"entityType": "default",
"afdDefinitionName": "VBPUO-001.00-Bericht_2._Cashflow_(0001b)",
"afdDefinitionVersion": "001.05",
"function": "01",
"originalMessageId": "987654321"
}
],
"party": [
{
"entityType": "pensionProvider",
"rsinNumber": "123456789",
"organizationName": "Pensioenverstrekker",
"puvCode": "U0003",
"pension": [
{
"entityType": "scheme",
"refKey": "SCH456",
"pensionSchemeName": "Standaard Pensioen",
"financialInformation": [
{
"entityType": "reportingPeriod",
"startDate": "2023-01-01",
"endDate": "2023-12-31"
}
],
"financialTransaction": [
{
"entityType": "cashflow",
"contributionAmount": 15000,
"contributionDate": "2023-01-01",
"withdrawalAmount": 4000,
"withdrawalDate": "2023-01-15",
"netAmount": 11000,
"netDate": "2023-01-31"
}
],
"pension": [
{
"entityType": "cohort",
"refKey": "COH789",
"description": "Cohort 2023",
"netAmount": 5000,
"contributionAmount": 7000,
"withdrawalAmount": 2000,
"participationStatus": "16",
"reserveIndicator": false,
"startAge": 300,
"endAge": 540
},
{
"entityType": "cohort",
"refKey": "COH790",
"description": "Cohort 2024",
"netAmount": 6000,
"contributionAmount": 8000,
"withdrawalAmount": 2000,
"participationStatus": "16",
"reserveIndicator": false,
"startAge": 540,
"endAge": 780
}
]
},
{
"entityType": "scheme",
"refKey": "SCH457",
"pensionSchemeName": "Geavanceerd Pensioen",
"financialInformation": [
{
"entityType": "reportingPeriod",
"startDate": "2023-03-01",
"endDate": "2023-12-31"
}
],
"financialTransaction": [
{
"entityType": "cashflow",
"contributionAmount": 16000,
"contributionDate": "2023-03-01",
"withdrawalAmount": 4000,
"withdrawalDate": "2023-03-15",
"netAmount": 12000,
"netDate": "2023-03-31"
}
],
"pension": [
{
"entityType": "cohort",
"refKey": "COH791",
"description": "Cohort 2025",
"netAmount": 5500,
"contributionAmount": 7500,
"withdrawalAmount": 2000,
"participationStatus": "16",
"reserveIndicator": false,
"startAge": 400,
"endAge": 520
},
{
"entityType": "cohort",
"refKey": "COH792",
"description": "Cohort 2026",
"netAmount": 6500,
"contributionAmount": 8500,
"withdrawalAmount": 2000,
"participationStatus": "16",
"reserveIndicator": false,
"startAge": 520,
"endAge": 900
}
]
}
]
}
],
"document": []
}Regels en verbandscontroles
- Instroom en uitstroom worden óf apart aangeleverd (contributionAmount en withdrawalAmount met hun datums), óf gesaldeerd (netAmount met netDate). Beide vormen in één cohort is niet de bedoeling.
- De SPR-route (per cohort) en de FPR-route (per beleggingsportefeuille) sluiten elkaar uit: kies per bericht één patroon.
- De cohorttotalen sluiten aan op het regelingniveau; de cohortindeling is identiek aan die van bericht 1.
- Alle datums vallen binnen de rapportageperiode (financialInformation.reportingPeriod.startDate tot endDate).
Valkuilen
- Een prospectief bericht (verwachte stromen) dat later niet wordt gevolgd door de gerealiseerde stromen laat de beleggingsadministratie met een schatting achter; spreek af welke variant leidend is.
- netDate ontbreekt vaak bij gesaldeerde aanlevering; sinds de documentatie-update van oktober 2025 (issue #82) is duidelijk dat de datum bij het saldo hoort.
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.
- startAmount niet in twee decimalen (multipleOf 0.01)Schemafout 'must be multiple of 0.01'.
- reportingPeriod: endDate ligt vóór startDateHet schema accepteert het bericht; de ontvanger wijst het functioneel af of boekt de stromen in de verkeerde periode.
- Cohort-cardinaliteit overschreden (minContains / maxContains)Schemafout 'must contain at least 1 valid item' of 'must contain at most 99999 valid items' op pension.
- 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.
- Cohortsom wijkt af van het regelingtotaal (verbandscontrole)Schema-valide, maar de fiduciair of beleggingsadministrateur meldt een reconciliatieverschil op regelingniveau.
- contributionAmount/withdrawalAmount én netAmount gevuld (SPR-route en netto tegelijk)Schema-valide; de ontvanger telt de stromen dubbel of weet niet welke leidend is.
- Fout ontdekt na acceptatie: het correctieprotocolEen geaccepteerd en verwerkt bericht blijkt inhoudelijk fout (verkeerd bedrag, verkeerd cohort).
Verschil met Release 2026(001.04 → 001.05)
Entiteitentoegevoegd:investment.portfolio
Attributentoegevoegd:investment.portfolio.refKey, investment.portfolio.description, pension.cohort.netDate
Verplichting gewijzigd:financialTransaction.cashflow.netAmount (O → V), financialTransaction.cashflow.netDate (O → V)
Veelgestelde vragen
Moet ik instroom en uitstroom apart aanleveren?
Dat mag, maar het hoeft niet: de standaard staat ook een gesaldeerde cashflow toe (netAmount). Fiduciair managers geven vaak de voorkeur aan aparte stromen omdat die de liquiditeitsplanning ondersteunen.
Hoe geef ik een verschuiving tussen cohorten door?
Als uitstroom bij het ene cohort en instroom bij het andere, in dezelfde periode. Het regelingtotaal verandert dan niet.
Waar horen reservestortingen thuis?
Bij het reservecohort (reserveIndicator = true, reserveType uit AFDRES) als instroom of uitstroom, net als bij een gewoon cohort.
Wijzigingsgeschiedenis
- v1.3.0 (Release 2026): documentatie netDate (issue #82); chunking.
- v1.4.0 (Release 2027): SPR-route en FPR-route als invulpatronen beschreven; JSON Schema 2020-12.
Schema-bestand: VBPUO-001.00-Bericht_2._Cashflow_(0001b)_v5.json · JSON-schema (001.05) · GitHub
