Errors and fixes
VB-PUO errors and their fixes
52 errors from schema validation, consistency checks and the feedback protocol of the SIVI messages, each with symptom, cause, fix and a wrong and right example.
Schema error
- 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'.
- originalMessageId missing in feedback or resendFeedback message is itself rejected: 'must have required property originalMessageId'. On a resend (message function 54) without originalMessageId the receiver cannot see which message was sent again; the validator gives a warning for that.
- afdDefinitionName incorrect (a fixed value since the final Release 2027)Schema error 'must be equal to constant' on afdDefinitionName; the WTP Data Lab validator names the expected value. Typical of a message built on the July 2026 pre-release: it states the right version 001.05 and still fails.
- 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.
- Message function invalid (ADNFUN 01, 02, 09 or 54)Schema error on commonFunctional/0/function: value not allowed.
- creationDateTime not a valid date-timeSchema error 'must match format date-time'.
- puvCode unknown in code list AFDIDPSchema error 'must match exactly one schema in oneOf' on party/0/puvCode.
- rsinNumber not 9 positionsSchema error on rsinNumber (length) at sender, receiver or pensionProvider.
- party.sender: refKey or organizationName missingSchema error 'must have required property' on the sending party.
- party.contact: emailWork or workPhoneNumber missingSchema error on the contact under the sender.
- pension.scheme: refKey missing or pensionSchemeName longer than 60Schema error on the scheme.
- startAmount not in two decimals (multipleOf 0.01)Schema error 'must be multiple of 0.01'.
- Percentages with more than twelve decimalsSchema error 'must be multiple of' on returnPercentage, protectionReturnPercentage or excessReturnPercentage.
- Cohort cardinality exceeded (minContains / maxContains)Schema error 'must contain at least 1 valid item' or 'must contain at most 99999 valid items' on pension.
- participationStatus invalid (ADNDNS)Schema error 'must match exactly one schema in oneOf' on pension.cohort.participationStatus.
- reserveType invalid (AFDRES)Schema error 'must match exactly one schema in oneOf' on reserveType.
- netAmount or netDate missing in a cashflow block (message 2)Schema error 'must have required property' on netDate or netAmount, at a cohort, at the cashflow under the scheme or at an investment portfolio. A generic JSON Schema validator often misses the error at a cohort.
- switchType invalid (AFDSWI)Schema error on switchType.
- buySellId invalidSchema error 'must be equal to one of the allowed values' on buySellId.
- collectionAccountIban invalid or too longSchema error on the maximum length of the IBAN, or a functional rejection by the fiduciary.
- Several payments per scheme or a full IBAN under Release 2026 (message 14)Schema error on the number of payments (at most one item with entityType payment) or on the length of collectionAccountIban, with afdDefinitionVersion 001.04.
- corporateActionType invalid (AFDCOA)Schema error on corporateActionType: the value is not in the code list. For a message built on the pre-release usually together with an error on the unknown field financialInformation.
- originalMessageType 00557 rejected: feedback checked against the pre-release schemaA feedback message on a corporate action (message 15) with originalMessageType = 00557 gives a schema error on originalMessageType.
- currencyType not an ISO 4217 codeSchema error on currencyType (code list ISOVAL).
- Unknown field (additionalProperties = false)Schema error 'must NOT have additional properties' with the name of the extra field.
- entityType does not match the fixed valueSchema error 'must be equal to constant' on entityType, often followed by 'must contain at least 1 valid item' on the parent array.
- Attachment: fileExtension not pdf, csv or txt, or fileName longer than 60Schema error on document.
- Feedback: statusType not 0 or 8Schema error on statusType of the feedback message.
- errorCodeExplanation longer than 1000 charactersThe feedback message itself is rejected on length.
- Discontinued message (7, 8, 9, 11 or 12) sent under Release 2027The receiver on Release 2027 does not know the message type: 404 on the endpoint or a rejection on afdDefinitionName.
- Schema draft mismatch: definitions versus $defs, draft 2019-09 versus 2020-12The validator reports 'can't resolve reference', MissingRefError or 'no schema with key or ref' when loading the schema, before the message is tested.
Consistency check
- reportingPeriod: endDate before startDateThe schema accepts the message; the receiver rejects it functionally or books the flows in the wrong period.
- reserveIndicator without reserveType, or reserveType 99 without reserveDescriptionUnder Release 2027 an error of the consistency check at reserveType. Under Release 2026 schema-valid, but the receiver cannot type the reserve and books it as an ordinary cohort; with reserveType 99 without a description it cannot tell which reserve is meant.
- endAge smaller than startAge, or not an integerWith decimals a schema error 'must be integer'; with swapped bounds the schema accepts and the receiver rejects.
- Cohort sum deviates from the scheme totalSchema-valid, but the fiduciary or investment administrator reports a reconciliation difference at scheme level.
- Sum of weighted projected payments unequal to the hedging cashflow (message 3)The LDI manager cannot reconcile the hedge; schema-valid.
- netAmount is not the balance of contributionAmount and withdrawalAmountSchema-valid; the receiver does not know which amount is leading, or double-counts the flows.
- Scheme with both cohorts and portfolios, or without a breakdown or cashflow (messages 2 and 3)Schema-valid, but the receiver cannot assign the flows or the projection to the right route. The WTP Data Lab validator reports an error at the scheme.
- tradeAmount and tradeQuantity both filled or both empty (message 5)The receiver rejects the order functionally (feedback statusType 0) or executes an unintended quantity.
- switchfrom without switchto, or financialInformationRef missingThe receiver cannot form the switch pair and rejects the order.
- tradeAmount or tradeQuantity negativeSchema-valid, but the receiver interprets the sign differently from the intention.
- tradeQuantity × tradePrice is not tradeAmount (message 6)Schema-valid, but the PUO cannot process the confirmation consistently in the unit administration. The WTP Data Lab validator reports an error at tradeAmount.
- collectionAccountBic invalidFunctional rejection of the payment instruction.
- Chunking: chunkSequenceNumber or totalNumberOfChunks inconsistentThe receiver cannot close the series: sequence number higher than the total, duplicate sequence number or varying total within one currentChunkId.
Process / protocol
- 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.
- originalMessageId refers to an unknown messageThe receiver cannot place the feedback or correction and reports 'unknown message' functionally.
- testMessage = true in productionThe message is accepted but not processed, or ignored as a test while it was production.
- Chunking: missing chunk at the receiverThe series stays open; the content is not processed and the sender only gets feedback per received chunk.
- HTTP 400 on synchronous validation: how to read the feedback messageThe endpoint answers 400 Bad Request with a JSON body.
- HTTP 202 without callback: the asynchronous feedback does not arriveAfter 202 Accepted no feedback message with accepted or rejected follows.
- Panic scenario: the callback itself is rejectedThe receiver sends its feedback (accepted or rejected) as a callback and gets 400 back on it.
- Error discovered after acceptance: the correction protocolAn accepted and processed message turns out to be wrong in content (wrong amount, wrong cohort).
