Knowledge base MessagesEntitiesAttributesCode listsErrors and fixesProcessesRolesReleasesGlossaryEcosystemCompare Validator NL EN

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

SIVI message 5 (00541): Trade instruction (VB-PUO)

With the trade instruction the PUO places net buy and sell orders at the highest fund level: participant mutations have already been translated into net transactions per investment fund. Switches between funds are delivered as two coupled orders. The message contains only what the executing party needs; the underlying sub-ordering is done by the fund provider.

Sender
Pension administrator (PUO)
Receiver
Broker, transfer agent or order desk (in model 1b via the custodian's or fiduciary's order platform)
Timing
Ad hoc, in the model 2 monthly cycle at T-4
Arrangement
FPR model 1 (direct order model); also in model 2
afdDefinitionName
VBPUO-001.00-Bericht_5._Orderopdracht_(00541)

Message structure

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

Attributes(40)

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 pensionSchemeName string · max 60 V Name of the pension scheme.
pension.scheme tradingPortfolioId string · max 10 V Custodian's trading portfolio ID (custody and management of financial assets).
financialInformation.reportingPeriod instructionDate string · format date V Instruction date (date of the order sent by the pension administration organization).
investment.investmentDetails refKey string · max 70 V Unique reference key assigned to an entity.
investment.investmentDetails currencyType string V ISOVAL Currency
investment.investmentDetails description string · max 60 V Description.
financialTransaction.trade refKey string · max 70 V Unique reference key assigned to an entity.
financialTransaction.trade financialInformationRef array[string] O Unique referral to the refKey of one or more financialInformation entities. (AFD 2.0 only)
financialTransaction.trade tradeDate string · format date V Desired trade date.
financialTransaction.trade tradeAmount number · multipleOf 0.01 O Trade amount in the currency of the investment.
financialTransaction.trade tradeQuantity number · multipleOf 0.000001 O Number of trade units.
financialTransaction.trade switchType string O AFDSWI Switch type
financialTransaction.trade buySellId string V sell | buy | switchfrom | switchto Purchase/sales indicator.

Sample message

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

Sample source: SIVI voorbeeldbericht (Voorbeeldbericht_5-buy). Values are fictitious.

{
  "commonFunctional": [
    {
      "entityType": "default",
      "function": "01",
      "afdDefinitionName": "VBPUO-001.00-Bericht_5._Orderopdracht_(00541)",
      "afdDefinitionVersion": "001.05",
      "originalMessageId": "20240529 1532"
    }
  ],
  "commonTechnical": [
    {
      "entityType": "default",
      "messageId": "67890",
      "creationDateTime": "2024-10-07T10:00:00Z",
      "testMessage": false,
      "party": [
        {
          "entityType": "receiver",
          "refKey": "recv001",
          "rsinNumber": "123456789",
          "organizationName": "Pension Fund A"
        },
        {
          "entityType": "sender",
          "rsinNumber": "876543219",
          "organizationName": "Investment Firm B",
          "refKey": "send001",
          "applicationSenderName": "InvestAppV1"
        }
      ]
    }
  ],
  "party": [
    {
      "entityType": "pensionProvider",
      "puvCode": "U0003",
      "rsinNumber": "112233449",
      "organizationName": "Pension Provider YZ",
      "pension": [
        {
          "entityType": "scheme",
          "refKey": "schemeXYZ",
          "pensionSchemeName": "Investment Scheme A",
          "tradingPortfolioId": "Trade123",
          "financialInformation": [
            {
              "entityType": "reportingPeriod",
              "instructionDate": "2024-01-02"
            }
          ],
          "investment": [
            {
              "entityType": "investmentDetails",
              "refKey": "inv001",
              "description": "Equity Fund",
              "currencyType": "EUR",
              "financialTransaction": [
                {
                  "entityType": "trade",
                  "refKey": "trade123",
                  "buySellId": "buy",
                  "tradeDate": "2024-01-03",
                  "tradeAmount": 10000,
                  "tradeQuantity": 100
                }
              ]
            }
          ]
        }
      ]
    }
  ],
  "document": []
}
Variant: Voorbeeldbericht_5-buy-sell
{
  "commonFunctional": [
    {
      "entityType": "default",
      "function": "01",
      "afdDefinitionName": "VBPUO-001.00-Bericht_5._Orderopdracht_(00541)",
      "afdDefinitionVersion": "001.05",
      "originalMessageId": "20240529 1532"
    }
  ],
  "commonTechnical": [
    {
      "entityType": "default",
      "messageId": "67890",
      "creationDateTime": "2023-12-30T12:00:00Z",
      "testMessage": false,
      "party": [
        {
          "entityType": "receiver",
          "refKey": "recv001",
          "rsinNumber": "123456789",
          "organizationName": "Pension Fund A"
        },
        {
          "entityType": "sender",
          "rsinNumber": "876543219",
          "organizationName": "Investment Firm B",
          "refKey": "send001",
          "applicationSenderName": "InvestAppV1"
        }
      ]
    }
  ],
  "party": [
    {
      "entityType": "pensionProvider",
      "rsinNumber": "112233449",
      "puvCode": "U0003",
      "organizationName": "Pension Provider YZ",
      "pension": [
        {
          "entityType": "scheme",
          "refKey": "schemeXYZ",
          "pensionSchemeName": "Investment Scheme A",
          "tradingPortfolioId": "Trade123",
          "financialInformation": [
            {
              "entityType": "reportingPeriod",
              "instructionDate": "2024-01-02"
            }
          ],
          "investment": [
            {
              "entityType": "investmentDetails",
              "refKey": "inv001",
              "description": "Equity Fund",
              "currencyType": "EUR",
              "financialTransaction": [
                {
                  "entityType": "trade",
                  "refKey": "trade123",
                  "buySellId": "buy",
                  "tradeDate": "2024-01-03",
                  "tradeAmount": 10000,
                  "tradeQuantity": 100
                },
                {
                  "entityType": "trade",
                  "refKey": "trade124",
                  "buySellId": "sell",
                  "tradeDate": "2024-01-04",
                  "tradeAmount": 5000,
                  "tradeQuantity": 50
                }
              ]
            }
          ]
        }
      ]
    }
  ],
  "document": []
}
Variant: Voorbeeldbericht_5-buy-sell-switch
{
  "commonFunctional": [
    {
      "entityType": "default",
      "function": "01",
      "afdDefinitionName": "VBPUO-001.00-Bericht_5._Orderopdracht_(00541)",
      "afdDefinitionVersion": "001.05",
      "originalMessageId": "20240529 1532"
    }
  ],
  "commonTechnical": [
    {
      "entityType": "default",
      "messageId": "67890",
      "creationDateTime": "2024-10-07T10:00:00Z",
      "testMessage": false,
      "party": [
        {
          "entityType": "receiver",
          "refKey": "recv001",
          "rsinNumber": "123456789",
          "organizationName": "Pension Fund A"
        },
        {
          "entityType": "sender",
          "rsinNumber": "876543219",
          "organizationName": "Investment Firm B",
          "refKey": "send001",
          "applicationSenderName": "InvestAppV1"
        }
      ]
    }
  ],
  "party": [
    {
      "entityType": "pensionProvider",
      "puvCode": "U0003",
      "rsinNumber": "112233449",
      "organizationName": "Pension Provider YZ",
      "pension": [
        {
          "entityType": "scheme",
          "refKey": "schemeXYZ",
          "pensionSchemeName": "Investment Scheme A",
          "tradingPortfolioId": "Trade123",
          "financialInformation": [
            {
              "entityType": "reportingPeriod",
              "instructionDate": "2024-01-02"
            }
          ],
          "investment": [
            {
              "entityType": "investmentDetails",
              "refKey": "inv001",
              "description": "Equity Fund",
              "currencyType": "EUR",
              "financialTransaction": [
                {
                  "entityType": "trade",
                  "refKey": "trade123",
                  "buySellId": "buy",
                  "tradeDate": "2024-01-03",
                  "tradeAmount": 10000,
                  "tradeQuantity": 100
                },
                {
                  "entityType": "trade",
                  "refKey": "trade124",
                  "buySellId": "sell",
                  "tradeDate": "2024-01-04",
                  "tradeAmount": 5000,
                  "tradeQuantity": 50
                }
              ]
            }
          ]
        },
        {
          "entityType": "scheme",
          "refKey": "schemeABC",
          "pensionSchemeName": "Retirement Plan B",
          "tradingPortfolioId": "Trade456",
          "financialInformation": [
            {
              "entityType": "reportingPeriod",
              "instructionDate": "2024-01-05"
            }
          ],
          "investment": [
            {
              "entityType": "investmentDetails",
              "refKey": "inv002",
              "description": "Bond Fund",
              "currencyType": "USD",
              "financialTransaction": [
                {
                  "entityType": "trade",
                  "refKey": "trade125",
                  "buySellId": "switchfrom",
                  "tradeDate": "2024-01-06",
                  "tradeAmount": 2000,
                  "switchType": "1",
                  "financialInformationRef": [
                    "trade126",
                    "inv003"
                  ]
                }
              ]
            },
            {
              "entityType": "investmentDetails",
              "refKey": "inv003",
              "description": "Global Equity",
              "currencyType": "EUR",
              "financialTransaction": [
                {
                  "entityType": "trade",
                  "refKey": "trade126",
                  "buySellId": "switchto",
                  "tradeDate": "2024-01-06",
                  "financialInformationRef": [
                    "trade125",
                    "inv002"
                  ]
                }
              ]
            }
          ]
        }
      ]
    }
  ],
  "document": []
}

Rules and consistency checks

  • Per transaction exactly one of tradeAmount (amount) and tradeQuantity (quantity) is filled; both filled or both empty is rejected.
  • A switch consists of two orders: buySellId = switchfrom and buySellId = switchto, coupled via financialInformationRef; tradeAmount and tradeQuantity are always positive.
  • switchType (code list AFDSWI) indicates whether the switch is executed simultaneously (one-day) or sequentially.
  • investment.investmentDetails identifies the fund (refKey, description, currencyType); the identifier convention (for example ISIN) is agreed bilaterally.

Pitfalls

  • Older implementations still use buySellId = switch (Release 2026); Release 2027 only knows switchfrom and switchto. A receiver on 2027 rejects an old switch.
  • A negative amount to indicate a sale is wrong: direction is in buySellId, not in the sign.

Errors and fixes

Frequently asked questions

What happens if an order cannot be executed (unknown fund, invalid combination)?

The receiver sends a feedback message with statusType 0 (rejected) and a classified errorCode. The PUO then sends a corrected order with a new messageId.

Can I serve several funds in one message?

Yes: the message carries the investmentDetails of the fund per transaction; several transactions in one message are allowed.

Change history

  • v1.2.0 (November 2024): numberOfUnits added.
  • v1.4.0 (Release 2027): switch replaced by switchfrom/switchto with positive amounts; JSON Schema 2020-12.

Schema file: VBPUO-001.00-Bericht_5._Orderopdracht_(00541)_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