# VOP_Request Submit a payee verification request as a Requesting PSP. This endpoint is used by the Requesting PSP or its RVM to initiate a verification check before a SEPA payment. ## Verification Types Supported - Name + IBAN: For natural persons or organizations - Organization ID + IBAN: LEI, BIC, or 14 other organization ID types - Name/ID + IBAN + With remittance info: For e-money institutions (INACNO support) ## Business Rule: Mutual Exclusivity The request must contain EITHER: - party.name for name verification - party.identification for organization ID verification These fields are mutually exclusive - including both will result in a 400 error. ## Authentication - Method: JWT Bearer Token - Header: Authorization: Bearer Endpoint: POST /vop/v1/request Version: 1.0.0 Security: bearerAuth ## Header parameters: - `Content-Type` (string, required) Media type of the request body Enum: "application/json" - `X-Request-ID` (string, required) The Requesting PSP's reference number of the VOP Request Example: "123e4567-e89b-12d3-a456-426614174000" - `X-Request-Timestamp` (string) Optional Timestamp of the VOP Request in ISO 8601 format with milliseconds. This is optional, Trendtech will generate the timestamp when forwarding to the Responding RVM. Format: UTC (YYYY-MM-DDThh:mm:ss.sssZ) or local time with UTC offset (YYYY-MM-DDThh:mm:ss.sss+/-hh:mm) Example: "2024-08-12T15:19:21.123Z" - `Authorization` (string, required) JWT bearer token for authentication Example: "Bearer 5cCI6IkpXVCIs..." ## Request fields (application/json): - `party` (object, required) Party identification information. Must contain EITHER name OR identification, but NOT both. Business Rules: - For natural persons: Only name is allowed - For organizations: Either name OR identification can be used - The fields name and identification are mutually exclusive - `partyAccount` (object, required) - `partyAccount.iban` (string, required) International Bank Account Number (ISO 13616) Example: "BE12345678901234" - `partyAgent` (object, required) - `partyAgent.financialInstitutionId` (object, required) - `partyAgent.financialInstitutionId.bicfi` (string, required) Bank Identifier Code (8 or 11 characters) Example: "ABCDBEBBXXX" - `unstructuredRemittanceInformation` (array) Represents subaccount hold by the payment counterparty. Meaningful with IBAN. Responding PSP must support this data. Usage Rule: only one entry may be used. - `requestingAgent` (object, required) ## Response 200 fields (application/json): - `partyNameMatch` (string) Party name verification result: - MTCH: Match - CMTC: Close Match (matchedName will be provided) - NMTC: No Match - NOAP: No Account Party (Verification Check Not Possible) Enum: "MTCH", "CMTC", "NMTC", "NOAP" - `partyIdMatch` (string) Party identification verification result: - MTCH: Match - NMTC: No Match - NOAP: No Account Party (Verification Check Not Possible) Enum: "MTCH", "NMTC", "NOAP" - `matchedName` (string) Example: "matchedName" ## Response 400 fields (application/json): - `type` (string, required) Example: "https://uri/errors/clientinvalid" - `code` (string, required) Error message codes Enum: "FORMAT_ERROR", "CLIENT_INVALID", "CLIENT_INCONSISTENT", "TIMESTAMP_INVALID", "INTERNAL_SERVER_ERROR", "CERT_INVALID", "CERT_REVOKED", "AUTH_ERROR", "VALIDATION_ERROR", "PSP_ERROR", "TIMEOUT_ERROR" - `title` (string) Example: "Authorization failed." - `status` (integer) Enum: 400, 401, 500 - `detail` (string) Example: "Invalid or expired token" - `instance` (string) Example: "/headers/Authorization" ## Response 401 fields (application/json): - `type` (string, required) Example: "https://uri/errors/clientinvalid" - `code` (string, required) Error message codes Enum: "FORMAT_ERROR", "CLIENT_INVALID", "CLIENT_INCONSISTENT", "TIMESTAMP_INVALID", "INTERNAL_SERVER_ERROR", "CERT_INVALID", "CERT_REVOKED", "AUTH_ERROR", "VALIDATION_ERROR", "PSP_ERROR", "TIMEOUT_ERROR" - `title` (string) Example: "Authorization failed." - `status` (integer) Enum: 400, 401, 500 - `detail` (string) Example: "Invalid or expired token" - `instance` (string) Example: "/headers/Authorization" ## Response 500 fields (application/json): - `type` (string, required) Example: "https://uri/errors/clientinvalid" - `code` (string, required) Error message codes Enum: "FORMAT_ERROR", "CLIENT_INVALID", "CLIENT_INCONSISTENT", "TIMESTAMP_INVALID", "INTERNAL_SERVER_ERROR", "CERT_INVALID", "CERT_REVOKED", "AUTH_ERROR", "VALIDATION_ERROR", "PSP_ERROR", "TIMEOUT_ERROR" - `title` (string) Example: "Authorization failed." - `status` (integer) Enum: 400, 401, 500 - `detail` (string) Example: "Invalid or expired token" - `instance` (string) Example: "/headers/Authorization"