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.
Message structure
Entities with cardinality [min..max] and number of attributes; click for the entity page.
- 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] · 3 attr.
- financialInformation.reportingPeriod[1..1] · 1 attr.
- investment.investmentDetails[1..999] · 3 attr.
- financialTransaction.trade[1..99] · 7 attr.
- pension.scheme[1..999] · 3 attr.
Attributes(40)
| Entity | Attribute | Type | V/O | Code list | Description |
|---|---|---|---|---|---|
| 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
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
- messageId missing, empty or longer than 70 charactersSchema error on commonTechnical/0/messageId: 'must have required property' or 'must NOT have more than 70 characters'.
- Duplicate messageId after acceptance (HTTP 400 with feedback)The receiver answers HTTP 400 with a feedback message (statusType 0) to a message that looks correct in content.
- afdDefinitionVersion incorrect (001.04 versus 001.05)Schema error 'must be equal to one of the allowed values' on afdDefinitionVersion, or the receiver validates against the wrong schema and reports unknown fields.
- tradeAmount and tradeQuantity both filled or both empty (message 5)The broker rejects the order functionally (feedback statusType 0) or executes an unintended quantity.
- switchfrom without switchto, or financialInformationRef missingThe broker cannot form the switch pair and rejects the order.
- switchType invalid (AFDSWI)Schema error on switchType.
- buySellId invalidSchema error 'must be equal to one of the allowed values' on buySellId.
- tradeAmount or tradeQuantity negativeSchema-valid, but the receiver interprets the sign differently from the intention.
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
