Knowledge base MessagesEntitiesAttributesCode listsErrors and fixesProcessesRolesReleasesGlossaryEcosystemCompare Validator NL EN

Release 2027 (pre-release) · Schema version001.05 · Active

SIVI message 1 (0001a): Capital (VB-PUO)

With message 1 the PUO reports the total pension capital at the start of the period: per pension scheme and per cohort (age cohort or reserve cohort). The fiduciary manager uses it as the starting point for the collective investment policy; the investment administrator uses it to reconcile independently. Optionally the message carries the intended allocation over investment portfolios (absolute or as a percentage).

Sender
Pension administrator (PUO)
Receiver
Fiduciary manager (FM) and investment administrator / asset service provider (BA)
Timing
Monthly (expected), at the start of the reporting period; implementation plans mention T+10 at the latest for SIVI messages 1 to 3
Arrangement
SPR (also for collective flows in FPR)
afdDefinitionName
VBPUO-001.00-Bericht_1._Vermogen_(0001a)

Message structure

Entities with cardinality [min..max] and number of attributes; click for the entity page.

Attributes(47)

EntityAttributeTypeV/OCode listDescription
chunking.default currentChunkId string V Unique reference (id) of the current chunk.
chunking.default chunkSequenceNumber integer V Sequence number of the current chunk.
chunking.default totalNumberOfChunks integer V Total number of chunks the message has been split into.
chunking.default chunkFragmentPaths array[string] V Array of JMESPath references to the message fragments used within the current chunk.
commonFunctional.default afdDefinitionVersion string · max 80 V 001.05 Version of the AFD-definition.
commonFunctional.default afdDefinitionName string · max 80 V Name of the AFD-definition.
commonFunctional.default originalMessageId string · max 70 O The messageId of the original message, which is replaced by this message.
commonFunctional.default function string V ADNFUN Message function
commonTechnical.default creationDateTime string · format date-time V Date and time (as timestamp) when the message was created.
commonTechnical.default messageId string · max 70 V Unique identification of the message. (AFD 2.0 only)
commonTechnical.default testMessage boolean O Indication whether the message is a test message.
party.receiver refKey string · max 70 V Unique reference key assigned to an entity.
party.receiver organizationName string · max 60 V Name of professional or branch organization.
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 Unique reference key assigned to an entity.
party.sender applicationSenderName string · max 60 O Name of the application that sends the data.
party.sender organizationName string · max 60 V Name of professional or branch organization.
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 Work telephone number.
party.contact emailWork string · max 60 V Work email address.
document.default refKey string · max 70 V Unique reference key assigned to an entity.
document.default fileExtension string V pdf | csv | txt Extension of the file under which the attachment can be saved. For example "pdf", "doc", etc.
document.default fileName string · max 60 V Name of the file under which the attachment can be saved.
party.pensionProvider organizationName string · max 60 V Name of professional or branch organization.
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 Pension provider
pension.scheme refKey string · max 70 V Unique reference key assigned to an entity.
pension.scheme startAmount number · multipleOf 0.01 V Amount (for example of accrued capital) at the start of a period.
pension.scheme pensionSchemeName string · max 60 V Name of the pension scheme.
financialInformation.reportingPeriod startDate string · format date V Start date (from date).
investment.portfolio refKey string · max 70 V Unique reference key assigned to an entity.
investment.portfolio description string · max 60 V Description.
investment.portfolio startExposureAmount number · multipleOf 0.01 O The allocation of the pension capital per cohort to a specific investment portfolio, calculated based on the allocation rules as applied by the PUO.
investment.portfolio startExposurePercentage number · multipleOf 0.01 O The relative share of the startExposureAmount compared to the total pension capital on that specific date.
pension.cohort refKey string · max 70 V Unique reference key assigned to an entity.
pension.cohort startAmount number · multipleOf 0.01 V Amount (for example of accrued capital) at the start of a period.
pension.cohort description string · max 60 V Description.
pension.cohort reserveDescription string · max 60 O Description of the reserve.
pension.cohort reserveType string O AFDRES Reserve type
pension.cohort reserveIndicator boolean V Indication whether a reserve is available / applies.
pension.cohort startAge number · multipleOf 1 O Start age.
pension.cohort endAge number · multipleOf 1 O End age.
pension.cohort participationStatus string O ADNDNS Participation type
investment.portfolio refKey string V Unique reference key assigned to an entity.
investment.portfolio description string V Description.
investment.portfolio startExposureAmount number · multipleOf 0.01 O The allocation of the pension capital per cohort to a specific investment portfolio, calculated based on the allocation rules as applied by the PUO.
investment.portfolio startExposurePercentage number · multipleOf 0.01 O The relative share of the startExposureAmount compared to the total pension capital on that specific date.

Sample message

✓ Validated against schema VBPUO-001.05 · 2026-09-05

Sample source: SIVI voorbeeldbericht (Voorbeeldbericht_1). Values are fictitious.

{
  "commonTechnical": [
    {
      "entityType": "default",
      "creationDateTime": "2023-10-27T10:00:00Z",
      "messageId": "1234567890123456789012",
      "testMessage": false,
      "party": [
        {
          "entityType": "sender",
          "refKey": "ABC123",
          "rsinNumber": "123456789",
          "organizationName": "VoorbeeldBedrijf B.V.",
          "applicationSenderName": "ApplicatieNaam",
          "party": [
            {
              "entityType": "contact",
              "emailWork": "[email protected]",
              "workPhoneNumber": "+31678717607"
            }
          ]
        },
        {
          "entityType": "receiver",
          "refKey": "XYZ789",
          "rsinNumber": "987654321",
          "organizationName": "OntvangerCorp1"
        }
      ]
    }
  ],
  "commonFunctional": [
    {
      "entityType": "default",
      "afdDefinitionName": "VBPUO-001.00-Bericht_1._Vermogen_(0001a)",
      "afdDefinitionVersion": "001.05",
      "function": "01",
      "originalMessageId": "987654321"
    }
  ],
  "party": [
    {
      "entityType": "pensionProvider",
      "puvCode": "U0003",
      "rsinNumber": "222333449",
      "organizationName": "PensioenFonds B.V.",
      "pension": [
        {
          "entityType": "scheme",
          "refKey": "SCHEME456",
          "pensionSchemeName": "BasisPensioen",
          "startAmount": 100000,
          "financialInformation": [
            {
              "entityType": "reportingPeriod",
              "startDate": "2023-01-01"
            }
          ],
          "pension": [
            {
              "entityType": "cohort",
              "refKey": "COHORT101",
              "startAmount": 60000,
              "description": "Beschrijving van cohort 101",
              "reserveIndicator": false,
              "startAge": 300,
              "endAge": 780,
              "participationStatus": "16"
            },
            {
              "entityType": "cohort",
              "refKey": "COHORT202",
              "startAmount": 75000,
              "description": "Beschrijving van cohort 202",
              "reserveIndicator": false,
              "startAge": 540,
              "endAge": 780,
              "participationStatus": "20"
            }
          ]
        },
        {
          "entityType": "scheme",
          "refKey": "SCHEME457",
          "pensionSchemeName": "PlusPensioen",
          "startAmount": 200000,
          "financialInformation": [
            {
              "entityType": "reportingPeriod",
              "startDate": "2023-01-01"
            }
          ],
          "pension": [
            {
              "entityType": "cohort",
              "refKey": "COHORTRES1",
              "startAmount": 85000,
              "description": "Beschrijving van cohort 202",
              "reserveIndicator": true,
              "reserveType": "1",
              "startAge": 45,
              "endAge": 65,
              "participationStatus": "16"
            },
            {
              "entityType": "cohort",
              "refKey": "COHORTRES2",
              "startAmount": 85000,
              "description": "Beschrijving van cohort 202",
              "reserveIndicator": true,
              "reserveType": "99",
              "reserveDescription": "specifieke reserve voor slapers",
              "startAge": 45,
              "endAge": 65,
              "participationStatus": "40"
            }
          ]
        }
      ]
    }
  ]
}
Variant: Voorbeeldbericht_2
{
  "commonTechnical": [
    {
      "entityType": "default",
      "creationDateTime": "2023-10-27T10:00:00Z",
      "messageId": "1234567890123456789012",
      "testMessage": false,
      "party": [
        {
          "entityType": "sender",
          "refKey": "ABC123",
          "rsinNumber": "123456789",
          "organizationName": "VoorbeeldBedrijf B.V.",
          "applicationSenderName": "ApplicatieNaam",
          "party": [
            {
              "entityType": "contact",
              "emailWork": "[email protected]",
              "workPhoneNumber": "+31678717607"
            }
          ]
        },
        {
          "entityType": "receiver",
          "refKey": "XYZ789",
          "rsinNumber": "987654321",
          "organizationName": "OntvangerCorp1"
        }
      ]
    }
  ],
  "commonFunctional": [
    {
      "entityType": "default",
      "afdDefinitionName": "VBPUO-001.00-Bericht_1._Vermogen_(0001a)",
      "afdDefinitionVersion": "001.05",
      "function": "01",
      "originalMessageId": "987654321"
    }
  ],
  "party": [
    {
      "entityType": "pensionProvider",
      "puvCode": "U0003",
      "rsinNumber": "222333449",
      "organizationName": "PensioenFonds B.V.",
      "pension": [
        {
          "entityType": "scheme",
          "refKey": "SCHEME456",
          "pensionSchemeName": "BasisPensioen",
          "startAmount": 100000,
          "financialInformation": [
            {
              "entityType": "reportingPeriod",
              "startDate": "2023-01-01"
            }
          ],
          "pension": [
            {
              "entityType": "cohort",
              "refKey": "COHORT101",
              "startAmount": 60000,
              "description": "Beschrijving van cohort 101",
              "reserveIndicator": false,
              "startAge": 300,
              "endAge": 780,
              "participationStatus": "16",
              "investment": [
                {
                  "entityType": "portfolio",
                  "refKey": "PF_MIX_NEUTRAL_01",
                  "description": "Neutraal Mixfonds Beleggingen Standaard",
                  "startExposureAmount": 60000
                }
              ]
            },
            {
              "entityType": "cohort",
              "refKey": "COHORT202",
              "startAmount": 75000,
              "description": "Beschrijving van cohort 202",
              "reserveIndicator": false,
              "startAge": 540,
              "endAge": 780,
              "participationStatus": "20",
              "investment": [
                {
                  "entityType": "portfolio",
                  "refKey": "PF_STOCK_GLOBAL_02",
                  "description": "Wereldwijde Aandelenportefeuille Dynamisch",
                  "startExposureAmount": 45000
                },
                {
                  "entityType": "portfolio",
                  "refKey": "PF_BOND_EURO_02",
                  "description": "Europese Obligatieportefeuille Defensief",
                  "startExposurePercentage": 0.4
                }
              ]
            }
          ]
        },
        {
          "entityType": "scheme",
          "refKey": "SCHEME457",
          "pensionSchemeName": "PlusPensioen",
          "startAmount": 200000,
          "financialInformation": [
            {
              "entityType": "reportingPeriod",
              "startDate": "2023-01-01"
            }
          ],
          "pension": [
            {
              "entityType": "cohort",
              "refKey": "COHORTRES1",
              "startAmount": 85000,
              "description": "Beschrijving van cohort RES1",
              "reserveIndicator": true,
              "reserveType": "1",
              "startAge": 45,
              "endAge": 65,
              "participationStatus": "16",
              "investment": [
                {
                  "entityType": "portfolio",
                  "refKey": "PF_RESERVE_LOWRISK_03",
                  "description": "Lage Risico Reserveportefeuille Solide",
                  "startExposurePercentage": 1
                }
              ]
            },
            {
              "entityType": "cohort",
              "refKey": "COHORTRES2",
              "startAmount": 85000,
              "description": "Beschrijving van cohort RES2",
              "reserveIndicator": true,
              "reserveType": "99",
              "reserveDescription": "specifieke reserve voor slapers",
              "startAge": 45,
              "endAge": 65,
              "participationStatus": "40",
              "investment": []
            }
          ]
        }
      ]
    }
  ]
}

Rules and consistency checks

  • The scheme total (pension.scheme.startAmount) equals the sum of the cohort amounts (pension.cohort.startAmount); differences are reconciled at aggregate level according to fund policy.
  • Every cohort has a unique refKey and is described by startAge and endAge (integers since Release 2026) and a participation status from code list ADNDNS.
  • Reserve cohorts (solidarity reserve, risk-sharing reserve, compensation deposit) are flagged with reserveIndicator and typed with reserveType from code list AFDRES.
  • Empty cohorts are either delivered explicitly with amount 0 or omitted; agree one convention per chain and record it.
  • financialInformation.reportingPeriod.startDate is the valuation date of the capital; the receiver checks that it connects to the previous period.
  • Amounts have at most two decimals (multipleOf 0.01); percentages at most twelve.

Pitfalls

  • A cohort that appears in message 2 (cashflow) but not in message 1: the receiver cannot place the mutation. Keep the cohort structure identical across messages 1, 2 and 3.
  • More than a few thousand cohorts or year cohorts make the message large: use the chunking protocol of Release 2026 instead of several separate messages.
  • The investment.portfolio block is optional and new since Release 2026; a receiver on an older release ignores it or rejects the message.

Errors and fixes

Frequently asked questions

What is the difference between message 1 (Capital) and message 2 (Cashflow)?

Message 1 is a position: the capital at the start of the period. Message 2 is a flow: the in- and outflows during the period. Together with message 4 (return) the chain closes the period: opening position + cashflow + return = closing position.

Who receives message 1: the fiduciary manager or the investment administrator?

Both, directly from the PUO. A principle of the standard is that an independent asset service provider receives the same information as the fiduciary manager, so that it can report and reconcile independently.

Is message 1 also used in the flexible premium arrangement?

Yes. The FPR messages 5 to 15 only cover the unitised flows. Collective flows such as risk premiums, reserve contributions and withdrawals from collective pools use the SPR messages 1 to 4 (manual section 4.6).

Are startAge and endAge in years or in months?

The schema prescribes integers and does not fix the unit; the official sample message uses months (300 and 780). Fix the unit in the chain agreements and keep it identical in all messages.

Change history

  • v0.2.0 (April 2024): puvCode added, refKey mandatory.
  • v1.3.0 (Release 2026): investment.portfolio added, startAge and endAge integers, chunking.
  • v1.4.0 (Release 2027): JSON Schema 2020-12, code lists via $defs.

Schema file: VBPUO-001.00-Bericht_1._Vermogen_(0001a)_v5.json · JSON-schema (001.05) · GitHub

Attribution. Source: SIVI – VB-PUO Standard. Schemas, attribute descriptions and code lists are taken unchanged from the VB-PUO Standard (owned by the Pensioenfederatie, managed by SIVI) and shown with their release and version. Explanations, examples, error descriptions and translations are by WTP Data Lab and are not part of the standard. GitHub Stichting-SIVI/VBPUOdsk · Manual · sivi.org