openapi: 3.0.2
info:
  title: Payment Pre-validation
  description: |
    Payment Pre-validation:

    Payment Pre-validation API endpointss are a suite of Swift API services designed to enable banks and PSPs to verify certain data in their payment instructions against the information available to Swift (including pseudonymised account statistics), to another Payment Pre-validation customer, or an aggregator.
   
    Payment Preparation Rules:

    The API endpoint delivers all essential information needed to successfully execute a retail cross-border payment to any payment corridor. Its purpose is to bolster the reliability and accuracy of cross-border transactions to any destination and in any currency, empowering institutions to generate secure and robust payment instructions, thereby enhancing the overall customer experience.
                
    `The API supports following functionalities:`
    * Customer Payment User Interface Corridor Rules - provides the regulatory requirements and local market practices.

  contact:
    name: Developer Hub
    url: https://developer.swift.com
    email: developer-support@swift.com
  license:
    name: API Restricted License
    url: https://developer.swift.com/api-license
  version: 3.2.0
servers:
- description: URL for Apigee (SDK consumer) Pilot
  url: https://api-test.swiftnet.sipn.swift.com/swift-preval/v3
- description: URL for Apigee (SDK consumer) Live
  url: https://api.swiftnet.sipn.swift.com/swift-preval/v3
- description: URL for Sandbox Environment
  url: https://sandbox.swift.com/swift-preval/v3
- description: URL for Production Environment
  url: https://api.swift.com/swift-preval/v3
- description: URL for Test Environment
  url: https://api-pilot.swift.com/swift-preval/v3
externalDocs:
  description: |
    To make a request to this API, the client must pass the access token obtained as a result of OAuth 2.0 flows. For more information please visit the developer portal.
  url: https://docs.developer.swift.com/docs/api-guides/payment-prevalidation-api/authentication

security:
- oauthBearerToken: []

tags:
  - name: Beneficiary Account Verification (BAV)
    description: Endpoint to verify beneficiary bank account information
  - name: Data Providers
    description: Endpoint to check Data Provider information
  - name: Payment Preparation
paths:
  /accounts/verification:
    post:
      tags:
      - Beneficiary Account Verification (BAV)
      summary: Verification of a creditor/beneficiary account.
      description: |
        API resource that allows users to verify an account’s existence (identity and status), ownership and type. The verification is completely independent from any payment scheme or payment initiation. 
        
        The requesting entity is the data consumer which can be a Debtor Agent, a Creditor Agent or a Financial Institution. The responding entity is the data provider which can be a Creditor Agent, a Debtor Agent, or a third party account/name check provider.
        
        Usage guideline for Swift Payment Pre-validation:
        The requesting entity is the data consumer which can only be a Debtor Agent, a Creditor Agent, or a financial institution.  

        Synonym
        
         - Creditor: Payee
        
         - Debtor: Payer

        These are the subsets of the ISO 20022 Verification Of Party resources, as used by the SWIFT Beneficiary Account Verification service.
      operationId: verifyBeneficiaryAccount
      parameters:
        - $ref: '#/components/parameters/X-Request-ID'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AccountVerificationRequest'
            examples:
              3.1.1.1-Verify_account_using_Pre-validation_data_providers_and_central_BAV:
                $ref: '#/components/examples/3.1.1.1-Verify_account_using_Pre-validation_data_providers_and_central_BAV'
              3.1.1.2-Verify_account_and_name_using_Pre-validation_data_providers_and_Central_BAV:
                $ref: '#/components/examples/3.1.1.2-Verify_account_and_name_using_Pre-validation_data_providers_and_Central_BAV'
              3.1.1.3-Verify_account_and_id_using_Pre-validation_data_providers_and_Central_BAV:
                $ref: '#/components/examples/3.1.1.3-Verify_account_and_id_using_Pre-validation_data_providers_and_Central_BAV'
              3.1.1.4-Verify_account_and_currency_using_Pre-validation_data_providers_and_Central_BAV:
                $ref: '#/components/examples/3.1.1.4-Verify_account_and_currency_using_Pre-validation_data_providers_and_Central_BAV'
              3.1.1.5-Verify_account_and_address_using_Pre-validation_data_providers_and_Central_BAV:
                $ref: '#/components/examples/3.1.1.5-Verify_account_and_address_using_Pre-validation_data_providers_and_Central_BAV'
              3.1.1.6-Verify_account_name_id_address_and_currency_using_Pre-validation_data_providers_and_Central_BAV:
                $ref: '#/components/examples/3.1.1.6-Verify_account_name_id_address_and_currency_using_Pre-validation_data_providers_and_Central_BAV'
              3.1.1.7-Verify_account_using_Pre-validation_central_BAV_only:
                $ref: '#/components/examples/3.1.1.7-Verify_account_using_Pre-validation_central_BAV_only'
              3.1.1.8-Verify_account_and_name_using_Pre-validation_data_providers_only:
                $ref: '#/components/examples/3.1.1.8-Verify_account_and_name_using_Pre-validation_data_providers_only'
      responses:
        '200':
          description: |
            Result of a Verification of a creditor/beneficiary account request.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccountVerificationResponse'
              examples:
                3.1.2.1-PartyAccount_matches: 
                  $ref: '#/components/examples/3.1.2.1-PartyAccount_matches'
                3.1.2.2-PartyName_matches: 
                  $ref: '#/components/examples/3.1.2.2-PartyName_matches'
                3.1.2.3-PartyId_matches: 
                  $ref: '#/components/examples/3.1.2.3-PartyId_matches'
                3.1.2.4-AccountCurrency_matches: 
                  $ref: '#/components/examples/3.1.2.4-AccountCurrency_matches'
                3.1.2.5-PartyAddress_matches: 
                  $ref: '#/components/examples/3.1.2.5-PartyAddress_matches'
                3.1.2.6-All_matching_results_provided: 
                  $ref: '#/components/examples/3.1.2.6-All_matching_results_provided'
                3.1.2.7-Some_matching_results_provided: 
                  $ref: '#/components/examples/3.1.2.7-Some_matching_results_provided'
                3.1.2.8-PartyAccount_does_not_match: 
                  $ref: '#/components/examples/3.1.2.8-PartyAccount_does_not_match'
                3.1.2.9-PartyAccount_matches_Subaccount_does_not_match: 
                  $ref: '#/components/examples/3.1.2.9-PartyAccount_matches_Subaccount_does_not_match'
                3.1.2.10-PartyAccount_matches_no_other_matching_done_Snapshot:
                  $ref: '#/components/examples/3.1.2.10-PartyAccount_matches_no_other_matching_done_Snapshot'
                3.1.2.11-PartyAccount_matches_likely_to_receive_funds: 
                  $ref: '#/components/examples/3.1.2.11-PartyAccount_matches_likely_to_receive_funds'
                3.1.2.12-PartyAccount_matches_not_likely_to_receive_funds: 
                  $ref: '#/components/examples/3.1.2.12-PartyAccount_matches_not_likely_to_receive_funds'
                3.1.2.13-PartyAccount_was_not_found: 
                  $ref: '#/components/examples/3.1.2.13-PartyAccount_was_not_found'
                3.1.2.14-PartyAccount_was_not_found_out_of_scope: 
                  $ref: '#/components/examples/3.1.2.14-PartyAccount_was_not_found_out_of_scope'
                3.1.2.15-PartyAccount_matches_more_likely_to_receive_funds_mixed_transactions: 
                  $ref: '#/components/examples/3.1.2.15-PartyAccount_matches_more_likely_to_receive_funds_mixed_transactions'
                3.1.2.16-PartyAccount_matches_more_likely_to_not_receive_funds_mixed_transactions: 
                  $ref: '#/components/examples/3.1.2.16-PartyAccount_matches_more_likely_to_not_receive_funds_mixed_transactions'
        '400':
          description: Bad Request
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
              examples:
                API_Request_Is_Malformed:
                  $ref: '#/components/examples/BadRequest'
                Bad_Request_Parameters_Missing_Or_Not_Supported:
                  $ref: '#/components/examples/BadRequestParametersMissingOrNotSupported'
        '401':
          description: Unauthorized
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
              examples:
                Invalid_Token:
                  $ref: '#/components/examples/InvalidToken'
                Inconsistent_Client:
                  $ref: '#/components/examples/InconsistentClient'
        '403':
          description: Forbidden
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
              examples:
                Insufficient_Scope:
                  $ref: '#/components/examples/InsufficientScope'
        '404':
          description: Not Found
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
              examples:
                Not_Found:
                  $ref: '#/components/examples/NotFound'
        '429':
          description: Too Many Requests
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
              examples:
                Too_Many_Request:
                  $ref: '#/components/examples/TooManyRequests'
        '503':
          description: Service Unavailable
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
              examples:
                Service_Unavailable:
                  $ref: '#/components/examples/ServiceUnavailable'
                Data_Provider_Unavailable:
                  $ref: '#/components/examples/DataProviderUnavailable'
        '504':
          description: Gateway Timeout
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
              examples:
                GatewayTimeout:
                  $ref: '#/components/examples/GatewayTimeout'
        default:
          description: Service Unavailable
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
              examples:
                Service_Unavailable:
                  $ref: '#/components/examples/DefaultError'
  /data-providers/check:
    post:
      tags:
      - Data Providers
      summary: Check and get details of the Payment Pre-validation Data Provider.
      description: |
        Check whether the specified party agent is registered as a Data Provider and retrieve all relevant information regarding that Payment Pre-validation Data Provider.
        
        This service returns information only for active Data Providers. Identification is based on one or more of the following identifiers: BIC, Clearing System Member Identification, or LEI.
          
        When multiple identifiers are provided, the system checks them in the following order of precedence:
          BIC → Clearing System Member Identification → LEI
      operationId: getDataProviderDetails
      parameters:
        - $ref: '#/components/parameters/X-Request-ID'
      requestBody:
        description: |
          Request for checking the Data Provider information. 
          
          
          At least one of the party agent IDs must be provided in the request.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DataProviderRequest'
            examples:
              DataProviderRequestWithBIC:
                $ref: '#/components/examples/DataProviderRequestWithBIC'
              DataProviderRequestWithClearingSystem:
                $ref: '#/components/examples/DataProviderRequestWithClearingSystem'
              DataProviderRequestWithLEI:
                $ref: '#/components/examples/DataProviderRequestWithLEI'
              DataProviderRequestWithMultipleIdentifiers:
                $ref: '#/components/examples/DataProviderRequestWithMultipleIdentifiers'
      responses:
        '200':
          description: OK
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DataProviderResponse'
              examples:
                DataProviderActiveResponse:
                  $ref: '#/components/examples/DataProviderActiveResponse'
                DataProviderNotActiveResponse:
                  $ref: '#/components/examples/DataProviderNotActiveResponse'
        '400':
          description: Bad Request
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
              examples:
                API_Request_Is_Malformed:
                  $ref: '#/components/examples/BadRequest'
                Bad_Request_Parameters_Missing_Or_Not_Supported:
                  $ref: '#/components/examples/BadRequestParametersMissingOrNotSupported'
        '401':
          description: Unauthorized
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
              examples:
                Invalid_Token:
                  $ref: '#/components/examples/InvalidToken'
        '403':
          description: Forbidden
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
              examples:
                Insufficient_Scope:
                  $ref: '#/components/examples/InsufficientScope'
        '404':
          description: Not Found
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
              examples:
                Not_Found:
                  $ref: '#/components/examples/NotFound'
        '429':
          description: Too Many Requests
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
              examples:
                Too_Many_Request:
                  $ref: '#/components/examples/TooManyRequests'
        '503':
          description: Service Unavailable
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
              examples:
                Service_Unavailable:
                  $ref: '#/components/examples/ServiceUnavailable'
                Data_Provider_Unavailable:
                  $ref: '#/components/examples/DataProviderUnavailable'
        '504':
          description: Gateway Timeout
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
              examples:
                GatewayTimeout:
                  $ref: '#/components/examples/GatewayTimeout'
        default:
          description: Service Unavailable
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
              examples:
                Service_Unavailable:
                  $ref: '#/components/examples/DefaultError'
  /ui-corridor-rules:
    get:
      tags:
        - Payment Preparation
      summary:  Get UI Corridor Rules.
      description: |
        The endpoint enables Debtor Agents to request Creditor Market UI Payment rules (payment data) facilitating data capture prior to transaction submission, ensuring seamless end-to-end Straight-Through Processing (STP). The endpoint delivers country-specific payment regulations and information requirements, as defined by regulatory authorities and correspondent banks, to facilitate payment execution in JSON schema format.
        
        **Specifying Request Filter**

        Parameters are specified in the form name=value. A parameter list is appended to a URI after a "?". Multiple parameters are separated by "&".
                
        **Use of logical operator AND (payment-function and payment-type and country-from and country-to and currency-to)**
        
         https://api.swiftnet.sipn.swift.com/swift-preval/v1/ui-corridor-rules?payment-function=P2P&payment-type=A2A&country-from=UK&country-to=IN&currency-to=INR

        `Note that in this example, the query parameters are not URL encoded for readability.`
        
      operationId: getUICorridorRules
      parameters:
        # headers
        - $ref: '#/components/parameters/X-Request-ID'
        # query
        - $ref: '#/components/parameters/payment-function'
        - $ref: '#/components/parameters/payment-type'
        - $ref: '#/components/parameters/country-from'
        - $ref: '#/components/parameters/country-to'
        - $ref: '#/components/parameters/currency-to'
        - $ref: '#/components/parameters/version-date'
      responses:
        '200':
          description: OK
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
            X-Payment-Scheme-Unique-ID:
              $ref: '#/components/headers/X-Payment-Scheme-Tracking-ID'
          content:
            # application/schema+json:
            application/json:
              schema:
                type: object
                additionalProperties: true                  
              examples:
                Example-1:
                  $ref: '#/components/examples/GetPaymentPreparationRuleEx-1'
        '400':
          $ref: '#/components/responses/400-BadRequest'
        '401':
          $ref: '#/components/responses/401-Unauthorized'
        '403':
          $ref: '#/components/responses/403-Forbidden'
        '404':
          $ref: '#/components/responses/404-NotFound'
        '406':
          $ref: '#/components/responses/406-NotAcceptable'
        '413':
           $ref: '#/components/responses/414-URITooLong'
        '415':
          $ref: '#/components/responses/415-UnsupportedMediaType'
        '429':
          $ref: '#/components/responses/429-TooManyRequests'
        # '500':
        #   $ref: '#/components/responses/500-InternalServerError'
        '502':
          $ref: '#/components/responses/502-BadGateway'
        '503':
          $ref: '#/components/responses/503-ServiceUnavailable'
        '504':
          $ref: '#/components/responses/504-GatewayTimeout'
        # default:
        #   $ref: '#/components/responses/500-InternalServerError'
components:
  schemas:
    AccountIdentification4Choice:
      x-MXComponent: AccountIdentification4Choice
      type: object
      description: |
        Specifies the unique identification of an account as assigned by the account servicer.
      additionalProperties: true
      oneOf:
      - type: object
        additionalProperties: false
        properties:
          iban:
            x-MXComponent: IBAN2007Identifier
            description: |
              International Bank Account Number (IBAN) - identifier used internationally by financial institutions to uniquely identify the account of a customer. Further specifications of the format and content of the IBAN can be found in the standard ISO 13616 "Banking and related financial services - International Bank Account Number (IBAN)" version 1997-10-01, or later revisions.

              Based on datatype IBAN2007Identifier: The International Bank Account Number is a code used internationally by financial institutions to uniquely identify the account of a customer at a financial institution as described in the 2007 edition of the ISO 13616 standard "Banking and related financial services - International Bank Account Number (IBAN)" and replaced by the more recent edition of the standard.
            type: string
            pattern: ^[A-Z]{2,2}[0-9]{2,2}[a-zA-Z0-9]{1,30}$
        required:
        - iban
      - type: object
        additionalProperties: false
        properties:
          other:
            #  Unique identification of an account, as assigned by the account servicer, using an identification scheme.
            $ref: '#/components/schemas/GenericAccountIdentification1'
        required:
        - other
    AccountSchemeName1Choice:
      x-MXComponent: AccountSchemeName1Choice
      type: object
      description: |
        Sets of elements to identify a name of the identification scheme.
      additionalProperties: true
      oneOf:
      - type: object
        additionalProperties: false
        properties:
          code:
            x-MXComponent: ExternalAccountIdentification1Code
            description: |
              Name of the identification scheme, in a coded form as published in an external list.

              Specifies the external account identification scheme name code in the format of character string with a maximum length of 4 characters.
              The list of valid codes is an external code list published separately.
              External code sets can be downloaded from www.iso20022.org.
            type: string
            minLength: 1
            maxLength: 4
        required:
        - code
      - type: object
        additionalProperties: false
        properties:
          proprietary:
            x-MXComponent: Max35Text
            description: |
              Name of the identification scheme, in a free text form.

              Based on datatype Max35Text: Specifies a character string with a maximum length of 35 characters.
            type: string
            minLength: 1
            maxLength: 35
        required:
        - proprietary
    AccountVerificationRequest:
      x-MXComponent: PartyVerifications1SWIFT
      type: object
      description: |
        Configures a verification of a party request.
      additionalProperties: false
      properties:
        party:
          description: |
            Details of the party that will be verified.
          $ref: '#/components/schemas/PartyIdentification319'
        party_account:
          description: |
            Identification of the account of the party to be verified.
          $ref: '#/components/schemas/CashAccount217'
        party_agent:
          description: |
            Identification of the verification responder or Identification of the responding  service responder.

            Usage: Party Agent can be the account servicing agent of the account owner, or a payments service provider offering the validation of party service.
            
            Whenever clearing member identification is used as per the above guidelines, the clearing system identifiers are published as external codes on www.iso20022.org . Since December 2024, this code list also foresees the use of the country code as clearing system identifiers for countries without explicitly listed clearing systems.

          $ref: '#/components/schemas/FinancialInstitutionIdentification27'
        requestor:
          description: |
            Identification of the verification requestor.
          $ref: '#/components/schemas/OrganisationIdentification39'
        unstructured_remittance_information:
          type: array
          maxItems: 8
          description: |
            Information supplied to enable the matching/reconciliation of an entry with the items that the payment is intended to settle, such as commercial invoices in an accounts receivable system, in an unstructured form.

            Usage: Can be used to identify sub-accounts of Party Account.
          items:
            x-MXComponent: Max140Text
            type: string
            minLength: 1
            maxLength: 140
        context:
          x-MXComponent: PartyVerificationScope1Code
          description: |
            Context of the party verification process.

            Context of a party verification service, in a codified form.

            Code Name Definition:
            *`CRDT` - CreditTransfer - Verification is in scope of a credit transfer process.
            *`DDEB` - DirectDebit - Verification is in scope of a direct debit process.
            *`OTHR` - Other - Verification is in scope of a different process than those covered by the other codes.
            *`REGI` - Registration - Verification is in scope of a party account registration or maintenance process.
          type: string
          enum:
          - CRDT
          - DDEB
          - OTHR
          - REGI
        uetr:
          x-MXComponent: UUIDv4Identifier
          description: |
            Universally unique identifier to provide an end-to-end reference of a payment transaction.

            Usage: A service provider could use the UETR to link a verification of party to a payment transaction.

            Based on datatype UUIDv4Identifier: Universally Unique IDentifier (UUID) version 4, as described in IETC RFC 4122 "Universally Unique IDentifier (UUID) URN Namespace".
          type: string
          pattern: ^[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89ab][a-f0-9]{3}-[a-f0-9]{12}$
        proprietary_service_parameters:
          $ref: '#/components/schemas/ProprietaryServiceParameter2'
      required:
      - party_account
      - party_agent
      - requestor
      - context
      - proprietary_service_parameters
    AccountVerificationResponse:
      x-MXComponent: PartyVerificationsReport1SWIFT
      type: object
      description: |
        Result of a verification of party request.
      additionalProperties: false
      properties:
        party_name_match:
          x-MXComponent: ItemMatch1Code
          description: |
            Party name matching result reported by the verification service provider.

            Codified item matching level in a verification service.
            Usage: item could be for example the name or identification of a party.

            Code Name Definition:
            *`CMTC` - CloseMatch - Items closely resemble each other, as defined in the matching criteria of the verification service provider.
            *`MTCH` - Match - Items match according to the matching criteria set by the verification service provider.
            *`NMTC` - NoMatch - Items do not match according to the matching criteria set by the verification service provider.
            *`NOAP` - NotApplicable - Item verification check is not possible or not applicable.
          type: string
          enum:
          - CMTC
          - MTCH
          - NMTC
          - NOAP
        party_identification_match:
          x-MXComponent: ItemMatch2Code
          description: |
            Party identification matching result reported by the verification service provider.

            Codified item matching level in a verification service.
            Usage: item could be for example the name or identification of a party.

            Code Name Definition:
            *`MTCH` - Match - Items match according to the matching criteria set by the verification service provider.
            *`NMTC` - NoMatch - Items do not match according to the matching criteria set by the verification service provider.
            *`NOAP` - NotApplicable - Item verification check is not possible or not applicable.
          type: string
          enum:
          - MTCH
          - NMTC
          - NOAP
        account_match:
          x-MXComponent: ItemMatch3Code
          description: |
            Account matching result reported by the verification service provider. 

            Codified item matching level in a verification service.
            Usage: item could be for example the name or identification of a party.

            Code Name Definition:
            *`MTCF` - MatchFailing - Items match according to the matching criteria set by the verification service provider. However, the item is not available for its expected function.
              Example, in the context of an account verification, the account numbers would match but the account cannot send or receive funds.
            *`MTCH` - Match - Items match according to the matching criteria set by the verification service provider.
            *`MTCP` - MatchCanProcess - Items match according to the matching criteria set by the verification service provider. In additiom, the item is available for its expected function.
              Example, in the context of an account verification, the account numbers would match andthe account is able to send or receive funds.
            *`NMTC` - NoMatch - Items do not match according to the matching criteria set by the verification service provider.
            *`NOAP` - NotApplicable - Item verification check is not possible or not applicable.
            *`SNMC` - SubAccountNoMatch - Account matches, but sub account as defined in unstructured remittance information does not match.
          type: string
          enum:
          - MTCF
          - MTCH
          - MTCP
          - NMTC
          - NOAP
          - SNMC
        account_currency_match:
          x-MXComponent: ItemMatch2Code
          description: |
            Account currency matching result reported by the verification service provider.

            Codified item matching level in a verification service.
            Usage: item could be for example the name or identification of a party.

            Code Name Definition:
            *`MTCH` - Match - Items match according to the matching criteria set by the verification service provider.
            *`NMTC` - NoMatch - Items do not match according to the matching criteria set by the verification service provider.
            *`NOAP` - NotApplicable - Item verification check is not possible or not applicable.
          type: string
          enum:
          - MTCH
          - NMTC
          - NOAP
        account_owner_type:
          x-MXComponent: AccountOwnerOrganisationType1Code
          description: |
            Specifies the type of account ownership.
            
            Code Name Definition:
            *`ORGN` - Organisation - An organisation owns the account.
                Usage: This can be any kind of organisation, for example corporate, not for profit, government.
            *`PRIV` - Private - A private person owns the account.
          type: string
          enum:
          - ORGN
          - PRIV
        party_postal_address_match:
          x-MXComponent: ItemMatch1Code
          description: |
            Party postal address matching result reported by the verification service provider.

            Codified item matching level in a verification service.
            Usage: item could be for example the name or identification of a party.

            Code Name Definition:
            *`CMTC` - CloseMatch - Items closely resemble each other, as defined in the matching criteria of the verification service provider.
            *`MTCH` - Match - Items match according to the matching criteria set by the verification service provider.
            *`NMTC` - NoMatch - Items do not match according to the matching criteria set by the verification service provider.
            *`NOAP` - NotApplicable - Item verification check is not possible or not applicable.
          type: string
          enum:
          - CMTC
          - MTCH
          - NMTC
          - NOAP
        verification_source:
          x-MXComponent: VerificationSource1Code
          description: |
            Origin of the data used to verify the request.

            Codified identification of the origin of the data used by verification service provider.

            Code Name Definition:
            *`HOLD` - Holder - Verification source is the responding payments service provider itself, possibly using a solution provider.
            *`OBSD` - Observed - Verification source is derived from observed data, for example based on statistics of past transactions.
            *`SNAP` - Snapshot - Verification source is based on a copy of the data. It is a snapshot of the data at a moment in time.
          type: string
          enum:
          - HOLD
          - OBSD
          - SNAP
        verification_reason:
          type: array
          description: |
            Codified context of the verification results, informed by the verification service provider. 
            The foreseen codes are documented externally in the [Payment Pre-validation Functional Specifications - API V3](https://www2.swift.com/knowledgecentre/publications/pay_pre_vld_func_spec_api_v3).

            Based on datatype Max4Text: Specifies a character string with a maximum length of 4 characters.
          items:
            x-MXComponent: Max4Text
            type: string
            minLength: 1
            maxLength: 4
        matched_name:
          x-MXComponent: Max140Text
          description: |
            Name of the payment counterparty as reported by responding payments service provider.

            Usage: Recommended to fill in MatchedName when PartyNameMatch is CMTC : Close Match.

            Based on datatype Max140Text: Specifies a character string with a maximum length of 140 characters.
          type: string
          minLength: 1
          maxLength: 140
        matched_postal_address:
          description: |
            Information that locates and identifies a specific address, as defined by postal services.

            Usage: Recommended to fill in MatchedPostalAddress when PartyPostalAddressMatch is CMTC : Close Match.
          $ref: '#/components/schemas/PostalAddress31'
      required:
      - verification_source
    AddressType3Choice:
      x-MXComponent: AddressType3Choice
      type: object
      description: |
        Choice of formats for the type of address.
      additionalProperties: true
      oneOf:
      - type: object
        additionalProperties: false
        properties:
          code:
            x-MXComponent: AddressType2Code
            description: |
              Type of address expressed as a code.

              Specifies the type of address.

              Code Name Definition:
              *`ADDR` - Postal - Address is the complete postal address.
              *`BIZZ` - Business - Address is the business address.
              *`DLVY` - DeliveryTo - Address is the address to which delivery is to take place.
              *`HOME` - Residential - Address is the home address.
              *`MLTO` - MailTo - Address is the address to which mail is sent.
              *`PBOX` - POBox - Address is a postal office (PO) box.
            type: string
            enum:
            - ADDR
            - BIZZ
            - DLVY
            - HOME
            - MLTO
            - PBOX
        required:
        - code
      - type: object
        additionalProperties: false
        properties:
          proprietary:
            #  Type of address expressed as a proprietary code.
            $ref: '#/components/schemas/GenericIdentification30'
        required:
        - proprietary
    BICFIDec2014Identifier:
      type: string
      description: 'Code allocated to a financial institution by the ISO 9362 Registration
        Authority as described in ISO 9362: 2014 - "Banking - Banking telecommunication
        messages - Business identifier code (BIC)".'
      pattern: ^[A-Z0-9]{4,4}[A-Z]{2,2}[A-Z0-9]{2,2}([A-Z0-9]{3,3}){0,1}$
    CashAccount217:
      x-MXComponent: CashAccount217
      type: object
      description: |
        Provides the details to identify an account.
      additionalProperties: false
      properties:
        identification:
          #  Unique and unambiguous identification of the account between the account owner and the account servicer.
          $ref: '#/components/schemas/AccountIdentification4Choice'
        currency:
          x-MXComponent: ActiveOrHistoricCurrencyCode
          description: |
            Identification of the currency in which the account is held. 

            Usage: Currency can be used in case the initiating party needs to identify which currency needs to be used for settlement on the account.

            A code allocated to a currency by a Maintenance Agency under an international identification scheme, as described in the latest edition of the international standard ISO 4217 "Codes for the representation of currencies and funds".
          type: string
          pattern: ^[A-Z]{3,3}$
        proxy:
          #  'Specifies an alternate assumed name for the identification of the account.'
          $ref: '#/components/schemas/ProxyAccountIdentification1'
    ClearingSystemIdentification2Choice:
      x-MXComponent: ClearingSystemIdentification2Choice
      type: object
      description: |
        Choice of a clearing system identifier.
      additionalProperties: true
      oneOf:
      - type: object
        additionalProperties: false
        properties:
          code:
            x-MXComponent: ExternalClearingSystemIdentification1Code
            description: |
              Identification of a clearing system, in a coded form as published in an external list.

              Specifies the clearing system identification code, as published in an external clearing system identification code list.
              External code sets can be downloaded from www.iso20022.org.
            type: string
            minLength: 1
            maxLength: 5
        required:
        - code
      - type: object
        additionalProperties: false
        properties:
          proprietary:
            x-MXComponent: Max35Text
            description: |
              Identification code for a clearing system, that has not yet been identified in the list of clearing systems.

              Based on datatype Max35Text: Specifies a character string with a maximum length of 35 characters.
            type: string
            minLength: 1
            maxLength: 35
        required:
        - proprietary
    ClearingSystemMemberIdentification2:
      x-MXComponent: ClearingSystemMemberIdentification2
      type: object
      description: |
        Unique identification, as assigned by a clearing system, to unambiguously identify a member of the clearing system.
      additionalProperties: false
      properties:
        clearing_system_identification:
          #  Specification of a pre-agreed offering between clearing agents or the channel through which the payment instruction is processed.
          $ref: '#/components/schemas/ClearingSystemIdentification2Choice'
        member_identification:
          x-MXComponent: Max35Text
          description: |
            Identification of a member of a clearing system.

            Based on datatype Max35Text: Specifies a character string with a maximum length of 35 characters.
          type: string
          minLength: 1
          maxLength: 35
      required:
      - member_identification
    DataProviderRequest:
      type: object
      description: Request body for Data Provider lookup
      additionalProperties: false
      properties:
        party_agent:
          $ref: '#/components/schemas/FinancialInstitutionIdentification27'
    DataProviderResponse:
      type: object
      description: |
        Identification of the Data Provider for the Payment Pre-validation services, with details about the Data Provider implementation.
      additionalProperties: false
      properties:
        party_agent_match:
          type: string
          description: |
            Indicates if the Party Agent provided in the request resulted in a match on the active data providers or not.
            
            `MTCH` - Match - There is a match on the Party Agent provided in the request and the Party Agent is an active Data Provider.
            
            `NMTC` - NoMatch - There is no match on the Party Agent provided in the request and the Party Agent is not an active Data Provider.
          minLength: 1
          maxLength: 4
        party_agent_id:
          type: string
          description: |
            Identification of a financial institution.
          minLength: 1
          maxLength: 35
        party_agent_id_type:
          type: string
          description: |
            Code defining the identification type of a financial institution:
            
              `BIC` - The party agent is identified through a Business Identifier Code
              
              `LEI` - The party agent is identified through a Legal Entity Identifier
              
              `CLG` - The party agent is identified through a Clearing System Member Identification
          minLength: 1
          maxLength: 3
        data_provider_name:
          type: string
          description: |
            Name of the data provider.
          minLength: 1
          maxLength: 140
        data_provider_institution_bic:
          # Identifier of the Data provider.
          $ref: '#/components/schemas/BICFIDec2014Identifier'
        data_provider_type:
          type: string
          description: |
            Indicates if the Data Provider services are directly offered by the financial institution or through an aggregator.
            
              `AGG` - The data provider is an aggregator
              
              `DIR` - The data provider is the financial institution holding the account
          minLength: 1
          maxLength: 3
        support_channel:
          type: string
          description: |
            Indicates the support channel of the data provider.
          minLength: 1
          maxLength: 256
        environment:
          type: string
          description: |
            The environment in which the data provider is active:
            
              `LIVE` - If the data provder is active in LIVE environment.
              
              `PILOT` - If the data provder is active in PILOT or TEST environment.
          minLength: 1
          maxLength: 5
        versions:
          type: array
          items:
            $ref: '#/components/schemas/VersionDetails'
          description: List of version configurations for this environment
    FinancialInstitutionIdentification27:
      x-MXComponent: FinancialInstitutionIdentification27
      type: object
      description: |
        Specifies the details to identify a financial institution.
        Derived from FinancialInstitutionIdentification23.
      additionalProperties: false
      properties:
        bicfi:
          x-MXComponent: BICFIDec2014Identifier
          description: |
            Code allocated to a financial institution by the ISO 9362 Registration Authority as described in ISO 9362 "Banking - Banking telecommunication messages - Business identifier code (BIC)".

            Based on datatype BICFIDec2014Identifier: Code allocated to a financial institution by the ISO 9362 Registration Authority as described in ISO 9362: 2014 - "Banking - Banking telecommunication messages - Business identifier code (BIC)".
          type: string
          pattern: ^[A-Z0-9]{4,4}[A-Z]{2,2}[A-Z0-9]{2,2}([A-Z0-9]{3,3}){0,1}$
        clearing_system_member_identification:
          #  Information used to identify a member within a clearing system.
          $ref: '#/components/schemas/ClearingSystemMemberIdentification2'
        lei:
          x-MXComponent: LEIIdentifier
          description: |
            Legal entity identifier of the financial institution.

            Based on datatype LEIIdentifier: Legal Entity Identifier is a code allocated to a party as described in ISO 17442 "Financial Services - Legal Entity Identifier (LEI)".
          type: string
          pattern: ^[A-Z0-9]{18,18}[0-9]{2,2}$
    GenericAccountIdentification1:
      x-MXComponent: GenericAccountIdentification1
      type: object
      description: |
        Information related to a generic account identification.
      additionalProperties: false
      properties:
        identification:
          x-MXComponent: Max34Text
          description: |
            Identification assigned by an institution.

            Based on datatype Max34Text: Specifies a character string with a maximum length of 34 characters.
          type: string
          minLength: 1
          maxLength: 34
        scheme_name:
          #  Name of the identification scheme.
          $ref: '#/components/schemas/AccountSchemeName1Choice'
        issuer:
          x-MXComponent: Max35Text
          description: |
            Entity that assigns the identification.

            Based on datatype Max35Text: Specifies a character string with a maximum length of 35 characters.
          type: string
          minLength: 1
          maxLength: 35
      required:
      - identification
    GenericIdentification30:
      x-MXComponent: GenericIdentification30
      type: object
      description: |
        Information related to an identification, for example, party identification or account identification.
      additionalProperties: false
      properties:
        identification:
          x-MXComponent: Exact4AlphaNumericText
          description: |
            Proprietary information, often a code, issued by the data source scheme issuer.

            Based on datatype Exact4AlphaNumericText: Specifies an alphanumeric string with a length of 4 characters.
          type: string
          pattern: ^[a-zA-Z0-9]{4}$
        issuer:
          x-MXComponent: Max35Text
          description: |
            Entity that assigns the identification.

            Based on datatype Max35Text: Specifies a character string with a maximum length of 35 characters.
          type: string
          minLength: 1
          maxLength: 35
        scheme_name:
          x-MXComponent: Max35Text
          description: |
            Short textual description of the scheme.

            Based on datatype Max35Text: Specifies a character string with a maximum length of 35 characters.
          type: string
          minLength: 1
          maxLength: 35
      required:
      - identification
      - issuer
    GenericOrganisationIdentification3:
      x-MXComponent: GenericOrganisationIdentification3
      type: object
      description: |
        Information related to an identification of an organisation.
      additionalProperties: false
      properties:
        identification:
          x-MXComponent: Max256Text
          description: |
            Identification assigned by an institution.

            Based on datatype Max256Text: Specifies a character string with a maximum length of 256 characters.
          type: string
          minLength: 1
          maxLength: 256
        scheme_name:
          #  Name of the identification scheme.
          $ref: '#/components/schemas/OrganisationIdentificationSchemeName1Choice'
        issuer:
          x-MXComponent: Max35Text
          description: |
            Entity that assigns the identification.

            Based on datatype Max35Text: Specifies a character string with a maximum length of 35 characters.
          type: string
          minLength: 1
          maxLength: 35
      required:
      - identification
    GenericPersonIdentification2:
      x-MXComponent: GenericPersonIdentification2
      type: object
      description: |
        Information related to an identification of a person.
      additionalProperties: false
      properties:
        identification:
          x-MXComponent: Max256Text
          description: |
            Unique and unambiguous identification of a person.

            Based on datatype Max256Text: Specifies a character string with a maximum length of 256 characters.
          type: string
          minLength: 1
          maxLength: 256
        scheme_name:
          # description: Name of the identification scheme.
          $ref: '#/components/schemas/PersonIdentificationSchemeName1Choice'
        issuer:
          x-MXComponent: Max35Text
          description: |
            Entity that assigns the identification.

            Based on datatype Max35Text: Specifies a character string with a maximum length of 35 characters.
          type: string
          minLength: 1
          maxLength: 35
      required:
      - identification
    OrganisationIdentification39:
      x-MXComponent: OrganisationIdentification39
      type: object
      description: |
        Unique and unambiguous way to identify an organisation.
      additionalProperties: false
      properties:
        any_bic:
          x-MXComponent: AnyBICDec2014Identifier
          description: |
            Business identification code of the organisation.

            Based on datatype AnyBICDec2014Identifier: Code allocated to a financial or non-financial institution by the ISO 9362 Registration Authority, as described in ISO 9362: 2014 - "Banking - Banking telecommunication messages - Business identifier code (BIC)".
          type: string
          pattern: ^[A-Z0-9]{4,4}[A-Z]{2,2}[A-Z0-9]{2,2}([A-Z0-9]{3,3}){0,1}$
        lei:
          x-MXComponent: LEIIdentifier
          description: |
            Legal entity identification as an alternate identification for a party.

            Based on datatype LEIIdentifier: Legal Entity Identifier is a code allocated to a party as described in ISO 17442 "Financial Services - Legal Entity Identifier (LEI)".
          type: string
          pattern: ^[A-Z0-9]{18,18}[0-9]{2,2}$
        other:
          # description: |
          #  Unique identification of an organisation, as assigned by an institution, using an identification scheme.
          $ref: '#/components/schemas/GenericOrganisationIdentification3'
    OrganisationIdentificationSchemeName1Choice:
      x-MXComponent: OrganisationIdentificationSchemeName1Choice
      type: object
      description: |
        Sets of elements to identify a name of the organisation identification scheme.
      additionalProperties: true
      oneOf:
      - type: object
        additionalProperties: false
        properties:
          code:
            x-MXComponent: ExternalOrganisationIdentification1Code
            description: |
              Name of the identification scheme, in a coded form as published in an external list.

              Specifies the external organisation identification scheme name code in the format of character string with a maximum length of 4 characters.
              The list of valid codes is an external code list published separately.
              External code sets can be downloaded from www.iso20022.org.
            type: string
            minLength: 1
            maxLength: 4
        required:
        - code
      - type: object
        additionalProperties: false
        properties:
          proprietary:
            x-MXComponent: Max35Text
            description: |
              Name of the identification scheme, in a free text form.

              Based on datatype Max35Text: Specifies a character string with a maximum length of 35 characters.
            type: string
            minLength: 1
            maxLength: 35
        required:
        - proprietary
    Party62Choice:
      x-MXComponent: Party62Choice
      type: object
      description: |
        Specifies the identification of a person or an organisation.
      additionalProperties: true
      oneOf:
      - type: object
        additionalProperties: false
        properties:
          organisation_identification:
            # description: Unique and unambiguous way to identify an organisation.
            $ref: '#/components/schemas/OrganisationIdentification39'
        required:
        - organisation_identification
      - type: object
        additionalProperties: false
        properties:
          private_identification:
            # description: Unique and unambiguous identification of a person, for example a passport.
            $ref: '#/components/schemas/GenericPersonIdentification2'
        required:
        - private_identification
    PartyIdentification319:
      x-MXComponent: PartyIdentification319
      type: object
      description: |
        Specifies the identification of a person or an organisation.
      additionalProperties: false
      properties:
        name:
          x-MXComponent: Max140Text
          description: |
            Name by which a party is known and which is usually used to identify that party.

            Based on datatype Max140Text: Specifies a character string with a maximum length of 140 characters.
          type: string
          minLength: 1
          maxLength: 140
        postal_address:
          # description:
            # Information that locates and identifies a specific address, as defined by postal services.
            # Usage rule: Post Code or Town Name must be present. Both Post Code and Town Name can be present.
          $ref: '#/components/schemas/PostalAddress31'
        identification:
          # description: Unique and unambiguous identification of a party.
          $ref: '#/components/schemas/Party62Choice'
    PersonIdentificationSchemeName1Choice:
      x-MXComponent: PersonIdentificationSchemeName1Choice
      type: object
      description: Sets of elements to identify a name of the identification scheme.
      additionalProperties: true
      oneOf:
      - type: object
        additionalProperties: false
        properties:
          code:
            x-MXComponent: ExternalPersonIdentification1Code
            description: |
              Name of the identification scheme, in a coded form as published in an external list.

              Specifies the external person identification scheme name code in the format of character string with a maximum length of 4 characters.
              The list of valid codes is an external code list published separately.
              External code sets can be downloaded from www.iso20022.org.
            type: string
            minLength: 1
            maxLength: 4
        required:
        - code
      - type: object
        additionalProperties: false
        properties:
          proprietary:
            x-MXComponent: Max35Text
            description: |
              Name of the identification scheme, in a free text form.

              Based on datatype Max35Text: Specifies a character string with a maximum length of 35 characters.
            type: string
            minLength: 1
            maxLength: 35
        required:
        - proprietary
    PostalAddress31:
      x-MXComponent: PostalAddress31
      type: object
      description: |
        Information that locates and identifies a specific address, as defined by postal services.
      additionalProperties: false
      properties:
        address_type:
          #  Identifies the nature of the postal address.
          $ref: '#/components/schemas/AddressType3Choice'
        care_of:
          x-MXComponent: Max140Text
          description: |
            Identifies an addressee that is accepting the correspondence for the intended recipient. Using care of ensures the correspondence reaches the right recipient rather than getting returned to the sender.

            Based on datatype Max140Text: Specifies a character string with a maximum length of 140 characters.
          type: string
          minLength: 1
          maxLength: 140
        department:
          x-MXComponent: Max70Text
          description: |
            Identification of a division of a large organisation or building.

            Based on datatype Max70Text: Specifies a character string with a maximum length of 70characters.
          type: string
          minLength: 1
          maxLength: 70
        sub_department:
          x-MXComponent: Max70Text
          description: |
            Identification of a sub-division of a large organisation or building.

            Based on datatype Max70Text: Specifies a character string with a maximum length of 70characters.
          type: string
          minLength: 1
          maxLength: 70
        street_name:
          x-MXComponent: Max140Text
          description: |
            Name of a street or thoroughfare.

            Based on datatype Max140Text: Specifies a character string with a maximum length of 140 characters.
          type: string
          minLength: 1
          maxLength: 140
        building_number:
          x-MXComponent: Max16Text
          description: |
            Number that identifies the position of a building on a street.

            Based on datatype Max16Text: Specifies a character string with a maximum length of 16 characters.
          type: string
          minLength: 1
          maxLength: 16
        building_name:
          x-MXComponent: Max140Text
          description: |
            Name of the building or house.

            Based on datatype Max140Text: Specifies a character string with a maximum length of 140 characters.
          type: string
          minLength: 1
          maxLength: 140
        floor:
          x-MXComponent: Max70Text
          description: |
            Floor or storey within a building.

            Based on datatype Max70Text: Specifies a character string with a maximum length of 70characters.
          type: string
          minLength: 1
          maxLength: 70
        unit_number:
          x-MXComponent: Max16Text
          description: |
            Identifies a flat or dwelling within the building.

            Based on datatype Max16Text: Specifies a character string with a maximum length of 16 characters.
          type: string
          minLength: 1
          maxLength: 16
        post_box:
          x-MXComponent: Max16Text
          description: |
            Numbered box in a post office, assigned to a person or organisation, where letters are kept until called for.

            Based on datatype Max16Text: Specifies a character string with a maximum length of 16 characters.
          type: string
          minLength: 1
          maxLength: 16
        room:
          x-MXComponent: Max70Text
          description: |
            Building room number.

            Based on datatype Max70Text: Specifies a character string with a maximum length of 70characters.
          type: string
          minLength: 1
          maxLength: 70
        post_code:
          x-MXComponent: Max16Text
          description: |
            Identifier consisting of a group of letters and/or numbers that is added to a postal address to assist the sorting of mail.

            Usage rule: Post Code or Town Name must be present. Both Post Code and Town Name can be present.

            Based on datatype Max16Text: Specifies a character string with a maximum length of 16 characters.
          type: string
          minLength: 1
          maxLength: 16
        town_name:
          x-MXComponent: Max140Text
          description: |
            Name of a built-up area, with defined boundaries, and a local government.

            Usage rule: Post Code or Town Name must be present. Both Post Code and Town Name can be present.

            Based on datatype Max140Text: Specifies a character string with a maximum length of 140 characters.
          type: string
          minLength: 1
          maxLength: 140
        town_location_name:
          x-MXComponent: Max140Text
          description: |
            Specific location name within the town.

            Based on datatype Max140Text: Specifies a character string with a maximum length of 140 characters.
          type: string
          minLength: 1
          maxLength: 140
        district_name:
          x-MXComponent: Max140Text
          description: |
            Identifies a subdivision within a country sub-division.

            Based on datatype Max140Text: Specifies a character string with a maximum length of 140 characters.
          type: string
          minLength: 1
          maxLength: 140
        country_sub_division:
          x-MXComponent: Max35Text
          description: |
            Identifies a subdivision of a country such as state, region, county.

            Based on datatype Max35Text: Specifies a character string with a maximum length of 35 characters.
          type: string
          minLength: 1
          maxLength: 35
        country:
          x-MXComponent: CountryCode
          description: |
            Nation with its own government.

            Code to identify a country, a dependency, or another area of particular geopolitical interest, on the basis of country names obtained from the United Nations (ISO 3166, Alpha-2 code).
          type: string
          pattern: ^[A-Z]{2,2}$
        address_line:
          type: array
          maxItems: 7
          description: |
            Information that locates and identifies a specific address, as defined by postal services, presented in free format text.

            Based on datatype Max70Text: Specifies a character string with a maximum length of 70characters.
          items:
            x-MXComponent: Max70Text
            type: string
            minLength: 1
            maxLength: 70
      required:
      - country
    ProprietaryServiceParameter2:
      x-MXComponent: ProprietaryServiceParameter2
      type: object
      description: |
        Proprietary configuration parameters used by the service provider.

        Usage for SWIFT BAV service V3:
        Code: SCHM, for VerificationScheme
        Qualifier: PVAH, PVHI, PVAG

        *'PVAH'*-Scheme is Swift Payment Pre-validation. Validation source must be data provider or aggregator for data providers first and Central BAV only that uses statistics of past transactions second.
        *'PVHI'*-Scheme is Swift Payment Pre-validation. Validation source must be Central BAV only that uses statistics of past transactions.
        *'PVAG'*-Scheme is Swift Payment Pre-validation. Validation source must be data provider or aggregator for data providers only.
      additionalProperties: false
      properties:
        code:
          x-MXComponent: Max4Text
          description: |
            Proprietary code that defines a category of functionality in the service.

            Usage for SWIFT BAV service V3:
            Code: SCHM, for VerificationScheme
          type: string
          enum:
          - SCHM
        qualifier:
          x-MXComponent: Max4Text
          description: |
            Proprietary service parameter qualifier. 

            Usage: to further subcategorise a service parameter code.

            Usage for SWIFT BAV service V3:
            Qualifier: PVAH, PVHI, PVAG

            *'PVAH'*-Scheme is Swift Payment Pre-validation. Validation source must be data provider or aggregator for data providers first and Central BAV only that uses statistics of past transactions second.
            *'PVHI'*-Scheme is Swift Payment Pre-validation. Validation source must be Central BAV only that uses statistics of past transactions.
            *'PVAG'*-Scheme is Swift Payment Pre-validation. Validation source must be data provider or aggregator for data providers only.
          type: string
          minLength: 1
          maxLength: 4
      required:
      - code
      - qualifier
    ProxyAccountIdentification1:
      x-MXComponent: ProxyAccountIdentification1
      type: object
      description: |
        Information related to a proxy  identification of the account.
      additionalProperties: false
      properties:
        type:
          #  Type of the proxy identification.
          $ref: '#/components/schemas/ProxyAccountType1Choice'
        identification:
          x-MXComponent: Max2048Text
          description: |
            Identification used to indicate the account identification under another specified name.

            Based on datatype Max2048Text: Specifies a character string with a maximum length of 2048 characters.
          type: string
          minLength: 1
          maxLength: 2048
      required:
      - identification
    ProxyAccountType1Choice:
      x-MXComponent: ProxyAccountType1Choice
      type: object
      description: |
        Specifies the scheme used for the identification of an account alias.
      additionalProperties: true
      oneOf:
      - type: object
        additionalProperties: false
        properties:
          code:
            x-MXComponent: ExternalProxyAccountType1Code
            description: |
              Name of the identification scheme, in a coded form as published in an external list.

              Specifies the external proxy account type code, as published in the proxy account type external code set.
              External code sets can be downloaded from www.iso20022.org.
            type: string
            minLength: 1
            maxLength: 4
        required:
        - code
      - type: object
        additionalProperties: false
        properties:
          proprietary:
            x-MXComponent: Max35Text
            description: |
              Name of the identification scheme, in a free text form.

              Based on datatype Max35Text: Specifies a character string with a maximum length of 35 characters.
            type: string
            minLength: 1
            maxLength: 35
        required:
        - proprietary
    VersionConfiguration:
      type: object
      description: |
        Configuration details for a specific version
      properties:
        verification_source:
          type: string
          description: |
            Indicates the source of verification
              `SNAP` - Snapshot of the account data
              `HOLD` - Holder of the account data
              `OBSD` - Observed based on historical transactions
              `PEND` - Data collection is in progress or is unavailable
          minLength: 1
          maxLength: 4
        country_scope:
          type: string
          description: |
            Indicates the countries supported or not supported by the Data Provider. If empty, there is no restriction on the requestor country.
          minLength: 1
          maxLength: 512
        account_owner_type:
          type: string
          description: |
            Indicates the type of account ownership supported for verification by the Data Provider.
              `ORGN` -  Organisation - An organisation owns the account. Usage: This can be any kind of organisation, for example corporate, not for profit, government.
              `PRIV` - Private - A private person owns the account.
              `ANYY` - The two options are available for verification (e.g., Organisation and Private).
              `PEND` - Data collection is in progress or is unavailable.
          minLength: 1
          maxLength: 4
        party_name_match:
          type: string
          description: |
            Indicates if the Data provider supports Party Name match.
              `Y`-Data Provider supports name match
              `N`-Data Provider does not support name match
          minLength: 1
          maxLength: 1
        party_name_close_match:
          type: string
          description: |
            Indicates if the Data provider supports close matching for party name.
              `Y`-Data Provider supports close name matching
              `N`-Data Provider does not support close name matching
          minLength: 1
          maxLength: 1
        party_postal_address_match:
          type: string
          description: |
            Indicates if the Data provider supports Party postal address match.
              `Y`-Data Provider supports party postal address match
              `N`-Data Provider does not support party postal address match
          minLength: 1
          maxLength: 1
        account_currency_match:
          type: string
          description: |
            Indicates if the Data provider supports Account currency match.
              `Y`-Data Provider supports account currency match
              `N`-Data Provider does not support account currency match
          minLength: 1
          maxLength: 1
        party_identification_match:
          type: string
          description: |
            Indicates if the Data provider supports Party identification match.
              `Y`-Data Provider supports party identification match
              `N`-Data Provider does not support party identification match
          minLength: 1
          maxLength: 1
        additional_information:
          type: string
          description: |
            Provides any other relevant information applicable to the data provider.
          minLength: 1
          maxLength: 1024
    VersionDetails:
      type: object
      description: Version-specific configuration details
      properties:
        version:
          type: string
          description: |
            Indicates the API version that the Data Provider is supporting on the Payment Pre-validation Data Provider services.
            
              `v3` - The data provider is supporting BAV v3
              
              `v2` - The data provider is supporting BAV v2
          minLength: 1
          maxLength: 4
        configuration:
          $ref: '#/components/schemas/VersionConfiguration'
      required:
        - version
        - configuration
    #########################
    #   Common Components   #
    #########################
    Errors:
      description: "Container to return multiple ErrorMessage object. Collection of error can be useful when API needs to return multiple errors, for example validation errors. When the response code conveys application-specific functional semantics and consumer can parse machine-readable error code, this block can be useful. The error response must contain at least one error object."
      type: array
      items:
        $ref: "#/components/schemas/ErrorMessage"
    ErrorMessage:
      description: |
        Custom error schema to support detailed error message.
      type: object
      readOnly: true
      additionalProperties: false
      properties:
        severity:
          description: |
            Specifies the severity of the error.
          type: string
          enum:
          - Fatal
          - Transient
          - Logic
        code:
          description: |
            Specifies the custom error code as defined by the service provider.
          type: string
          minLength: 3
          maxLength: 70
        text:
          description: |
            Specifies the detail error message identifying the cause of the error.
          type: string
          minLength: 1
          maxLength: 255
        user_message:
          description: |
            A human-readable text describing the error.
          type: string
          minLength: 1
          maxLength: 255
        more_info:
          description: |
            Specifies an URL to find more information about the error.
          type: string
          format: uri
      required:
        - code
        - severity
        - text
  headers:
    X-Request-ID:
      description: The header is a unique identifier used to track an API request throughout its entire lifecycle. It serves as a "trace" for a given request/response cycle, allowing each system component that handles the request to associate logs, metrics, and actions with the same ID, facilitating debugging, monitoring, and tracing across distributed systems.
      schema:
        type: string
        maxLength: 75
      example: 550e8400-e29b-41d4-a716-446655440000
    X-Payment-Scheme-Tracking-ID:
      description: The header provides a unique identifier for a corridor rule version used to track an API request. As the request flows through different API endpoint, the trace ID should be passed along in the headers of any subsequent API requests. The trace ID can be used in centralised log aggregators to group and search for logs related to the same request. A UUID value that follows the RFC 4122 version 4 specification and compacted by removing all dashes.
      schema:
        type: string
        maxLength: 32
      example: 550e8400e29b41d4a716446655440000
  parameters:
    X-Request-ID:
      description: |
        The header is a unique identifier used to track an API request throughout its entire lifecycle. It serves as a "trace" for a given request/response cycle, allowing each system component that handles the request to associate logs, metrics, and actions with the same ID, facilitating debugging, monitoring, and tracing across distributed systems. The id is an uuid as described in IETF RFC 4122 Universally Unique Identifier (UUID) URN Namespace.Pattern - ^[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89ab][a-f0-9]{3}-[a-f0-9]{12}$.

        Usage -
        - When a consumer makes an API request, the client or API gateway generates a unique trace ID and includes it in the X-Request-ID header.
        - If the request does not include a trace ID (e.g., from consumer), a new trace ID should be created by the API Gateway and returned to the client in the response header for future tracking.
      name: X-Request-ID
      in: header
      schema:
        type: string
        format: uuid
      example: 550e8400-e29b-41d4-a716-446655440000
    payment-function:
        in: query
        name: payment-function
        description: |
          Provides information on how payments are executed. Payments can be grouped based on the method or mechanism used to transfer funds, the parties involved, and the type of transaction.
        required: true
        schema:
          type: string
          enum:
            - P2P
    payment-type:
        in: query
        name: payment-type
        description: |
          Describe how the payment is structured (Pay to Account, Pay to Wallet, Pay to Card).
        required: true
        schema:
          type: string
          enum:
            - 'A2A'
            - 'A2W'
    country-from:
        in: query
        name: country-from
        description: |
          Specify the country from which the payment is originating.
        required: true
        schema:
          type: string
          pattern: ^[A-Z]{2,2}$
        example: 'GB'
    country-to:
        in: query
        name: country-to
        description: |
          Specify the country to which the payment is to be directed.
        required: true
        schema:
          type: string
          pattern: ^[A-Z]{2,2}$
        example: 'IN'
    currency-to:
        in: query
        name: currency-to
        description: |
          Specify the currency code for the conversion of funds into the designated currency.
        required: true
        schema:
          type: string
          pattern: ^[A-Z]{3,3}$
        example: 'INR'
    version-date:
        in: query
        name: version-date
        description: |
          To request a specific historical version, specify the date in the ISO 8601 standard format YYYY-MM-DD. For instance, for a version from the 1st of January 2026, specify:

          2026-01-01

          The date cannot be in the future. If the date parameter is omitted, the latest version will be returned by default.
        required: false
        schema:
          type: string
          format: date
        example: '2026-01-01'
  responses:
    400-BadRequest:
      description: 'Bad Request'
      headers:
        X-Request-ID:
          $ref: '#/components/headers/X-Request-ID'
      content:
        application/json:
          schema:
            oneOf:
              - $ref: '#/components/schemas/Errors'
              - $ref: '#/components/schemas/ErrorMessage'              
    401-Unauthorized:
      description: 'Unauthorized'
      headers:
        X-Request-ID:
          $ref: '#/components/headers/X-Request-ID'
      content:
        application/json:
          schema:
            oneOf:
              - $ref: '#/components/schemas/Errors'
              - $ref: '#/components/schemas/ErrorMessage'              
    403-Forbidden:
      description: 'Forbidden'
      headers:
        X-Request-ID:
          $ref: '#/components/headers/X-Request-ID'
      content:
        application/json:
          schema:
            oneOf:
              - $ref: '#/components/schemas/Errors'
              - $ref: '#/components/schemas/ErrorMessage'              
    404-NotFound:
      description: 'Not Found'
      headers:
        X-Request-ID:
          $ref: '#/components/headers/X-Request-ID'
      content:
        application/json:
          schema:
            oneOf:
              - $ref: '#/components/schemas/Errors'
              - $ref: '#/components/schemas/ErrorMessage'              
    405-MethodNotAllowed:
      description: 'Method Not Allowed'
      headers:
        X-Request-ID:
          $ref: '#/components/headers/X-Request-ID'
      content:
        application/json:
          schema:
            oneOf:
              - $ref: '#/components/schemas/Errors'
              - $ref: '#/components/schemas/ErrorMessage'              
    406-NotAcceptable:
      description: 'Not Acceptable'
      headers:
        X-Request-ID:
          $ref: '#/components/headers/X-Request-ID'
      content:
        application/json:
          schema:
            oneOf:
              - $ref: '#/components/schemas/Errors'
              - $ref: '#/components/schemas/ErrorMessage'              
    407-ProxyAuthenticationRequired:
      description: 'Proxy Authentication Required'
      headers:
        X-Request-ID:
          $ref: '#/components/headers/X-Request-ID'
      content:
        application/json:
          schema:
            oneOf:
              - $ref: '#/components/schemas/Errors'
              - $ref: '#/components/schemas/ErrorMessage'              
    409-Conflict:
      description: 'Conflict'
      headers:
        X-Request-ID:
          $ref: '#/components/headers/X-Request-ID'
      content:
        application/json:
          schema:
            oneOf:
              - $ref: '#/components/schemas/Errors'
              - $ref: '#/components/schemas/ErrorMessage'              
    410-Gone:
      description: 'Gone'
      headers:
        X-Request-ID:
          $ref: '#/components/headers/X-Request-ID'
      content:
        application/json:
          schema:
            oneOf:
              - $ref: '#/components/schemas/Errors'
              - $ref: '#/components/schemas/ErrorMessage'              
    412-PreconditionFailed:
      description: 'Precondition Failed'
      headers:
        X-Request-ID:
          $ref: '#/components/headers/X-Request-ID'
      content:
        application/json:
          schema:
            oneOf:
              - $ref: '#/components/schemas/Errors'
              - $ref: '#/components/schemas/ErrorMessage'              
    413-PayloadTooLarge:
      description: 'Payload Too Large'
      headers:
        X-Request-ID:
          $ref: '#/components/headers/X-Request-ID'
      content:
        application/json:
          schema:
            oneOf:
              - $ref: '#/components/schemas/Errors'
              - $ref: '#/components/schemas/ErrorMessage'              
    414-URITooLong:
      description: 'URI Too Long'
      headers:
        X-Request-ID:
          $ref: '#/components/headers/X-Request-ID'
      content:
        application/json:
          schema:
            oneOf:
              - $ref: '#/components/schemas/Errors'
              - $ref: '#/components/schemas/ErrorMessage'              
    415-UnsupportedMediaType:
      description: 'Unsupported Media Type'
      headers:
        X-Request-ID:
          $ref: '#/components/headers/X-Request-ID'
      content:
        application/json:
          schema:
            oneOf:
              - $ref: '#/components/schemas/Errors'
              - $ref: '#/components/schemas/ErrorMessage'              
    429-TooManyRequests:
      description: 'Too Many Requests'
      headers:
        X-Request-ID:
          $ref: '#/components/headers/X-Request-ID'
      content:
        application/json:
          schema:
            oneOf:
              - $ref: '#/components/schemas/Errors'
              - $ref: '#/components/schemas/ErrorMessage'              
    500-InternalServerError:
      description: 'Internal Server Error'
      headers:
        X-Request-ID:
          $ref: '#/components/headers/X-Request-ID'
      content:
        application/json:
          schema:
            oneOf:
              - $ref: '#/components/schemas/Errors'
              - $ref: '#/components/schemas/ErrorMessage'              
    502-BadGateway:
      description: 'Bad Gateway'
      headers:
        X-Request-ID:
          $ref: '#/components/headers/X-Request-ID'
      content:
        application/json:
          schema:
            oneOf:
              - $ref: '#/components/schemas/Errors'
              - $ref: '#/components/schemas/ErrorMessage'              
    503-ServiceUnavailable:
      description: 'Service Unavailable'
      headers:
        X-Request-ID:
          $ref: '#/components/headers/X-Request-ID'
      content:
        application/json:
          schema:
            oneOf:
              - $ref: '#/components/schemas/Errors'
              - $ref: '#/components/schemas/ErrorMessage'   
    504-GatewayTimeout:
      description: 'Gateway Timeout'
      headers:
        X-Request-ID:
          $ref: '#/components/headers/X-Request-ID'
      content:
        application/json:
          schema:
            oneOf:
              - $ref: '#/components/schemas/Errors'
              - $ref: '#/components/schemas/ErrorMessage'              


  ###########################
  #  Security Definition    #
  ########################### 
  securitySchemes:
    oauthBearerToken:
      type: http
      scheme: bearer
      bearerFormat: opaque OAuth 2.0
      description: |
        The access token obtained as a result of OAuth 2.0 flows. SWIFT supports the below OAuth grant type for the two environments where the API is exposed. 
        
        * MV-SIPN - jwt-bearer grant type [RFC 7523](https://tools.ietf.org/html/rfc7523) with Signed JWT assertion
        * Internet - jwt-bearer grant type [RFC 7523](https://tools.ietf.org/html/rfc7523) with Signed JWT assertion

        This API uses JWT-Bearer grant type.

        Please visit [SWIFT OAuth Token API](https://developer.swift.com/swift-oauth-token-api) page for more information and examples on how to generate an OAuth token.

        In this declaration only the basic security element to transport the bearer token of an OAuth2 process is declared.

  examples:
    3.1.1.1-Verify_account_using_Pre-validation_data_providers_and_central_BAV:
      summary: 3.1.1.1-Verify_account_using_Pre-validation_data_providers_and_central_BAV
      description: |
        Verify account using Prevalidation data providers or central BAV (verification scheme: PVAH). In this example, requestor used an IBAN account. Other account formats can be used.
      value:
        party_account:
          identification:
            iban: GB12BANK34567890123456
        party_agent:
          bicfi: CREDGB22XXX
        requestor:
          any_bic: REQTUS33XXX
        context: CRDT
        proprietary_service_parameters:
          code: SCHM
          qualifier: PVAH
    3.1.1.2-Verify_account_and_name_using_Pre-validation_data_providers_and_Central_BAV:
      summary: 3.1.1.2-Verify_account_and_name_using_Pre-validation_data_providers_and_Central_BAV
      description: |
        Verify account and name using Pre-validation data providers or central BAV (verification scheme: PVAH). Note that central BAV does not verify name, but account only.
      value:
        party:
          name: DEF Electronics
        party_account:
          identification:
            iban: GB12BANK34567890123456
        party_agent:
          bicfi: CREDGB22XXX
        requestor:
          any_bic: REQTUS33XXX
        context: CRDT
        proprietary_service_parameters:
          code: SCHM
          qualifier: PVAH
    3.1.1.3-Verify_account_and_id_using_Pre-validation_data_providers_and_Central_BAV:
      summary: 3.1.1.3-Verify_account_and_id_using_Pre-validation_data_providers_and_Central_BAV
      description: |
        Verify account and ID using Pre-validation data providers or central BAV (verification scheme: PVAH). In this example, requestor used LEI as the organisation ID. Other types of identification can be used.
      value:
        party:
          identification:
            organisation_identification:
              lei: 549300JZQ39WJPD7U585
        party_account:
          identification:
            iban: GB12BANK34567890123456
        party_agent:
          bicfi: CREDGB22XXX
        requestor:
          any_bic: REQTUS33XXX
        context: CRDT
        proprietary_service_parameters:
          code: SCHM
          qualifier: PVAH
    3.1.1.4-Verify_account_and_currency_using_Pre-validation_data_providers_and_Central_BAV:
      summary: 3.1.1.4-Verify_account_and_currency_using_Pre-validation_data_providers_and_Central_BAV
      description: |
        Verify account and currency using Pre-validation data providers or central BAV (verification scheme: PVAH). Note that central BAV does not verify currency, but account only.
      value:
        party_account:
          identification:
            iban: GB12BANK34567890123456
          currency: GBP
        party_agent:
          bicfi: CREDGB22XXX
        requestor:
          any_bic: REQTUS33XXX
        context: CRDT
        proprietary_service_parameters:
          code: SCHM
          qualifier: PVAH
    3.1.1.5-Verify_account_and_address_using_Pre-validation_data_providers_and_Central_BAV:
      summary: 3.1.1.5-Verify_account_and_address_using_Pre-validation_data_providers_and_Central_BAV
      description: |
        Verify account and address using Pre-validation data providers or central BAV (verification scheme: PVAH). Note that central BAV does not verify address, but account only.
      value:
        party:
          postal_address:
            address_type:
              code: BIZZ
            department: Head Office
            sub_department: Retail
            street_name: 1 London Bridge
            building_name: Shard
            floor: '5'
            post_code: SE1 9SG
            town_name: London
            country: GB
        party_account:
          identification:
            iban: GB12BANK34567890123456
        party_agent:
          bicfi: CREDGB22XXX
        requestor:
          any_bic: REQTUS33XXX
        context: CRDT
        proprietary_service_parameters:
          code: SCHM
          qualifier: PVAH
    3.1.1.6-Verify_account_name_id_address_and_currency_using_Pre-validation_data_providers_and_Central_BAV:
      summary: 3.1.1.6-Verify_account_name_id_address_and_currency_using_Pre-validation_data_providers_and_Central_BAV
      description: |
        Verify account, name, ID, address, and currency using Pre-validation data providers or central BAV (verification scheme: PVAH). Note that central BAV does not verify name, id, address, or currency, but account only.
      value:
        party:
          name: DEF Electronics
          postal_address:
            address_type:
              code: BIZZ
            department: Head Office
            sub_department: Retail
            street_name: 1 London Bridge
            building_name: Shard
            floor: '5'
            post_code: SE1 9SG
            town_name: London
            country: GB
          identification:
            organisation_identification:
              lei: 549300JZQ39WJPD7U585
        party_account:
          identification:
            iban: GB12BANK34567890123456
          currency: GBP
        party_agent:
          bicfi: CREDGB22XXX
        requestor:
          any_bic: REQTUS33XXX
        context: CRDT
        uetr: 97ed4827-7b6f-4491-a06f-b548d5a7512d
        proprietary_service_parameters:
          code: SCHM
          qualifier: PVAH
    3.1.1.7-Verify_account_using_Pre-validation_central_BAV_only:
      summary: 3.1.1.7-Verify_account_using_Pre-validation_central_BAV_only
      description: |
        Verify account using Prevalidation central BAV only (verification scheme: PVHI).
      value:
        party_account:
          identification:
            iban: GB12BANK34567890123456
        party_agent:
          bicfi: CREDGB22XXX
        requestor:
          any_bic: REQTUS33XXX
        context: CRDT
        proprietary_service_parameters:
          code: SCHM
          qualifier: PVHI
    3.1.1.8-Verify_account_and_name_using_Pre-validation_data_providers_only:
      summary: 3.1.1.8-Verify_account_and_name_using_Pre-validation_data_providers_only
      description: |
        Verify account and name using Pre-validation data provider only (verification scheme: PVAG).
      value:
        party:
          name: DEF Electronics
        party_account:
          identification:
            iban: GB12BANK34567890123456
        party_agent:
          bicfi: CREDGB22XXX
        requestor:
          any_bic: REQTUS33XXX
        context: CRDT
        proprietary_service_parameters:
          code: SCHM
          qualifier: PVAG
    3.1.2.1-PartyAccount_matches:
      summary: 3.1.2.1-PartyAccount_matches
      description: | 
        PartyAccount matches and the matching was done by the party agent holding the account. 
      value:
        account_match: MTCH
        verification_source: HOLD
    3.1.2.2-PartyName_matches:
      summary: 3.1.2.2-PartyName_matches
      description: | 
        Party Account matches, Party Name matches the account owner name and the verification was done by the party agent holding the account. 
      value:
        party_name_match: MTCH
        account_match: MTCH
        verification_source: HOLD
    3.1.2.3-PartyId_matches:
      summary: 3.1.2.3-PartyId_matches
      description: | 
        Party Account matches, Party ID matches one of the account owner ID and the verification was done by the party agent holding the account. 
      value:
        party_identification_match: MTCH
        account_match: MTCH
        verification_source: HOLD
    3.1.2.4-AccountCurrency_matches:
      summary: 3.1.2.4-AccountCurrency_matches
      description: | 
        Account Currency matches the account currency and the verification was done by the party agent holding the account. 
      value:
        account_currency_match: MTCH
        account_match: MTCH
        verification_source: HOLD
    3.1.2.5-PartyAddress_matches:
      summary: 3.1.2.5-PartyAddress_matches
      description: | 
        PartyAddress matches the account owner address and the matching was done by the party agent holding the account. 
      value:
        party_postal_address_match: MTCH
        verification_source: HOLD
    3.1.2.6-All_matching_results_provided:
      summary: 3.1.2.6-All_matching_results_provided
      description: | 
        PartyAccount matches and is not capable of receiving funds because the account is closed (reason code = RC11). The PartyName matches closely the account owner name and this name was provided in the reponse. At transaction processing time name matching is not applied (reason code = RC50). The PartyId  matches one of the account owner id. At transaction processing time id matching is applied (reason code = RC61). The PartyAddress closely matches the account owner address and this address was provided in the response. The AccountCurrency matches the account currency. 
      value:
        party_name_match: CMTC
        party_identification_match: MTCH
        account_match: MTCF
        account_currency_match: MTCH
        account_owner_type: ORGN
        party_postal_address_match: CMTC
        verification_source: HOLD
        verification_reason:
        - RC50
        - RC11
        - RC61
        matched_name: DEF Electronics
        matched_postal_address:
          address_type:
            code: BIZZ
          department: Head Office
          sub_department: Retail Department
          street_name: 1 Park Avenue
          building_name: Empire State Building
          floor: '1'
          post_code: '11232'
          town_name: New York City
          country_sub_division: New York
          country: US
    3.1.2.7-Some_matching_results_provided:
      summary: 3.1.2.7-Some_matching_results_provided
      description: | 
        PartyAccount matches and is capable of receiving funds. The PartyName does not match the account owner name. At transaction processing time name matching is applied (reason code = RC51). The PartyId does not match one of the account owner id. The PartyAddress does not match the account owner address. The AccountCurrency does not match the account currency. 
      value:
        party_name_match: NMTC
        party_identification_match: NMTC
        account_match: MTCP
        account_currency_match: NMTC
        party_postal_address_match: NMTC
        verification_source: HOLD
        verification_reason:
        - RC51
        matched_name: DEF Electronics
    3.1.2.8-PartyAccount_does_not_match:
      summary: 3.1.2.8-PartyAccount_does_not_match
      description: | 
        PartyAccount does not match one of the account of the party agent. 
      value:
        party_name_match: NOAP
        party_identification_match: NOAP
        account_match: NMTC
        account_currency_match: NOAP
        party_postal_address_match: NOAP
        verification_source: SNAP
    3.1.2.9-PartyAccount_matches_Subaccount_does_not_match:
      summary: 3.1.2.9-PartyAccount_matches_Subaccount_does_not_match
      description: | 
        PartyAccount matches. Subaccount does not match. 
      value:
        account_match: SNMC
        verification_source: HOLD
    3.1.2.10-PartyAccount_matches_no_other_matching_done_Snapshot:
      summary: 3.1.2.10-PartyAccount_matches_no_other_matching_done_Snapshot
      description: | 
        PartyAccount matches and the matching was done based on a Snapshot of the account database provided by the party agent holding the account. 
      value:
        account_match: MTCH
        verification_source: SNAP
    3.1.2.11-PartyAccount_matches_likely_to_receive_funds:
      summary: 3.1.2.11-PartyAccount_matches_likely_to_receive_funds
      description: | 
        PartyAccount matches and is likely to receive funds. The account verification was done by Central Beneficiary Account Verification (CBAV).
      value:
        account_match: MTCP
        verification_source: OBSD
        verification_reason:
        - RC40
    3.1.2.12-PartyAccount_matches_not_likely_to_receive_funds:
      summary: 3.1.2.12-PartyAccount_matches_not_likely_to_receive_funds
      description: | 
        PartyAccount matches and is not likely to receive funds. The account verification was done by Central Beneficiary Account Verification (CBAV). 
      value:
        account_match: MTCF
        verification_source: OBSD
        verification_reason:
        - RC40
    3.1.2.13-PartyAccount_was_not_found:
      summary: 3.1.2.13-PartyAccount_was_not_found
      description: | 
        PartyAccount was not found. The account verification was done by Central Beneficiary Account Verification (CBAV). 
      value:
        account_match: NMTC
        verification_source: OBSD
        verification_reason:
        - RC40
    3.1.2.14-PartyAccount_was_not_found_out_of_scope:
      summary: 3.1.2.14-PartyAccount_was_not_found_out_of_scope
      description: | 
        PartyAccount was not found because the country of the account is out of scope. The account verification was done by Central Beneficiary Account Verification (CBAV).
      value:
        account_match: NMTC
        verification_source: OBSD
        verification_reason:
        - RC40
        - RC41
    3.1.2.15-PartyAccount_matches_more_likely_to_receive_funds_mixed_transactions:
      summary: 3.1.2.15-PartyAccount_matches_more_likely_to_receive_funds_mixed_transactions
      description: | 
        PartyAccount matches and is more likely to receive funds, but there is a mix of successfull and failed transactions for this account. The account verification was done by Central Beneficiary Account Verification (CBAV).
      value:
        account_match: MTCP
        verification_source: OBSD
        verification_reason:
        - RC40
        - RC42
    3.1.2.16-PartyAccount_matches_more_likely_to_not_receive_funds_mixed_transactions:
      summary: 3.1.2.16-PartyAccount_matches_more_likely_to_not_receive_funds_mixed_transactions
      description: | 
        PartyAccount matches and is not likely to receive funds, but there are succesful transactions for this account. The account verification was done by Central Beneficiary Account Verification (CBAV). 
      value:
        account_match: MTCF
        verification_source: OBSD
        verification_reason:
        - RC40
        - RC42
    DataProviderRequestWithBIC:
      summary: 3.3.1.1-Check Data Provider Information using BIC only
      description: Request to check whether the Data Provider is active using BIC
      value:
        party_agent:
          bicfi: "SWHQBEBB"
    DataProviderRequestWithClearingSystem:
      summary: 3.3.1.2-Check Data Provider Information using Clearing System Member Identification only
      description: Request to check whether the Data Provider is active using Clearing System Member Identification
      value:
        party_agent:
          clearing_system_member_identification:
            clearing_system_identification:
              code: "GBDSC"
            member_identification: "140991"
    DataProviderRequestWithLEI:
      summary: 3.3.1.1-Check Data Provider Information using LEI only
      description: Request to check whether the Data Provider is active using LEI
      value:
        party_agent:
          lei: "549300JZQ39WJPD7U585"
    DataProviderRequestWithMultipleIdentifiers:
      summary: 3.3.1.1-Check Data Provider Information using BIC, Clearing System Member Identification and LEI
      description: Request to check whether the Data Provider is active using multiple identifiers. Identification of the data provider is attempted using the following priority - BIC first; if no match is found, then Clearing System Member ID; and finally, LEI if neither of the previous identifiers yield a result.
      value:
        party_agent:
          bicfi: "CREDGB22XXX"
          clearing_system_member_identification:
            clearing_system_identification:
              code: "GBDSC"
            member_identification: "140991"
          lei: "549300JZQ39WJPD7U585"
    DataProviderActiveResponse:
      summary: Data Provider is Active
      description: Response if the given party agent in the request is an active Data Provider
      value:
        party_agent_match: MTCH
        party_agent_id: SWHQBEBB
        party_agent_id_type: BIC
        data_provider_name: ACME Bank
        data_provider_institution_bic: ACMEMTMT
        data_provider_type: AGG
        support_channel: Support@bank.com
        environment: LIVE
        versions:
          - version: V2
            configuration:
              verification_source: 'HOLD'
              country_scope: 'BE,DE,HK'
              account_owner_type: 'PRIV'
              party_name_match: 'Y'
              party_name_close_match: 'N'
              party_postal_address_match: 'N'
              account_currency_match: 'N'
              party_identification_match: 'N'
              additional_information: 'party.account: iban only supported; party.account.currency: only EUR accounts supported'
          - version: V3
            configuration:
              verification_source: 'HOLD'
              country_scope: 'BE,DE,HK'
              account_owner_type: 'ANYY'
              party_name_match: 'Y'
              party_name_close_match: 'N'
              party_postal_address_match: 'N'
              account_currency_match: 'N'
              party_identification_match: 'N'
              additional_information: 'party.account: iban only supported; party.account.currency: only EUR accounts supported'
    DataProviderNotActiveResponse:
      summary: Data Provider is not active
      description: Response if the given party agent in the request is not an active Data Provider
      value:
        party_agent_match: NMTC
    GetPaymentPreparationRuleEx-1:
      summary: Example-1 - India UI corridor rules.
      value:
        "$schema": https://json-schema.org/draft/2020-12/schema
        "$id": urn:com:swift:payment-preparation:gb:in:inr:p2p:a2a:2026-03-19:en
        title: Payment Preparation Schema (IN)
        type: object
        x-version-date-time: '2026-03-19T17:26:00.000+01:00'
        x-owner: Swift
        properties:
          creditor_name:
            title: Beneficiary Name
            description: The name by which the beneficiary is known to their servicing institution and is typically used to identify that party.
            x-Note: Full name with first name and last name at minimum. No nicknames.
            type: string
            minLength: 2
            maxLength: 140
            x-UIErrorMessage:
              required: The beneficiary name is mandatory and must be provided in full.
              minLength: More than 1 character must be specified.
              maxLength: Must not exceed 140 characters.
          creditor_postal_address:
            title: Beneficiary Postal Address
            description: Information that identifies the actual, permanent address where a
              party resides, as defined by postal services.
            x-Note: At least one address_line is required, together with town_name and country. Address_line may appear a maximum of two occurrence (max 70 characters per line). Information in town_name and country must not be repeated in address_line under any circumstances.
            type: object
            properties:
              address_line:
                title: Address Information
                description: Full address in a single line text format. It should include
                  at minimum the street name, number and postal code.
                x-Note: Country and Town Name must not be part of address_line.
                type: array
                maxItems: 2
                x-UIErrorMessage:
                  required: Address must be specified.
                  minLength: More than 1 character must be specified.
                  maxLength: Must not exceed 70 characters.
                items:
                  type: string
                  minLength: 2
                  maxLength: 70
              town_name:
                title: Town Name
                description: Name of a built-up area, with defined boundaries, and a local
                  government.
                x-Note: Name of the town or city where the individual resides and where the
                  address is located.
                type: string
                minLength: 2
                maxLength: 35
                x-UIErrorMessage:
                  required: Town must be specified.
                  minLength: More than 1 character must be specified.
                  maxLength: Must not exceed 35 character.
              country:
                title: Country
                description: Country in which a person resides (the place of a person's home). In the case of a company, it is the country from which the affairs of that company are directed.
                x-Note: The country must be validated and matched to a valid ISO 3166.
                type: string
                x-UIErrorMessage:
                  required: Country must be specified.
            required:
              - address_line
              - town_name
              - country
          creditor_nationality:
            title: Beneficiary Nationality
            description: Represents the nationality (country of citizenship) of a beneficiary
              customer.
            x-Note: Nationality must be validated and matched to a valid ISO 3166.
            type: string
            x-UIErrorMessage:
              required: Beneficiary nationality must be specified.
          creditor_account_and_agent:
            type: object
            description: End source to which funds from a payment transaction are credited.
            additionalProperties: true
            oneOf:
            - type: object
              additionalProperties: false
              properties:
                other_identification:
                  title: Beneficiary Account Number
                  description: Bank account number of the party formatted as per local country rules.
                  type: string
                  pattern: "^[0-9]{11,16}$"
                  x-UIErrorMessage:
                    required: Beneficiary Account must be specified.
                    pattern: Account number must be between 11 to 16 digits.
                clearing_member_identification:
                  title: Beneficiary Bank IFSC
                  description: Identification of a financial institution as a member in a
                    clearing system.
                  type: string
                  pattern: "^[A-Z]{4}0[0-9]{6}$"
                  x-UIErrorMessage:
                    required: Beneficiary Bank must be specified.
                    pattern: IFSC must be 11 characters.
              required:
                - other_identification
                - clearing_member_identification
          regulatory_reporting_code:
            title: Purpose of Payment
            description: Underlying reason for the payment transaction in a coded form as
              per regulatory code list.
            oneOf:
              - type: string
                const: P1301
                title: Funds by non‑residents for family support or savings
              - type: string
                const: P1007
                title: Advertising, trade fair service
              - type: string
                const: P1401
                title: Compensation of employees
              - type: string
                const: P1108
                title: Medical services provided by Indian healthcare professionals
              - type: string
                const: P0014
                title: Credit to NRE/NRO account
            x-UIErrorMessage:
              required: Purpose of Payment must be specified.
        required:
          - creditor_name
          - creditor_postal_address
          - creditor_nationality
          - creditor_account_and_agent
          - regulatory_reporting_code
#Error Response Examples
    BadRequest:
      summary: Bad Request
      value:
        severity: Fatal
        code: SwAP501
        text: API request is malformed.
    BadRequestParametersMissingOrNotSupported:
      summary: Bad Request, Parameters Missing Or Not Supported
      value:
        severity: Fatal
        code: Sw.payVal.badRequest
        text: Cannot service as the API request is malformed for the given scenario and might be missing a parameter or is not supported.
        user_message: << Any further details on the error returned by Swift. >>
    InvalidToken:
      summary: Invalid Token
      value:
        severity: Fatal
        code: SwAP502
        text: Invalid OAuth access token.
    InsufficientScope:
      summary: Insufficient Scope
      value:
        severity: Fatal
        code: SwAP503
        text: OAuth access token has insufficient scope for the requested service.
    InconsistentClient:
      summary: Inconsistent Client
      value:
        severity: Fatal
        code: Sw.payVal.inconsistentClient
        text: Client certificate is inconsistent with the requesting agent identification provided.
    NotFound:
      summary: Not Found
      value:
        severity: Fatal
        code: SwAP506
        text: Resource does not exist.
    TooManyRequests:
      summary: Too Many Requests
      value:
        severity: Transient
        code: SwAP507
        text: Request cannot be processed at this time. Please try again.
    ServiceUnavailable:
      summary: Service Unavailable
      value:
        severity: Transient
        code: SwAP590
        text: Service is temporarily unavailable.
    DataProviderUnavailable:
      summary: Data Provider Unavailable
      value:
        severity: Transient
        code: Sw.payVal.unavailable
        text: Data Provider Service is temporarily unavailable.
    GatewayTimeout:
      summary: Gateway Timeout
      value:
        severity: Transient
        code: SwAP591
        text: Service Provider time out.
    DefaultError:
      summary: Default Error
      value:
        severity: Fatal
        code: Sw.payVal.defaultError
        text: Service is temporarily unavailable.