Release 2027 (pre-release) · Schemaversie001.05 · Actief
SIVI-bericht 5 (00541): Orderopdracht (VB-PUO)
Met de orderopdracht plaatst de PUO netto koop- en verkooporders op het hoogste fondsniveau: de mutaties van deelnemers zijn al vertaald naar nettotransacties per beleggingsfonds. Switches tussen fondsen worden als twee gekoppelde orders aangeleverd. Het bericht bevat alleen wat de uitvoerende partij nodig heeft; het onderliggende suborderen doet de fondsaanbieder.
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] · 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.
Attributen(40)
| 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. | |
| pension.scheme | tradingPortfolioId | string · max 10 | V | Portefeuille ID van de custodian (bewaren en beheren van financiële activa). | |
| financialInformation.reportingPeriod | instructionDate | string · format date | V | Instructiedatum (datum van de bestelling verzonden door de PUO. | |
| investment.investmentDetails | refKey | string · max 70 | V | Entiteitsreferentie is een unieke referentie sleutel die aan een entiteit wordt toegekend. | |
| investment.investmentDetails | currencyType | string | V | ISOVAL | ISO valutacodetabel (ISO 4217) |
| investment.investmentDetails | description | string · max 60 | V | Omschrijving | |
| financialTransaction.trade | refKey | string · max 70 | V | Entiteitsreferentie is een unieke referentie sleutel die aan een entiteit wordt toegekend. | |
| 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 | Gewenste handelsdatum. | |
| financialTransaction.trade | tradeAmount | number · multipleOf 0.01 | O | Aankoopbedrag in de valuta van de belegging. | |
| financialTransaction.trade | tradeQuantity | number · multipleOf 0.000001 | O | Aantal eenheden van de transactie. | |
| financialTransaction.trade | switchType | string | O | AFDSWI | Switchsoort |
| financialTransaction.trade | buySellId | string | V | sell | buy | switchfrom | switchto | Aan- en verkoopindicator. |
Voorbeeldbericht
Bron voorbeeld: SIVI voorbeeldbericht (Voorbeeldbericht_5-buy). Waarden zijn fictief.
{
"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": []
}Regels en verbandscontroles
- Per transactie is precies één van tradeAmount (bedrag) en tradeQuantity (aantal) gevuld; beide gevuld of beide leeg wordt afgewezen.
- Een switch bestaat uit twee orders: buySellId = switchfrom en buySellId = switchto, aan elkaar gekoppeld via financialInformationRef; tradeAmount en tradeQuantity zijn altijd positief.
- switchType (codelijst AFDSWI) geeft aan of de switch gelijktijdig (one-day) of volgtijdelijk wordt uitgevoerd.
- investment.investmentDetails identificeert het fonds (refKey, description, currencyType); de identifier-conventie (bijvoorbeeld ISIN) wordt bilateraal afgesproken.
Valkuilen
- Oudere implementaties gebruiken nog buySellId = switch (Release 2026); Release 2027 kent alleen switchfrom en switchto. Een ontvanger op 2027 wijst een oude switch af.
- Een negatief bedrag om een verkoop aan te duiden is fout: richting zit in buySellId, niet in het teken.
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.
- tradeAmount en tradeQuantity beide gevuld of beide leeg (bericht 5)De broker wijst de order functioneel af (feedback statusType 0) of voert een onbedoelde hoeveelheid uit.
- switchfrom zonder switchto, of financialInformationRef ontbreektDe broker kan het switchpaar niet vormen en wijst de order af.
- switchType ongeldig (AFDSWI)Schemafout op switchType.
- buySellId ongeldigSchemafout 'must be equal to one of the allowed values' op buySellId.
- tradeAmount of tradeQuantity negatiefSchema-valide, maar de ontvanger interpreteert het teken verschillend van de bedoeling.
Veelgestelde vragen
Wat gebeurt er als een order niet uitvoerbaar is (onbekend fonds, ongeldige combinatie)?
De ontvanger stuurt een feedbackbericht met statusType 0 (afgewezen) en een geclassificeerde errorCode. De PUO stuurt daarna een gecorrigeerde order met een nieuwe messageId.
Kan ik in één bericht meerdere fondsen bedienen?
Ja: het bericht bevat per transactie de investmentDetails van het fonds; meerdere transacties in één bericht zijn toegestaan.
Wijzigingsgeschiedenis
- v1.2.0 (november 2024): numberOfUnits toegevoegd.
- v1.4.0 (Release 2027): switch vervangen door switchfrom/switchto met positieve bedragen; JSON Schema 2020-12.
Schema-bestand: VBPUO-001.00-Bericht_5._Orderopdracht_(00541)_v5.json · JSON-schema (001.05) · GitHub
