openapi: 3.0.3
info:
  version: 15.2.0
  title: Electrum Regulated Payments Events API
  description: >
    The Electrum Regulated Payments Events API is a synchronous API that
    describes the events emitted by the Electrum

    Regulated Payments platform during the course of transaction processing.


    This document describes the single endpoint that you will need to implement
    in order to receive event notifications posted by Electrum.


    As transactions are processed by Electrum, events are emitted to provide
    information about the

    status of the transactions and the operations preformed on them. These
    events do not affect processing, but provide

    information that can be used for operational support and monitoring
    purposes.


    All events are posted to the same single URL. Event are differentiated by a
    unique descriptor contained in the `name` field of the message body.

    This descriptor serves to allow the receiver to determine whether the

    particular event is of interest.
  contact:
    name: Electrum Support
    email: support@electrum.co.za
    url: https://electrum.co.za
  x-logo:
    url: >-
      https://electrumpayments.github.io/qr-payment-service-interface-docs/images/logo-small.png
  license:
    name: proprietary
    url: https://www.electrum.co.za
servers:
  - url: https://example.com/path/payments/events-api/v1
    description: Payments API sandbox
tags:
  - name: state
    description: >
      Transactions transition through different states. As each state is
      entered, an event is emitted. This event provides

      information about the state entered by the transaction. Included in this
      information is the message payload of

      the operation that triggered the state transition in the Electrum
      Regulated Payments. **Note**: The message payload attached

      to an event might be an internally-triggered message and not the message
      sent to or received from the Electrum

      Regulated Payments API.
paths:
  /events:
    post:
      tags:
        - state
      summary: Provide event data
      description: Provides event details.
      operationId: eventPosting
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Event'
            examples:
              RTC_INBOUND_CREDIT_AUTH_RECEIVED:
                $ref: '#/components/examples/RtcInboundCreditAuthReceivedEvent'
              RTC_INBOUND_CREDIT_AUTH_ACCEPTED:
                $ref: '#/components/examples/RtcInboundCreditAuthAcceptedEvent'
              RTC_INBOUND_CREDIT_AUTH_REJECTED:
                $ref: '#/components/examples/RtcInboundCreditAuthRejectedEvent'
              RTC_INBOUND_CREDIT_AUTH_PENDING:
                $ref: '#/components/examples/RtcInboundCreditAuthPendingEvent'
              RTC_INBOUND_CREDIT_AUTH_DECLINED_NACK:
                $ref: '#/components/examples/RtcInboundCreditAuthDeclinedNackEvent'
              RTC_INBOUND_CREDIT_AUTH_RESPONSE_RECEIVED:
                $ref: >-
                  #/components/examples/RtcInboundCreditAuthResponseReceivedEvent
              RTC_INBOUND_CREDIT_AUTH_RESPONSE_ACCEPTED:
                $ref: >-
                  #/components/examples/RtcInboundCreditAuthResponseAcceptedEvent
              RTC_INBOUND_CREDIT_AUTH_RESPONSE_REJECTED:
                $ref: >-
                  #/components/examples/RtcInboundCreditAuthResponseRejectedEvent
              RTC_INBOUND_CREDIT_AUTH_APPROVED:
                $ref: '#/components/examples/RtcInboundCreditAuthApprovedEvent'
              RTC_INBOUND_CREDIT_AUTH_DECLINED:
                $ref: '#/components/examples/RtcInboundCreditAuthDeclinedEvent'
              RTC_INBOUND_CREDIT_AUTH_TIMEOUT:
                $ref: '#/components/examples/RtcInboundCreditAuthTimeoutEvent'
              RTC_INBOUND_CREDIT_AUTH_VALIDATION:
                $ref: '#/components/examples/RtcInboundCreditAuthValidationEvent'
              RTC_INBOUND_CREDIT_AUTH_VALIDATION_SUCCESS:
                $ref: >-
                  #/components/examples/RtcInboundCreditAuthValidationSuccessEvent
              RTC_INBOUND_CREDIT_AUTH_VALIDATION_FAILED:
                $ref: >-
                  #/components/examples/RtcInboundCreditAuthValidationFailedEvent
              RTC_INBOUND_CREDIT_AUTH_VALIDATION_TIMEOUT:
                $ref: >-
                  #/components/examples/RtcInboundCreditAuthValidationTimeoutEvent
        required: true
      responses:
        '200':
          description: >-
            OK. [RFC9110 -
            200](https://www.rfc-editor.org/rfc/rfc9110#name-200-ok)
        '400':
          description: >-
            Bad request. [RFC9110 -
            400](https://www.rfc-editor.org/rfc/rfc9110#name-400-bad-request)
        '500':
          description: >-
            Internal server error. [RFC9110 -
            500](https://www.rfc-editor.org/rfc/rfc9110#name-500-internal-server-error)
components:
  schemas:
    Event:
      type: object
      required:
        - apiVersion
      properties:
        apiVersion:
          type: string
          description: >
            The version of the Electrum Regulated Payments Events API which the
            event format conforms to i.e. the

            version of _this_ API.
        class:
          type: string
          description: The class of the event.
      discriminator:
        propertyName: class
        mapping:
          ESM_STATE: '#/components/schemas/EsmStateEvent'
          TRANSACTION_STATE: '#/components/schemas/TransactionStateEvent'
    EventEsmIdentifiers:
      type: object
      description: >
        Holds a series of identifiers to identify the transaction or an
        individual message that is part of a transaction.
      required:
        - uetr
        - endToEndIdentification
        - transactionIdentification
      properties:
        uetr:
          type: string
          format: UUID
          description: >
            Universally unique identifier to provide an end-to-end reference.

            This identifier remains the same for all messages related to the
            same transaction.
        endToEndIdentification:
          type: string
          maxLength: 35
          description: >
            Unique identification, as assigned by the initiating party, to
            unambiguously identify the

            transaction. This identification is passed on, unchanged, throughout
            the entire end-to-end chain.
        transactionIdentification:
          type: string
          maxLength: 35
          description: >
            Unique identification, as assigned by the first instructing agent,
            to unambiguously identify the

            transaction that is passed on, unchanged, throughout the entire
            interbank chain.

            Usage: The transaction identification can be used for
            reconciliation, tracking or to link tasks relating to the
            transaction on the interbank level.

            Usage: The instructing agent has to make sure that the transaction
            identification is unique for a pre- agreed period.
        matchingKey:
          type: string
          maxLength: 64
          description: >
            A unique identifier that is used to identify an EFT record. This
            field is computed using the fields in the

            EFT record.
    EventEsmTransactionInfo:
      type: object
      required:
        - recordType
        - paymentType
        - direction
        - subService
      properties:
        recordType:
          type: string
          enum:
            - PAYMENT
            - UNPAID_INPUT
            - UNPAID_OUTPUT
            - RECALL_OUTPUT
            - SEC_REQUEST
            - SEC_RESPONSE
            - SEC_UNPAID_INPUT
            - HOMED_BACK
        paymentType:
          type: string
          description: |
            Enumerates the specific transaction processing event being emitted.
          enum:
            - CREDIT
            - DEBIT
        direction:
          type: string
          description: >
            Indicates the direction of the payment, from the perspective of
            Electrum and the Partner.
          enum:
            - INBOUND
            - OUTBOUND
            - ON_US
        subService:
          type: string
          enum:
            - SAME_DAY
            - ONE_DAY
            - TWO_DAY
            - RECALLS
            - SYSTEM_ERROR_CORRECTION
            - SYSTEM_ERROR_CORRECTION_RESPONSE
        returnType:
          type: string
          enum:
            - DISPUTE
            - UNPAID
            - HOME_BACK
            - SEC_SUCCESSFUL
            - RECALL_RESULT
          description: Indicates the cause of an unpaid/payment return.
    EventEsmState:
      type: object
      required:
        - transactionState
        - financialTransactionState
      properties:
        transactionState:
          type: string
          description: |
            The state of the given transaction.
          enum:
            - RECEIVE_PENDING
            - RECEIVED
            - RECEIVE_ERROR
            - CANCELLED
            - SEND_PENDING
            - SENT
            - SEND_ERROR
            - ON_HOLD
        financialTransactionState:
          type: string
          description: |
            The state of the financial transaction for the given transaction.
          enum:
            - IN_PROGRESS
            - ACTIONED
            - UNPAID
            - ERROR
            - UNMATCHED
    RecordIdentifier:
      type: string
      enum:
        - CREDIT
        - STOP_ORDER_CREDIT
        - CONSOLIDATED_UNPAID_CREDIT
        - UNPAID_CREDIT
        - CREDIT_RECALL
        - CREDIT_SEC_REQUEST
        - CREDIT_SEC_RESPONSE
        - DEBIT
        - CONSOLIDATED_UNPAID_DEBIT
        - UNPAID_DEBIT
        - DEBIT_SEC_REQUEST
        - DEBIT_SEC_RESPONSE
        - DEBIT_RECALL
    BaseEsmRecord:
      type: object
      required:
        - recordIdentifier
        - userBranch
        - userAccount
        - userCode
        - sequenceNumber
        - homingBranch
        - homingAccount
        - actionDate
        - userReference
        - homingAccountName
      properties:
        recordIdentifier:
          $ref: '#/components/schemas/RecordIdentifier'
        userBranch:
          type: string
        userAccount:
          type: string
        userCode:
          type: string
        sequenceNumber:
          type: integer
        homingBranch:
          type: string
        homingAccount:
          type: string
        amount:
          type: integer
          format: int64
        actionDate:
          type: string
          format: date
        userReference:
          type: string
        homingAccountName:
          type: string
    BankServAccountType:
      type: string
      enum:
        - OTHER
        - CURRENT
        - SAVINGS
        - TRANSMISSION
        - BOND
        - SUBSCRIPTION_SHARE
    EntryClass:
      type: string
      enum:
        - CONTRAS
        - DEBIT_INSURANCE_PREMIUM
        - DEBIT_PENSION_FUND_CONTRIBUTION
        - DEBIT_MEDICAL_AID_FUND_CONTRIBUTION
        - DEBIT_UNIT_TRUST_PURCHASE
        - DEBIT_CHARITABLE_OR_RELIGIOUS_CONTRIBUTIONS
        - DEBIT_HP_REPAYMENT
        - DEBIT_ACCOUNT_REPAYMENT
        - DEBIT_LOAN_REPAYMENT_OTHER_THAN_MORTGAGE
        - DEBIT_RENTAL_LEASE_OTHER_THAN_PROPERTY
        - DEBIT_SERVICE_CHARGE_FIXED_AMOUNTS
        - DEBIT_SERVICE_CHARGE_VARIABLE_AMOUNTS
        - DEBIT_VAT_COLLECTION
        - DEBIT_RENT_PROPERTY
        - DEBIT_BOND_REPAYMENT
        - DEBIT_BANK_USE_DEBIT_TRANSFER
        - DEBIT_BANK_USE_CHEQUE_CARD_DEBITS
        - >-
          DEBIT_BANKSERVAFRICA_USE_ONLY_FINANCIAL_RETURN_OF_DISPUTES_GREATER_THAN_40_DAYS
        - DEBIT_MUNICIPAL_ACCOUNTS_WATER_AND_LIGHT
        - DEBIT_MUNICIPAL_ACCOUNTS_RATES
        - DEBIT_TELEPHONE_ACCOUNTS
        - DEBIT_BANK_USE_CREDIT_CARD_MERCHANT_ELECTRONIC_FUNDS_TRANSFER
        - DEBIT_BANK_USE_CREDIT_CARD_HOLDER_ELECTRONIC_FUNDS_TRANSFER
        - DEBIT_BANK_USE_SERVICE_CHARGE_EXEMPT_FROM_DUTY_AND_SERVICE_FEE
        - DEBIT_BANK_USE_GARAGE_CARD
        - DEBIT_BANK_USE_SERVICE_CHARGE
        - DEBIT_BANKSERVAFRICA_USE_SERVICE_CHARGE
        - CREDIT_SALARY
        - CREDIT_PENSION
        - CREDIT_PAYE
        - CREDIT_SALARY_DEDUCTION_MORTGAGE_BOND_REPAYMENT
        - CREDIT_SALARY_DEDUCTION_INSURANCE_PREMIUM
        - CREDIT_MORTGAGE_BOND_REPAYMENT
        - CREDIT_VAT_PAYMENT
        - CREDIT_BANK_USE_MORTGAGE_BOND_SETTLEMENT
        - CREDIT_SALARY_DEDUCTION_MISCELLANEOUS
        - CREDIT_ANNUITY
        - CREDIT_DIVIDEND
        - CREDIT_INTEREST
        - CREDIT_TAX_FREE_TRANSFERS
        - CREDIT_AGENTS_COMMISSION
        - CREDIT_BANK_USE_CHEQUE_CARD_CREDIT_REVERSALS
        - CREDIT_INSURANCE_PREMIUM_REFUND
        - CREDIT_PAYMENT_TO_CREDITOR
        - CREDIT_PAYMENT_OF_INSURANCE_CLAIMS
        - CREDIT_MEDICAL_AID_REFUNDS
        - CREDIT_UNIT_TRUST_REPURCHASE
        - CREDIT_BANK_USE_CREDIT_TRANSFER
        - CREDIT_BANKSERVAFRICA_USE_SERVICE_CHARGE
        - CREDIT_BANKSERVAFRICA_USE_92
        - CREDIT_BANKSERVAFRICA_USE_93
        - CREDIT_BANK_USE_CREDIT_CARD_MERCHANT_ELECTRONIC_FUNDS_TRANSFER
        - CREDIT_BANK_USE_CREDIT_CARD_HOLDER_ELECTRONIC_FUNDS_TRANSFER
        - CREDIT_BANK_USE_COMMISSION_PAYMENT_GARAGE_CARD
        - CREDIT_BANK_USE_REFUND_GARAGE_CARD
    PaymentRecord:
      allOf:
        - $ref: '#/components/schemas/BaseEsmRecord'
        - type: object
          required:
            - schema
            - accountType
            - amount
            - taxCode
            - filler1
            - filler2
            - nonStandardHomingAccount
            - filler3
            - homingInstitution
            - filler4
            - entryClass
          properties:
            schema:
              type: string
              enum:
                - PaymentRecord
            accountType:
              $ref: '#/components/schemas/BankServAccountType'
            taxCode:
              type: string
            filler1:
              type: string
            filler2:
              type: string
            nonStandardHomingAccount:
              type: string
            filler3:
              type: string
            homingInstitution:
              type: string
            filler4:
              type: string
            entryClass:
              $ref: '#/components/schemas/EntryClass'
    ReasonCode:
      type: string
      enum:
        - NOT_PROVIDED_FOR
        - DEBITS_OR_CREDITS_NOT_ALLOWED_TO_ACCOUNT
        - PAYMENT_STOPPED_BY_ACCOUNT_HOLDER
        - ACCOUNT_FROZEN
        - ACCOUNT_IN_SEQUESTRATION
        - ACCOUNT_IN_LIQUIDATION
        - ACCOUNT_CLOSED
        - ACCOUNT_TRANSFERRED_WITHIN_BANKING_GROUP
        - ACCOUNT_TRANSFERRED_TO_OTHER_BANKING_GROUP
        - ACCOUNT_HOLDER_DECEASED
        - ACCOUNT_EFFECTS_NOT_CLEARED
        - NO_SUCH_ACCOUNT
        - RECALL_RESULT
        - RECALL_REQUEST
        - NO_AUTHORITY_TO_DEBIT_OR_CREDIT
        - UNRECOGNIZED_INITIATING_PARTY
        - DEBIT_IN_CONTRAVENTION_OF_PAYER_AUTHORITY
        - NOT_UNIQUE_TRANSACTION_REFERENCE
        - AUTHORIZATION_CANCELLED
        - PREVIOUSLY_STOPPED_VIA_STOP_PAYMENT_ADVICE
        - RESERVED_FOR_FUTURE_USE
        - NOT_FICA_COMPLIANT
        - SEC_SUCCESSFUL
        - SEC_NO_MATCH_FOUND
        - SEC_ALREADY_RETURNED_AS_UNPAID
        - SEC_ALREADY_RETURNED_AS_DISPUTED
    RecallOutputRecord:
      allOf:
        - $ref: '#/components/schemas/BaseEsmRecord'
        - type: object
          required:
            - schema
            - accountType
            - reasonCode
            - entryClass
          properties:
            schema:
              type: string
              enum:
                - RecallOutputRecord
            accountType:
              type: integer
            taxCode:
              type: integer
            reasonCode:
              $ref: '#/components/schemas/ReasonCode'
            filler1:
              type: integer
            originalSubAccountHolder:
              type: string
            originalSubAccount:
              type: string
            homingInstitution:
              type: integer
            filler2:
              type: string
            entryClass:
              type: integer
    SecRequestRecord:
      allOf:
        - $ref: '#/components/schemas/BaseEsmRecord'
        - type: object
          required:
            - schema
            - accountType
            - amount
            - nonStandardHomingAccount
            - directSubmitterCode
            - filler3
            - filler4
            - entryClass
          properties:
            schema:
              type: string
              enum:
                - SecRequestRecord
            accountType:
              type: integer
            taxCode:
              type: integer
            filler1:
              type: integer
            filler2:
              type: integer
            nonStandardHomingAccount:
              type: string
            directSubmitterCode:
              type: string
            filler3:
              type: string
            homingInstitution:
              type: integer
            filler4:
              type: string
            entryClass:
              type: integer
    SecResponseRecord:
      allOf:
        - $ref: '#/components/schemas/BaseEsmRecord'
        - type: object
          required:
            - schema
            - accountType
            - amount
            - accountConditionResponse
            - filler2
            - directSubmitterCode
            - filler3
            - filler4
            - entryClass
          properties:
            schema:
              type: string
              enum:
                - SecResponseRecord
            accountType:
              type: integer
            taxCode:
              type: integer
            accountConditionResponse:
              $ref: '#/components/schemas/ReasonCode'
            filler1:
              type: integer
            filler2:
              type: string
            directSubmitterCode:
              type: string
            filler3:
              type: string
            homingInstitution:
              type: integer
            filler4:
              type: string
            entryClass:
              type: integer
    BaseEsmUnpaidRecord:
      type: object
      required:
        - recordIdentifier
        - originalSequenceNumber
        - originalAccountType
        - originalActionDate
        - originalEntryClass
        - reasonCode
        - originalUserReference
        - originalHomingAccountName
        - effectiveActionDate
        - newSequenceNumber
      properties:
        recordIdentifier:
          $ref: '#/components/schemas/RecordIdentifier'
        originalSequenceNumber:
          type: integer
        originalAccountType:
          type: integer
        originalAmount:
          type: integer
        originalActionDate:
          type: string
          format: date
          description: >
            The date at which the transaction should take effect.

            The date *must* be formatted as defined by `date-time` in
            [RFC3339](https://www.ietf.org/rfc/rfc3339.txt)
        originalEntryClass:
          type: integer
        originalTaxCode:
          type: integer
        reasonCode:
          $ref: '#/components/schemas/ReasonCode'
        filler1:
          type: integer
        originalUserReference:
          type: string
        originalHomingAccountName:
          type: string
        originalHomingInstitution:
          type: integer
        effectiveActionDate:
          type: string
          format: date
          description: >
            The date at which the transaction should take effect.

            The date *must* be formatted as defined by `date-time` in
            [RFC3339](https://www.ietf.org/rfc/rfc3339.txt)
        newSequenceNumber:
          type: integer
    BaseEsmUnpaidInputRecord:
      allOf:
        - $ref: '#/components/schemas/BaseEsmUnpaidRecord'
        - type: object
          required:
            - originalBranchCode
            - originalUserAccount
            - originalUserCode
            - originalHomingBranch
            - originalHomingAccount
            - bankSuspenseBranch
            - bankSuspenseAccount
          properties:
            originalBranchCode:
              type: string
            originalUserAccount:
              type: string
            originalUserCode:
              type: string
            originalHomingBranch:
              type: string
            originalHomingAccount:
              type: string
            bankSuspenseBranch:
              type: string
            bankSuspenseAccount:
              type: string
            filler2:
              type: string
    SecUnpaidInputRecord:
      allOf:
        - $ref: '#/components/schemas/BaseEsmUnpaidInputRecord'
        - type: object
          required:
            - schema
          properties:
            schema:
              type: string
              enum:
                - SecUnpaidInputRecord
            nonStandardHomingAccount:
              type: string
    UnpaidInputRecord:
      allOf:
        - $ref: '#/components/schemas/BaseEsmUnpaidInputRecord'
        - type: object
          required:
            - schema
          properties:
            schema:
              type: string
              enum:
                - UnpaidInputRecord
            newHomingAccount:
              type: string
            newAccountType:
              type: integer
            newHomingBranch:
              type: string
    UnpaidOutputRecord:
      allOf:
        - $ref: '#/components/schemas/BaseEsmUnpaidRecord'
        - type: object
          required:
            - schema
            - originalHomingBranch
            - originalHomingAccount
            - userCode
            - originalUserBranch
            - originalUserAccount
          properties:
            schema:
              type: string
              enum:
                - UnpaidOutputRecord
            originalHomingBranch:
              type: string
            originalHomingAccount:
              type: string
            userCode:
              type: string
            originalUserBranch:
              type: string
            originalUserAccount:
              type: string
            filler2:
              type: string
            newBranch:
              type: string
            newAccount:
              type: string
            newAccountType:
              type: string
            filler3:
              type: string
            filler4:
              type: string
            filler5:
              type: string
    EventEsmPayload:
      type: object
      oneOf:
        - $ref: '#/components/schemas/PaymentRecord'
        - $ref: '#/components/schemas/RecallOutputRecord'
        - $ref: '#/components/schemas/SecRequestRecord'
        - $ref: '#/components/schemas/SecResponseRecord'
        - $ref: '#/components/schemas/SecUnpaidInputRecord'
        - $ref: '#/components/schemas/UnpaidInputRecord'
        - $ref: '#/components/schemas/UnpaidOutputRecord'
      discriminator:
        propertyName: schema
        mapping:
          PaymentRecord: '#/components/schemas/PaymentRecord'
          RecallOutputRecord: '#/components/schemas/RecallOutputRecord'
          SecRequestRecord: '#/components/schemas/SecRequestRecord'
          SecResponseRecord: '#/components/schemas/SecResponseRecord'
          SecUnpaidInputRecord: '#/components/schemas/SecUnpaidInputRecord'
          UnpaidInputRecord: '#/components/schemas/UnpaidInputRecord'
          UnpaidOutputRecord: '#/components/schemas/UnpaidOutputRecord'
    EsmStateEvent:
      allOf:
        - $ref: '#/components/schemas/Event'
        - type: object
          required:
            - class
            - identifiers
            - creationDateTime
            - actionDate
            - transactionInfo
            - state
          description: >
            An event that indicates a state change of the ESM for a given
            transaction. An event contains information

            An event that indicates a state change of the ESM for a given
            transaction. An event contains information

            regarding the ESM's view of a given transaction as the state of the
            transaction changes.
          properties:
            identifiers:
              $ref: '#/components/schemas/EventEsmIdentifiers'
            creationDateTime:
              type: string
              format: date-time
              description: >
                The date and time at which the event was created, in senders
                local timezone or UTC.

                The date *must* be formatted as defined by `date-time` in
                [RFC3339](https://www.ietf.org/rfc/rfc3339.txt)
            actionDate:
              type: string
              format: date
              description: >
                The date at which the transaction should take effect.

                The date *must* be formatted as defined by `date-time` in
                [RFC3339](https://www.ietf.org/rfc/rfc3339.txt)
            transactionInfo:
              $ref: '#/components/schemas/EventEsmTransactionInfo'
            state:
              $ref: '#/components/schemas/EventEsmState'
            eftDataRecord:
              $ref: '#/components/schemas/EventEsmPayload'
    PaymentSchemeName:
      type: string
      enum:
        - ZA_RTC
        - ZA_RPP
        - ZA_EFT
      description: |
        Identifies the scheme used for the payment
        * `ZA_RTC`: South African Realtime Clearing scheme
        * `ZA_RPP`: South African Realtime Payments Platform scheme.
        * `ZA_EFT`: South African Electronic Funds Transfer scheme.
    EventTranInfo:
      type: object
      description: >-
        Transaction-specific properties of the event. These are populated on a
        best-effort basis.
      properties:
        tranUetr:
          type: string
          description: The UETR of the transaction to which this event pertains.
        direction:
          type: string
          description: >
            The direction of the payment instruction with respect to the
            Electrum partner. For example, `INBOUND` credit transfers are

            instructions _to the partner_ to credit a customer's account while
            `OUTBOUND` credit transfers are instructions _by the partner_ to

            credit an account at another institution.
          enum:
            - INBOUND
            - OUTBOUND
        paymentScheme:
          $ref: '#/components/schemas/PaymentSchemeName'
        service:
          type: string
          description: The Electrum service which processed the transaction.
    EventMessageInfo:
      type: object
      description: >-
        Message-specific properties of the event. These are populated on a
        best-effort basis.
      properties:
        messageIdentification:
          type: string
          maxLength: 35
          description: >
            A reference used to unambiguously identify the message between the
            sending and receiving party.

            Take note that this uniquely identifies a single message in a
            potentially multi-message exchange to complete a payment.
        creationDateTime:
          type: string
          format: date-time
          description: >
            The date and time at which the message was created, in senders local
            timezone or UTC.

            The date *must* be formatted as defined by `date-time` in
            [RFC3339](https://www.ietf.org/rfc/rfc3339.txt)
        httpStatusCode:
          type: integer
          description: The HTTP status code associated with this message of this event.
    CreditTransfer:
      allOf:
        - $ref: '#/components/schemas/BaseTransactionMessage'
        - type: object
          description: >
            A model containing the necessary information to request a transfer
            funds between a payer and a payee
          properties:
            paymentScheme:
              $ref: '#/components/schemas/CreditTransferPaymentScheme'
            amounts:
              $ref: '#/components/schemas/TransactionAmounts'
            paymentTypeInformation:
              $ref: '#/components/schemas/PaymentTypeInformation'
              description: |
                Set of elements used to further specify the type of transaction.
            settlementDate:
              type: string
              format: date
              description: >
                Date on which the amount of money ceases to be available to the
                agent that owes it and

                when the amount of money becomes available to the agent to which
                it is due.
            creditor:
              description: |
                Party to which an amount of money is due.
              $ref: '#/components/schemas/Party'
            creditorAccount:
              description: >
                Unambiguous identification of the account of the creditor to
                which a credit entry will be posted as a

                result of the payment transaction.
              $ref: '#/components/schemas/PaymentAccount'
            creditorAgent:
              description: |
                Financial institution servicing an account for the creditor.
              $ref: '#/components/schemas/InstitutionIdentification'
            debtor:
              description: |
                Party that owes an amount of money to the (ultimate) creditor.
              $ref: '#/components/schemas/Party'
            debtorAccount:
              description: >
                Unambiguous identification of the account of the debtor to which
                a debit entry will be made as a result of the transaction.
              $ref: '#/components/schemas/PaymentAccount'
            debtorAgent:
              description: |
                Financial institution servicing an account for the debtor.
              $ref: '#/components/schemas/InstitutionIdentification'
            instructedAgent:
              description: >
                Agent that is instructed by the previous party in the chain to
                carry out the (set of) instruction(s).
              $ref: '#/components/schemas/InstitutionIdentification'
            instructingAgent:
              description: >
                Agent that instructs the next party in the chain to carry out
                the (set of) instruction(s)
              $ref: '#/components/schemas/InstitutionIdentification'
            instructionForCreditorAgent:
              description: >
                Further information related to the processing of the payment
                instruction, provided by the

                initiating party, and intended for the creditor agent.
              minItems: 0
              type: array
              items:
                $ref: '#/components/schemas/Instruction'
            intermediaryAgents:
              description: >
                Agents between the debtor's agent and the creditor's agent.

                Usage: If more than one intermediary agent is present, then
                IntermediaryAgent1 identifies the agent

                between the DebtorAgent and the IntermediaryAgent2
              type: array
              items:
                $ref: '#/components/schemas/InstitutionIdentification'
              maxItems: 3
            previousInstructingAgents:
              description: |
                Agent(s) between the debtor's agent and the instructing agent.
              type: array
              items:
                $ref: '#/components/schemas/InstitutionIdentification'
              maxItems: 3
            purpose:
              $ref: '#/components/schemas/PurposeType'
            remittanceInformation:
              $ref: '#/components/schemas/RemittanceInformation'
            tax:
              $ref: '#/components/schemas/TaxInformation'
          required:
            - paymentScheme
            - amounts
            - creditor
            - creditorAccount
            - creditorAgent
            - debtor
            - debtorAgent
            - identifiers
    BaseMessage:
      type: object
      description: >
        A model containing the foundational elements shared across messages and
        generally expected in a message used

        during processing with the Electrum Regulated Payments API.
      required:
        - messageIdentifiers
        - schema
      properties:
        schema:
          type: string
        messageIdentifiers:
          $ref: '#/components/schemas/MessageIdentifiers'
        supplementaryData:
          $ref: '#/components/schemas/SupplementaryData'
      discriminator:
        propertyName: schema
        mapping:
          CreditTransfer: '#/components/schemas/CreditTransfer'
          PaymentStatusReport: '#/components/schemas/PaymentStatusReport'
          IdentifierSchemeDeregistrationRequest: '#/components/schemas/IdentifierSchemeDeregistrationRequest'
          IdentifierSchemeDeregistrationResponse: '#/components/schemas/IdentifierSchemeDeregistrationResponse'
          IdentifierSchemeRegistrationRequest: '#/components/schemas/IdentifierSchemeRegistrationRequest'
          IdentifierSchemeRegistrationResponse: '#/components/schemas/IdentifierSchemeRegistrationResponse'
          SchemeInquiryRequest: '#/components/schemas/SchemeInquiryRequest'
          SchemeInquiryResponse: '#/components/schemas/SchemeInquiryResponse'
          IdentifierDeterminationRequest: '#/components/schemas/IdentifierDeterminationRequest'
          IdentifierDeterminationResponse: '#/components/schemas/IdentifierDeterminationResponse'
          AccountUpdateRequest: '#/components/schemas/AccountUpdateRequest'
          AccountAdditionalIdUpdateRequest: '#/components/schemas/AccountAdditionalIdUpdateRequest'
          DirectDebit: '#/components/schemas/DirectDebit'
          PaymentReturn: '#/components/schemas/PaymentReturn'
          RequestToPay: '#/components/schemas/RequestToPay'
          RequestToPayResponse: '#/components/schemas/RequestToPayResponse'
          AccountVerificationRequest: '#/components/schemas/AccountVerificationRequest'
          AccountVerificationResponse: '#/components/schemas/AccountVerificationResponse'
          CreditTransferInitiation: '#/components/schemas/CreditTransferInitiation'
          PaymentInitiationStatusReport: '#/components/schemas/PaymentInitiationStatusReport'
          ReservationRequest: '#/components/schemas/ReservationRequest'
          VoidReservationRequest: '#/components/schemas/VoidReservationRequest'
          PostingRequest: '#/components/schemas/PostingRequest'
          Receipt: '#/components/schemas/Receipt'
    MessageIdentifiers:
      type: object
      description: >
        Holds a point-to-point unique message identification string as well as a
        message's creation date time.
      required:
        - messageIdentification
        - creationDateTime
      properties:
        messageIdentification:
          type: string
          maxLength: 35
          description: >
            A reference used to unambiguously identify the message between the
            sending and receiving party.

            Take note that this uniquely identifies a single message in a
            potentially multi-message exchange to complete a payment.
        creationDateTime:
          type: string
          format: date-time
          description: >
            The date and time at which the message was created, in senders local
            timezone or UTC.

            The date *must* be formatted as defined by `date-time` in
            [RFC3339](https://www.ietf.org/rfc/rfc3339.txt)
    BaseResponseMessage:
      allOf:
        - $ref: '#/components/schemas/BaseMessage'
        - type: object
          description: >
            An extension of `BaseMessage` which includes additional information
            pertinent to an asynchronous response

            message. In particular, original message identifiers.
          required:
            - originalMessageIdentifiers
          properties:
            originalMessageIdentifiers:
              $ref: '#/components/schemas/MessageIdentifiers'
    TransactionIdentifiers:
      type: object
      description: >
        Holds a series of identifiers to identify the transaction or an
        individual message that is part of a transaction.
      required:
        - endToEndIdentification
        - uetr
      properties:
        endToEndIdentification:
          type: string
          maxLength: 35
          description: >
            Unique identification, as assigned by the initiating party, to
            unambiguously identify the

            transaction. This identification is passed on, unchanged, throughout
            the entire end-to-end chain.

            Note: this is distinct from the UETR.
        transactionIdentification:
          type: string
          maxLength: 35
          description: >
            Unique identification, as assigned by the first instructing agent,
            to unambiguously identify the

            transaction that is passed on, unchanged, throughout the entire
            interbank chain.

            Usage: The transaction identification can be used for
            reconciliation, tracking or to link tasks relating to the
            transaction on the interbank level.

            Usage: The instructing agent has to make sure that the transaction
            identification is unique for a pre- agreed period.
        uetr:
          type: string
          format: UUID
          description: >
            Universally unique identifier to provide an end-to-end reference of
            a payment transaction.

            This identifier remains the same for all messages related to the
            same transaction.
    BaseTransactionResponseMessage:
      allOf:
        - $ref: '#/components/schemas/BaseResponseMessage'
        - type: object
          description: >
            An extension of `BaseTransactionMessage` which includes additional
            information pertinent to an asynchronous

            response message. In particular, original message identifiers.
          required:
            - transactionIdentifiers
          properties:
            transactionIdentifiers:
              $ref: '#/components/schemas/TransactionIdentifiers'
    ZaRtcCreditTransferPaymentSchemeData:
      type: object
      required:
        - businessReference
      properties:
        userReference:
          type: string
          description: >
            An explanation of the transaction, e.g. to be printed on the account
            holder's statement.
          pattern: ^[\dA-z ]*$
          maxLength: 20
        originatorEchoData:
          type: string
          description: >-
            Echo data reserved for originator use. Must remain unaltered by the
            beneficiary.
          pattern: ^[\dA-z ]*$
          maxLength: 20
        businessReference:
          type: string
          description: >
            Business reference number. The first two numeric digits identify the
            bank and the last 8

            characters contain a unique alphanumeric value generated by the
            originating bank (unique for the

            transaction).
          pattern: ^\d{2}[\dA-z]{8}$
          maxLength: 10
    ZaRtcPaymentStatusReportPaymentSchemeData:
      type: object
      properties:
        beneficiaryEchoData:
          type: string
          description: >-
            Echo data reserved for beneficiary use. Must remain unaltered by the
            originator.
          pattern: ^[\dA-z ]*$
          maxLength: 20
        authorisationId:
          type: string
          description: >
            A unique number assigned by the beneficiary bank to identify the
            transaction if it is approved.

            Must remain unaltered by the originator.
          pattern: ^[\dA-z ]*$
          maxLength: 6
    ZaRtcPaymentStatusReportPaymentScheme:
      properties:
        schema:
          $ref: '#/components/schemas/PaymentSchemeName'
        originalSchemeData:
          $ref: '#/components/schemas/ZaRtcCreditTransferPaymentSchemeData'
        schemeData:
          $ref: '#/components/schemas/ZaRtcPaymentStatusReportPaymentSchemeData'
      required:
        - schema
        - originalSchemeData
        - schemeData
    ZaRppPaymentStatusReportPaymentScheme:
      properties:
        schema:
          $ref: '#/components/schemas/PaymentSchemeName'
      required:
        - schema
    ZaEftPaymentStatusReportPaymentScheme:
      properties:
        schema:
          $ref: '#/components/schemas/PaymentSchemeName'
      required:
        - schema
    PaymentStatusReportPaymentScheme:
      description: >
        Designates which scheme a payment status report is associated with and
        describes scheme-specific information

        for the payment status report.
      type: object
      oneOf:
        - $ref: '#/components/schemas/ZaRtcPaymentStatusReportPaymentScheme'
        - $ref: '#/components/schemas/ZaRppPaymentStatusReportPaymentScheme'
        - $ref: '#/components/schemas/ZaEftPaymentStatusReportPaymentScheme'
      discriminator:
        propertyName: schema
        mapping:
          ZA_RTC: '#/components/schemas/ZaRtcPaymentStatusReportPaymentScheme'
          ZA_RPP: '#/components/schemas/ZaRppPaymentStatusReportPaymentScheme'
          ZA_EFT: '#/components/schemas/ZaEftPaymentStatusReportPaymentScheme'
    StatusReasonTypeCode:
      type: object
      required:
        - schema
        - value
      properties:
        schema:
          type: string
          description: Identifies the value as being a pre-defined code. Always `CODE`.
        value:
          type: string
          enum:
            - ACCC
            - ACCP
            - ACSC
            - ACTC
            - ACWP
            - AB01
            - AB02
            - AB03
            - AB04
            - AB05
            - AB06
            - AB07
            - AB08
            - AB09
            - AB10
            - AB11
            - ACC
            - AC01
            - AC02
            - AC03
            - AC04
            - AC05
            - AC06
            - AC07
            - AC08
            - AC09
            - AC10
            - AC11
            - AC12
            - AC13
            - AC14
            - AC15
            - AC16
            - AC17
            - AEXR
            - AG01
            - AG02
            - AG03
            - AG04
            - AG05
            - AG06
            - AG07
            - AG08
            - AG09
            - AG10
            - AG11
            - AG12
            - AG13
            - AGNT
            - ALAC
            - AM01
            - AM02
            - AM03
            - AM04
            - AM05
            - AM06
            - AM07
            - AM09
            - AM10
            - AM11
            - AM12
            - AM13
            - AM14
            - AM15
            - AM16
            - AM17
            - AM18
            - AM19
            - AM20
            - AM21
            - AM22
            - AM23
            - APAR
            - ARDT
            - ARFR
            - ARJR
            - ATNS
            - BE01
            - BE04
            - BE05
            - BE06
            - BE07
            - BE08
            - BE09
            - BE10
            - BE11
            - BE12
            - BE13
            - BE14
            - BE15
            - BE16
            - BE17
            - BE18
            - BE19
            - BE20
            - BE21
            - BE22
            - BE23
            - CERI
            - CH03
            - CH04
            - CH07
            - CH09
            - CH10
            - CH11
            - CH12
            - CH13
            - CH14
            - CH15
            - CH16
            - CH17
            - CH19
            - CH20
            - CH21
            - CH22
            - CHQC
            - CN01
            - CNOR
            - CURR
            - CUST
            - DNOR
            - DS01
            - DS02
            - DS03
            - DS04
            - DS05
            - DS06
            - DS07
            - DS08
            - DS09
            - DS0A
            - DS0B
            - DS0C
            - DS0D
            - DS0E
            - DS0F
            - DS0G
            - DS0H
            - DS0K
            - DS10
            - DS11
            - DS12
            - DS13
            - DS14
            - DS15
            - DS16
            - DS17
            - DS18
            - DS19
            - DS20
            - DS21
            - DS22
            - DS23
            - DS24
            - DS25
            - DS26
            - DS27
            - DT01
            - DT02
            - DT03
            - DT04
            - DT05
            - DT06
            - DU01
            - DU02
            - DU03
            - DU04
            - DU05
            - DUPL
            - ED01
            - ED03
            - ED05
            - ED06
            - EDTL
            - EDTR
            - ERIN
            - FF01
            - FF02
            - FF03
            - FF04
            - FF05
            - FF06
            - FF07
            - FF08
            - FF09
            - FF10
            - FF11
            - FF12
            - FF13
            - FOCR
            - FR01
            - FRAD
            - G000
            - G001
            - G002
            - G003
            - G004
            - G005
            - G006
            - ID01
            - IEDT
            - IRNR
            - MD01
            - MD02
            - MD05
            - MD06
            - MD07
            - MS02
            - MS03
            - NARR
            - NERI
            - NOAR
            - NOAS
            - NOCM
            - NOOR
            - NOPG
            - NRCH
            - PART
            - PINS
            - RC01
            - RC02
            - RC03
            - RC04
            - RC05
            - RC06
            - RC07
            - RC08
            - RC09
            - RC10
            - RC11
            - RC12
            - RCON
            - RECI
            - REPR
            - RF01
            - RR01
            - RR02
            - RR03
            - RR04
            - RR05
            - RR06
            - RR07
            - RR08
            - RR09
            - RR10
            - RR11
            - RR12
            - RTNS
            - RUTA
            - S000
            - S001
            - S002
            - S003
            - S004
            - SL01
            - SL02
            - SL03
            - SL11
            - SL12
            - SL13
            - SL14
            - SP01
            - SP02
            - SPII
            - TA01
            - TD01
            - TD02
            - TD03
            - TK01
            - TK02
            - TK03
            - TK09
            - TKCM
            - TKSG
            - TKSP
            - TKVE
            - TKXP
            - TM01
            - TS01
            - TS04
            - UCRD
            - UPAY
          description: >
            * `ACCP`: AcceptedCustomerProfile

            * `ACCC`: AcceptedSettlementCompletedCreditorAccount

            * `ACSC`: AcceptedSettlementCompletedDebtorAccount

            * `ACSP`: AcceptedSettlementInProcess

            * `ACTC`: AcceptedTechnicalValidation

            * `ACWC`: AcceptedWithChange

            * `ACWP`: AcceptedWithoutPosting

            * `AB01` : AbortedClearingTimeout

            * `AB02` : AbortedClearingFatalError

            * `AB03` : AbortedSettlementTimeout

            * `AB04` : AbortedSettlementFatalError

            * `AB05` : TimeoutCreditorAgent

            * `AB06` : TimeoutInstructedAgent

            * `AB07` : OfflineAgent

            * `AB08` : OfflineCreditorAgent

            * `AB09` : ErrorCreditorAgent

            * `AB10` : ErrorInstructedAgent

            * `AB11` : TimeoutDebtorAgent

            * `ACC`  : SuccessfulVerboseCdvOutcome

            * `AC01` : IncorrectAccountNumber

            * `AC02` : InvalidDebtorAccountNumber

            * `AC03` : InvalidCreditorAccountNumber

            * `AC04` : ClosedAccountNumber

            * `AC05` : ClosedDebtorAccountNumber

            * `AC06` : BlockedAccount

            * `AC07` : ClosedCreditorAccountNumber

            * `AC08` : InvalidBranchCode

            * `AC09` : InvalidAccountCurrency

            * `AC10` : InvalidDebtorAccountCurrency

            * `AC11` : InvalidCreditorAccountCurrency

            * `AC12` : InvalidAccountType

            * `AC13` : InvalidDebtorAccountType

            * `AC14` : InvalidCreditorAccountType

            * `AC15` : AccountDetailsChanged

            * `AC16` : CardNumberInvalid

            * `AC17` : AccountInLiquidation

            * `AEXR` : AlreadyExpiredRTP

            * `AG01` : TransactionForbidden

            * `AG02` : InvalidBankOperationCode

            * `AG03` : TransactionNotSupported

            * `AG04` : InvalidAgentCountry

            * `AG05` : InvalidDebtorAgentCountry

            * `AG06` : InvalidCreditorAgentCountry

            * `AG07` : UnsuccessfulDirectDebit

            * `AG08` : InvalidAccessRights

            * `AG09` : PaymentNotReceived

            * `AG10` : AgentSuspended

            * `AG11` : CreditorAgentSuspended

            * `AG12` : NotAllowedBookTransfer

            * `AG13` : ForbiddenReturnPayment

            * `AGNT` : IncorrectAgent

            * `ALAC` : AlreadyAcceptedRTP

            * `AM01` : ZeroAmount

            * `AM02` : NotAllowedAmount

            * `AM03` : NotAllowedCurrency

            * `AM04` : InsufficientFunds

            * `AM05` : Duplication

            * `AM06` : TooLowAmount

            * `AM07` : BlockedAmount

            * `AM09` : WrongAmount

            * `AM10` : InvalidControlSum

            * `AM11` : InvalidTransactionCurrency

            * `AM12` : InvalidAmount

            * `AM13` : AmountExceedsClearingSystemLimit

            * `AM14` : AmountExceedsAgreedLimit

            * `AM15` : AmountBelowClearingSystemMinimum

            * `AM16` : InvalidGroupControlSum

            * `AM17` : InvalidPaymentInfoControlSum

            * `AM18` : InvalidNumberOfTransactions

            * `AM19` : InvalidGroupNumberOfTransactions

            * `AM20` : InvalidPaymentInfoNumberOfTransactions

            * `AM21` : LimitExceeded

            * `AM22` : ZeroAmountNotApplied

            * `AM23` : AmountExceedsSettlementLimit

            * `APAR` : AlreadyPaidRTP

            * `ARDT` : AlreadyReturnedTransaction

            * `ARFR` : AlreadyRefusedRTP

            * `ARJR` : AlreadyRejectedRTP

            * `ATNS` : AttachmentsNotSupported

            * `BE01` : InconsistentWithEndCustomer

            * `BE04` : MissingCreditorAddress

            * `BE05` : UnrecognisedInitiatingParty

            * `BE06` : UnknownEndCustomer

            * `BE07` : MissingDebtorAddress

            * `BE08` : MissingDebtorName

            * `BE09` : InvalidCountry

            * `BE10` : InvalidDebtorCountry

            * `BE11` : InvalidCreditorCountry

            * `BE12` : InvalidCountryOfResidence

            * `BE13` : InvalidDebtorCountryOfResidence

            * `BE14` : InvalidCreditorCountryOfResidence

            * `BE15` : InvalidIdentificationCode

            * `BE16` : InvalidDebtorIdentificationCode

            * `BE17` : InvalidCreditorIdentificationCode

            * `BE18` : InvalidContactDetails

            * `BE19` : InvalidChargeBearerCode

            * `BE20` : InvalidNameLength

            * `BE21` : MissingName

            * `BE22` : MissingCreditorName

            * `BE23` : AccountProxyInvalid

            * `CERI` : CheckERI

            * `CH03` :
            RequestedExecutionDateOrRequestedCollectionDateTooFarInFuture

            * `CH04` :
            RequestedExecutionDateOrRequestedCollectionDateTooFarInPast

            * `CH07` : ElementIsNotToBeUsedAtB-andC-Level

            * `CH09` : MandateChangesNotAllowed

            * `CH10` : InformationOnMandateChangesMissing

            * `CH11` : CreditorIdentifierIncorrect

            * `CH12` : CreditorIdentifierNotUnambiguouslyAtTransaction-Level

            * `CH13` : OriginalDebtorAccountIsNotToBeUsed

            * `CH14` : OriginalDebtorAgentIsNotToBeUsed

            * `CH15` : ElementContentIncludesMoreThan140Characters

            * `CH16` : ElementContentFormallyIncorrect

            * `CH17` : ElementNotAdmitted

            * `CH19` : ValuesWillBeSetToNextTARGETday

            * `CH20` : DecimalPointsNotCompatibleWithCurrency

            * `CH21` : RequiredCompulsoryElementMissing

            * `CH22` : COREandB2BwithinOnemessage

            * `CHQC` : ChequeSettledOnCreditorAccount

            * `CN01` : AuthorisationCancelled

            * `CNOR` : CreditorBankIsNotRegistered

            * `CURR` : IncorrectCurrency

            * `CUST` : RequestedByCustomer

            * `DNOR` : DebtorBankIsNotRegistered

            * `DS01` : ElectronicSignaturesCorrect

            * `DS02` : OrderCancelled

            * `DS03` : OrderNotCancelled

            * `DS04` : OrderRejected

            * `DS05` : OrderForwardedForPostprocessing

            * `DS06` : TransferOrder

            * `DS07` : ProcessingOK

            * `DS08` : DecompressionError

            * `DS09` : DecryptionError

            * `DS0A` : DataSignRequested

            * `DS0B` : UnknownDataSignFormat

            * `DS0C` : SignerCertificateRevoked

            * `DS0D` : SignerCertificateNotValid

            * `DS0E` : IncorrectSignerCertificate

            * `DS0F` : SignerCertificationAuthoritySignerNotValid

            * `DS0G` : NotAllowedPayment

            * `DS0H` : NotAllowedAccount

            * `DS0K` : NotAllowedNumberOfTransaction

            * `DS10` : Signer1CertificateRevoked

            * `DS11` : Signer1CertificateNotValid

            * `DS12` : IncorrectSigner1Certificate

            * `DS13` : SignerCertificationAuthoritySigner1NotValid

            * `DS14` : UserDoesNotExist

            * `DS15` : IdenticalSignatureFound

            * `DS16` : PublicKeyVersionIncorrect

            * `DS17` : DifferentOrderDataInSignatures

            * `DS18` : RepeatOrder

            * `DS19` : ElectronicSignatureRightsInsufficient

            * `DS20` : Signer2CertificateRevoked

            * `DS21` : Signer2CertificateNotValid

            * `DS22` : IncorrectSigner2Certificate

            * `DS23` : SignerCertificationAuthoritySigner2NotValid

            * `DS24` : WaitingTimeExpired

            * `DS25` : OrderFileDeleted

            * `DS26` : UserSignedMultipleTimes

            * `DS27` : UserNotYetActivated

            * `DT01` : InvalidDate

            * `DT02` : InvalidCreationDate

            * `DT03` : InvalidNonProcessingDate

            * `DT04` : FutureDateNotSupported

            * `DT05` : InvalidCutOffDate

            * `DT06` : ExecutionDateChanged

            * `DU01` : DuplicateMessageID

            * `DU02` : DuplicatePaymentInformationID

            * `DU03` : DuplicateTransaction

            * `DU04` : DuplicateEndToEndID

            * `DU05` : DuplicateInstructionID

            * `DUPL` : DuplicatePayment

            * `ED01` : CorrespondentBankNotPossible

            * `ED03` : BalanceInfoRequest

            * `ED05` : SettlementFailed

            * `ED06` : SettlementSystemNotAvailable

            * `EDTL` : ExpiryDateTooLong

            * `EDTR` : ExpiryDateTimeReached

            * `ERIN` : ERIOptionNotSupported

            * `FF01` : InvalidFileFormat

            * `FF02` : SyntaxError

            * `FF03` : InvalidPaymentTypeInformation

            * `FF04` : InvalidServiceLevelCode

            * `FF05` : InvalidLocalInstrumentCode

            * `FF06` : InvalidCategoryPurposeCode

            * `FF07` : InvalidPurpose

            * `FF08` : InvalidEndToEndId

            * `FF09` : InvalidChequeNumber

            * `FF10` : BankSystemProcessingError

            * `FF11` : ClearingRequestAborted

            * `FF12` : OriginalTransactionNotEligibleForRequestedReturn

            * `FF13` : RequestForCancellationNotFound

            * `FOCR` : FollowingCancellationRequest

            * `FR01` : Fraud

            * `FRAD` : FraudulentOrigin

            * `G000` : PaymentTransferredAndTracked

            * `G001` : PaymentTransferredAndNotTracked

            * `G002` : CreditDebitNotConfirmed

            * `G003` : CreditPendingDocuments

            * `G004` : CreditPendingFunds

            * `G005` : DeliveredWithServiceLevel

            * `G006` : DeliveredWithoutServiceLevel

            * `ID01` : CorrespondingOriginalFileStillNotSent

            * `IEDT` : IncorrectExpiryDateTime

            * `IRNR` : InitialRTPNeverReceived

            * `MD01` : NoMandate

            * `MD02` : MissingMandatoryInformationInMandate

            * `MD05` : CollectionNotDue

            * `MD06` : RefundRequestByEndCustomer

            * `MD07` : EndCustomerDeceased

            * `MS02` : NotSpecifiedReasonCustomerGenerated

            * `MS03` : NotSpecifiedReasonAgentGenerated

            * `NARR` : Narrative

            * `NERI` : NoERI

            * `NOAR` : NonAgreedRTP

            * `NOAS` : NoAnswerFromCustomer

            * `NOCM` : NotCompliantGeneric

            * `NOOR` : NoOriginalTransactionReceived

            * `NOPG` : NoPaymentGuarantee

            * `NRCH` : PayerOrPayerRTPSPNotReachable

            * `PART` : PartiallyAccepted

            * `PINS` : TypeOfPaymentInstrumentNotSupported

            * `RC01` : BankIdentifierIncorrect

            * `RC02` : InvalidBankIdentifier

            * `RC03` : InvalidDebtorBankIdentifier

            * `RC04` : InvalidCreditorBankIdentifier

            * `RC05` : InvalidBICIdentifier

            * `RC06` : InvalidDebtorBICIdentifier

            * `RC07` : InvalidCreditorBICIdentifier

            * `RC08` : InvalidClearingSystemMemberIdentifier

            * `RC09` : InvalidDebtorClearingSystemMemberIdentifier

            * `RC10` : InvalidCreditorClearingSystemMemberIdentifier

            * `RC11` : InvalidIntermediaryAgent

            * `RC12` : MissingCreditorSchemeId

            * `RCON` : RMessageConflict

            * `RECI` : ReceiverCustomerInformation

            * `REPR` : RTPReceivedCanBeProcessed

            * `RF01` : NotUniqueTransactionReference

            * `RR01` : MissingDebtorAccountOrIdentification

            * `RR02` : MissingDebtorNameOrAddress

            * `RR03` : MissingCreditorNameOrAddress

            * `RR04` : RegulatoryReason

            * `RR05` : RegulatoryInformationInvalid

            * `RR06` : TaxInformationInvalid

            * `RR07` : RemittanceInformationInvalid

            * `RR08` : RemittanceInformationTruncated

            * `RR09` : InvalidStructuredCreditorReference

            * `RR10` : InvalidCharacterSet

            * `RR11` : InvalidDebtorAgentServiceID

            * `RR12` : InvalidPartyID

            * `RTNS` : RTPNotSupportedForDebtor

            * `RUTA` : ReturnUponUnableToApply

            * `S000` : ValidRequestForCancellationAcknowledged

            * `S001` : UETRFlaggedForCancellation

            * `S002` : NetworkStopOfUETR

            * `S003` : RequestForCancellationForwarded

            * `S004` : RequestForCancellationDeliveryAcknowledgement

            * `SL01` : SpecificServiceOfferedByDebtorAgent

            * `SL02` : SpecificServiceOfferedByCreditorAgent

            * `SL03` : ServiceofClearingSystem

            * `SL11` : CreditorNotOnWhitelistOfDebtor

            * `SL12` : CreditorOnBlacklistOfDebtor

            * `SL13` : MaximumNumberOfDirectDebitTransactionsExceeded

            * `SL14` : MaximumDirectDebitTransactionAmountExceeded

            * `SP01` : PaymentStopped

            * `SP02` : PreviouslyStopped

            * `SPII` : RTPServiceProviderIdentifierIncorrect

            * `TA01` : TransmissionAborted

            * `TD01` : NoDataAvailable

            * `TD02` : FileNonReadable

            * `TD03` : IncorrectFileStructure

            * `TK01` : TokenInvalid

            * `TK02` : SenderTokenNotFound

            * `TK03` : ReceiverTokenNotFound

            * `TK09` : TokenMissing

            * `TKCM` : TokenCounterpartyMismatch

            * `TKSG` : TokenSingleUse

            * `TKSP` : TokenSuspended

            * `TKVE` : TokenValueLimitExceeded

            * `TKXP` : TokenExpired

            * `TM01` : InvalidCutOffTime

            * `TS01` : TransmissionSuccessful

            * `TS04` : TransferToSignByHand

            * `UCRD` : UnknownCreditor

            * `UPAY` : UnduePayment
    ProprietaryValueLiteral:
      type: string
      maxLength: 35
      description: A proprietary value.
    ProprietaryValue:
      type: object
      description: >
        A model that describes a proprietary value assigned by some party, the
        purpose of which is to provide for the

        possibility of parties using values that are not standardised.
      required:
        - value
        - schema
      properties:
        schema:
          type: string
          description: >
            Identifies the value as being proprietary (i.e. not published in an
            external list). Always `PROPRIETARY`
        value:
          $ref: '#/components/schemas/ProprietaryValueLiteral'
    StatusReasonType:
      type: object
      oneOf:
        - $ref: '#/components/schemas/StatusReasonTypeCode'
        - $ref: '#/components/schemas/ProprietaryValue'
      discriminator:
        propertyName: schema
        mapping:
          CODE: '#/components/schemas/StatusReasonTypeCode'
          PROPRIETARY: '#/components/schemas/ProprietaryValue'
    StatusReasonInfo:
      type: object
      description: |
        Provides detailed information on a status reason.
      required:
        - reason
      properties:
        reason:
          $ref: '#/components/schemas/StatusReasonType'
        additionalInformation:
          type: string
          description: >
            A human friendly description of the status reason including any
            further details if applicable.
    Status:
      type: object
      required:
        - outcome
      properties:
        outcome:
          type: string
          enum:
            - APPROVED
            - CANCELLED
            - PENDING
            - REJECTED
          description: |
            - `APPROVED`: The instruction has been approved.
            - `CANCELLED`: The instruction has been cancelled.
            - `PENDING`: The instruction is pending.
            - `REJECTED`: The instruction has been rejected.
        reasonInfo:
          type: array
          minItems: 1
          description: >
            A list of `StatusReasonInfo` values providing detailed reason
            information for the outcome.
          items:
            $ref: '#/components/schemas/StatusReasonInfo'
    AddressTypeCode:
      type: string
      enum:
        - ADDR
        - PBOX
        - HOME
        - BIZZ
        - MLTO
        - DLVY
      description: |
        * `ADDR`: A postal address.
        * `PBOX`: A postal office (PO) box address.
        * `HOME`: A (residential) home address.
        * `BIZZ`: A business address.
        * `MLTO`: Address to which mail is sent.
        * `DLVY`: Address to which delivery is to take place
    CountryCode:
      type: string
      pattern: '[A-Z]{2,2}'
      description: >
        A 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).
    PostalAddress:
      type: object
      properties:
        addressType:
          $ref: '#/components/schemas/AddressTypeCode'
        department:
          type: string
          minLength: 1
          maxLength: 70
        streetName:
          type: string
          minLength: 1
          maxLength: 70
        buildingNumber:
          type: string
          minLength: 1
          maxLength: 16
        buildingName:
          type: string
          minLength: 1
          maxLength: 35
        floor:
          type: string
          minLength: 1
          maxLength: 70
        postBox:
          type: string
          minLength: 1
          maxLength: 16
        postCode:
          type: string
          minLength: 1
          maxLength: 16
        townName:
          type: string
          minLength: 1
          maxLength: 35
        townLocationName:
          type: string
          minLength: 1
          maxLength: 35
        districtName:
          type: string
          minLength: 1
          maxLength: 35
        countrySubDivision:
          type: string
          minLength: 1
          maxLength: 35
        country:
          $ref: '#/components/schemas/CountryCode'
        addressLine:
          maxItems: 7
          minItems: 0
          type: array
          items:
            type: string
            minLength: 1
            maxLength: 70
    BranchIdentification:
      type: object
      properties:
        identification:
          type: string
          description: >-
            Unique and unambiguous identification of a branch of a financial
            institution.
        name:
          type: string
          maxLength: 140
          description: >-
            The name by which this branch is known and is usually used to
            identify the branch.
        address:
          $ref: '#/components/schemas/PostalAddress'
      required:
        - identification
    IBAN:
      type: string
      pattern: '[A-Z]{2,2}[0-9]{2,2}[a-zA-Z0-9]{1,30}'
      description: >
        An identifier used internationally by financial institutions to uniquely
        identify the account of a customer at

        a financial institution, as described in the latest edition of the
        international standard ISO 13616: 2007
    IBANIdentifier:
      type: object
      required:
        - schema
        - value
      properties:
        schema:
          type: string
          description: Indicates the account identifier is an IBAN, always `IBAN`
        value:
          $ref: '#/components/schemas/IBAN'
    ExternalAccountIdentificationCode:
      type: string
      enum:
        - AIIN
        - BBAN
        - CUID
        - UPIC
      description: >
        * `AIIN`: Issuer Identification Number - identifies a card issuing
        institution in an international interchange environment. Issued by ABA
        (American Bankers Association).

        * `BBAN`: Basic Bank Account Number - identifier used nationally by
        financial institutions, ie, in individual countries, generally as part
        of a National Account Numbering Scheme(s), to uniquely identify the
        account of a customer.

        * `CUID`: (United States) Clearing House Interbank Payments System
        (CHIPS) Universal Identification (UID) - identifies entities that own
        accounts at CHIPS participating financial institutions, through which
        CHIPS payments are effected. The CHIPS UID is assigned by the New York
        Clearing House.

        * `UPIC`: Universal Payment Identification Code - identifier used by the
        New York Clearing House to mask confidential data, such as bank accounts
        and bank routing numbers. UPIC numbers remain with business customers,
        regardless of banking relationship changes.
    GenericAccountIdentificationSchemeCode:
      type: object
      required:
        - value
        - schema
      properties:
        schema:
          type: string
          description: Identifies the value as being a pre-defined code. Always `CODE`.
        value:
          $ref: '#/components/schemas/ExternalAccountIdentificationCode'
    GenericAccountIdentificationScheme:
      type: object
      description: >-
        Identifies the scheme that defines the identification of a generic
        account.
      oneOf:
        - $ref: '#/components/schemas/GenericAccountIdentificationSchemeCode'
        - $ref: '#/components/schemas/ProprietaryValue'
      discriminator:
        propertyName: schema
        mapping:
          CODE: '#/components/schemas/GenericAccountIdentificationSchemeCode'
          PROPRIETARY: '#/components/schemas/ProprietaryValue'
    GenericAccountIdentifier:
      type: object
      required:
        - schema
        - value
      properties:
        schema:
          type: string
          description: Identifies this account identifier as generic, always `GENERIC`
        scheme:
          $ref: '#/components/schemas/GenericAccountIdentificationScheme'
        issuer:
          type: string
          maxLength: 35
          description: The entity that assigns the identification
        value:
          type: string
          minLength: 1
          maxLength: 40
    MobileNumberIdentifier:
      allOf:
        - $ref: '#/components/schemas/NonBankingIdentifier'
        - type: object
          required:
            - value
          properties:
            value:
              $ref: '#/components/schemas/PhoneNumber'
    NonBankingIdentifier:
      type: object
      properties:
        namespace:
          description: >
            An identifier's namespace provides a context for the identifier to
            distinguish different identifiers which

            may have the same value but be intended to identify different
            accounts. For example, a bank may use the same

            MSISDN (identifier) with different namespaces to distinguish between
            a customer's cheque or savings accounts.


            This may be used by the following schemes:
              - ZA_RPP
          type: string
          minLength: 1
          maxLength: 40
        schema:
          type: string
          description: Indicates the schema of the identifier, e.g. `MOBILE`, `CUSTOM`.
      discriminator:
        propertyName: schema
        mapping:
          MOBILE: '#/components/schemas/MobileNumberIdentifier'
          CUSTOM: '#/components/schemas/CustomIdentifier'
    CustomIdentifier:
      allOf:
        - $ref: '#/components/schemas/NonBankingIdentifier'
        - type: object
          required:
            - value
          properties:
            value:
              type: string
              minLength: 1
              maxLength: 2048
    PhoneNumber:
      type: string
      pattern: ^\+[0-9]{1,3}-[0-9()+\-]{1,30}$
    FinancialInstitutionIdentifier:
      type: object
      required:
        - schema
      properties:
        schema:
          type: string
          description: >-
            Indicates the account identifier is a Financial Institution
            Identifier, always `FII`
        bicfi:
          type: string
          pattern: ^[A-Z0-9]{4,4}[A-Z]{2,2}[A-Z0-9]{2,2}([A-Z0-9]{3,3}){0,1}$
          description: >
            A code allocated to a financial or non-financial institution by the
            ISO 9362 Registration Authority as

            described in ISO 9362 Banking - Banking telecommunication messages -
            Business identifier code (BIC)
        memberId:
          type: string
          maxLength: 35
          description: Identification of a member of a clearing system.
        namespaces:
          type: array
          items:
            description: >
              An identifier's namespace provides a context for the identifier to
              distinguish different identifiers which

              may have the same value but be intended to identify different
              accounts. For example, a bank may use the same

              MSISDN (identifier) with different namespaces to distinguish
              between a customer's cheque or savings accounts.


              This may be used by the following schemes:
                - ZA_RPP
            type: string
            minLength: 1
            maxLength: 40
    AccountIdentifier:
      type: object
      oneOf:
        - $ref: '#/components/schemas/IBANIdentifier'
        - $ref: '#/components/schemas/GenericAccountIdentifier'
        - $ref: '#/components/schemas/MobileNumberIdentifier'
        - $ref: '#/components/schemas/CustomIdentifier'
        - $ref: '#/components/schemas/FinancialInstitutionIdentifier'
      discriminator:
        propertyName: schema
        mapping:
          IBAN: '#/components/schemas/IBANIdentifier'
          GENERIC: '#/components/schemas/GenericAccountIdentifier'
          MOBILE: '#/components/schemas/MobileNumberIdentifier'
          CUSTOM: '#/components/schemas/CustomIdentifier'
          FII: '#/components/schemas/FinancialInstitutionIdentifier'
    AccountIdentification:
      type: object
      required:
        - identifier
      description: >-
        Holds details pertaining to an identifier of an account or store of
        value.
      properties:
        identifier:
          $ref: '#/components/schemas/AccountIdentifier'
        accountKnownAs:
          type: string
          maxLength: 40
          description: A name or label of the account.
        registeredSchemes:
          type: array
          description: The list of schemes with which the identifier is registered.
          items:
            $ref: '#/components/schemas/PaymentSchemeName'
    InstitutionIdentification:
      type: object
      properties:
        bicfi:
          type: string
          pattern: ^[A-Z0-9]{4,4}[A-Z]{2,2}[A-Z0-9]{2,2}([A-Z0-9]{3,3}){0,1}$
          description: >
            A code allocated to a financial or non-financial institution by the
            ISO 9362 Registration Authority as

            described in ISO 9362 Banking - Banking telecommunication messages -
            Business identifier code (BIC)
        lei:
          type: string
          pattern: '[A-Z0-9]{18,18}[0-9]{2,2}'
          description: >-
            An organisation identified by a code allocated to a party as
            described in ISO 17442 Financial Services - Legal Entity Identifier
            (LEI).
        companyRegistration:
          type: string
          maxLength: 35
          description: >-
            A unique identifier assigned to a company or organisation by a duly
            appointed authority within a country.
        memberId:
          type: string
          maxLength: 35
          description: Identification of a member of a clearing system.
        name:
          type: string
          maxLength: 140
          description: >-
            Name by which an institution is known and which is usually used to
            identify that institution
        branch:
          $ref: '#/components/schemas/BranchIdentification'
        additionalIdentifications:
          type: array
          items:
            $ref: '#/components/schemas/AccountIdentification'
    ContactDetails:
      type: object
      properties:
        phoneNumber:
          $ref: '#/components/schemas/PhoneNumber'
        mobileNumber:
          $ref: '#/components/schemas/PhoneNumber'
        emailAddress:
          type: string
          format: email
    PersonIdentificationCode:
      type: object
      required:
        - value
        - schema
      properties:
        schema:
          type: string
          description: Identifies the value as being a pre-defined code. Always `CODE`.
        value:
          type: string
          enum:
            - ARNU
            - CCPT
            - CUST
            - DRLC
            - EMPL
            - NIDN
            - SOSE
            - TELE
            - TXID
            - POID
          description: >
            * `ARNU`: AlienRegistrationNumber. A number assigned by a social
            security agency to identify a non-resident person.

            * `CCPT`: PassportNumber. A number assigned by an authority to
            identify the passport number of a person.

            * `CUST`: CustomerIdentificationNumber. A number assigned by an
            issuer to identify a customer.

            * `DRLC`: DriversLicenseNumber. A number assigned by an authority to
            identify a driver's license.

            * `EMPL`: EmployeeIdentificationNumber. A number assigned by a
            registration authority to an employee.

            * `NIDN`: NationalIdentityNumber. A number assigned by an authority
            to identify the national identity number of a person.

            * `SOSE`: SocialSecurityNumber. A number assigned by an authority to
            identify the social security number of a person.

            * `TELE`: TelephoneNumber. A number assigned by a telephone or
            mobile phone operator to identify a person. A person may have
            multiple phone numbers.

            * `TXID`: TaxIdentificationNumber. A number assigned by a tax
            authority to identify a person.

            * `POID`: PersonOtherIdentification. Other identification of the
            person.
    PersonIdentifierScheme:
      type: object
      oneOf:
        - $ref: '#/components/schemas/PersonIdentificationCode'
        - $ref: '#/components/schemas/ProprietaryValue'
      discriminator:
        propertyName: schema
        mapping:
          CODE: '#/components/schemas/PersonIdentificationCode'
          PROPRIETARY: '#/components/schemas/ProprietaryValue'
    PersonIdentifier:
      type: object
      required:
        - identification
      properties:
        identification:
          type: string
          maxLength: 35
          description: >
            Unique and unambiguous identification of a person, for example a
            passport.
        scheme:
          $ref: '#/components/schemas/PersonIdentifierScheme'
        issuer:
          type: string
          maxLength: 35
          description: The entity that assigns the identification
    PersonIdentification:
      type: object
      required:
        - identifiers
        - schema
      properties:
        schema:
          type: string
          description: |
            Identifies the party as a person, always `PERSON`
        identifiers:
          type: array
          items:
            $ref: '#/components/schemas/PersonIdentifier'
    OrganisationIdentifierBic:
      type: object
      description: >
        An organisation identified by a 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).
      required:
        - BIC
        - schema
      properties:
        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}'
        schema:
          type: string
          description: >-
            Indicates the identifier as a BIC organisation identifier, always
            `BIC`
    OrganisationIdentifierLei:
      type: object
      description: >
        An organisation identified by a code allocated to a party as described
        in ISO 17442 Financial Services -

        Legal Entity Identifier (LEI).
      required:
        - LEI
        - schema
      properties:
        LEI:
          type: string
          pattern: '[A-Z0-9]{18,18}[0-9]{2,2}'
        schema:
          type: string
          description: >-
            Indicates the identifier as a LEI organisation identifier, always
            `LEI`
    OrganisationIdentificationCode:
      type: object
      required:
        - value
        - schema
      properties:
        schema:
          type: string
          description: Identifies the value as being a pre-defined code. Always `CODE`.
        value:
          type: string
          enum:
            - BANK
            - CBID
            - CHID
            - CINC
            - COID
            - CUST
            - DUNS
            - EMPL
            - GS1G
            - SREN
            - SRET
            - TXID
            - BDID
            - BOID
          description: >
            * `BANK` : BankPartyIdentification. Unique and unambiguous
            assignment made by a specific bank or similar financial institution
            to identify a relationship as defined between the bank and its
            client.

            * `CBID` : CentralBankIdentificationNumber. A unique identification
            number assigned by a central bank to identify an organisation.

            * `CHID` : ClearingIdentificationNumber. A unique identification
            number assigned by a clearing house to identify an organisation

            * `CINC` : CertificateOfIncorporationNumber. A unique identification
            number assigned by a designated authority to a certificate of
            incorporation and used to identify an organisation.

            * `COID` : CountryIdentificationCode. Country authority given
            organisation identification (e.g., corporate registration number)

            * `CUST` : CustomerNumber. Number assigned by an issuer to identify
            a customer or number assigned by a party to identify a creditor or
            debtor relationship.

            * `DUNS` : DataUniversalNumberingSystem. A unique identification
            number provided by Dun & Bradstreet to identify an organisation.

            * `EMPL` : EmployerIdentificationNumber. Number assigned by a
            registration authority to an employer.

            * `GS1G` : GS1GLNIdentifier. Global Location Number. A
            non-significant reference number used to identify legal entities,
            functional entities, or physical entities according to GS1 numbering
            scheme rules.The number is used to retrieve detailed information
            that is linked to it.

            * `SREN` : SIREN. The SIREN number is a 9 digit code assigned by
            INSEE, the French National Institute for Statistics and Economic
            Studies, to identify an organisation in France.

            * `SRET` : SIRET. The SIRET number is a 14 digit code assigned by
            INSEE, the French National Institute for Statistics and Economic
            Studies, to identify an organisation unit in France. It consists of
            the SIREN number, followed by a five digit classification number, to
            identify the local geographical unit of that entity

            * `TXID` : TaxIdentificationNumber. Number assigned by a tax
            authority to identify an organisation.

            * `BDID` : BusinessDomainIdentifier. Identifier of the business
            domain in which the organisation is active.

            * `BOID` : BusinessOtherIdentification. Other identification of the
            organisation.
    OrganisationIdentifierScheme:
      type: object
      oneOf:
        - $ref: '#/components/schemas/OrganisationIdentificationCode'
        - $ref: '#/components/schemas/ProprietaryValue'
      discriminator:
        propertyName: schema
        mapping:
          CODE: '#/components/schemas/OrganisationIdentificationCode'
          PROPRIETARY: '#/components/schemas/ProprietaryValue'
    OrganisationIdentifierOther:
      type: object
      description: >
        A unique identification of an organisation, as assigned by an
        institution, using an identification scheme.
      required:
        - identification
        - schema
      properties:
        identification:
          type: string
          maxLength: 35
        schema:
          type: string
          description: >-
            Indicates the identifier as a unique identification of an
            organisation, as assigned by an institution. Always `OTHER`
        issuer:
          type: string
          maxLength: 35
          description: The name of the entity that assigns the identification
        scheme:
          $ref: '#/components/schemas/OrganisationIdentifierScheme'
    OrganisationIdentifier:
      type: object
      description: Holds identification details for an organisation.
      oneOf:
        - $ref: '#/components/schemas/OrganisationIdentifierBic'
        - $ref: '#/components/schemas/OrganisationIdentifierLei'
        - $ref: '#/components/schemas/OrganisationIdentifierOther'
      discriminator:
        propertyName: schema
        mapping:
          BIC: '#/components/schemas/OrganisationIdentifierBic'
          LEI: '#/components/schemas/OrganisationIdentifierLei'
          OTHER: '#/components/schemas/OrganisationIdentifierOther'
    OrganisationIdentification:
      type: object
      required:
        - identifiers
        - schema
      properties:
        schema:
          type: string
          description: Identifies the party as an organisation, always `ORGANISATION`
        identifiers:
          type: array
          items:
            $ref: '#/components/schemas/OrganisationIdentifier'
    PartyIdentification:
      type: object
      description: |
        The identification of a party, either a person or an organisation.
      oneOf:
        - $ref: '#/components/schemas/PersonIdentification'
        - $ref: '#/components/schemas/OrganisationIdentification'
      discriminator:
        propertyName: schema
        mapping:
          PERSON: '#/components/schemas/PersonIdentification'
          ORGANISATION: '#/components/schemas/OrganisationIdentification'
    Party:
      type: object
      description: >
        This model is the basic representation of a Party. It is expanded on
        depending on whether the party is a person

        or an organisation.
      properties:
        legalName:
          type: string
          minLength: 1
          maxLength: 140
          description: >
            The legal name by which this party is known (the "FICA" name). This
            is the full name of the party

            as found on country-issued documentation (national identity, company
            registration documentation etc).
        knownAsName:
          type: string
          minLength: 1
          maxLength: 140
          description: >
            The name by which this party is commonly known in day to day use.
            For example, a shortening of their legal

            name or a nickname that they commonly use. This is "non-official".
            However, it is acceptable for this field

            to be set to the same as `legalName`.
        address:
          $ref: '#/components/schemas/PostalAddress'
        contactDetails:
          $ref: '#/components/schemas/ContactDetails'
        countryOfResidence:
          $ref: '#/components/schemas/CountryCode'
        identification:
          $ref: '#/components/schemas/PartyIdentification'
    BankingIdentifier:
      type: object
      oneOf:
        - $ref: '#/components/schemas/IBANIdentifier'
        - $ref: '#/components/schemas/GenericAccountIdentifier'
      discriminator:
        propertyName: schema
        mapping:
          IBAN: '#/components/schemas/IBANIdentifier'
          GENERIC: '#/components/schemas/GenericAccountIdentifier'
    ExternalCashAccountType1Code:
      type: string
      enum:
        - CACC
        - CARD
        - CASH
        - CHAR
        - CISH
        - COMM
        - CPAC
        - LLSV
        - LOAN
        - MGLD
        - MOMA
        - NREX
        - ODFT
        - ONDP
        - OTHR
        - SACC
        - SLRY
        - SVGS
        - TAXE
        - TRAN
        - TRAS
      description: >
        * `CACC` : Current - Account used to post debits and credits when no
        specific account has been nominated.

        * `CARD` : Card Account - Account used for credit card payments.

        * `CASH` : Cash Payment - Account used for the payment of cash.

        * `CHAR` : Charges - Account used for charges if different from the
        account for payment.

        * `CISH` : Cash Income - Account used for payment of income if different
        from the current cash account.

        * `COMM` : Commission - Account used for commission if different from
        the account  for payment.

        * `CPAC` : Clearing Participant Settlement Account - Account used to
        post settlement debit and credit entries on behalf of a designated
        Clearing Participant.

        * `LLSV` : Limited Liquidity Savings Account - Account used for savings
        with special interest and withdrawal terms.

        * `LOAN` : Loan - Account used for loans.

        * `MGLD` : Marginal Lending - Account used for a marginal lending
        facility.

        * `MOMA` : Money Market - Account used for money markets if different
        from the cash account.

        * `NREX` : Non-Resident External - Account used for non-resident
        external.

        * `ODFT` : Overdraft - Account is used for overdrafts.

        * `ONDP` : Overnight Deposit - Account used for overnight deposits.

        * `OTHR` : Other Account - Account not otherwise specified.

        * `SACC` : Settlement - Account used to post debit and credit entries,
        as a result of transactions cleared and settled through a specific
        clearing and settlement system.

        * `SLRY` : Salary - Accounts used for salary payments.

        * `SVGS` : Savings - Account used for savings.

        * `TAXE` : Tax - Account used for taxes if different from the account
        for payment.

        * `TRAN` : Transacting Account - A transacting account is the most basic
        type of bank account that you can get. The main difference between
        transaction and cheque accounts is that you usually do not get a cheque
        book with your transacting account and neither are you offered an
        overdraft facility.

        * `TRAS` : Cash Trading - Account used for trading if different from the
        current cash account.
    AccountTypeCode:
      type: object
      required:
        - value
        - schema
      properties:
        schema:
          type: string
          description: Identifies the value as being a pre-defined code. Always `CODE`.
        value:
          $ref: '#/components/schemas/ExternalCashAccountType1Code'
    AccountType:
      type: object
      oneOf:
        - $ref: '#/components/schemas/AccountTypeCode'
        - $ref: '#/components/schemas/ProprietaryValue'
      discriminator:
        propertyName: schema
        mapping:
          CODE: '#/components/schemas/AccountTypeCode'
          PROPRIETARY: '#/components/schemas/ProprietaryValue'
    PaymentAccount:
      type: object
      description: >
        Representation of an account for payment purposes.

        Note that at least one of `identification` or `proxy` is expected to be
        present.
      properties:
        identification:
          $ref: '#/components/schemas/BankingIdentifier'
        proxy:
          $ref: '#/components/schemas/NonBankingIdentifier'
        type:
          $ref: '#/components/schemas/AccountType'
        name:
          type: string
          maxLength: 70
          description: >
            Name of the account, as assigned by the account servicing
            institution, in agreement with the account owner

            in order to provide an additional means of identification of the
            account.
        currency:
          type: string
          pattern: ^[A-Z]{3}$
          description: Identification of the currency in which the account is held.
    Amount:
      type: object
      properties:
        value:
          type: number
          format: double
          minimum: 0
          description: >
            The payment amount in the denomination of the indicated currency, in
            the

            format '<major units>.<minor units> with the number of minor units
            (fractional digits)

            compliant with the number of decimal places published in ISO 4217.

            Currency Code | Example | Valid | Notes

            --- | --- | --- | ---

            USD | 10.0 | ✓ | Represents 10 USD and no cents.

            USD | 10.00 | ✓ |

            USD | 10.001 | ✗ | US dollar does not support three decimal places.

            JPY | 10.0 | ✓ | Represents 10 Japanese Yen.

            JPY | 10.1 | ✗ | Japanese Yen does not support decimal places.
        currency:
          type: string
          pattern: ^[A-Z]{3}$
          description: >
            A valid, active currency code as defined in ISO 4217 indicating the
            currency of the amount.
      required:
        - value
        - currency
    TransactionAmounts:
      type: object
      required:
        - bankSettlementAmount
      properties:
        bankSettlementAmount:
          $ref: '#/components/schemas/Amount'
          description: >
            The amount of money to be moved between the instructing and
            instructed agent, which may include charges

            or deductions, expressed in the currency as ordered by the
            initiating party
        instructedAmount:
          $ref: '#/components/schemas/Amount'
          description: >
            The amount of money to be moved between the debtor and creditor,
            before deduction of

            charges, expressed in the currency as ordered by the initiating
            party.
    ReferredDocumentType:
      type: object
      required:
        - schema
      properties:
        schema:
          type: string
          enum:
            - CODE
            - PROPRIETARY
          description: >
            Identifies the value as being either proprietary (`PROPRIETARY`) or
            as being a pre-defined code (`CODE`).
        issuer:
          type: string
          maxLength: 35
          description: Identification of the issuer of the reference document _type_.
      discriminator:
        propertyName: schema
        mapping:
          CODE: '#/components/schemas/ReferredDocumentTypeCode'
          PROPRIETARY: '#/components/schemas/ReferredDocumentTypeProprietary'
    ReferredDocumentTypeCode:
      type: object
      allOf:
        - $ref: '#/components/schemas/ReferredDocumentType'
        - type: object
          required:
            - value
          description: Specifies the type of referred document
          properties:
            value:
              type: string
              enum:
                - AROI
                - BOLD
                - CINV
                - CMCN
                - CNFA
                - CREN
                - DEBN
                - DISP
                - DNFA
                - HIRI
                - MSIN
                - PUOR
                - SBIN
                - SOAC
                - TSUT
                - VCHR
              description: |
                * `AROI` : AccountReceivableOpenItem
                * `BOLD` : BillOfLading
                * `CINV` : CommercialInvoice
                * `CMCN` : CommercialContract
                * `CNFA` : CreditNoteRelatedToFinancialAdjustment
                * `CREN` : CreditNote
                * `DEBN` : DebitNote
                * `DISP` : DispatchAdvice
                * `DNFA` : DebitNoteRelatedToFinancialAdjustment
                * `HIRI` : HireInvoice
                * `MSIN` : MeteredServiceInvoice
                * `PUOR` : PurchaseOrder
                * `SBIN` : SelfBilledInvoice
                * `SOAC` : StatementOfAccount
                * `TSUT` : TradeServicesUtilityTransaction
                * `VCHR` : Voucher
    ReferredDocumentTypeProprietary:
      type: object
      allOf:
        - $ref: '#/components/schemas/ReferredDocumentType'
        - type: object
          required:
            - value
          properties:
            value:
              $ref: '#/components/schemas/ProprietaryValueLiteral'
    ReferredDocument:
      type: object
      properties:
        type:
          $ref: '#/components/schemas/ReferredDocumentType'
        documentIdentifier:
          type: string
          maxLength: 35
    ReferredDocumentAmount:
      type: object
      properties:
        duePayableAmount:
          $ref: '#/components/schemas/Amount'
          description: >-
            Amount specified is the exact amount due and payable to the
            creditor.
        remittedAmount:
          $ref: '#/components/schemas/Amount'
          description: Amount of money remitted for the referred document.
    CreditorReferenceType:
      type: object
      required:
        - schema
      properties:
        schema:
          type: string
          enum:
            - CODE
            - PROPRIETARY
          description: >
            Identifies the value as being either proprietary (`PROPRIETARY`) or
            as being a pre-defined code (`CODE`).
        issuer:
          type: string
          maxLength: 35
          description: Entity that assigns the credit reference type
      discriminator:
        propertyName: schema
        mapping:
          CODE: '#/components/schemas/CreditorReferenceTypeCode'
          PROPRIETARY: '#/components/schemas/CreditorReferenceTypeProprietary'
    CreditorReferenceTypeCode:
      type: object
      allOf:
        - $ref: '#/components/schemas/CreditorReferenceType'
        - type: object
          required:
            - value
          description: Specifies the type of creditor reference.
          properties:
            value:
              type: string
              enum:
                - RADM
                - RPIN
                - FXDR
                - DISP
                - PUOR
                - SCOR
              description: >
                * `RADM` (RemittanceAdviceMessage): Document is a remittance
                advice sent separately from the current transaction.

                * `RPIN` (RelatedPaymentInstruction): Document is a linked
                payment instruction to which the current payment instruction is
                related, for example, in a cover scenario.

                * `FXDR` (ForeignExchangeDealReference): Document is a
                pre-agreed or pre- arranged foreign exchange transaction to
                which the payment transaction refers.

                * `DISP` (DispatchAdvice): Document is a dispatch advice.

                * `PUOR` (PurchaseOrder): Document is a purchase order.

                * `SCOR` (StructuredCommunicationReference): Document is a
                structured communication reference provided by the creditor to
                identify the referred transaction.
    CreditorReferenceTypeProprietary:
      type: object
      allOf:
        - $ref: '#/components/schemas/CreditorReferenceType'
        - type: object
          required:
            - value
          properties:
            value:
              $ref: '#/components/schemas/ProprietaryValueLiteral'
    CreditorReference:
      type: object
      properties:
        type:
          $ref: '#/components/schemas/CreditorReferenceType'
        reference:
          type: string
          maxLength: 35
          description: >-
            Unique reference, as assigned by the creditor, to unambiguously
            refer to the payment transaction.
    StructuredRemittanceInformation:
      type: object
      properties:
        referredDocuments:
          type: array
          items:
            $ref: '#/components/schemas/ReferredDocument'
        referredDocumentAmount:
          $ref: '#/components/schemas/ReferredDocumentAmount'
        creditorReference:
          $ref: '#/components/schemas/CreditorReference'
        originatorReference:
          type: string
          maxLength: 35
          description: >-
            An explanation of the transaction, this field may be used to capture
            the information which may then be displayed on the payment
            originator's bank statement (ie. the debtor for a credit transfer or
            the creditor for a direct debit). This field is not supported by all
            Electrum partner implementations, and will be ignored if provided in
            an unsupported use-case.
        additionalRemittanceInformation:
          type: array
          items:
            type: string
            maxLength: 140
          maxItems: 3
    RemittanceInformation:
      type: object
      properties:
        unstructured:
          type: array
          items:
            type: string
            maxLength: 140
        structured:
          type: array
          items:
            $ref: '#/components/schemas/StructuredRemittanceInformation'
    SupplementaryData:
      type: object
      description: >
        A list of key-value pairs to support adding any supplementary/additional
        data to an Electrum Regulated Payments API message.
      additionalProperties:
        type: string
    LocalInstrumentTypeCode:
      type: object
      required:
        - value
        - schema
      properties:
        schema:
          type: string
          description: Identifies the value as being a pre-defined code. Always `CODE`.
        value:
          type: string
          enum:
            - '0000'
            - '0001'
            - '0002'
            - '0090'
            - '0091'
            - '0092'
            - '0220'
            - '0221'
            - '0222'
            - '0223'
            - '0224'
            - '0225'
            - '0226'
            - '0227'
            - '04'
            - '05'
            - '08'
            - '19'
            - '58'
            - '60'
            - '82'
            - '83'
            - '85'
            - '89'
            - AC01
            - ACCEPT
            - ADD
            - ARC
            - ASTI
            - B2B
            - B2BAMIPM
            - BACP
            - BPA
            - BSE
            - BTR
            - CARD
            - CCD
            - CCI
            - CHN
            - CIE
            - CKS
            - CLSCCPERX
            - CLSCCPLCH
            - COR1
            - CORAMIPM
            - CORE
            - CPP
            - CR1AMIPM
            - CRP
            - CTP
            - CTR
            - CTX
            - DDFA
            - DDMC
            - DDMP
            - DDMU
            - DDNR
            - DDT
            - DEP
            - DRB
            - DRC
            - DRW
            - FADAMIPM
            - FFR
            - FFS
            - GST
            - IAT
            - ICMC
            - IDEAL
            - IN
            - INST
            - INSTIDEAL
            - INSTNT01
            - INSTNT01IDEAL
            - INSTTC01
            - INSTTC01IDEAL
            - IPA
            - ISE
            - ITP
            - MANP
            - NLDO
            - NLGOV
            - NLUP
            - ONCL
            - PERI
            - POP
            - POS
            - PPD
            - RCK
            - RDD
            - RIBA
            - RIDO
            - RIDV
            - RTR
            - SBTI
            - SCN
            - SDCL
            - SDD
            - SDN
            - SGT
            - SRD
            - SRT
            - STR
            - SVC
            - TEL
            - TRF
            - UDD
            - WEB
          description: >
            * `0000` - BusinessPayment

            * `0001` - ConvertedBankPayment

            * `0002` - StandingOrder

            * `0090` - MassPaymentBeneficiary

            * `0091` - MassPaymentOurs

            * `0092` - MassPaymentShared

            * `0220` - StandingAuthorisationGeneral

            * `0221` - OneOffAuthorisation

            * `0222` - StandingAuthorisationCompanies

            * `0223` - StandingAuthorisationLotteries

            * `0224` - OneOffAuthorisationCharities

            * `0225` - OneOffAuthorisationTuitionFees

            * `0226` - OneOffAuthorisationConstructionIndustry

            * `0227` -
            StandingAuthorisationCompaniesWithoutDebtorRevocationRight

            * `04` - PreauthorisedDirectDebitDE

            * `05` - NonPreauthorisedDirectDebitDE

            * `08` - PreauthorisedDirectDebitOrdinaireNormalClearing4Day

            * `19` - BusinessToCustomerDirectDebit

            * `58` - BusinessToBusinessDirectDebit

            * `60` - RecoveredBillofExchangeorPromissoryNote

            * `82` - NonPreauthorisedDirectDebitAT

            * `83` - PreauthorisedDirectDebitAT

            * `85` -
            PreauthorisedDirectDebitAccéléréAcceleratedClearing2DayOrdinaireNormalClearing4Day

            * `89` - PreauthorisedDirectDebitVérifiéVerifiedClearing

            * `AC01` - IncorrectAccountNumber

            * `ACCEPT` - PaymentViaAcceptgiroOwnedByCurrence

            * `ADD` - AuthenticatedDirectDebit

            * `ARC` - AccountsReceivableCheck

            * `ASTI` - AncillarySystemTransferInitiation

            * `B2B` - SEPABusinessToBusinessDirectDebit

            * `B2BAMIPM` - SEPAB2BDirectDebitAMI

            * `BACP` - BackupPayment

            * `BPA` - BatchPaymentsAruba

            * `BSE` - PaperlessChequeCollection

            * `BTR` - BankTransfer

            * `CARD` - CardClearing

            * `CCD` - CashConcentrationOrDisbursementCorporateCounterparty

            * `CCI` - CashConcentrationIntragroup

            * `CHN` - TruncatedChecks

            * `CIE` - CustomerInitiatedEntry

            * `CKS` - CheckSameDaySettlementWire

            * `CLSCCPERX` - CLSClearedFXForEurex

            * `CLSCCPLCH` - CLSClearedFXForLCH

            * `COR1` - SEPADirectDebit1DaySettlement

            * `CORAMIPM` - SEPACoreDirectDebitAMI

            * `CORE` - SEPADirectDebitCore

            * `CPP` - CashPerPost

            * `CR1AMIPM` - SEPACoreD1DirectDebitAMI

            * `CRP` - CreditTransferPreferred

            * `CTP` - CustomerTransferPlus

            * `CTR` - CustomerTransfer

            * `CTX` - CorporateTradeExchange

            * `DDFA` - DirectDebitFixedAmount

            * `DDMC` - DirectDebitConfirmedElectronicMandate

            * `DDMP` - DirectDebitPaperMandateWithPaperAuthorisation

            * `DDMU` - DirectDebitUnconfirmedElectronicMandate

            * `DDNR` - CoreNoRefund

            * `DDT` - DirectDebits

            * `DEP` - DepositToSendersAccount

            * `DRB` - BankToBankDrawdownRequestOrResponseNonvalue

            * `DRC` - CustomerOrCorporateDrawdownRequestOrResponseNonvalue

            * `DRW` - DrawdownResponseValueToHonorADrawdownRequest

            * `FADAMIPM` - SEPAFADirectDebitAMI

            * `FFR` - FedFundsReturned

            * `FFS` - FedFundsSold

            * `GST` - TruncatedCreditTransfers

            * `IAT` - InternationalACH

            * `ICMC` - IncidentManagementCorrection

            * `IDEAL` - PaymentsViaInternetOwnedByCurrence

            * `IN` - CrossBorderCustomerCreditTransfer

            * `INST` - InstantCreditTransfer

            * `INSTIDEAL` -
            PaymentsViaInternetOwnedByCurrenceUsingInstantCreditTransfer

            * `INSTNT01` - InstantCreditTransferNotTimeCritical

            * `INSTNT01IDEAL` -
            PaymentsViaInternetOwnedByCurrenceUsingInstantCreditTransferNotTimeCritical

            * `INSTTC01` - InstantCreditTransferTimeCritical

            * `INSTTC01IDEAL` -
            PaymentsViaInternetOwnedByCurrenceUsingInstantCreditTransferTimeCritical

            * `IPA` - InstantPaymentsAruba

            * `ISE` - ImageBasedChequeCollection

            * `ITP` - InstantCreditTransferPreferred

            * `MANP` - MandatedPayment

            * `NLDO` - DutchDomesticBulkPayment

            * `NLGOV` - DirectDebitInitiatedByTheGovernmentWithSpecialConditions

            * `NLUP` - DutchUrgentPayment

            * `ONCL` - Overnight

            * `PERI` - PaymentWithERI

            * `POP` - PointOfPurchase

            * `POS` - PointOfSale

            * `PPD` - PrearrangedPaymentOrDepositConsumerCounterparty

            * `RCK` - RepresentedCheckEntry

            * `RDD` - ReturnedDirectDebits

            * `RIBA` - NonPreauthorisedDirectDebitRIBA

            * `RIDO` - PreauthorisedRevocableDirectDebit

            * `RIDV` - PreauthorisedRevocableUrgentDirectDebit

            * `RTR` - ReturnedCreditTransfers

            * `SBTI` - SettlementBankTransferInitiation

            * `SCN` - RevokedTruncatedChecks

            * `SDCL` - SameDayClearedPayments

            * `SDD` - RevokedDirectDebits

            * `SDN` - PaymentsViaStandaardDigitaleNota

            * `SGT` - RevokedTruncatedCreditTransfers

            * `SRD` - RevokedReturnedDirectDebits

            * `SRT` - RevokedReturnedCreditTransfers

            * `STR` - RevokedCreditTransfers

            * `SVC` - NonValueServiceMessage

            * `TEL` - TelephoneInitiatedEntry

            * `TRF` - CreditTransfers

            * `UDD` - UnauthenticatedDirectDebit

            * `WEB` - InternetInitiatedEntry
    LocalInstrumentType:
      type: object
      oneOf:
        - $ref: '#/components/schemas/LocalInstrumentTypeCode'
        - $ref: '#/components/schemas/ProprietaryValue'
      discriminator:
        propertyName: schema
        mapping:
          CODE: '#/components/schemas/LocalInstrumentTypeCode'
          PROPRIETARY: '#/components/schemas/ProprietaryValue'
    PaymentTypeInformation:
      type: object
      properties:
        localInstrument:
          $ref: '#/components/schemas/LocalInstrumentType'
    OriginalTransactionData:
      type: object
      description: >
        Contains key elements related to the original transaction that is being
        referred to.
      properties:
        creditor:
          $ref: '#/components/schemas/Party'
        creditorAccount:
          $ref: '#/components/schemas/PaymentAccount'
        creditorAgent:
          $ref: '#/components/schemas/InstitutionIdentification'
        amounts:
          $ref: '#/components/schemas/TransactionAmounts'
        remittanceInformation:
          $ref: '#/components/schemas/RemittanceInformation'
        debtor:
          $ref: '#/components/schemas/Party'
        debtorAccount:
          $ref: '#/components/schemas/PaymentAccount'
        debtorAgent:
          $ref: '#/components/schemas/InstitutionIdentification'
        supplementaryData:
          $ref: '#/components/schemas/SupplementaryData'
        settlementDate:
          type: string
          format: date
          description: >
            Date on which the amount of money ceases to be available to the
            agent that owes it and when the amount of

            money becomes available to the agent to which it is due.
        paymentMethod:
          type: string
          enum:
            - CreditTransfer
            - DirectDebit
          description: |
            Specifies the means of payment for the original transaction.
        paymentTypeInformation:
          $ref: '#/components/schemas/PaymentTypeInformation'
    PaymentStatusReport:
      description: >
        This message is used to report information about the positive or
        negative status of a credit transfer

        instruction, or to report on a pending instruction.


        The fields `instructingAgent`, `instructedAgent` and
        `originalTransactionData` are not mandatory, but will

        always be populated in payment status reports sent by Electrum.
      allOf:
        - $ref: '#/components/schemas/BaseTransactionResponseMessage'
        - type: object
          properties:
            paymentScheme:
              $ref: '#/components/schemas/PaymentStatusReportPaymentScheme'
            status:
              $ref: '#/components/schemas/Status'
            instructingAgent:
              $ref: '#/components/schemas/InstitutionIdentification'
              description: >
                The instructing agent is the party sending the status message
                and not the party that sent the original

                instruction that is being reported on.
            instructedAgent:
              $ref: '#/components/schemas/InstitutionIdentification'
              description: >
                The instructed agent is the party receiving the status message
                and not the party that received the

                original instruction that is being reported on.
            originalTransactionData:
              $ref: '#/components/schemas/OriginalTransactionData'
          required:
            - paymentScheme
            - status
    SchemeDeregistration:
      type: object
      required:
        - schema
      properties:
        schema:
          $ref: '#/components/schemas/PaymentSchemeName'
      discriminator:
        propertyName: schema
        mapping:
          ZA_RPP: '#/components/schemas/ZaRppProxyIdentifierSchemeDeregistration'
    ZaRppProxyIdentifierSchemeDeregistration:
      allOf:
        - $ref: '#/components/schemas/SchemeDeregistration'
        - type: object
          required:
            - registeredAccountId
          properties:
            registeredAccountId:
              $ref: '#/components/schemas/AccountIdentifier'
            participant:
              $ref: '#/components/schemas/InstitutionIdentification'
    IdentifierSchemeDeregistrationRequest:
      allOf:
        - $ref: '#/components/schemas/BaseMessage'
        - type: object
          description: >
            Holds details of an account identifier and other information
            required to deregister the identifier.

            externally with a scheme.
          required:
            - schemeDeregistration
            - uetr
          properties:
            schemeDeregistration:
              $ref: '#/components/schemas/SchemeDeregistration'
            uetr:
              type: string
              format: UUID
              description: >
                Universally unique identifier to provide an end-to-end
                reference.

                This identifier remains the same for all messages related to the
                same transaction.
    SchemeDeregistrationOutcome:
      type: object
      required:
        - schema
        - deregistrationStatus
      properties:
        schema:
          $ref: '#/components/schemas/PaymentSchemeName'
        deregistrationStatus:
          type: string
          enum:
            - ACCEPTED
            - REJECTED
      discriminator:
        propertyName: schema
        mapping:
          ZA_RPP: '#/components/schemas/ZaRppProxyIdentifierSchemeDeregistrationOutcome'
    ZaRppProxyIdentifierSchemeDeregistrationOutcome:
      allOf:
        - $ref: '#/components/schemas/SchemeDeregistrationOutcome'
        - type: object
          required:
            - agent
            - proxy
          properties:
            agent:
              $ref: '#/components/schemas/InstitutionIdentification'
            proxy:
              $ref: '#/components/schemas/NonBankingIdentifier'
            reasonCode:
              type: string
              enum:
                - AB06
                - AB07
                - AB10
                - AG03
                - AG10
                - AM18
                - CH21
                - DT02
                - DUPL
                - FF02
                - NAUT
                - PD01
                - PX02
                - PX03
                - PX04
                - PX05
                - PX06
                - RC02
                - RC08
                - RR10
                - RR12
              description: |
                * `AB06` : Timeout
                * `AB07` : OfflineAgent
                * `AB10` : ErrorInstructedAgent
                * `AG03` : TransactionNotSupported
                * `AG10` : AgentSuspended
                * `AM18` : InvalidNumberOfTransactions
                * `CH21` : RequiredCompulsoryElementMissing
                * `DT02` : InvalidCreationDate
                * `DUPL` : DuplicateRequest
                * `FF02` : SyntaxError
                * `NAUT` : NotAuthorised
                * `PD01` : ProxyDomainInvalid
                * `PX02` : InvalidProxy
                * `PX03` : ProxyNotFound
                * `PX04` : ProxyFormatInvalid
                * `PX05` : Restricted Proxy
                * `PX06` : Default proxy already exists
                * `RC02` : InvalidBankIdentifier
                * `RC08` : InvalidClearingSystemMemberIdentifier
                * `RR10` : InvalidCharacterSet
                * `RR12` : InvalidPartyID
    IdentifierSchemeDeregistrationResponse:
      allOf:
        - $ref: '#/components/schemas/BaseResponseMessage'
        - type: object
          description: >-
            Holds details of the outcome of the deregistration of an identifier
            externally with a scheme.
          required:
            - schemeRegistrationOutcome
            - uetr
          properties:
            schemeRegistrationOutcome:
              $ref: '#/components/schemas/SchemeDeregistrationOutcome'
            uetr:
              type: string
              format: UUID
              description: >
                Universally unique identifier to provide an end-to-end
                reference.

                This identifier remains the same for all messages related to the
                same transaction.
    SchemeRegistration:
      type: object
      required:
        - schema
      properties:
        schema:
          $ref: '#/components/schemas/PaymentSchemeName'
      discriminator:
        propertyName: schema
        mapping:
          ZA_RPP: '#/components/schemas/ZaRppProxyIdentifierSchemeRegistration'
    ZaRppProxyIdentifierSchemeRegistration:
      allOf:
        - $ref: '#/components/schemas/SchemeRegistration'
        - type: object
          properties:
            identifier:
              $ref: '#/components/schemas/NonBankingIdentifier'
            participant:
              $ref: '#/components/schemas/InstitutionIdentification'
    IdentifierSchemeRegistrationRequest:
      allOf:
        - $ref: '#/components/schemas/BaseMessage'
        - type: object
          description: >-
            Holds details of an account identifier and other information
            required to register the identifier externally with a scheme.
          required:
            - schemeRegistration
            - uetr
          properties:
            schemeRegistration:
              $ref: '#/components/schemas/SchemeRegistration'
            uetr:
              type: string
              format: UUID
              description: >
                Universally unique identifier to provide an end-to-end
                reference.

                This identifier remains the same for all messages related to the
                same transaction.
    SchemeRegistrationOutcome:
      type: object
      required:
        - schema
        - registrationStatus
      properties:
        schema:
          $ref: '#/components/schemas/PaymentSchemeName'
        registrationStatus:
          type: string
          enum:
            - ACCEPTED
            - REJECTED
      discriminator:
        propertyName: schema
        mapping:
          ZA_RPP: '#/components/schemas/ZaRppProxyIdentifierSchemeRegistrationOutcome'
    ZaRppProxyIdentifierSchemeRegistrationOutcome:
      allOf:
        - $ref: '#/components/schemas/SchemeRegistrationOutcome'
        - type: object
          required:
            - agent
            - proxy
          properties:
            agent:
              $ref: '#/components/schemas/InstitutionIdentification'
            proxy:
              $ref: '#/components/schemas/NonBankingIdentifier'
            reasonCode:
              type: string
              enum:
                - AB06
                - AB07
                - AB10
                - AG03
                - AG10
                - AM18
                - CH21
                - DT02
                - DUPL
                - FF02
                - NAUT
                - PD01
                - PX02
                - PX03
                - PX04
                - PX05
                - PX06
                - RC02
                - RC08
                - RR10
                - RR12
              description: |
                * `AB06` : Timeout
                * `AB07` : OfflineAgent
                * `AB10` : ErrorInstructedAgent
                * `AG03` : TransactionNotSupported
                * `AG10` : AgentSuspended
                * `AM18` : InvalidNumberOfTransactions
                * `CH21` : RequiredCompulsoryElementMissing
                * `DT02` : InvalidCreationDate
                * `DUPL` : DuplicateRequest
                * `FF02` : SyntaxError
                * `NAUT` : NotAuthorised
                * `PD01` : ProxyDomainInvalid
                * `PX02` : InvalidProxy
                * `PX03` : ProxyNotFound
                * `PX04` : ProxyFormatInvalid
                * `PX05` : Restricted Proxy
                * `PX06` : Default proxy already exists
                * `RC02` : InvalidBankIdentifier
                * `RC08` : InvalidClearingSystemMemberIdentifier
                * `RR10` : InvalidCharacterSet
                * `RR12` : InvalidPartyID
    IdentifierSchemeRegistrationResponse:
      allOf:
        - $ref: '#/components/schemas/BaseResponseMessage'
        - type: object
          description: >-
            Holds details of the outcome of the registration of an identifier
            externally with a scheme.
          required:
            - schemeRegistrationOutcome
            - uetr
          properties:
            schemeRegistrationOutcome:
              $ref: '#/components/schemas/SchemeRegistrationOutcome'
            uetr:
              type: string
              format: UUID
              description: >
                Universally unique identifier to provide an end-to-end
                reference.

                This identifier remains the same for all messages related to the
                same transaction.
    SchemeInquiry:
      type: object
      properties:
        schema:
          type: string
      required:
        - schema
      discriminator:
        propertyName: schema
        mapping:
          ZA_RPP_LIST_DOMAINS: '#/components/schemas/ZaRppListDomainsInquiry'
          ZA_RPP_LIST_PARTICIPANTS: '#/components/schemas/ZaRppListParticipantsInquiry'
    ZaRppListDomainsInquiry:
      allOf:
        - $ref: '#/components/schemas/SchemeInquiry'
      type: object
      required:
        - agent
      properties:
        agent:
          $ref: '#/components/schemas/InstitutionIdentification'
    ZaRppListParticipantsInquiry:
      allOf:
        - $ref: '#/components/schemas/SchemeInquiry'
      type: object
      required:
        - agent
      properties:
        agent:
          $ref: '#/components/schemas/InstitutionIdentification'
    SchemeInquiryRequest:
      type: object
      allOf:
        - $ref: '#/components/schemas/BaseMessage'
        - type: object
          required:
            - inquiry
          properties:
            inquiry:
              $ref: '#/components/schemas/SchemeInquiry'
    SchemeReport:
      type: object
      properties:
        schema:
          type: string
      required:
        - schema
      discriminator:
        propertyName: schema
        mapping:
          ZA_RPP_LIST_DOMAINS: '#/components/schemas/ZaRppListDomainsSchemeReport'
          ZA_RPP_LIST_PARTICIPANTS: '#/components/schemas/ZaRppListParticipantsSchemeReport'
    ZaInstitutionIdentificationWithDomain:
      allOf:
        - $ref: '#/components/schemas/InstitutionIdentification'
        - type: object
          properties:
            domain:
              description: >
                A BankservAfrica-specific field requirement that associates this
                institution with a specific "domain"

                - which is essentially a type of namespace. This is the
                equivalent of the Electrum 'namespace' found on

                Non-Banking Identifiers, such as a MobileIdentifier
              type: string
              maxLength: 35
    ZaRppListDomainsSchemeReport:
      allOf:
        - $ref: '#/components/schemas/SchemeReport'
      type: object
      required:
        - agent
        - domains
      properties:
        agent:
          $ref: '#/components/schemas/InstitutionIdentification'
        domains:
          type: array
          items:
            $ref: '#/components/schemas/ZaInstitutionIdentificationWithDomain'
    ZaRppServices:
      type: string
      enum:
        - PBPX
        - PBAC
        - RTP-PBPX
        - RTP-PBAC
    ZaInstitutionDomainDetails:
      type: object
      required:
        - domain
        - name
        - services
      properties:
        domain:
          description: >
            A BankservAfrica-specific field requirement that associates this
            institution with a specific "domain"

            - which is essentially a type of namespace. This is the equivalent
            of the Electrum 'namespace' found on

            Non-Banking Identifiers, such as a MobileIdentifier
          type: string
          maxLength: 35
          minLength: 1
        name:
          description: >-
            Name by which an institution is known and which is usually used to
            identify that institution
          type: string
          minLength: 1
          maxLength: 100
        services:
          type: array
          minItems: 0
          items:
            $ref: '#/components/schemas/ZaRppServices'
    ParticipantIdentificationDetails:
      required:
        - name
        - services
      properties:
        bicfi:
          type: string
          pattern: ^[A-Z0-9]{4,4}[A-Z]{2,2}[A-Z0-9]{2,2}([A-Z0-9]{3,3}){0,1}$
          description: >
            A code allocated to a financial or non-financial institution by the
            ISO 9362 Registration Authority as

            described in ISO 9362 Banking - Banking telecommunication messages -
            Business identifier code (BIC)
        memberId:
          type: string
          minLength: 1
          maxLength: 35
          description: Identification of a member of a clearing system.
        name:
          type: string
          maxLength: 140
          description: >-
            Name by which an institution is known and which is usually used to
            identify that institution.
        branch:
          $ref: '#/components/schemas/BranchIdentification'
        services:
          type: array
          minItems: 0
          items:
            $ref: '#/components/schemas/ZaRppServices'
        sponsoringAgentBicfi:
          type: string
          pattern: ^[A-Z0-9]{4,4}[A-Z]{2,2}[A-Z0-9]{2,2}([A-Z0-9]{3,3}){0,1}$
          description: >
            A code allocated to a financial or non-financial institution by the
            ISO 9362 Registration Authority as

            described in ISO 9362 Banking - Banking telecommunication messages -
            Business identifier code (BIC)
        sponsoringAgentName:
          type: string
          maxLength: 100
          description: >-
            Name by which an institution is known and which is usually used to
            identify that institution.
        domainDetails:
          type: array
          items:
            $ref: '#/components/schemas/ZaInstitutionDomainDetails'
    ZaRppListParticipantsSchemeReport:
      allOf:
        - $ref: '#/components/schemas/SchemeReport'
      type: object
      required:
        - agent
        - participantDetails
      properties:
        agent:
          $ref: '#/components/schemas/InstitutionIdentification'
        participantDetails:
          type: array
          items:
            $ref: '#/components/schemas/ParticipantIdentificationDetails'
    SchemeInquiryResponse:
      type: object
      allOf:
        - $ref: '#/components/schemas/BaseResponseMessage'
        - type: object
          required:
            - originalMessageIdentification
            - originalCreationDateTime
          properties:
            report:
              $ref: '#/components/schemas/SchemeReport'
    DeterminationRequest:
      type: object
      properties:
        schema:
          $ref: '#/components/schemas/PaymentSchemeName'
      required:
        - schema
      discriminator:
        propertyName: schema
        mapping:
          ZA_RPP: '#/components/schemas/ZaRppDeterminationRequest'
    ZaRppRequestor:
      type: object
      properties:
        schema:
          type: string
      discriminator:
        propertyName: schema
        mapping:
          PARTY: '#/components/schemas/PartyWithSchema'
          INSTITUTION_IDENTIFICATION: '#/components/schemas/InstitutionIdentificationWithSchemaAndDomain'
    PartyWithSchema:
      allOf:
        - $ref: '#/components/schemas/ZaRppRequestor'
        - $ref: '#/components/schemas/Party'
    InstitutionIdentificationWithSchemaAndDomain:
      allOf:
        - $ref: '#/components/schemas/ZaRppRequestor'
        - $ref: '#/components/schemas/InstitutionIdentification'
        - type: object
          properties:
            domain:
              description: >
                A BankservAfrica-specific field requirement that associates this
                institution with a specific "domain"

                - which is essentially a type of namespace. This is the
                equivalent of the Electrum 'namespace' found on

                Non-Banking Identifiers, such as a MobileIdentifier
              type: string
              maxLength: 35
    ZaRppIdentifier:
      oneOf:
        - $ref: '#/components/schemas/MobileNumberIdentifier'
        - $ref: '#/components/schemas/CustomIdentifier'
        - $ref: '#/components/schemas/GenericAccountIdentifier'
      discriminator:
        propertyName: schema
        mapping:
          MOBILE: '#/components/schemas/MobileNumberIdentifier'
          CUSTOM: '#/components/schemas/CustomIdentifier'
          GENERIC: '#/components/schemas/GenericAccountIdentifier'
    ZaRppDeterminationRequest:
      allOf:
        - $ref: '#/components/schemas/DeterminationRequest'
        - type: object
          required:
            - identifier
            - uetr
            - verificationIdentification
          properties:
            instructingAgent:
              $ref: '#/components/schemas/InstitutionIdentification'
            instructedAgent:
              $ref: '#/components/schemas/InstitutionIdentification'
            requestor:
              $ref: '#/components/schemas/ZaRppRequestor'
            identifier:
              $ref: '#/components/schemas/ZaRppIdentifier'
            uetr:
              type: string
              format: UUID
              description: >
                Universally unique identifier to provide an end-to-end
                reference.

                This identifier remains the same for all messages related to the
                same transaction.
            verificationIdentification:
              type: string
              description: |
                Unique identifier for this specific verification request.
              maxLength: 35
              minLength: 1
    IdentifierDeterminationRequest:
      type: object
      allOf:
        - $ref: '#/components/schemas/BaseMessage'
        - type: object
          required:
            - request
          properties:
            request:
              $ref: '#/components/schemas/DeterminationRequest'
    IdentifierDeterminationReport:
      type: object
      properties:
        schema:
          $ref: '#/components/schemas/PaymentSchemeName'
      required:
        - schema
      discriminator:
        propertyName: schema
        mapping:
          ZA_RPP: '#/components/schemas/ZaRppIdentifierDeterminationReport'
    ZaRppAccountInformation:
      type: object
      required:
        - traditionalIdentifier
        - creationDate
      properties:
        traditionalIdentifier:
          $ref: '#/components/schemas/BankingIdentifier'
        traditionalAccountType:
          $ref: '#/components/schemas/AccountType'
        proxy:
          $ref: '#/components/schemas/NonBankingIdentifier'
        creationDate:
          type: string
          format: date-time
          description: >
            The date when the account referenced by this proxy identifier was
            created.
    ZaRppIdentificationReport:
      type: object
      description: >
        A report providing information from the lookup of a proxy in the context
        of the ZA RPP Payment Scheme.


        This report returns information required to proceed with the clearing of
        funds through the use of the `proxy`

        (identifier) provided in the identifier determination request.
        Specifically, this report will provide the outcome

        of the lookup of said identifier, indication whether it is valid or not,
        as well as provide the name ("known as

        name") of the creditor, and the legal name of the creditor (both of
        these are mandatory in the ZA RPP Payment

        Scheme, despite not being mandatory in this API), namely:
          - `accountOwner.knownAsName`
          - `accountOwner.legalName`
      required:
        - outcome
      properties:
        transactionLimit:
          $ref: '#/components/schemas/Amount'
        accountOwner:
          $ref: '#/components/schemas/Party'
        outcome:
          type: string
          enum:
            - SUCCESSFUL
            - FAILED
        accountInformation:
          $ref: '#/components/schemas/ZaRppAccountInformation'
        accountAgent:
          $ref: '#/components/schemas/InstitutionIdentification'
        reasonCode:
          type: string
          minLength: 1
          maxLength: 4
          description: "* `AB06` :\tTransaction stopped due to timeout at the Instructed Agent.\n* `AB07` :\tAgent of message is not online. Generic usage if it cannot be determined who exactly is not online.\n* `AB10` :\tAn error occured at the instructed agent\n* `AC06` :\tAccount specified is blocked, prohibiting posting of transactions against it\n* `AG01` :\tTransaction forbidden on this type of account\n* `AG03` :\tTransaction type not supported/authorized on this account.\n* `AG10` :\tAgent of message is suspended from the Real Time Payment system. Generic usage if it cannot be determined who exactly is suspended.\n* `AGNT` :\tAgent in the payment workflow is incorrect\n* `AM02` :\tSpecific transaction/message amount is greater than allowed maximum (e.g. payee proxy participant service limit exceeded\n* `CH21` :\tMandatory element is missing .\n* `DT02` :\tInvalid creation date and time in Group Header (eg, historic date) .\n* `DU03` :\tTransaction is not unique.\n* `DUPL` :\tRequest is a duplicate of another request\n* `FF02` :\tSyntax error reason is provided as narrative information in the additional reason information.\n* `FF08` :\tEnd to End Id missing or invalid .\n* `NAUT` :\tPermission to be processed is not granted\n* `NOOR` :\tOriginal SCT never received\n* `PD01` :\tDomain not found or invalid\n* `PD02` :\tSuspended\tDomain provided is suspended pending investigation\n* `BE23` :\tPhone number or email address, or any other proxy, used as the account proxy is unknown or invalid.\n* `PX03` :\tProxy not found in central repository\n* `PX04` :\tFormat of proxy invalid\n* `RC05` :\tBIC identifier is invalid or missing.\n* `RC08` :\tClearingSystemMemberidentifier is invalid or missing. Generic usage if cannot specify between debit or credit account .\n* `RR10` :\tCharacter set supplied not valid for the country and payment type.\n* `RR12` :\tInvalid or missing identification required within a particular country or payment type.\n* `RF01` :\tTransaction reference is not unique within the message.\n* `AC16` :\tAccount in Sequestration\n* `AC17` :\tAccount in Liquidation\n* `AC04` :\tAccount Closed\n* `AC01` :\tFormat of the account number specified is not correct\n* `MD07` :\tAccount Holder Deceased\n* `NOCM` :\tCustomer account is not compliant with regulatory requirements, for example FICA (in South Africa) or any other regulatory requirements which render an account inactive for certain processing.\n* `BE01` :\tIdentification of end customer is not consistent with associated account number. (formerly CreditorConsistency).\n"
    Instruction:
      type: object
      properties:
        code:
          type: string
          enum:
            - PHOA
            - TELA
            - RT14
          description: >
            * `PHOA`: Please advise/contact next agent by phone

            * `TELA`: Please advise/contact next agent by the most efficient
            means of telecommunication.

            * `RT14`: Type is an enquiry on a suspicious transaction.
        information:
          type: string
          minLength: 1
          maxLength: 140
          description: >
            Further information complementing the coded instruction or
            instruction to the next agent that

            is bilaterally agreed or specific to a user community.
    ZaRppIdentifierDeterminationReport:
      allOf:
        - $ref: '#/components/schemas/IdentifierDeterminationReport'
        - type: object
          required:
            - schema
            - originalUetr
            - originalVerificationIdentification
            - reportInformation
          properties:
            instructingAgent:
              $ref: '#/components/schemas/InstitutionIdentification'
            instructedAgent:
              $ref: '#/components/schemas/InstitutionIdentification'
            originalUetr:
              type: string
              format: UUID
              description: >
                The universally unique identifier provided in the original
                request as an end-to-end reference.

                This identifier remains the same for all messages related to the
                same transaction.
            originalRequestor:
              $ref: '#/components/schemas/ZaRppRequestor'
            reportInformation:
              $ref: '#/components/schemas/ZaRppIdentificationReport'
            originalVerificationIdentification:
              type: string
              description: >
                The `request.verificationIdentification` as provided in the
                original request.
              maxLength: 35
              minLength: 1
            instructionForCreatorAgent:
              type: array
              description: >
                Further information related to the proxy resolution response,
                provided by the

                Operator, and intended for the creator agent.
              minItems: 0
              items:
                $ref: '#/components/schemas/Instruction'
    IdentifierDeterminationResponse:
      allOf:
        - $ref: '#/components/schemas/BaseResponseMessage'
        - type: object
          required:
            - report
          properties:
            report:
              $ref: '#/components/schemas/IdentifierDeterminationReport'
    CurrencyCode:
      type: string
      pattern: ^[A-Z]{3}$
      description: >
        A valid, active currency code as defined in ISO 4217 indicating the
        currency of the amount.
    AccountStatusCode:
      type: string
      description: A set of codes that describe the status of an account
      enum:
        - ENABLED
        - DISABLED
        - DELETED
    Restriction:
      type: object
      required:
        - restrictionType
        - validFrom
      properties:
        restrictionType:
          type: string
          description: >-
            A value that represents the type of this restriction. Used for
            processing purposes.
          enum:
            - NO_CREDITS
            - NO_DEBITS
        validFrom:
          type: string
          format: date-time
          description: >
            The moment in time from which (i.e. at this point and after) the
            restriction is applicable.
        validUntil:
          type: string
          format: date-time
          description: >
            The moment in time from which (i.e. after this point) the
            restriction is no longer applicable.
    Account:
      description: >-
        An account within the Electrum Account mirror. Note that the
        `primaryIdentification` is permanent and immutable.
      properties:
        type:
          $ref: '#/components/schemas/AccountType'
        accountName:
          type: string
          maxLength: 40
        currency:
          $ref: '#/components/schemas/CurrencyCode'
        openingDate:
          type: string
          format: date-time
          description: |
            Date and time at which the account was established.
        status:
          $ref: '#/components/schemas/AccountStatusCode'
        restrictions:
          type: array
          items:
            $ref: '#/components/schemas/Restriction'
        additionalIdentifications:
          type: array
          items:
            $ref: '#/components/schemas/AccountIdentification'
        primaryIdentification:
          $ref: '#/components/schemas/AccountIdentification'
      required:
        - primaryIdentification
    AccountOwner:
      type: object
      required:
        - schema
        - recordIdentifier
      description: >
        Contains information detailing the owner of an account, which can be
        either a person or organisation.
      properties:
        schema:
          type: string
          enum:
            - ORGANISATION
            - INDIVIDUAL
          description: Defines the type of owner.
        recordIdentifier:
          type: string
          minLength: 1
          maxLength: 50
          description: >
            A unique identifier used to identify this Account Owner record. This
            is distinct from the identification

            of the Account Owner, which may or may not be unique within this
            system, but which is typically used for

            identification outside of the system, such as passport numbers or
            national identification numbers. This

            identifier is used exclusively to identify the owner within this
            system.
      discriminator:
        propertyName: schema
        mapping:
          ORGANISATION: '#/components/schemas/OrganisationAccountOwner'
          INDIVIDUAL: '#/components/schemas/PersonAccountOwner'
    OrganisationName:
      type: object
      description: |
        Name of the organisation.
      properties:
        tradingAs:
          type: string
          minLength: 1
          maxLength: 140
          description: |
            Name of the organisation.
        legalEntityName:
          type: string
          minLength: 1
          maxLength: 140
          description: |
            The legal name of the organisation.
    OrganisationAccountOwner:
      description: |
        Contains information detailing an account owner that is an organisation.
      allOf:
        - $ref: '#/components/schemas/AccountOwner'
        - type: object
          properties:
            name:
              $ref: '#/components/schemas/OrganisationName'
            identifiers:
              type: array
              items:
                $ref: '#/components/schemas/OrganisationIdentifier'
            address:
              $ref: '#/components/schemas/PostalAddress'
            contactDetails:
              $ref: '#/components/schemas/ContactDetails'
            countryOfResidence:
              $ref: '#/components/schemas/CountryCode'
    PersonName:
      type: object
      description: |
        Name of the person.
      required:
        - knownAs
      properties:
        title:
          type: string
          maxLength: 70
          description: |
            Title of the person.
        initials:
          type: string
          maxLength: 70
          description: |
            Initials of the person.
        firstName:
          type: string
          maxLength: 70
          description: |
            Given name of the person.
        lastName:
          type: string
          maxLength: 70
          description: |
            Family name of the person.
        additionalNames:
          type: string
          maxLength: 140
          description: |
            Additional names of the person.
        knownAs:
          type: string
          maxLength: 70
          description: |
            A name that the person is known by.
    PersonAccountOwner:
      description: |
        Contains information detailing an account owner who is a natural person.
      allOf:
        - $ref: '#/components/schemas/AccountOwner'
        - type: object
          properties:
            name:
              $ref: '#/components/schemas/PersonName'
            identifiers:
              type: array
              items:
                $ref: '#/components/schemas/PersonIdentifier'
            address:
              $ref: '#/components/schemas/PostalAddress'
            contactDetails:
              $ref: '#/components/schemas/ContactDetails'
            countryOfResidence:
              $ref: '#/components/schemas/CountryCode'
    AccountUpdateRequest:
      description: >
        A request containing information that will be used to update the
        particulars stored for the given Account.
      allOf:
        - $ref: '#/components/schemas/BaseMessage'
        - type: object
          properties:
            account:
              $ref: '#/components/schemas/Account'
            primaryAccountOwnerDetails:
              $ref: '#/components/schemas/AccountOwner'
            otherAccountOwnerDetails:
              type: array
              items:
                $ref: '#/components/schemas/AccountOwner'
          required:
            - account
            - primaryAccountOwnerDetails
    AccountAdditionalIdUpdateRequest:
      description: >
        A request containing information that will be used to update the
        additional ID particulars stored for the given

        Account. The account to be updated is identified by the
        `currentIdentification` field.
      allOf:
        - $ref: '#/components/schemas/BaseMessage'
        - type: object
          properties:
            currentIdentification:
              $ref: '#/components/schemas/AccountIdentification'
            additionalIdentification:
              $ref: '#/components/schemas/AccountIdentification'
          required:
            - currentIdentification
            - additionalIdentification
    BaseTransactionMessage:
      allOf:
        - $ref: '#/components/schemas/BaseMessage'
        - type: object
          description: >
            A model containing the foundational elements shared across messages
            relating to transactions.
          required:
            - transactionIdentifiers
          properties:
            transactionIdentifiers:
              $ref: '#/components/schemas/TransactionIdentifiers'
    ShortenedAccountNumber:
      type: string
      description: >
        An account number, shortened to 11 characters according to the account
        number reduction rules

        in the EFT technical standards. This field is intended for internal use
        by Electrum and generally should not

        be populated by partner implementations.
      minLength: 11
      maxLength: 11
    ZaEftSchemeData:
      type: object
      required:
        - userReference
      properties:
        userReference:
          type: string
          description: >
            An explanation of an EFT transaction, which will be printed on the
            debtor's statement for direct debits or

            the creditor's statement for credit transfers. Note that when
            populating a value for a _direct debit_, the

            first 10 characters must contain the Banks user code as configured
            at Bankserv. If configured, Electrum

            will populate this value automatically, in which case at most 20
            characters should be used as a reference

            to avoid truncation.
          maxLength: 30
        shortenedDebtorAccountNumber:
          $ref: '#/components/schemas/ShortenedAccountNumber'
        shortenedCreditorAccountNumber:
          $ref: '#/components/schemas/ShortenedAccountNumber'
    ZaEftDirectDebitPaymentScheme:
      type: object
      properties:
        schema:
          $ref: '#/components/schemas/PaymentSchemeName'
        schemeData:
          $ref: '#/components/schemas/ZaEftSchemeData'
      required:
        - schema
        - schemeData
    DirectDebitPaymentScheme:
      description: >
        Designates which scheme a direct debit is associated with and describes
        scheme-specific information for the

        direct debit.
      type: object
      oneOf:
        - $ref: '#/components/schemas/ZaEftDirectDebitPaymentScheme'
      discriminator:
        propertyName: schema
        mapping:
          ZA_EFT: '#/components/schemas/ZaEftDirectDebitPaymentScheme'
    SequenceTypeCode:
      description: >
        Identifies the direct debit sequence:

        * `FRST` : First collection of a series of direct debit instructions.

        * `RCUR` : Direct debit instruction where the debtor's authorisation is
        used for regular direct debit transactions initiated by the creditor.

        * `FNAL` : Final collection of a series of direct debit instructions.

        * `OOFF` : Direct debit instruction where the debtor's authorisation is
        used to initiate one single direct debit transaction.

        * `RPRE` : Collection used to represent previously reversed or returned
        direct debit transactions.
      type: string
      enum:
        - FRST
        - RCUR
        - FNAL
        - OOFF
        - RPRE
    PurposeTypeCode:
      type: object
      required:
        - value
        - schema
      properties:
        schema:
          type: string
          description: Identifies the value as being a pre-defined code. Always `CODE`.
        value:
          type: string
          enum:
            - BKDF
            - BKFE
            - BKFM
            - BKIP
            - BKPP
            - CBLK
            - CDCB
            - CDCD
            - CDCS
            - CDDP
            - CDOC
            - CDQC
            - ETUP
            - FCOL
            - MTUP
            - ACCT
            - CASH
            - COLL
            - CSDB
            - DEPT
            - INTC
            - INTP
            - LIMA
            - NETT
            - BFWD
            - CCIR
            - CCPC
            - CCPM
            - CCSM
            - CRDS
            - CRPR
            - CRSP
            - CRTL
            - EQPT
            - EQUS
            - EXPT
            - EXTD
            - FIXI
            - FWBC
            - FWCC
            - FWSB
            - FWSC
            - MARG
            - MBSB
            - MBSC
            - MGCC
            - MGSC
            - OCCC
            - OPBC
            - OPCC
            - OPSB
            - OPSC
            - OPTN
            - OTCD
            - REPO
            - RPBC
            - RPCC
            - RPSB
            - RPSC
            - RVPO
            - SBSC
            - SCIE
            - SCIR
            - SCRP
            - SHBC
            - SHCC
            - SHSL
            - SLEB
            - SLOA
            - SWBC
            - SWCC
            - SWPT
            - SWSB
            - SWSC
            - TBAS
            - TBBC
            - TBCC
            - TRCP
            - AGRT
            - AREN
            - BEXP
            - BOCE
            - COMC
            - CPYR
            - GDDS
            - GDSV
            - GSCB
            - LICF
            - MP2B
            - POPE
            - ROYA
            - SCVE
            - SERV
            - SUBS
            - SUPP
            - TRAD
            - CHAR
            - COMT
            - MP2P
            - ECPG
            - ECPR
            - ECPU
            - EPAY
            - CLPR
            - COMP
            - DBTC
            - GOVI
            - HLRP
            - HLST
            - INPC
            - INPR
            - INSC
            - INSU
            - INTE
            - LBRI
            - LIFI
            - LOAN
            - LOAR
            - PENO
            - PPTI
            - RELG
            - RINP
            - TRFD
            - FORW
            - FXNT
            - ADMG
            - ADVA
            - BCDM
            - BCFG
            - BLDM
            - BNET
            - CBFF
            - CBFR
            - CCRD
            - CDBL
            - CFEE
            - CGDD
            - CORT
            - COST
            - CPKC
            - DCRD
            - DSMT
            - DVPM
            - EDUC
            - FACT
            - FAND
            - FCPM
            - FEES
            - GIFT
            - GOVT
            - ICCP
            - IDCP
            - IHRP
            - INSM
            - IVPT
            - MCDM
            - MCFG
            - MSVC
            - NOWS
            - OCDM
            - OCFG
            - OFEE
            - OTHR
            - PADD
            - PTSP
            - RCKE
            - RCPT
            - REBT
            - REFU
            - RENT
            - REOD
            - RIMB
            - RPNT
            - RRBN
            - RRCT
            - RRTP
            - RVPM
            - SLPI
            - SPLT
            - STDY
            - TBAN
            - TBIL
            - TCSC
            - TELI
            - TMPG
            - TPRI
            - TPRP
            - TRNC
            - TRVC
            - WEBI
            - IPAY
            - IPCA
            - IPDO
            - IPEA
            - IPEC
            - IPEW
            - IPPS
            - IPRT
            - IPU2
            - IPUW
            - ANNI
            - CAFI
            - CFDI
            - CMDT
            - DERI
            - DIVD
            - FREX
            - HEDG
            - INVS
            - PRME
            - SAVG
            - SECU
            - SEPI
            - TREA
            - UNIT
            - FNET
            - FUTR
            - ANTS
            - CVCF
            - DMEQ
            - DNTS
            - HLTC
            - HLTI
            - HSPC
            - ICRF
            - LTCF
            - MAFC
            - MARF
            - MDCS
            - VIEW
            - CDEP
            - SWFP
            - SWPP
            - SWRS
            - SWUF
            - ADCS
            - AEMP
            - ALLW
            - ALMY
            - BBSC
            - BECH
            - BENE
            - BONU
            - CCHD
            - COMM
            - CSLP
            - GFRP
            - GVEA
            - GVEB
            - GVEC
            - GVED
            - GWLT
            - HREC
            - PAYR
            - PEFC
            - PENS
            - PRCP
            - RHBS
            - SALA
            - SPSP
            - SSBE
            - LBIN
            - LCOL
            - LFEE
            - LMEQ
            - LMFI
            - LMRK
            - LREB
            - LREV
            - LSFL
            - ESTX
            - FWLV
            - GSTX
            - HSTX
            - INTX
            - NITX
            - PTXP
            - RDTX
            - TAXS
            - VATX
            - WHLD
            - TAXR
            - B112
            - BR12
            - TLRF
            - TLRR
            - AIRB
            - BUSB
            - FERB
            - RLWY
            - TRPT
            - CBTV
            - ELEC
            - ENRG
            - GASB
            - NWCH
            - NWCM
            - OTLC
            - PHON
            - UBIL
            - WTER
            - BOND
            - CABD
            - CAEQ
            - CBCR
            - DBCR
            - DICL
            - EQTS
            - FLCR
            - EFTC
            - EFTD
            - MOMA
            - RAPI
            - GAMB
            - LOTT
            - GAFA
            - GAHO
            - AMEX
            - SASW
            - AUCO
            - PCOM
            - PDEP
            - PLDS
            - PLRF
          description: |
            * `ACCT` : AccountManagement
            * `ADCS` : AdvisoryDonationCopyrightServices
            * `ADMG` : AdministrativeManagement
            * `ADVA` : AdvancePayment
            * `AEMP` : ActiveEmploymentPolicy
            * `AGRT` : AgriculturalTransfer
            * `AIRB` : Air
            * `ALLW` : Allowance
            * `ALMY` : AlimonyPayment
            * `AMEX` : Amex
            * `ANNI` : Annuity
            * `ANTS` : AnesthesiaServices
            * `AREN` : AccountsReceivablesEntry
            * `AUCO` : AuthenticatedCollections
            * `B112` : TrailerFeePayment
            * `BBSC` : BabyBonusScheme
            * `BCDM` : BearerChequeDomestic
            * `BCFG` : BearerChequeForeign
            * `BECH` : ChildBenefit
            * `BENE` : UnemploymentDisabilityBenefit
            * `BEXP` : BusinessExpenses
            * `BFWD` : BondForward
            * `BKDF` : BankLoanDelayedDrawFunding
            * `BKFE` : BankLoanFees
            * `BKFM` : BankLoanFundingMemo
            * `BKIP` : BankLoanAccruedInterestPayment
            * `BKPP` : BankLoanPrincipalPaydown
            * `BLDM` : BuildingMaintenance
            * `BNET` : BondForwardNetting
            * `BOCE` : BackOfficeConversionEntry
            * `BOND` : Bonds
            * `BONU` : BonusPayment.
            * `BR12` : TrailerFeeRebate
            * `BUSB` : Bus
            * `CABD` : CorporateActions-Bonds
            * `CAEQ` : CorporateActions-Equities
            * `CAFI` : CustodianManagementFeeInhouse
            * `CASH` : CashManagementTransfer
            * `CBCR` : CreditCard
            * `CBFF` : CapitalBuilding
            * `CBFR` : CapitalBuildingRetirement
            * `CBLK` : CardBulkClearing
            * `CBTV` : CableTVBill
            * `CCHD` : CashCompensationHelplessnessDisability
            * `CCIR` : CrossCurrencyIRS
            * `CCPC` : CCPClearedInitialMargin
            * `CCPM` : CCPClearedVariationMargin
            * `CCRD` : CreditCardPayment
            * `CCSM` : CCPClearedInitialMarginSegregatedCash
            * `CDBL` : CreditCardBill
            * `CDCB` : CardPaymentWithCashBack
            * `CDCD` : CashDisbursementCashSettlement
            * `CDCS` : CashDisbursementWithSurcharging
            * `CDDP` : CardDeferredPayment
            * `CDEP` : CreditDefaultEventPayment
            * `CDOC` : OriginalCredit
            * `CDQC` : QuasiCash
            * `CFDI` : CapitalFallingDueInhouse
            * `CFEE` : CancellationFee
            * `CGDD` : CardGeneratedDirectDebit
            * `CHAR` : CharityPayment
            * `CLPR` : CarLoanPrincipalRepayment
            * `CMDT` : CommodityTransfer
            * `COLL` : CollectionPayment
            * `COMC` : CommercialPayment
            * `COMM` : Commission
            * `COMP` : CompensationPayment
            * `COMT` : ConsumerThirdPartyConsolidatedPayment
            * `CORT` : TradeSettlementPayment
            * `COST` : Costs
            * `CPKC` : CarparkCharges
            * `CPYR` : Copyright
            * `CRDS` : CreditDefaultSwap
            * `CRPR` : CrossProduct
            * `CRSP` : CreditSupport
            * `CRTL` : CreditLine
            * `CSDB` : CashDisbursementCashManagement
            * `CSLP` : CompanySocialLoanPaymentToBank
            * `CVCF` : ConvalescentCareFacility
            * `DBCR` : DebitCard
            * `DBTC` : DebitCollectionPayment
            * `DCRD` : DebitCardPayment
            * `DEPT` : Deposit
            * `DERI` : Derivatives
            * `DICL` : Diners
            * `DIVD` : Dividend
            * `DMEQ` : DurableMedicaleEquipment
            * `DNTS` : DentalServices
            * `DSMT` : PrintedOrderDisbursement
            * `DVPM` : DeliverAgainstPayment
            * `ECPG` : GuaranteedEPayment
            * `ECPR` : EPaymentReturn
            * `ECPU` : NonGuaranteedEPayment
            * `EDUC` : Education
            * `EFTC` : LowValueCredit
            * `EFTD` : LowValueDebit
            * `ELEC` : ElectricityBill
            * `ENRG` : Energies
            * `EPAY` : Epayment
            * `EQPT` : EquityOption
            * `EQTS` : Equities
            * `EQUS` : EquitySwap
            * `ESTX` : EstateTax
            * `ETUP` : EPurseTopUp
            * `EXPT` : ExoticOption
            * `EXTD` : ExchangeTradedDerivatives
            * `FACT` : FactorUpdateRelatedPayment
            * `FAND` : FinancialAidInCaseOfNaturalDisaster
            * `FCOL` : FeeCollection
            * `FCPM` : LatePaymentOfFeesAndCharges
            * `FEES` : PaymentOfFees
            * `FERB` : Ferry
            * `FIXI` : FixedIncome
            * `FLCR` : FleetCard
            * `FNET` : FuturesNettingPayment
            * `FORW` : ForwardForeignExchange
            * `FREX` : ForeignExchange
            * `FUTR` : Futures
            * `FWBC` : ForwardBrokerOwnedCashCollateral
            * `FWCC` : ForwardClientOwnedCashCollateral
            * `FWLV` : ForeignWorkerLevy
            * `FWSB` : ForwardBrokerOwnedCashCollateralSegregated
            * `FWSC` : ForwardClientOwnedSegregatedCashCollateral
            * `FXNT` : ForeignExchangeRelatedNetting
            * `GAFA` : GovernmentFamilyAllowance
            * `GAHO` : GovernmentHousingAllowance
            * `GAMB` : GamblingOrWageringPayment
            * `GASB` : GasBill
            * `GDDS` : PurchaseSaleOfGoods
            * `GDSV` : PurchaseSaleOfGoodsAndServices
            * `GFRP` : GuaranteeFundRightsPayment
            * `GIFT` : Gift
            * `GOVI` : GovernmentInsurance
            * `GOVT` : GovernmentPayment
            * `GSCB` : PurchaseSaleOfGoodsAndServicesWithCashBack
            * `GSTX` : GoodsServicesTax
            * `GVEA` : AustrianGovernmentEmployeesCategoryA
            * `GVEB` : AustrianGovernmentEmployeesCategoryB
            * `GVEC` : AustrianGovernmentEmployeesCategoryC
            * `GVED` : AustrianGovernmentEmployeesCategoryD
            * `GWLT` : GovermentWarLegislationTransfer
            * `HEDG` : Hedging
            * `HLRP` : PropertyLoanRepayment
            * `HLST` : PropertyLoanSettlement
            * `HLTC` : HomeHealthCare
            * `HLTI` : HealthInsurance
            * `HREC` : HousingRelatedContribution
            * `HSPC` : HospitalCare
            * `HSTX` : HousingTax
            * `ICCP` : IrrevocableCreditCardPayment
            * `ICRF` : IntermediateCareFacility
            * `IDCP` : IrrevocableDebitCardPayment
            * `IHRP` : InstalmentHirePurchaseAgreement
            * `INPC` : InsurancePremiumCar
            * `INPR` : InsurancePremiumRefund
            * `INSC` : PaymentOfInsuranceClaim
            * `INSM` : Installment
            * `INSU` : InsurancePremium
            * `INTC` : IntraCompanyPayment
            * `INTE` : Interest
            * `INTP` : IntraPartyPayment
            * `INTX` : IncomeTax
            * `INVS` : InvestmentAndSecurities
            * `IPAY` : InstantPayments
            * `IPCA` : InstantPaymentsCancellation
            * `IPDO` : InstantPaymentsForDonations
            * `IPEA` : InstantPaymentsInECommerceWithoutAddressData
            * `IPEC` : InstantPaymentsInECommerceWithAddressData
            * `IPEW` : InstantPaymentsInECommerce
            * `IPPS` : InstantPaymentsAtPOS
            * `IPRT` : InstantPaymentsReturn
            * `IPU2` : InstantPaymentsUnattendedVendingMachineWith2FA
            * `IPUW` : InstantPaymentsUnattendedVendingMachineWithout2FA
            * `IVPT` : InvoicePayment
            * `LBIN` : LendingBuyInNetting
            * `LBRI` : LaborInsurance
            * `LCOL` : LendingCashCollateralFreeMovement
            * `LFEE` : LendingFees
            * `LICF` : LicenseFee
            * `LIFI` : LifeInsurance
            * `LIMA` : LiquidityManagement
            * `LMEQ` : LendingEquityMarkedToMarketCashCollateral
            * `LMFI` : LendingFixedIncomeMarkedToMarketCashCollateral
            * `LMRK` : LendingUnspecifiedTypeOfMarkedToMarketCashCollateral
            * `LOAN` : Loan
            * `LOAR` : LoanRepayment
            * `LOTT` : LotteryPayment
            * `LREB` : LendingRebatePayments
            * `LREV` : LendingRevenuePayments
            * `LSFL` : LendingClaimPayment
            * `LTCF` : LongTermCareFacility
            * `MAFC` : MedicalAidFundContribution
            * `MARF` : MedicalAidRefund
            * `MARG` : DailyMarginOnListedDerivatives
            * `MBSB` : MBSBrokerOwnedCashCollateral
            * `MBSC` : MBSClientOwnedCashCollateral
            * `MCDM` : MultiCurrenyChequeDomestic
            * `MCFG` : MultiCurrenyChequeForeign
            * `MDCS` : MedicalServices
            * `MGCC` : FuturesInitialMargin
            * `MGSC` : FuturesInitialMarginClientOwnedSegregatedCashCollateral
            * `MOMA` : MoneyMarket
            * `MP2B` : MobileP2BPayment
            * `MP2P` : MobileP2PPayment
            * `MSVC` : MultipleServiceTypes
            * `MTUP` : MobileTopUp
            * `NETT` : Netting
            * `NITX` : NetIncomeTax
            * `NOWS` : NotOtherwiseSpecified
            * `NWCH` : NetworkCharge
            * `NWCM` : NetworkCommunication
            * `OCCC` : ClientOwnedOCCPledgedCollateral
            * `OCDM` : OrderChequeDomestic
            * `OCFG` : OrderChequeForeign
            * `OFEE` : OpeningFee
            * `OPBC` : OTCOptionBrokerOwnedCashCollateral
            * `OPCC` : OTCOptionClientOwnedCashCollateral
            * `OPSB` : OTCOptionBrokerOwnedSegregatedCashCollateral
            * `OPSC` : OTCOptionClientOwnedCashSegregatedCashCollateral
            * `OPTN` : FXOption
            * `OTCD` : OTCDerivatives
            * `OTHR` : Other
            * `OTLC` : OtherTelecomRelatedBill
            * `PADD` : PreauthorizedDebit
            * `PAYR` : Payroll
            * `PCOM` : PropertyCompletionPayment
            * `PDEP` : PropertyDeposit
            * `PEFC` : PensionFundContribution
            * `PENO` : PaymentBasedOnEnforcementOrder
            * `PENS` : PensionPayment
            * `PHON` : TelephoneBill
            * `PLDS` : PropertyLoanDisbursement
            * `PLRF` : PropertyLoanRefinancing
            * `POPE` : PointOfPurchaseEntry
            * `PPTI` : PropertyInsurance
            * `PRCP` : PricePayment
            * `PRME` : PreciousMetal
            * `PTSP` : PaymentTerms
            * `PTXP` : PropertyTax
            * `RAPI` : RapidPaymentInstruction
            * `RCKE` : RepresentedCheckEntry
            * `RCPT` : ReceiptPayment
            * `RDTX` : RoadTax
            * `REBT` : Rebate
            * `REFU` : Refund
            * `RELG` : RentalLeaseGeneral
            * `RENT` : Rent
            * `REOD` : AccountOverdraftRepayment
            * `REPO` : RepurchaseAgreement
            * `RHBS` : RehabilitationSupport
            * `RIMB` : ReimbursementOfAPreviousErroneousTransaction
            * `RINP` : RecurringInstallmentPayment
            * `RLWY` : Railway
            * `ROYA` : Royalties
            * `RPBC` : BilateralRepoBrokerOwnedCollateral
            * `RPCC` : RepoClientOwnedCollateral
            * `RPNT` : BilateralRepoInternetNetting
            * `RPSB` : BilateralRepoBrokerOwnedSegregatedCashCollateral
            * `RPSC` : BilateralRepoClientOwnedSegregatedCashCollateral
            * `RRBN` : RoundRobin
            * `RRCT` : ReimbursementReceivedCreditTransfer
            * `RRTP` : RelatedRequestToPay
            * `RVPM` : ReceiveAgainstPayment
            * `RVPO` : ReverseRepurchaseAgreement
            * `SALA` : SalaryPayment
            * `SASW` : ATM
            * `SAVG` : Savings
            * `SBSC` : SecuritiesBuySellSellBuyBack
            * `SCIE` : SingleCurrencyIRSExotic
            * `SCIR` : SingleCurrencyIRS
            * `SCRP` : SecuritiesCrossProducts
            * `SCVE` : PurchaseSaleOfServices
            * `SECU` : Securities
            * `SEPI` : SecuritiesPurchaseInhouse
            * `SERV` : ServiceCharges
            * `SHBC` : BrokerOwnedCollateralShortSale
            * `SHCC` : ClientOwnedCollateralShortSale
            * `SHSL` : ShortSell
            * `SLEB` : SecuritiesLendingAndBorrowing
            * `SLOA` : SecuredLoan
            * `SLPI` : PaymentSlipInstruction
            * `SPLT` : SplitPayments
            * `SPSP` : SalaryPensionSumPayment
            * `SSBE` : SocialSecurityBenefit
            * `STDY` : Study
            * `SUBS` : Subscription
            * `SUPP` : SupplierPayment
            * `SWBC` : SwapBrokerOwnedCashCollateral
            * `SWCC` : SwapClientOwnedCashCollateral
            * `SWFP` : SwapContractFinalPayment
            * `SWPP` : SwapContractPartialPayment
            * `SWPT` : Swaption
            * `SWRS` : SwapContractResetPayment
            * `SWSB` : SwapsBrokerOwnedSegregatedCashCollateral
            * `SWSC` : SwapsClientOwnedSegregatedCashCollateral
            * `SWUF` : SwapContractUpfrontPayment
            * `TAXR` : TaxRefund
            * `TAXS` : TaxPayment
            * `TBAN` : TBAPairOffNetting
            * `TBAS` : ToBeAnnounced
            * `TBBC` : TBABrokerOwnedCashCollateral
            * `TBCC` : TBAClientOwnedCashCollateral
            * `TBIL` : TelecommunicationsBill
            * `TCSC` : TownCouncilServiceCharges
            * `TELI` : TelephoneInitiatedTransaction
            * `TLRF` : NonUSMutualFundTrailerFeePayment
            * `TLRR` : NonUSMutualFundTrailerFeeRebatePayment
            * `TMPG` : TMPGClaimPayment
            * `TPRI` : TriPartyRepoInterest
            * `TPRP` : TriPartyRepoNetting
            * `TRAD` : Commercial
            * `TRCP` : TreasuryCrossProduct
            * `TREA` : TreasuryPayment
            * `TRFD` : TrustFund
            * `TRNC` : TruncatedPaymentSlip
            * `TRPT` : RoadPricing
            * `TRVC` : TravellerCheque
            * `UBIL` : Utilities
            * `UNIT` : UnitTrustPurchase
            * `VATX` : ValueAddedTaxPayment
            * `VIEW` : VisionCare
            * `WEBI` : InternetInitiatedTransaction
            * `WHLD` : WithHolding
            * `WTER` : WaterBill
    PurposeType:
      type: object
      oneOf:
        - $ref: '#/components/schemas/PurposeTypeCode'
        - $ref: '#/components/schemas/ProprietaryValue'
      discriminator:
        propertyName: schema
        mapping:
          CODE: '#/components/schemas/PurposeTypeCode'
          PROPRIETARY: '#/components/schemas/ProprietaryValue'
      description: Specifies the underlying reason for the payment transaction
    MonthlyFrequency:
      description: >
        Specifies the frequency of a monthly payment transaction by day of the
        month.
      allOf:
        - $ref: '#/components/schemas/DayOfMonthBasedFrequency'
    DayOfMonthBasedFrequency:
      type: object
      description: >
        Base model for payment transaction frequencies expressed in terms of
        days of the month. Not expected to be

        used directly; see `MonthlyFrequency`, `QuarterlyFrequency`,
        `BiannualFrequency` and `YearlyFrequency`.
      required:
        - schema
        - dayOfMonth
      properties:
        schema:
          type: string
          enum:
            - MonthlyFrequency
            - QuarterlyFrequency
            - BiannualFrequency
            - YearlyFrequency
        dayOfMonth:
          description: >
            Specifies the day of the month on which the payment transaction is
            to be processed.

            NOTE: A value of `31` will be interpreted as the last day of the
            month.
          type: integer
          minimum: 1
          maximum: 31
      discriminator:
        propertyName: schema
        mapping:
          MonthlyFrequency: '#/components/schemas/MonthlyFrequency'
          QuarterlyFrequency: '#/components/schemas/QuarterlyFrequency'
          BiannualFrequency: '#/components/schemas/BiannualFrequency'
          YearlyFrequency: '#/components/schemas/YearlyFrequency'
    QuarterlyFrequency:
      description: >
        Specifies the frequency of a quarterly payment transaction by day of the
        month.
      allOf:
        - $ref: '#/components/schemas/DayOfMonthBasedFrequency'
    BiannualFrequency:
      description: >
        Specifies the frequency of a biannual payment transaction by day of the
        month.
      allOf:
        - $ref: '#/components/schemas/DayOfMonthBasedFrequency'
    YearlyFrequency:
      description: >
        Specifies the frequency of a yearly payment transaction by day of the
        month.
      allOf:
        - $ref: '#/components/schemas/DayOfMonthBasedFrequency'
    MonthlyRuleFrequency:
      type: object
      description: >
        Specifies the frequency of a monthly payment transaction by a special
        rule, e.g. "the last monday of the month".
      required:
        - schema
        - rule
      properties:
        schema:
          type: string
          enum:
            - MonthlyRuleFrequency
        rule:
          description: >
            Specifies the day of the month on which the payment transaction is
            to be processed.

            * `LAST_MONDAY`: Last Monday of the month.

            * `LAST_TUESDAY`: Last Tuesday of the month.

            * `LAST_WEDNESDAY`: Last Wednesday of the month.

            * `LAST_THURSDAY`: Last Thursday of the month.

            * `LAST_FRIDAY`: Last Friday of the month.

            * `LAST_SATURDAY`: Last Saturday of the month.

            * `FIRST_MONDAY`: First Monday of the month.

            * `FIRST_TUESDAY`: First Tuesday of the month.

            * `FIRST_WEDNESDAY`: First Wednesday of the month.

            * `FIRST_THURSDAY`: First Thursday of the month.

            * `FIRST_FRIDAY`: First Friday of the month.

            * `FIRST_SATURDAY`: First Saturday of the month.

            * `SECOND_LAST_DAY`: Second last day of the month.

            * `LAST_DAY`: Last day of the month.
          type: string
          enum:
            - LAST_MONDAY
            - LAST_TUESDAY
            - LAST_WEDNESDAY
            - LAST_THURSDAY
            - LAST_FRIDAY
            - LAST_SATURDAY
            - FIRST_MONDAY
            - FIRST_TUESDAY
            - FIRST_WEDNESDAY
            - FIRST_THURSDAY
            - FIRST_FRIDAY
            - FIRST_SATURDAY
            - SECOND_LAST_DAY
            - LAST_DAY
    DayOfWeek:
      description: |
        Specifies a day of the week.
      type: string
      enum:
        - MONDAY
        - TUESDAY
        - WEDNESDAY
        - THURSDAY
        - FRIDAY
        - SATURDAY
        - SUNDAY
    WeeklyFrequency:
      type: object
      description: |
        Specifies the frequency of a weekly payment transaction.
      required:
        - schema
        - dayOfWeek
      properties:
        schema:
          type: string
          enum:
            - WeeklyFrequency
        dayOfWeek:
          $ref: '#/components/schemas/DayOfWeek'
    FortnightlyFrequency:
      type: object
      description: |
        Specifies the frequency of a fortnightly payment transaction.
      required:
        - schema
        - week
        - dayOfWeek
      properties:
        schema:
          type: string
          enum:
            - FortnightlyFrequency
        week:
          description: >
            Identifies the week of the fortnight on which the payment
            transaction is to be processed.

            * FIRST_WEEK: First week of the fortnight.

            * SECOND_WEEK: Second week of the fortnight.
          type: string
          enum:
            - FIRST_WEEK
            - SECOND_WEEK
        dayOfWeek:
          $ref: '#/components/schemas/DayOfWeek'
    Frequency:
      type: object
      description: |
        Specifies the frequency of the payment transaction.
      oneOf:
        - $ref: '#/components/schemas/MonthlyFrequency'
        - $ref: '#/components/schemas/QuarterlyFrequency'
        - $ref: '#/components/schemas/BiannualFrequency'
        - $ref: '#/components/schemas/YearlyFrequency'
        - $ref: '#/components/schemas/MonthlyRuleFrequency'
        - $ref: '#/components/schemas/WeeklyFrequency'
        - $ref: '#/components/schemas/FortnightlyFrequency'
      discriminator:
        propertyName: schema
        mapping:
          MonthlyFrequency: '#/components/schemas/MonthlyFrequency'
          QuarterlyFrequency: '#/components/schemas/QuarterlyFrequency'
          BiannualFrequency: '#/components/schemas/BiannualFrequency'
          YearlyFrequency: '#/components/schemas/YearlyFrequency'
          MonthlyRuleFrequency: '#/components/schemas/MonthlyRuleFrequency'
          WeeklyFrequency: '#/components/schemas/WeeklyFrequency'
          FortnightlyFrequency: '#/components/schemas/FortnightlyFrequency'
    MandateSetupReasonCode:
      type: object
      required:
        - schema
        - value
      properties:
        schema:
          type: string
          description: Identifies the value as being a pre-defined code. Always `CODE`.
        value:
          type: string
          minLength: 1
          maxLength: 4
      description: >
        Reason for the direct debit mandate to allow the user to distinguish
        between different mandates for the

        same creditor.
    MandateSetupReason:
      type: object
      oneOf:
        - $ref: '#/components/schemas/MandateSetupReasonCode'
        - $ref: '#/components/schemas/ProprietaryValue'
      discriminator:
        propertyName: schema
        mapping:
          CODE: '#/components/schemas/MandateSetupReasonCode'
          PROPRIETARY: '#/components/schemas/ProprietaryValue'
    MandateInformation:
      description: >
        Provides details of the direct debit mandate signed between the creditor
        and the debtor.


        NOTE: This model is a work in progress and may change. In particular, it
        lacks properties relating to mandate

        amendments which we may need in the future. Note also that this model is
        not relevant to the `ZA_EFT` scheme,

        and therefore Electrum will not do any special processing for these
        fields for EFT (e.g. Electrum cannot honour

        tracking days for EFT payments).
      type: object
      properties:
        mandateIdentification:
          description: >
            Unique identification, as assigned by the creditor, to unambiguously
            identify the mandate.
          type: string
          maxLength: 35
        dateOfSignature:
          description: >
            Date on which the direct debit mandate has been signed by the
            debtor.
          type: string
          format: date
        electronicSignature:
          description: |
            A digital signature provided by the debtor.
          type: string
          maxLength: 1025
        firstCollectionDate:
          description: |
            Date of the first collection of a direct debit as per the mandate.
          type: string
          format: date
        finalCollectionDate:
          description: |
            Date of the final collection of a direct debit as per the mandate.
          type: string
          format: date
        frequency:
          description: >
            Regularity with which direct debit instructions are to be created
            and processed.
          $ref: '#/components/schemas/Frequency'
        reason:
          description: >
            Reason for the direct debit mandate to allow the user to distinguish
            between different mandates for the

            same creditor.
          $ref: '#/components/schemas/MandateSetupReason'
        trackingDays:
          description: >
            Specifies the number of days the direct debit instruction must be
            tracked.
          type: integer
          minimum: 1
          maximum: 99
    DirectDebit:
      allOf:
        - $ref: '#/components/schemas/BaseTransactionMessage'
        - type: object
          description: >
            A model containing the necessary information to request a direct
            debit from a debtor account for a creditor.
          properties:
            paymentScheme:
              $ref: '#/components/schemas/DirectDebitPaymentScheme'
            instructingAgent:
              description: >
                Agent that instructs the next party in the chain to carry out
                the (set of) instruction(s).
              $ref: '#/components/schemas/InstitutionIdentification'
            instructedAgent:
              description: >
                Agent that is instructed by the previous party in the chain to
                carry out the (set of) instruction(s).
              $ref: '#/components/schemas/InstitutionIdentification'
            paymentTypeInformation:
              $ref: '#/components/schemas/PaymentTypeInformation'
              description: |
                Set of elements used to further specify the type of transaction.
            sequenceType:
              $ref: '#/components/schemas/SequenceTypeCode'
              description: >
                Identifies the direct debit sequence, e.g. first, recurrent,
                final or one-off.
            amounts:
              $ref: '#/components/schemas/TransactionAmounts'
            settlementDate:
              type: string
              format: date
              description: >
                Date on which the amount of money ceases to be available to the
                agent that owes it and

                when the amount of money becomes available to the agent to which
                it is due.
            purpose:
              $ref: '#/components/schemas/PurposeType'
            remittanceInformation:
              $ref: '#/components/schemas/RemittanceInformation'
            creditor:
              description: |
                Party to which an amount of money is due.
              $ref: '#/components/schemas/Party'
            creditorAccount:
              description: >
                Unambiguous identification of the account of the creditor to
                which a credit entry will be posted as a

                result of the payment transaction.
              $ref: '#/components/schemas/PaymentAccount'
            creditorAgent:
              description: |
                Financial institution servicing an account for the creditor.
              $ref: '#/components/schemas/InstitutionIdentification'
            debtor:
              description: |
                Party that owes an amount of money to the (ultimate) creditor.
              $ref: '#/components/schemas/Party'
            debtorAccount:
              description: >
                Unambiguous identification of the account of the debtor to which
                a debit entry will be made as a result

                of the transaction.
              $ref: '#/components/schemas/PaymentAccount'
            debtorAgent:
              description: |
                Financial institution servicing an account for the debtor.
              $ref: '#/components/schemas/InstitutionIdentification'
            intermediaryAgents:
              description: >
                Agents between the debtor's agent and the creditor's agent. If
                more than one intermediary agent is

                present, then IntermediaryAgent1 identifies the agent between
                the DebtorAgent and the

                IntermediaryAgent2.
              type: array
              items:
                $ref: '#/components/schemas/InstitutionIdentification'
              maxItems: 3
            requestedCollectionDate:
              type: string
              format: date
              description: >
                Date and time at which the creditor requests that the amount of
                money is to be collected from the

                debtor.
            mandateInformation:
              description: >
                Provides details of the direct debit mandate signed between the
                creditor and the debtor.
              $ref: '#/components/schemas/MandateInformation'
          required:
            - paymentScheme
            - amounts
            - creditor
            - creditorAgent
            - debtor
            - debtorAccount
            - debtorAgent
    ZaEftPaymentReturnPaymentSchemeData:
      type: object
      required:
        - returnType
      properties:
        shortenedDebtorAccountNumber:
          $ref: '#/components/schemas/ShortenedAccountNumber'
        shortenedCreditorAccountNumber:
          $ref: '#/components/schemas/ShortenedAccountNumber'
        returnType:
          type: string
          enum:
            - UNPAID
            - DISPUTE
            - SYSTEM_ERROR_CORRECTION_REQUEST
            - HOME_BACK
          description: >
            Identifies the type of EFT payment return.

            * `UNPAID`: Occurs when a payment cannot be completed successfully
            by the homing bank such as due to
              insufficient funds or account closure. Note that it is impossible for Electrum to reject unpaids received
              from industry, so a negative payment return response from the partner will always result in a
              reconciliation exception for inbound unpaids.
            * `DISPUTE`: Occurs when there is a disagreement between the
            creditor and debtor regarding a payment and,
              after investigation with the assistance of their respective banks, the creditor's bank (in the case of a
              credit) or the debtor's bank (in the case of a debit) decides that the payment should be returned. As for
              unpaids, it is impossible for Electrum to reject disputes received from industry, so a negative payment
              return response results in a reconciliation exception for inbound disputes.
            * `SYSTEM_ERROR_CORRECTION_REQUEST`: Only expected for inbound use
            and represents the case where a bank from
              industry has experienced a technical issue that resulted in payments to or from the partner bank being
              reflected incorrectly (e.g. credits or debits were duplicated) and the industry bank is requesting that
              the partner bank **attempt** to correct the error. This case is notably different from unpaids and
              disputes in that (1) the system error correction request is expected to be best effort and may be rejected
              by the partner bank if the request cannot be honoured (e.g. due to insufficient funds) and (2) the bank
              from industry may retry system error correction requests for the same transaction on different days if an
              earlier request was rejected.
            * `HOME_BACK`: Occurs when a payment cannot be completed
            successfully at the operator such as a lack of
              information required to route to the correct homing bank. Note that it is impossible for Electrum to reject
              homebacks received from industry, so a negative payment return response from the partner will always result
              in a reconciliation exception for inbound homebacks.
    ZaEftPaymentReturnPaymentScheme:
      type: object
      properties:
        schema:
          $ref: '#/components/schemas/PaymentSchemeName'
        schemeData:
          $ref: '#/components/schemas/ZaEftPaymentReturnPaymentSchemeData'
      required:
        - schema
        - schemeData
    PaymentReturnPaymentScheme:
      description: >
        Designates which scheme a payment return is associated with and
        describes scheme-specific information for the

        return.
      type: object
      oneOf:
        - $ref: '#/components/schemas/ZaEftPaymentReturnPaymentScheme'
      discriminator:
        propertyName: schema
        mapping:
          ZA_EFT: '#/components/schemas/ZaEftPaymentReturnPaymentScheme'
    ReturnReasonTypeCode:
      type: object
      required:
        - schema
        - value
      properties:
        schema:
          type: string
          description: Identifies the value as being a pre-defined code. Always `CODE`.
        value:
          type: string
          enum:
            - ACC
            - AC01
            - AC03
            - AC04
            - AC06
            - AC13
            - AC14
            - AC15
            - AC16
            - AC17
            - AG01
            - AG02
            - AM01
            - AM02
            - AM03
            - AM04
            - AM05
            - AM06
            - AM07
            - AM09
            - AM10
            - ARDT
            - BE01
            - BE04
            - BE05
            - BE06
            - BE07
            - BE08
            - CN01
            - CNOR
            - CNPC
            - CURR
            - CUST
            - DNOR
            - DS28
            - DT01
            - DT02
            - ED01
            - ED03
            - ED05
            - EMVL
            - ERIN
            - FF05
            - FOCR
            - FR01
            - FRTR
            - MD01
            - MD02
            - MD06
            - MD07
            - MS02
            - MS03
            - NARR
            - NOAS
            - NOCM
            - NOOR
            - PINL
            - RC01
            - RC07
            - RF01
            - RR01
            - RR02
            - RR03
            - RR04
            - RUTA
            - SL01
            - SL02
            - SL11
            - SL12
            - SL13
            - SL14
            - SP01
            - SP02
            - SVNR
            - TM01
            - TRAC
            - UPAY
            - AGNT
            - FF06
            - RC08
            - BE11
            - BE17
            - AC02
            - RR11
            - BE10
            - BE16
            - RC11
            - RR12
            - FF03
            - FF07
            - FF04
            - RR09
            - RR05
            - RR07
            - RR08
            - RR06
            - AG07
            - G004
            - MD05
            - AC07
          description: |
            * `ACC`: SuccessfulVerboseCdvOutcome
            * `AC01`: IncorrectAccountNumber
            * `AC03`: InvalidCreditorAccountNumber
            * `AC04`: ClosedAccountNumber
            * `AC06`: BlockedAccount
            * `AC13`: InvalidDebtorAccountType
            * `AC14`: InvalidAgent
            * `AC15`: AccountDetailsChanged
            * `AC16`: AccountInSequestration
            * `AC17`: AccountInLiquidation
            * `AG01`: TransactionForbidden
            * `AG02`: InvalidBankOperationCode
            * `AM01`: ZeroAmount
            * `AM02`: NotAllowedAmount
            * `AM03`: NotAllowedCurrency
            * `AM04`: InsufficientFunds
            * `AM05`: Duplication
            * `AM06`: TooLowAmount
            * `AM07`: BlockedAmount
            * `AM09`: WrongAmount
            * `AM10`: InvalidControlSum
            * `ARDT`: AlreadyReturnedTransaction
            * `BE01`: InconsistenWithEndCustomer
            * `BE04`: MissingCreditorAddress
            * `BE05`: UnrecognisedInitiatingParty
            * `BE06`: UnknownEndCustomer
            * `BE07`: MissingDebtorAddress
            * `BE08`: BankError
            * `CN01`: AuthorisationCancelled
            * `CNOR`: CreditorBankIsNotRegistered
            * `CNPC`: CashNotPickedUp
            * `CURR`: IncorrectCurrency
            * `CUST`: RequestedByCustomer
            * `DNOR`: DebtorBankIsNotRegistered
            * `DS28`: ReturnForTechnicalReason
            * `DT01`: InvalidDate
            * `DT02`: ChequeExpired
            * `ED01`: CorrespondentBankNotPossible
            * `ED03`: BalanceInfoRequest
            * `ED05`: SettlementFailed
            * `EMVL`: EMVLiabilityShift
            * `ERIN`: ERIOptionNotSupported
            * `FF05`: InvalidLocalInstrumentCode
            * `FOCR`: FollowingCancellationRequest
            * `FR01`: Fraud
            * `FRTR`: FinalResponseMandateCancelled
            * `MD01`: NoMandate
            * `MD02`: MissingMandatoryInformationInMandate
            * `MD06`: RefundRequestByEndCustomer
            * `MD07`: EndCustomerDeceased
            * `MS02`: NotSpecifiedReasonCustomerGenerated
            * `MS03`: NotSpecifiedReasonAgentGenerated
            * `NARR`: Narrative
            * `NOAS`: NoAnswerFromCustomer
            * `NOCM`: NotCompliant
            * `NOOR`: NoOriginalTransactionReceived
            * `PINL`: PINLiabilityShift
            * `RC01`: BankIdentifierIncorrect
            * `RC07`: InvalidCreditorBICIdentifier
            * `RF01`: NotUniqueTransactionReference
            * `RR01`: MissingDebtorAccountOrIdentification
            * `RR02`: MissingDebtorNameOrAddress
            * `RR03`: MissingCreditorNameOrAddress
            * `RR04`: RegulatoryReason
            * `RUTA`: ReturnUponUnableToApply
            * `SL01`: SpecificServiceOfferedByDebtorAgent
            * `SL02`: SpecificServiceOfferedByCreditorAgent
            * `SL11`: CreditorNotOnWhitelistOfDebtor
            * `SL12`: CreditorOnBlacklistOfDebtor
            * `SL13`: MaximumNumberOfDirectDebitTransactionsExceeded
            * `SL14`: MaximumDirectDebitTransactionAmountExceeded
            * `SP01`: PaymentStopped
            * `SP02`: PreviouslyStopped
            * `SVNR`: ServiceNotRendered
            * `TM01`: CutOffTime
            * `TRAC`: RemovedFromTracking
            * `UPAY`: UnduePayment
            * `AGNT`: IncorrectAgent
            * `FF06`: InvalidCategoryPurposeCode
            * `RC08`: InvalidClearingSystemMemberIdentifier
            * `BE11`: InvalidCreditorCountry
            * `BE17`: InvalidCreditorIdentificationCode
            * `AC02`: InvalidDebtorAccountNumber
            * `RR11`: InvalidDebtorAgentServiceIdentification
            * `BE10`: InvalidDebtorCountry
            * `BE16`: InvalidDebtorIdentificationCode
            * `RC11`: InvalidIntermediaryAgent
            * `RR12`: InvalidPartyIdentification
            * `FF03`: InvalidPaymentTypeInformation
            * `FF07`: InvalidPurpose
            * `FF04`: InvalidServiceLevelCode
            * `RR09`: InvalidStructuredCreditorReference
            * `RR05`: RegulatoryInformationInvalid
            * `RR07`: RemittanceInformationInvalid
            * `RR08`: RemittanceInformationTruncated
            * `RR06`: TaxInformationInvalid
            * `AG07`: UnsuccesfulDirectDebit
            * `G004`: CreditPendingFunds
            * `MD05`: CollectionNotDue
            * `AC07`: ClosedCreditorAccountNumber
    ReturnReasonType:
      type: object
      oneOf:
        - $ref: '#/components/schemas/ReturnReasonTypeCode'
        - $ref: '#/components/schemas/ProprietaryValue'
      discriminator:
        propertyName: schema
        mapping:
          CODE: '#/components/schemas/ReturnReasonTypeCode'
          PROPRIETARY: '#/components/schemas/ProprietaryValue'
    ReturnReasonInfo:
      type: object
      description: |
        Provides detailed information on the return reason.
      required:
        - reason
      properties:
        reason:
          $ref: '#/components/schemas/ReturnReasonType'
        additionalInformation:
          type: string
          description: >
            A human friendly description of the return reason including any
            further details if applicable.
    PaymentReturn:
      allOf:
        - $ref: '#/components/schemas/BaseTransactionMessage'
        - type: object
          description: >
            A model containing the necessary information to request a return of
            funds after settlement of credit

            transfer instructions or direct debit instructions.


            NOTE: Neither `creditorAccount` nor `debtorAccount` are required
            fields, but `creditorAccount` is expected

            to be present for returns of direct debits, and similarly
            `debtorAccount` is expected to be present for

            returns of credit transfers.
          required:
            - paymentScheme
            - returnedAmounts
            - creditor
            - creditorAgent
            - debtor
            - debtorAgent
          properties:
            originalMessageIdentifiers:
              description: >
                Identifiers for the original payment instruction (such as a
                `CreditTransfer` or `DirectDebit` message)

                associated with this return.
              $ref: '#/components/schemas/MessageIdentifiers'
            paymentScheme:
              $ref: '#/components/schemas/PaymentReturnPaymentScheme'
            paymentTypeInformation:
              $ref: '#/components/schemas/PaymentTypeInformation'
              description: |
                Set of elements used to further specify the type of transaction.
            reasonInfo:
              type: array
              minItems: 1
              description: >
                A list of `ReturnReasonInfo` values providing detailed reason
                information for the return.
              items:
                $ref: '#/components/schemas/ReturnReasonInfo'
            creditor:
              description: |
                Party to which an amount of money is due.
              $ref: '#/components/schemas/Party'
            creditorAccount:
              description: >
                Unambiguous identification of the account of the creditor to
                which a credit entry will be posted as a

                result of the payment transaction.
              $ref: '#/components/schemas/PaymentAccount'
            creditorAgent:
              description: |
                Financial institution servicing an account for the creditor.
              $ref: '#/components/schemas/InstitutionIdentification'
            debtor:
              description: |
                Party that owes an amount of money to the (ultimate) creditor.
              $ref: '#/components/schemas/Party'
            debtorAccount:
              description: >
                Unambiguous identification of the account of the debtor to which
                a debit entry will be made as a result

                of the transaction.
              $ref: '#/components/schemas/PaymentAccount'
            debtorAgent:
              description: |
                Financial institution servicing an account for the debtor.
              $ref: '#/components/schemas/InstitutionIdentification'
            instructingAgent:
              description: >
                The instructing agent is the party sending the return message
                and not the party that sent the original

                instruction that is being returned.
              $ref: '#/components/schemas/InstitutionIdentification'
            instructedAgent:
              description: >
                The instructed agent is the party receiving the return message
                and not the party that received the

                original instruction that is being returned.
              $ref: '#/components/schemas/InstitutionIdentification'
            returnedAmounts:
              description: >
                Represents the amount of money to be moved between the
                instructing agent and the instructed agent in the

                returned instruction.
              $ref: '#/components/schemas/TransactionAmounts'
            settlementDate:
              type: string
              format: date
              description: >
                Date on which the amount of money ceases to be available to the
                agent that owes it and

                when the amount of money becomes available to the agent to which
                it is due.
            originalTransactionData:
              $ref: '#/components/schemas/OriginalTransactionData'
    ZaRtcCreditTransferPaymentScheme:
      properties:
        schema:
          $ref: '#/components/schemas/PaymentSchemeName'
        schemeData:
          $ref: '#/components/schemas/ZaRtcCreditTransferPaymentSchemeData'
      required:
        - schema
        - schemeData
    ZaRppSchemeData:
      type: object
      properties:
        hasRtp:
          type: boolean
          description: >
            Indicates whether the RPP transaction was initiated via a Request To
            Pay.
    ZaRppCreditTransferPaymentScheme:
      description: ''
      properties:
        schema:
          $ref: '#/components/schemas/PaymentSchemeName'
        schemeData:
          $ref: '#/components/schemas/ZaRppSchemeData'
      required:
        - schema
    ZaEftCreditTransferPaymentScheme:
      type: object
      properties:
        schema:
          $ref: '#/components/schemas/PaymentSchemeName'
        schemeData:
          $ref: '#/components/schemas/ZaEftSchemeData'
      required:
        - schema
        - schemeData
    CreditTransferPaymentScheme:
      description: >
        Designates which scheme a credit transfer is associated with and
        describes scheme-specific information for the

        credit transfer.
      type: object
      oneOf:
        - $ref: '#/components/schemas/ZaRtcCreditTransferPaymentScheme'
        - $ref: '#/components/schemas/ZaRppCreditTransferPaymentScheme'
        - $ref: '#/components/schemas/ZaEftCreditTransferPaymentScheme'
      discriminator:
        propertyName: schema
        mapping:
          ZA_RTC: '#/components/schemas/ZaRtcCreditTransferPaymentScheme'
          ZA_RPP: '#/components/schemas/ZaRppCreditTransferPaymentScheme'
          ZA_EFT: '#/components/schemas/ZaEftCreditTransferPaymentScheme'
    RequestToPayConditions:
      description: |
        Describes the various aspects of a request to pay which must be
        accepted or to what extent they may be altered.
      type: object
      required:
        - minAmount
        - maxAmount
      properties:
        minAmount:
          $ref: '#/components/schemas/Amount'
          description: >
            The minimum payment amount that is acceptable to the payee. This
            does not supersede the scheme limit.
        maxAmount:
          $ref: '#/components/schemas/Amount'
          description: >
            The maximum payment amount that is acceptable to the payee. This
            does not supersede the scheme limit.
    TaxInformation:
      type: object
      properties:
        totalAmount:
          $ref: '#/components/schemas/Amount'
      required:
        - totalAmount
    RequestToPay:
      allOf:
        - $ref: '#/components/schemas/BaseTransactionMessage'
        - type: object
          description: >
            A model containing the necessary information to request a payer to
            initiate a transfer of funds to a payee
          properties:
            paymentScheme:
              $ref: '#/components/schemas/CreditTransferPaymentScheme'
            amounts:
              $ref: '#/components/schemas/TransactionAmounts'
            paymentTypeInformation:
              $ref: '#/components/schemas/PaymentTypeInformation'
              description: |
                Set of elements used to further specify the type of transaction.
            expiryDateTime:
              type: string
              format: date-time
              description: >
                Date and time at which the request to pay expires. Some schemes

                may still permit a payment after the request to pay expires.
                Upon

                expiry, the following schemes will reject an associated payment:
                ZA_RPP.

                The date *must* be formatted as defined by `date-time` in
                [RFC3339](https://www.ietf.org/rfc/rfc3339.txt)
            requestToPayConditions:
              $ref: '#/components/schemas/RequestToPayConditions'
            creditor:
              description: |
                Party to which an amount of money is due.
              $ref: '#/components/schemas/Party'
            creditorAccount:
              description: >
                Unambiguous identification of the account of the creditor to
                which a credit entry will be posted as a

                result of the payment transaction.
              $ref: '#/components/schemas/PaymentAccount'
            creditorAgent:
              description: |
                Financial institution servicing an account for the creditor.
              $ref: '#/components/schemas/InstitutionIdentification'
            debtor:
              description: |
                Party that owes an amount of money to the (ultimate) creditor.
              $ref: '#/components/schemas/Party'
            debtorAccount:
              description: >
                Unambiguous identification of the account of the debtor to which
                a debit entry will be made as a result of the transaction.
              $ref: '#/components/schemas/PaymentAccount'
            debtorAgent:
              description: |
                Financial institution servicing an account for the debtor.
              $ref: '#/components/schemas/InstitutionIdentification'
            instructedAgent:
              description: >
                Agent that is instructed by the previous party in the chain to
                carry out the (set of) instruction(s).
              $ref: '#/components/schemas/InstitutionIdentification'
            instructingAgent:
              description: >
                Agent that instructs the next party in the chain to carry out
                the (set of) instruction(s)
              $ref: '#/components/schemas/InstitutionIdentification'
            instructionForDebtorAgent:
              description: >
                Further information related to the processing of the payment
                instruction, provided by the

                initiating party, and intended for the debtor agent.
              minItems: 0
              type: array
              items:
                $ref: '#/components/schemas/Instruction'
            intermediaryAgents:
              description: >
                Agents between the debtor's agent and the creditor's agent.

                Usage: If more than one intermediary agent is present, then
                IntermediaryAgent1 identifies the agent

                between the DebtorAgent and the IntermediaryAgent2
              type: array
              items:
                $ref: '#/components/schemas/InstitutionIdentification'
              maxItems: 3
            previousInstructingAgents:
              description: |
                Agent(s) between the debtor's agent and the instructing agent.
              type: array
              items:
                $ref: '#/components/schemas/InstitutionIdentification'
              maxItems: 3
            purpose:
              $ref: '#/components/schemas/PurposeType'
            remittanceInformation:
              $ref: '#/components/schemas/RemittanceInformation'
            tax:
              $ref: '#/components/schemas/TaxInformation'
          required:
            - paymentScheme
            - expiryDateTime
            - requestToPayConditions
            - creditor
            - creditorAccount
            - creditorAgent
            - debtorAccount
            - paymentTypeInformation
    RequestToPayStatusReasonTypeCode:
      type: object
      required:
        - schema
        - value
      properties:
        schema:
          type: string
          description: Identifies the value as being a pre-defined code. Always `CODE`.
        value:
          type: string
          enum:
            - AB01
            - AB02
            - AB05
            - AB06
            - AB07
            - AB08
            - AB09
            - AB10
            - AB11
            - AC04
            - AC05
            - AC06
            - AC07
            - AC08
            - AG10
            - AG11
            - AGNT
            - AM01
            - AM02
            - AM03
            - AM05
            - AM06
            - AM11
            - AM12
            - AM13
            - AM15
            - AM18
            - BE01
            - BE05
            - BE06
            - BE07
            - BE08
            - BE10
            - BE11
            - BE12
            - BE13
            - BE14
            - BE16
            - BE17
            - BE18
            - BE19
            - BE20
            - BE22
            - BE23
            - CH03
            - CH04
            - CH21
            - CNOR
            - CURR
            - CUST
            - DS01
            - DS02
            - DS04
            - DS0G
            - DS0H
            - DS24
            - DS27
            - DT01
            - DT02
            - DT03
            - DU01
            - DU02
            - DU03
            - DU04
            - DU05
            - DUPL
            - FF02
            - FF03
            - FF05
            - FF08
            - FF10
            - FF11
            - MD07
            - MS02
            - MS03
            - NARR
            - NERI
            - RC03
            - RC04
            - RC06
            - RC07
            - RC09
            - RC10
            - RC11
            - RR09
            - RR10
            - S001
            - TA01
            - NOAR
            - NOCM
            - ALAC
            - AEXR
            - ARFR
            - ARJR
            - EDTR
            - EDTL
            - IEDT
            - IRNR
            - NRCH
            - RTNS
            - PINS
            - SVNR
            - UCRD
          description: "* `AB01`: AbortedClearingTimeout - Clearing process aborted due to timeout.\n* `AB02`: AbortedClearingFatalError - Clearing process aborted due to a fatal error.\_ \_\n* `AB05`: TimeoutCreditorAgent - Transaction stopped due to timeout at the Creditor Agent.\n* `AB06`: TimeoutInstructedAgent - Transaction stopped due to timeout at the Instructed Agent.\n* `AB07`: OfflineAgent - Agent of message is not online. Generic usage if it cannot be determined who exactly is not online.\n* `AB08`: OfflineCreditorAgent - Creditor Agent is not online.\n* `AB09`: ErrorCreditorAgent - Transaction stopped due to error at the Creditor Agent.\n* `AB10`: ErrorInstructedAgent - Transaction stopped due to error at the Instructed Agent.\n* `AB11`: TimeoutDebtorAgent - Transaction stopped due to timeout at the Debtor Agent.\n* `AC04`: ClosedAccountNumber - Account number specified has been closed on the bank of account's books.\n* `AC05`: ClosedDebtorAccountNumber - Debtor account number closed\n* `AC06`: BlockedAccount - Account specified is blocked, prohibiting posting of transactions against it.\n* `AC07`: ClosedCreditorAccountNumber - Creditor account number closed\n* `AC08`: InvalidBranchCode - Branch code is invalid or missing\n* `AG10`: AgentSuspended - Agent of message is suspended from the Real Time Payment system. Generic usage if it cannot be determined who exactly is suspended.\n* `AG11`: CreditorAgentSuspended - Creditor Agent of message is suspended from the Real Time Payment system.\n* `AGNT`: IncorrectAgent - Agent in the payment workflow is incorrect\n* `AM01`: ZeroAmount - Specified message amount is equal to zero\n* `AM02`: NotAllowedAmount - Specific transaction/message amount is greater than allowed maximum\n* `AM03`: NotAllowedCurrency - Specified message amount is an non processable currency outside of existing agreement\n* `AM05`: Duplication - Duplication\n* `AM06`: TooLowAmount - Specified transaction amount is less than agreed minimum.\n* `AM11`: InvalidTransactionCurrency - Transaction currency is invalid or missing\n* `AM12`: InvalidAmount - Amount is invalid or missing\n* `AM13`: AmountExceedsClearingSystemLimit - Transaction amount exceeds limits set by clearing system\n* `AM15`: AmountBelowClearingSystemMinimum - Transaction amount below minimum set by clearing system\n* `AM18`: InvalidNumberOfTransactions - Number of transactions is invalid or missing. Generic usage if cannot specify between group and payment information levels.\n* `BE01`: InconsistenWithEndCustomer - Identification of end customer is not consistent with associated account number. (formerly CreditorConsistency).\n* `BE05`: UnrecognisedInitiatingParty - Party who initiated the message is not recognised by the end customer\n* `BE06`: UnknownEndCustomer - End customer specified is not known at associated Sort/National Bank Code or does no longer exist in the books\n* `BE07`: MissingDebtorAddress - Specification of debtor's address, which is required for payment, is missing/not correct.\n* `BE08`: MissingDebtorName - Debtor name is missing\n* `BE10`: InvalidDebtorCountry - Debtor country code is missing or invalid\n* `BE11`: InvalidCreditorCountry - Creditor country code is missing or invalid\n* `BE12`: InvalidCountryOfResidence - Country code of residence is missing or Invalid. Generic usage if cannot specifically identify debtor or creditor\n* `BE13`: InvalidDebtorCountryOfResidence - Country code of debtor's residence is missing or Invalid\n* `BE14`: InvalidCreditorCountryOfResidence - Country code of creditor's residence is missing or Invalid\n* `BE16`: InvalidDebtorIdentificationCode - Debtor or Ultimate Debtor identification code missing or invalid\n* `BE17`: InvalidCreditorIdentificationCode - Creditor or Ultimate Creditor identification code missing or invalid\n* `BE18`: InvalidContactDetails - Contact details missing or invalid\n* `BE19`: InvalidChargeBearerCode - Charge bearer code for transaction type is invalid\n* `BE20`: InvalidNameLength - Name length exceeds local rules for payment type.\n* `BE22`: MissingCreditorName - Creditor name is missing\n* `BE23`: AccountProxyInvalid - Phone number or email address, or any other proxy, used as the account proxy is unknown or invalid.\n* `CH03`: RequestedExecutionDateOrRequestedCollectionDateTooFarInFuture - Value in Requested Execution Date or Requested Collection Date is too far in the future\n* `CH04`: RequestedExecutionDateOrRequestedCollectionDateTooFarInPast - Value in Requested Execution Date or Requested Collection Date is too far in the past\n* `CH21`: RequiredCompulsoryElementMissing - Mandatory element is missing\n* `CNOR`: CreditorBankIsNotRegistered - Creditor bank is not registered under this BIC in the CSM\n* `CURR`: IncorrectCurrency - Currency of the payment is incorrect\n* `CUST`: RequestedByCustomer - Cancellation requested by the Creditor\n* `DS01`: ElectronicSignaturesCorrect - The electronic signature(s) is/are correct\n* `DS02`: OrderCancelled - An authorized user has cancelled the order\n* `DS04`: OrderRejected - The order was rejected by the bank side (for reasons concerning content)\n* `DS0G`: NotAllowedPayment - Signer is not allowed to sign this operation type.\n* `DS0H`: NotAllowedAccount - Signer is not allowed to sign for this account.\n* `DS24`: WaitingTimeExpired - Waiting time expired due to incomplete order\n* `DS27`: UserNotYetActivated - The user is not yet activated (technically)\n* `DT01`: InvalidDate - Invalid date (eg, wrong or missing settlement date)\n* `DT02`: InvalidCreationDate - Invalid creation date and time in Group Header (eg, historic date)\n* `DT03`: InvalidNonProcessingDate - Invalid non bank processing date (eg, weekend or local public holiday)\n* `DU01`: DuplicateMessageID - Message Identification is not unique.\n* `DU02`: DuplicatePaymentInformationID - Payment Information Block is not unique.\n* `DU03`: DuplicateTransaction - Transaction is not unique.\n* `DU04`: DuplicateEndToEndID - End To End ID is not unique.\n* `DU05`: DuplicateInstructionID - Instruction ID is not unique.\n* `DUPL`: DuplicatePayment - Payment is a duplicate of another payment\n* `FF02`: SyntaxError - Syntax error reason is provided as narrative information in the additional reason information.\n* `FF03`: InvalidPaymentTypeInformation - Payment Type Information is missing or invalid. Generic usage if cannot specify Service Level or Local Instrument code\n* `FF05`: InvalidLocalInstrumentCode - Local Instrument code is missing or invalid\n* `FF08`: InvalidEndToEndId - End to End Id missing or invalid\n* `FF10`: BankSystemProcessingError - File or transaction cannot be processed due to technical issues at the bank side\n* `FF11`: ClearingRequestAborted - Clearing request rejected due it being subject to an abort operation.\n* `MD07`: EndCustomerDeceased - End customer is deceased.\n* `MS02`: NotSpecifiedReasonCustomerGenerated - Reason has not been specified by end customer\n* `MS03`: NotSpecifiedReasonAgentGenerated - Reason has not been specified by agent.\n* `NARR`: Narrative - Reason is provided as narrative information in the additional reason information.\n* `NERI`: NoERI - Credit transfer is tagged as an Extended Remittance Information (ERI) transaction but does not contain ERI.\n* `RC03`: InvalidDebtorBankIdentifier - Debtor bank identifier is invalid or missing\n* `RC04`: InvalidCreditorBankIdentifier - Creditor bank identifier is invalid or missing\n* `RC06`: InvalidDebtorBICIdentifier - Debtor BIC identifier is invalid or missing\n* `RC07`: InvalidCreditorBICIdentifier - Creditor BIC identifier is invalid or missing\n* `RC09`: InvalidDebtorClearingSystemMemberIdentifier - Debtor ClearingSystemMember identifier is invalid or missing\n* `RC10`: InvalidCreditorClearingSystemMemberIdentifier - Creditor ClearingSystemMember identifier is invalid or missing\n* `RC11`: InvalidIntermediaryAgent - Intermediary Agent is invalid or missing\n* `RR09`: InvalidStructuredCreditorReference - Structured creditor reference invalid or missing.\n* `RR10`: InvalidCharacterSet - Character set supplied not valid for the country and payment type.\n* `S001`: UETRFlaggedForCancellation - Unique End-to-end Transaction Reference (UETR) relating to a payment has been identified as being associated with a Request for Cancellation.\n* `TA01`: TransmissonAborted - The transmission of the file was not successful – it had to be aborted (for technical reasons)\n* `NOAR`: NonAgreedRTP - No existing agreement for receiving request-to-pay messages.\n* `NOCM`: NotCompliantGeneric - Customer account is not compliant with regulatory requirements, for example FICA (in South Africa) or any other regulatory requirements which render an account inactive for certain processing.\n* `ALAC`: AlreadyAcceptedRTP - Request-to-pay has already been accepted by the Debtor.\n* `AEXR`: AlreadyExpiredRTP - Request-to-pay Expiry Date and Time has already passed.\n* `ARFR`: AlreadyRefusedRTP - Request-to-pay has already been refused by the Debtor.\n* `ARJR`: AlreadyRejectedRTP - Request-to-pay has already been rejected.\n* `EDTR`: ExpiryDateTimeReached - Expiry date time of the request-to-pay is already reached.\n* `EDTL`: ExpiryDateTooLong - Expiry date time of the request-to-pay is too far in the future.\n* `IEDT`: IncorrectExpiryDateTime - Expiry date time of the request-to-pay is incorrect.\n* `IRNR`: InitialRTPNeverReceived - No initial request-to-pay has been received.\n* `NRCH`: PayerOrPayerRTPSPNotReachable - Recipient side of the request-to-pay (payer or its request-to-pay service provider) is not reachable.\n* `RTNS`: RTPNotSupportedForDebtor - Debtor does not support request-to-pay transactions.\n* `PINS`: TypeOfPaymentInstrumentNotSupported - Type of payment requested in the request-to-pay is not supported by the payer.\n* `SVNR`: ServiceNotRendered - The payment is cancelled since a cash amount rendered was not correct or goods or a service was not rendered to the customer, e.g. in an e-commerce situation.\n* `UCRD`: UnknownCreditor - Unknown Creditor.\n"
    RequestToPayStatusReasonType:
      type: object
      oneOf:
        - $ref: '#/components/schemas/RequestToPayStatusReasonTypeCode'
        - $ref: '#/components/schemas/ProprietaryValue'
      discriminator:
        propertyName: schema
        mapping:
          CODE: '#/components/schemas/RequestToPayStatusReasonTypeCode'
          PROPRIETARY: '#/components/schemas/ProprietaryValue'
    RequestToPayStatusReasonInfo:
      type: object
      description: |
        Provides detailed information on a status reason.
      required:
        - reason
      properties:
        reason:
          $ref: '#/components/schemas/RequestToPayStatusReasonType'
        additionalInformation:
          type: string
          description: >
            A human friendly description of the status reason including any
            further details if applicable.
    RequestToPayStatus:
      type: object
      required:
        - status
      properties:
        status:
          type: string
          enum:
            - PAID
            - ACCEPTED
            - CANCELLED
            - EXPIRED
            - PENDING
            - PRESENTED
            - REJECTED
            - REFUND_IN_PROGRESS
            - REFUNDED
          description: >
            * `PAID`: Paid - The request to pay was approved by the debtor and
            the payment has been processed. Note that the outcome of the payment
            itself is not communicated.

            * `ACCEPTED`: Accepted - The request to pay was approved by the
            debtor but the payment has not yet been processed.

            * `CANCELLED`: Cancelled - Request to pay has been successfully
            cancelled after having received a request for cancellation.

            * `EXPIRED`: Expired - The request to pay has expired.

            * `PENDING`: Pending - The request to pay has been forwarded and an
            intial status report is still expected.

            * `PRESENTED`: Presented - The request to pay has been accepted by
            the payer participant and will be presented to the debtor.

            * `REJECTED`: Rejected - The request to pay has been rejected.

            * `REFUND_IN_PROGRESS`: Refund in progress - The refund of the
            original request to pay is currently in progress and does not yet
            have an outcome

            * `REFUNDED`: Refunded - The refund of the original request to pay
            has been completed successfully
        reasonInfo:
          type: array
          minItems: 1
          description: >
            A list of `RequestToPayStatusReasonInfo` values providing detailed
            reason information for the status.
          items:
            $ref: '#/components/schemas/RequestToPayStatusReasonInfo'
    OriginalRequestToPayData:
      type: object
      description: >
        Contains key elements related to the original request to pay that is
        being referred to.
      properties:
        creditor:
          $ref: '#/components/schemas/Party'
        creditorAccount:
          $ref: '#/components/schemas/PaymentAccount'
        creditorAgent:
          $ref: '#/components/schemas/InstitutionIdentification'
        amounts:
          $ref: '#/components/schemas/TransactionAmounts'
        remittanceInformation:
          $ref: '#/components/schemas/RemittanceInformation'
        debtor:
          $ref: '#/components/schemas/Party'
        debtorAccount:
          $ref: '#/components/schemas/PaymentAccount'
        debtorAgent:
          $ref: '#/components/schemas/InstitutionIdentification'
        expiryDateTime:
          type: string
          format: date-time
          description: >
            Date and time at which the request to pay expires. Some schemes

            may still permit a payment after the request to pay expires. Upon

            expiry, the following schemes will reject an associated payment:
            ZA_RPP.

            The date *must* be formatted as defined by `date-time` in
            [RFC3339](https://www.ietf.org/rfc/rfc3339.txt)
        paymentTypeInformation:
          $ref: '#/components/schemas/PaymentTypeInformation'
        requestToPayConditions:
          $ref: '#/components/schemas/RequestToPayConditions'
    RequestToPayResponse:
      allOf:
        - $ref: '#/components/schemas/BaseTransactionResponseMessage'
        - type: object
          properties:
            status:
              $ref: '#/components/schemas/RequestToPayStatus'
            instructingAgent:
              $ref: '#/components/schemas/InstitutionIdentification'
              description: >
                The instructing agent is the party sending the status message
                and not the party that sent the original

                instruction that is being reported on.
            instructedAgent:
              $ref: '#/components/schemas/InstitutionIdentification'
              description: >
                The instructed agent is the party receiving the status message
                and not the party that received the

                original instruction that is being reported on.
            originalRequestToPayData:
              $ref: '#/components/schemas/OriginalRequestToPayData'
            requestToPayConditions:
              $ref: '#/components/schemas/RequestToPayConditions'
          required:
            - status
    SchemeVerificationData:
      type: object
      description: >
        This object contains fields specific to the scheme being interacted with
        and determined by the chosen schema.

        Typically these are fields that are not standard within ISO20022
        ACMT.023
      required:
        - schema
      properties:
        schema:
          type: string
      discriminator:
        propertyName: schema
        mapping:
          ZA_AVS: '#/components/schemas/ZaAccountVerificationData'
    ZaAccountVerificationData:
      allOf:
        - $ref: '#/components/schemas/SchemeVerificationData'
        - type: object
          description: >-
            Fields specific to account verification services in South Africa.
            The fields `checksDebitsAllowed, `checksCreditsAllowed and
            `checksOlderThanThreeMonths` indicate to the receiving FI whether or
            not to return  the associated information (i.e. true or false in
            respect to those items)
          properties:
            checkDebitsAllowed:
              description: >
                Sets whether or not the response should indicate if debits are
                allowed on the account.
              type: boolean
            checkCreditsAllowed:
              description: >
                Sets whether or not the response should indicate if credits are
                allowed on the account.
              type: boolean
            checkOlderThanThreeMonths:
              description: >
                Sets whether or not the response should indicate whether the
                account is older than 3 months.
              type: boolean
            initials:
              type: string
              maxLength: 70
              description: |
                Initials of the individual account owner that is to be verified.
            lastName:
              type: string
              maxLength: 70
              description: >
                Family name of the individual account owner that is to be
                verified.
    Verification:
      type: object
      required:
        - party
        - account
      properties:
        identification:
          type: string
          description: >
            Uniquely identifies this verification. Used in cases where a list of
            verifications are necessary, in such

            cases a verification may need to be uniquely identified
            independently from other verifications.
          maxLength: 35
          minLength: 1
        party:
          $ref: '#/components/schemas/Party'
        account:
          $ref: '#/components/schemas/PaymentAccount'
        agent:
          $ref: '#/components/schemas/InstitutionIdentification'
        schemeVerificationData:
          $ref: '#/components/schemas/SchemeVerificationData'
    AccountVerificationRequest:
      type: object
      description: >
        Modeled after an ISO20022 ACMT.023 message, this
        AccountVerificationRequest allows the caller to verify account

        and account owner information with a given scheme.
      allOf:
        - $ref: '#/components/schemas/BaseTransactionMessage'
        - type: object
          required:
            - verification
            - assigner
            - assignee
          properties:
            creator:
              $ref: '#/components/schemas/Party'
            firstAgent:
              $ref: '#/components/schemas/InstitutionIdentification'
            assigner:
              $ref: '#/components/schemas/Party'
            assignee:
              $ref: '#/components/schemas/Party'
            verification:
              $ref: '#/components/schemas/Verification'
    Assignment:
      type: object
      properties:
        creator:
          $ref: '#/components/schemas/Party'
        firstAgent:
          $ref: '#/components/schemas/InstitutionIdentification'
        assigner:
          $ref: '#/components/schemas/Party'
        assignee:
          $ref: '#/components/schemas/Party'
    VerificationOutcome:
      type: object
      description: >
        Indicates whether the information provided in the verification request
        was correct (PASSED) or was incorrect

        (FAILED). If it was incorrect, a reason is provided.
      properties:
        schema:
          type: string
      discriminator:
        propertyName: schema
        mapping:
          PASSED: '#/components/schemas/VerificationPassedOutcome'
          FAILED: '#/components/schemas/VerificationFailedOutcome'
    VerificationPassedOutcome:
      allOf:
        - $ref: '#/components/schemas/VerificationOutcome'
    ExternalVerificationReason1Code:
      type: string
      enum:
        - ACC
        - AC01
        - AGNT
        - DUPL
        - AG01
        - BNOR
        - DS28
        - FF01
        - MS03
        - NORR
        - NR01
        - RC03
        - RC04
        - TM01
        - PN01
        - PN02
        - PI01
      minLength: 1
      maxLength: 4
      description: >
        * `ACC` : Successful verbose Cdv Outcome.

        * `AC01` : Account number provided in the request is invalid or missing.

        * `AGNT` : Agent identification provided in the request is incorrect.

        * `DUPL` : Request is a duplicate of another request.

        * `AG01` : Transaction forbidden on this type of account (Payment cannot
        be made to this account for example not open for deposits, blocked,
        closed).

        * `BNOR` : PSP is not registered under this Scheme.

        * `DS28` : Return following technical problems resulting in erroneous
        transaction.

        * `FF01` : File format incomplete or invalid.

        * `MS03` : Reason has not been specified by agent.

        * `NORR` : No response on request within timeframe.

        * `NR01` : PSP not able to confirm details and no reason is stated.

        * `RC03` : Debtor bank identifier is invalid or missing.

        * `RC04` : Creditor bank identifier is invalid or missing.

        * `TM01` : Associated message was received after agreed processing
        cut-off time.

        * `PN01` : Account Owner name and Payment Account number do not match.

        * `PN02` : Account Owner name and Payment Account number is a close
        match.

        * `PI01` : Account Owner Identification and Payment Account number do
        not match.
    VerificationReasonCode:
      type: object
      required:
        - value
        - schema
      properties:
        schema:
          type: string
          description: Identifies the value as being a pre-defined code. Always `CODE`.
        value:
          $ref: '#/components/schemas/ExternalVerificationReason1Code'
    VerificationReasonType:
      type: object
      oneOf:
        - $ref: '#/components/schemas/VerificationReasonCode'
        - $ref: '#/components/schemas/ProprietaryValue'
      discriminator:
        propertyName: schema
        mapping:
          CODE: '#/components/schemas/VerificationReasonCode'
          PROPRIETARY: '#/components/schemas/ProprietaryValue'
    VerificationReasonInfo:
      type: object
      description: |
        Provides detailed information on a verification reason.
      required:
        - reason
      properties:
        reason:
          $ref: '#/components/schemas/VerificationReasonType'
        additionalInformation:
          type: string
          description: >
            A human friendly description of the verification reason including
            any further details if applicable.
    VerificationFailedOutcome:
      allOf:
        - $ref: '#/components/schemas/VerificationOutcome'
        - type: object
          properties:
            reasonInfo:
              $ref: '#/components/schemas/VerificationReasonInfo'
    SchemeVerificationReportData:
      type: object
      required:
        - schema
      properties:
        schema:
          type: string
      discriminator:
        propertyName: schema
        mapping:
          ZA_AVS: '#/components/schemas/ZaAccountVerificationReportData'
    TernaryVerificationOutcome:
      type: string
      description: >
        Indicates whether or not the associated verification item was true
        (passed/positive), false (failed/negative) 

        or was not checked.
      enum:
        - 'TRUE'
        - 'FALSE'
        - NOT_CHECKED
    ZaAccountVerificationReportData:
      allOf:
        - $ref: '#/components/schemas/SchemeVerificationReportData'
        - type: object
          description: >
            Report fields specific to account verification services in South
            Africa. All fields are always present, and

            where a verification was not requested, it will default to a value
            of 'NOT_CHECKED'
          required:
            - accountFound
            - accountOpen
            - accountTypeMatch
            - privateIdentificationMatch
            - organisationIdentificationMatch
            - trustIdentificationMatch
            - initialsMatch
            - nameMatch
            - debitsAllowed
            - creditsAllowed
            - olderThanThreeMonths
            - emailMatch
            - mobileMatch
          properties:
            accountFound:
              $ref: '#/components/schemas/TernaryVerificationOutcome'
            accountOpen:
              $ref: '#/components/schemas/TernaryVerificationOutcome'
            accountTypeMatch:
              $ref: '#/components/schemas/TernaryVerificationOutcome'
            privateIdentificationMatch:
              $ref: '#/components/schemas/TernaryVerificationOutcome'
            organisationIdentificationMatch:
              $ref: '#/components/schemas/TernaryVerificationOutcome'
            trustIdentificationMatch:
              $ref: '#/components/schemas/TernaryVerificationOutcome'
            initialsMatch:
              $ref: '#/components/schemas/TernaryVerificationOutcome'
            nameMatch:
              $ref: '#/components/schemas/TernaryVerificationOutcome'
            debitsAllowed:
              $ref: '#/components/schemas/TernaryVerificationOutcome'
            creditsAllowed:
              $ref: '#/components/schemas/TernaryVerificationOutcome'
            olderThanThreeMonths:
              $ref: '#/components/schemas/TernaryVerificationOutcome'
            emailMatch:
              $ref: '#/components/schemas/TernaryVerificationOutcome'
            mobileMatch:
              $ref: '#/components/schemas/TernaryVerificationOutcome'
    VerificationReport:
      type: object
      properties:
        originalIdentification:
          type: string
          description: >
            Matches the identification of the Verification to which this report
            refers
          maxLength: 35
          minLength: 1
        outcome:
          $ref: '#/components/schemas/VerificationOutcome'
        updatedPartyAndAccount:
          type: object
          properties:
            party:
              $ref: '#/components/schemas/Party'
            account:
              $ref: '#/components/schemas/PaymentAccount'
        schemeVerificationReportData:
          $ref: '#/components/schemas/SchemeVerificationReportData'
    AccountVerificationResponse:
      type: object
      allOf:
        - $ref: '#/components/schemas/BaseTransactionMessage'
        - type: object
          required:
            - verification
            - assigner
            - assignee
          properties:
            originalMessageIdentifiers:
              $ref: '#/components/schemas/MessageIdentifiers'
            creator:
              $ref: '#/components/schemas/Party'
            firstAgent:
              $ref: '#/components/schemas/InstitutionIdentification'
            assigner:
              $ref: '#/components/schemas/Party'
            assignee:
              $ref: '#/components/schemas/Party'
            originalVerification:
              $ref: '#/components/schemas/Verification'
            originalAssignment:
              $ref: '#/components/schemas/Assignment'
            status:
              $ref: '#/components/schemas/Status'
            report:
              $ref: '#/components/schemas/VerificationReport'
    CreditTransferInitiationInstruction:
      type: object
      description: >
        A model containing information required to initiate a credit
        disbursement
      required:
        - paymentScheme
        - amounts
        - creditor
        - creditorAccount
        - creditorAgent
        - transactionIdentifiers
      properties:
        transactionIdentifiers:
          $ref: '#/components/schemas/TransactionIdentifiers'
          description: >
            Unique identification, as assigned by the first initiating agent, to
            unambiguously identify the

            transaction that is passed on, unchanged, throughout the entire
            interbank chain 
        creditorAgent:
          description: |
            Financial institution servicing an account for the creditor.
          $ref: '#/components/schemas/InstitutionIdentification'
        amounts:
          description: >
            The amount of money to be moved between the debtor and creditor
            entity, which may include charges

            or deductions, expressed in the currency as ordered by the
            initiating party 
          $ref: '#/components/schemas/TransactionAmounts'
        creditor:
          description: |
            Party to which an amount of money is due.
          $ref: '#/components/schemas/Party'
        creditorAccount:
          description: >
            Unambiguous identification of the account of the creditor to which a
            credit entry will be posted as a

            result of the payment transaction.
          $ref: '#/components/schemas/PaymentAccount'
        instructionForCreditorAgent:
          description: >
            Further information related to the processing of the payment
            instruction, provided by the

            initiating party, and intended for the creditor agent.
          minItems: 0
          type: array
          items:
            $ref: '#/components/schemas/Instruction'
        paymentTypeInformation:
          $ref: '#/components/schemas/PaymentTypeInformation'
          description: |
            Set of elements used to further specify the type of transaction.
        purpose:
          $ref: '#/components/schemas/PurposeType'
          description: |
            Specifies the underlying reason for the payment transaction
        paymentScheme:
          description: >
            Designates which scheme a credit transfer is associated with and
            describes scheme-specific information for the credit transfer.
          $ref: '#/components/schemas/CreditTransferPaymentScheme'
        supplementaryData:
          description: >
            A list of key-value pairs to support adding any
            supplementary/additional data to an Electrum Regulated Payments API
            message.
          $ref: '#/components/schemas/SupplementaryData'
        remittanceInformation:
          description: >
            Information supplied to enable the matching of an entry with the
            items that the transfer is

            intended to settle, such as commercial invoices in an accounts'
            receivable system.
          $ref: '#/components/schemas/RemittanceInformation'
        tax:
          description: |
            Provides details on tax related to this credit transaction
          $ref: '#/components/schemas/TaxInformation'
    CreditTransferInitiation:
      allOf:
        - $ref: '#/components/schemas/BaseMessage'
        - type: object
          description: >
            A model containing the necessary information to request the
            initiation of multiple credit disbursements from a single debtor 
          required:
            - paymentInformationId
            - paymentSchemeName
            - controlSum
            - debtor
            - debtorAgent
            - debtorAccount
            - creditTransferInitiationInstructions
          properties:
            schema:
              type: string
              enum:
                - CreditTransferInitiation
            paymentSchemeName:
              $ref: '#/components/schemas/PaymentSchemeName'
              description: >
                Identifies the payment scheme applied to all the credits within
                the bulk
            paymentInformationId:
              type: string
              format: UUID
              description: >
                Universally unique identifier to provide an end-to-end reference
                to the bulk initiation.

                This identifier remains the same for all messages related to the
                bulk transaction. 

                Note: this is distinct from the UETR's of the individual
                transactions 
            numberOfTransactions:
              type: integer
              description: >
                Number of individual credit transfer instructions within the
                bulk that should be initiated.
            controlSum:
              $ref: '#/components/schemas/Amount'
              description: |
                Sum of the credit amounts of every individual credit transfer.
            initiatingParty:
              $ref: '#/components/schemas/Party'
              description: |
                Party that initiates the payment. 
            debtor:
              description: >
                Party that owes money to the creditors associated with each
                individual credit transfer
              $ref: '#/components/schemas/Party'
            debtorAccount:
              description: >
                Unambiguous identification of the account of the debtor to which
                a debit entry will be made as a result

                of the transaction.
              $ref: '#/components/schemas/PaymentAccount'
            debtorAgent:
              description: |
                Financial institution servicing an account for the debtor.
              $ref: '#/components/schemas/InstitutionIdentification'
            requestedExecutionDate:
              type: string
              format: date
              description: >
                Date at which the initiating party requests the clearing agent
                to process the payment.
            remittanceInformation:
              description: >
                Information supplied to enable the matching of an entry with the
                items that the transfer is

                intended to settle, such as commercial invoices in an accounts'
                receivable system.
              $ref: '#/components/schemas/RemittanceInformation'
            creditTransferInitiationInstructions:
              type: array
              minItems: 1
              items:
                $ref: '#/components/schemas/CreditTransferInitiationInstruction'
              description: >
                List of instructions to initiate each credit transfer within the
                bulk with other financial institutions or the partner bank
    InitiationStatus:
      type: object
      required:
        - outcome
      properties:
        outcome:
          type: string
          enum:
            - RECEIVED
            - PENDING
            - ACCEPTED
            - COMPLETED
            - REJECTED
          description: >
            - `RECEIVED`: The bulk initiation has been received.

            - `PENDING`: The bulk initiation is undergoing pre-checks.

            - `ACCEPTED`: The bulk initiation has been accepted and individual
            transactions are being processed.

            - `COMPLETED`: The bulk initiation processing is complete, with all
            individual payment status reports received. 

            - `REJECTED`: The bulk initiation has been rejected.
        reasonInfo:
          type: array
          minItems: 1
          description: >
            A list of `StatusReasonInfo` values providing detailed reason
            information for the outcome.
          items:
            $ref: '#/components/schemas/StatusReasonInfo'
    TransactionStatistics:
      type: object
      description: >
        A detailed breakdown of the number of transactions by their status.

        Each property corresponds to a status outcome and contains the
        transaction count for that status.
      properties:
        numberOfApprovedTransactions:
          type: integer
          description: Count of transactions with the `APPROVED` status.
        numberOfPendingTransactions:
          type: integer
          description: Count of transactions with the `PENDING` status.
        numberOfCancelledTransactions:
          type: integer
          description: Count of transactions with the `CANCELLED` status.
        numberOfRejectedTransactions:
          type: integer
          description: Count of transactions with the `REJECTED` status.
      required:
        - numberOfApprovedTransactions
        - numberOfPendingTransactions
        - numberOfCancelledTransactions
        - numberOfRejectedTransactions
    PaymentInstructionStatusReport:
      type: object
      description: >
        This message is used to report information about the positive or
        negative status of an individual credit transfer/direct debit

        instruction submitted within a bulk initiation, or to report on a
        pending instruction.


        The field `originalTransactionData` is not mandatory, but will always be
        populated in payment status reports sent by Electrum.
      required:
        - paymentScheme
        - status
        - transactionIdentifiers
      properties:
        transactionIdentifiers:
          $ref: '#/components/schemas/TransactionIdentifiers'
        paymentScheme:
          $ref: '#/components/schemas/PaymentStatusReportPaymentScheme'
        status:
          $ref: '#/components/schemas/Status'
        originalTransactionData:
          $ref: '#/components/schemas/OriginalTransactionData'
    PaymentInitiationStatusReport:
      allOf:
        - $ref: '#/components/schemas/BaseResponseMessage'
        - type: object
          description: >
            This message is used to report information about the positive or
            negative status of a bulk payment

            initiation (Multiple Credit Transfers/Direct Debits)
          required:
            - paymentInformationId
            - paymentInitiationStatus
            - transactionStatistics
            - paymentSchemeName
            - debtorAgent
          properties:
            schema:
              type: string
              enum:
                - PaymentInitiationStatusReport
            paymentInformationId:
              type: string
              format: UUID
              description: >
                Universally unique identifier to provide an end-to-end reference
                to the bulk initiation.

                This identifier remains the same for all messages related to the
                bulk transaction. 

                Note: this is distinct from the UETR's of the individual credit
                transfers. 
            numberOfTransactions:
              type: integer
              description: >
                Number of individual credit transfer instructions within the
                bulk that should be initiated.
            controlSum:
              $ref: '#/components/schemas/Amount'
              description: |
                Sum of the credit amounts of every individual credit transfer.
            paymentInitiationStatus:
              $ref: '#/components/schemas/InitiationStatus'
              description: >
                The overall processing state of a bulk credit transfer/direct
                debit initiation
            transactionStatistics:
              $ref: '#/components/schemas/TransactionStatistics'
              description: >
                Provides detailed information about transaction metrics and
                outcomes
            paymentSchemeName:
              description: >
                Indicates which payment scheme a payment initiation status
                report is associated with. 
              $ref: '#/components/schemas/PaymentSchemeName'
            debtorAgent:
              $ref: '#/components/schemas/InstitutionIdentification'
              description: |
                Financial institution servicing an account for the debtor.
            creditorAgent:
              $ref: '#/components/schemas/InstitutionIdentification'
              description: |
                Financial institution servicing an account for the creditor.
            paymentInstructionStatusReports:
              type: array
              items:
                $ref: '#/components/schemas/PaymentInstructionStatusReport'
              description: >
                List of payment status reports relating to each credit
                initiation instruction received and actioned 
    ReservationTypeCode:
      type: object
      required:
        - value
        - schema
      properties:
        schema:
          type: string
          description: Identifies the value as being a pre-defined code. Always `CODE`.
        value:
          type: string
          enum:
            - BLKD
            - CARE
            - HPAR
            - NSSR
            - THRE
            - UPAR
          description: >
            * `BLKD` - Blocked - Amount blocked or frozen due to external
            circumstances such as a court order, death of beneficiary or account
            owner, or bankruptcy.

            * `CARE` - CashReservation - Amount set aside by a participant to
            reserve liquidity from its own account, exclusively or executing
            cash withdrawals.

            * `HPAR` - HighlyUrgentPaymentReservation - Amount set aside by a
            participant to reserve liquidity from its own account, exclusively
            for executing highly urgent payments.

            * `NSSR` - NetSSSReservation - Amount set aside by a participant to
            reserve liquidity from its own account, exclusively for the
            settlement of the multilateral cash balance stemming from the Net
            Security Settlement System.

            * `THRE` - ThresholdForInvestment - Amount above which funds will be
            destined for investment.

            * `UPAR` - UrgentPaymentReservation - Amount set aside by a
            participant to reserve liquidity from its own account, exclusively
            for executing critical payments called urgent payments.
    ReservationType:
      type: object
      oneOf:
        - $ref: '#/components/schemas/ReservationTypeCode'
        - $ref: '#/components/schemas/ProprietaryValue'
      discriminator:
        propertyName: schema
        mapping:
          CODE: '#/components/schemas/ReservationTypeCode'
          PROPRIETARY: '#/components/schemas/ProprietaryValue'
    ReservationRequest:
      allOf:
        - $ref: '#/components/schemas/BaseTransactionMessage'
        - type: object
          description: >
            A model containing the necessary information to perform a
            reservation of funds on an account.
          properties:
            reference:
              type: string
              description: >
                An explanation of the transaction, e.g. to be printed on the
                account holder's statement.
              maxLength: 35
            reservationType:
              $ref: '#/components/schemas/ReservationType'
            accountIdentification:
              description: >-
                Unambiguous identification of the account to which a reservation
                of funds will be made.
              $ref: '#/components/schemas/PaymentAccount'
            amount:
              $ref: '#/components/schemas/Amount'
            initiationSource:
              type: string
              description: >-
                Free text field used to inform the core banking system of which
                system is initiating the reservation.
            supplementaryData:
              $ref: '#/components/schemas/SupplementaryData'
          required:
            - amount
            - accountIdentification
    VoidReservationRequest:
      allOf:
        - $ref: '#/components/schemas/BaseTransactionMessage'
        - type: object
          description: >-
            A model containing the necessary information to void a prior
            reservation of funds.
          properties:
            paymentUetr:
              type: string
              format: UUID
              description: >-
                UUID which links the void to a payment instruction, and its
                initial reservation.
            accountIdentification:
              $ref: '#/components/schemas/PaymentAccount'
              description: >-
                Unambiguous identification of the account to which a void will
                be performed.
            amount:
              $ref: '#/components/schemas/Amount'
            initiationSource:
              type: string
              description: >-
                Free text field used to inform the core banking system of which
                system is initiating the void.
            supplementaryData:
              $ref: '#/components/schemas/SupplementaryData'
              description: Additional supplementary data.
          required:
            - paymentUetr
            - amount
            - accountIdentification
    TransactionDirection:
      type: string
      description: >
        Indicates the direction of the original payment, from the perspective of
        Electrum and the Partner.
      enum:
        - INBOUND
        - OUTBOUND
        - ON_US
    PostingRequest:
      allOf:
        - $ref: '#/components/schemas/BaseTransactionMessage'
        - type: object
          description: >-
            A model containing the necessary information to perform a posting to
            the banking ledger after a payment has completed successfully.
          properties:
            paymentUetr:
              type: string
              format: UUID
              description: UUID which links the posting to a payment instruction.
            effectiveDateTime:
              type: string
              format: date-time
              description: The effective action date-time of the posting.
            creditorAccount:
              $ref: '#/components/schemas/PaymentAccount'
              description: >-
                Unambiguous identification of the account of the creditor to
                which a credit entry will be made.
            creditorAccountReference:
              type: string
              description: >-
                An explanation of the transaction, e.g. to be printed on the
                creditor account holder's statement.
            creditorAgent:
              $ref: '#/components/schemas/InstitutionIdentification'
              description: Financial institution servicing an account for the creditor.
            debtorAccount:
              $ref: '#/components/schemas/PaymentAccount'
              description: >-
                Unambiguous identification of the account of the debtor to which
                a debit entry will be made.
            debtorAccountReference:
              type: string
              description: >-
                An explanation of the transaction, e.g. to be printed on the
                debtor account holder's statement.
            debtorAgent:
              $ref: '#/components/schemas/InstitutionIdentification'
              description: Financial institution servicing an account for the debtor.
            amount:
              $ref: '#/components/schemas/Amount'
            aggregatedTransactionCount:
              type: integer
              description: A count of how many payments are aggregated into this posting
            initiationSource:
              type: string
              description: >-
                Free text field used to inform the core banking system of which
                system is initiating the posting.
            paymentScheme:
              $ref: '#/components/schemas/PaymentSchemeName'
              description: The payment scheme of the payment being posted.
            localInstrument:
              $ref: '#/components/schemas/LocalInstrumentType'
            paymentMethod:
              type: string
              enum:
                - CreditTransfer
                - DirectDebit
              description: |
                Specifies the means of payment for the original transaction.
            direction:
              $ref: '#/components/schemas/TransactionDirection'
            supplementaryData:
              $ref: '#/components/schemas/SupplementaryData'
              description: Additional supplementary data.
          required:
            - paymentUetr
            - effectiveDateTime
            - amount
            - aggregatedTransactionCount
            - paymentScheme
            - paymentMethod
    Receipt:
      allOf:
        - $ref: '#/components/schemas/BaseTransactionResponseMessage'
        - type: object
          description: >
            A model containing the outcome a request that was previously
            received. It conveys information about the processing of the
            original message.
          properties:
            status:
              $ref: '#/components/schemas/Status'
          required:
            - status
    ValidationStep:
      type: object
      required:
        - description
        - result
      description: >
        Represents the result of checking a validation step during a validation
        operation. Note that the `reasonInfo`

        value will typically be set in the case that the result is `FAILED`,
        whereas it may or may not be set if the

        result is `PASSED` or `NOT_RUN`. It is also expected that the `reason`
        used in `reasonInfo` values is always

        of type `CODE` and not `PROPRIETARY`.
      properties:
        description:
          type: string
          description: |
            A short description of the scheme rule that was checked.
        result:
          type: string
          enum:
            - PASSED
            - FAILED
            - NOT_RUN
          description: >
            Enumerates the result of the validation step.

            `PASSED`: the data provided passed the validation step.

            `FAILED`: the data provided did not pass the validation step.

            `NOT_RUN`: the step was not run as the client has opted out of the
            specific check.
        reasonInfo:
          $ref: '#/components/schemas/StatusReasonInfo'
    ValidationOutcome:
      type: object
      required:
        - schema
        - isSuccessful
        - steps
      properties:
        schema:
          type: string
          enum:
            - ValidationOutcome
        isSuccessful:
          type: boolean
          description: >
            An overall indication of whether the validation operation was
            successful. True if none of the validation

            steps failed (i.e. have result `FAILED`); false otherwise.
        steps:
          type: array
          minItems: 1
          description: >
            A list of results for each validation step checked as part of the
            validation operation.
          items:
            $ref: '#/components/schemas/ValidationStep'
    ErrorDetail:
      type: object
      description: >
        A model carrying information detailing the reason for an error that
        occurred.
      required:
        - schema
        - message
      properties:
        message:
          type: string
          description: A human friendly description of the error that occurred.
        detail:
          type: string
          description: >
            An optional string containing details relevant to the error, for
            example

            an explanation of which field(s) in a message body failed validation
            and why.
        schema:
          type: string
          enum:
            - ErrorDetail
    CreditTransferStatusRequest:
      description: >
        Provides details to identify a previously submitted credit transfer
        transaction.
      type: object
      required:
        - schema
        - messageIdentifiers
        - originalMessageIdentifiers
        - originalTransactionIdentifiers
      properties:
        schema:
          type: string
          enum:
            - CreditTransferStatusRequest
        messageIdentifiers:
          $ref: '#/components/schemas/MessageIdentifiers'
        originalMessageIdentifiers:
          $ref: '#/components/schemas/MessageIdentifiers'
        originalTransactionIdentifiers:
          $ref: '#/components/schemas/TransactionIdentifiers'
    RequestToPayCancellation:
      description: >
        Requests that a prior request to pay is cancelled if possible (e.g. it's
        not yet been actioned, rejected or expired).
      type: object
      properties:
        reasonCode:
          type: string
          enum:
            - AC03
            - AGNT
            - AM09
            - BE16
            - COVR
            - CURR
            - CUST
            - CUTA
            - DS24
            - DT01
            - DUPL
            - FRAD
            - FRNA
            - FRTR
            - INDM
            - MODT
            - PAID
            - SVNR
            - SYAD
            - TECH
            - UPAY
            - ENUE
            - UAPA
            - NARR
            - AC02
            - BIAS
            - INCR
            - DRTP
          description: >
            The reason the request to pay is being cancelled.

            - `AC03`: InvalidCreditorAccountNumber - Wrong account number in
            Credit Transfer.

            - `AGNT`: IncorrectAgent- Agent in the payment workflow is
            incorrect.

            - `AM09`: WrongAmount- Amount is not the amount agreed or expected.

            - `BE16`: InvalidDebtorIdentificationCode- Debtor or Ultimate Debtor
            identification code missing or invalid.

            - `COVR`: CoverCancelledOrReturned- Cover payments has either been
            returned or cancelled.

            - `CURR`: IncorrectCurrency- Currency of the payment is incorrect.

            - `CUST`: RequestedByCustomer- Cancellation requested by the
            Creditor.

            - `CUTA`: CancelUponUnableToApply- Cancellation requested because an
            investigation request has been received and no remediation is
            possible.

            - `DS24`: TimeOut- Cancellation requested because the original
            payment order expired due to time-out.

            - `DT01`: InvalidDate- Invalid date (for example, wrong or missing
            settlement date).

            - `DUPL`: DuplicatePayment- Payment is a duplicate of another
            payment.

            - `FRAD`: FraudulentOrigin- Cancellation requested following a
            transaction that was originated fraudulently. The use of the
            FraudulentOrigin code should be governed by jurisdictions.

            - `FRNA`: ForwardToNextAgent- To complement a rejection response,
            suggesting the request for cancelation should be forwarded to the
            next agent in the payment transaction chain.

            - `FRTR`: FinalResponse- Direct Debit Tracking recalled as Mandate
            Cancelled

            - `INDM`: IndemnityRequired- To express the wish to establish a
            bilateral indemnity agreement.

            - `MODT`: ModifiedTransaction- The underlying transaction in
            relation to an RTP was modified.

            - `PAID`: TransactionAlreadyPaid- The underlying transaction in
            relation to an RTP was already paid (via other means).

            - `SVNR`: ServiceNotRendered- The payment is cancelled since a cash
            amount rendered was not correct or goods or a service was not
            rendered to the customer, e.g. in an e-commerce situation.

            - `SYAD`: RequestToSettlementSystemAdministrator- Cancellation
            requested by System Member to Settlement System Administrator to
            indicate that the cancellation request must not be forwarded further
            in the chain.

            - `TECH`: TechnicalProblem- Cancellation requested following
            technical problems resulting in an erroneous transaction.

            - `UPAY`: UnduePayment- Payment is not justified.

            - `ENUE`: EndUserError- Cancellation or request for return requested
            by the Debtor specifically due to one or more errors by debtor in
            the original Credit Transfer. Usage: This code can be used for any
            error in the original Credit Transfer made by the Debtor. Can also
            be used if multiple errors were made in the original Credit
            Transfer.

            - `UAPA`: UnauthorizedPayment- "The Debtor is requesting a return of
            the payment because the payment was not properly authorized. Usage:
            This code can be used in the case where a Credit Transfer was made
            without proper authorization from the Debtor. This could be due to
            compromised end user credentials."

            - `NARR`: Narrative- Reason is provided as narrative information in
            the additional reason information.

            - `AC02`: InvalidDebtorAccountNumber- Debtor account number invalid
            or missing.

            - `BIAS`: BatchInstructionAlreadySettled- Process a cancellation
            request but batch already settled.

            - `INCR`: InvalidCancellationRequest- Process a cancellation request
            with incorrect reference to original batch.

            - `DRTP`: DuplicationRequestToPay- Duplication of a request-to-pay
            message.
        reasonDescription:
          type: string
          description: A description of the reason the request to pay is being cancelled.
        instructingAgent:
          $ref: '#/components/schemas/InstitutionIdentification'
          description: |
            The instructing agent is the party sending the cancellation message.
        instructedAgent:
          $ref: '#/components/schemas/InstitutionIdentification'
          description: >
            The instructed agent is the party receiving the cancellation
            message.
        originalRequestToPayData:
          $ref: '#/components/schemas/OriginalRequestToPayData'
        schema:
          type: string
          enum:
            - RequestToPayCancellation
        messageIdentifiers:
          $ref: '#/components/schemas/MessageIdentifiers'
        originalMessageIdentifiers:
          $ref: '#/components/schemas/MessageIdentifiers'
        originalTransactionIdentifiers:
          $ref: '#/components/schemas/TransactionIdentifiers'
      required:
        - reasonCode
        - schema
        - messageIdentifiers
        - originalMessageIdentifiers
        - originalTransactionIdentifiers
    RequestToPayCancellationStatusReasonTypeCode:
      type: object
      required:
        - schema
        - value
      properties:
        schema:
          type: string
          description: Identifies the value as being a pre-defined code. Always `CODE`.
        value:
          type: string
          enum:
            - AC04
            - ADAC
            - AGNT
            - AM04
            - ARDT
            - ARPL
            - CUST
            - LEGL
            - NARR
            - NOAS
            - NOOR
            - PTNA
            - RQDA
            - WSEQ
            - IDMN
            - ACLR
            - AEXR
            - ARFR
            - ARJR
            - PATE
            - RR04
            - RCAR
            - RCNR
            - RCPR
            - URTP
          description: >
            * `AC04`: ClosedAccountNumber - Account number specified has been
            closed on the receiver’s books.

            * `ADAC`: AwaitingDebitAuthorityFromCustomer - Reported when the
            cancellation request cannot be processed because customer has not
            yet provided the debit authority on its account.

            * `AGNT`: AgentDecision - Reported when the cancellation cannot be
            accepted because of an agent refuses to cancel.

            * `AM04`: InsufficientFunds - Amount of funds available to cover
            specified message amount is insufficient.

            * `ARDT`: AlreadyReturned - Cancellation not accepted as the
            transaction has already been returned.

            * `ARPL`: AwaitinReply - Reported when the cancellation request
            cannot be processed because no reply has been  received yet from the
            receiver of the request message.

            * `CUST`: CustomerDecision - Reported when the cancellation cannot
            be accepted because of a customer decision (Creditor).

            * `LEGL`: LegalDecision - Reported when the cancellation cannot be
            accepted because of regulatory rules.

            * `NARR`: Narrative - Reason is provided as narrative information in
            the additional reason information.

            * `NOAS`: NoAnswerFromCustomer - No response from beneficiary (to
            the cancellation request).

            * `NOOR`: NoOriginalTransactionReceived - Original transaction
            (subject to cancellation) never received.

            * `PTNA`: PassedToTheNextAgent - Reported when the cancellation
            request cannot be accepted because the payment instruction has been
            passed to the next agent.

            * `RQDA`: RequestingDebitAuthority - Reported when authority is
            required by the Creditor to return the payment.

            * `WSEQ`: WrongSequence - Reported when the cancellation request
            cannot be processed because the sequence referred to in the request
            is not valid.

            * `IDMN`: CancellationIndemnityRequired - Complementing a Pending or
            Reject Status. Payment cancellation request cannot be accepted until
            an indemnity agreement is established.

            * `ACLR`: AlreadyCancelledRTP - Request-to-pay has already been
            cancelled.

            * `AEXR`: AlreadyExpiredRTP - Request-to-pay Expiry Date and Time
            has already passed.

            * `ARFR`: AlreadyRefusedRTP - Request-to-pay has already been
            refused by the Debtor.

            * `ARJR`: AlreadyRejectedRTP - Request-to-pay has already been
            rejected.

            * `PATE`: PaymentAlreadyTransmittedExecution - Payment related to
            the request-to-pay has already been transmitted for execution.

            * `RR04`: RegulatoryReason - Regulatory Reason.

            * `RCAR`: RfCAlreadyRejected - Request for cancellation of the
            request-to-pay has already been rejected.

            * `RCNR`: RfCNeverReceived - Request for cancellation of the
            request-to-pay has never been received.

            * `RCPR`: RfCReceivedAndProcessed - Request for cancellation of the
            request-to-pay has already been received and processed.

            * `URTP`: UnknownRTP - Request-to-pay is unknown.
    RequestToPayCancellationStatusReasonType:
      type: object
      oneOf:
        - $ref: '#/components/schemas/RequestToPayCancellationStatusReasonTypeCode'
        - $ref: '#/components/schemas/ProprietaryValue'
      discriminator:
        propertyName: schema
        mapping:
          CODE: '#/components/schemas/RequestToPayCancellationStatusReasonTypeCode'
          PROPRIETARY: '#/components/schemas/ProprietaryValue'
    RequestToPayCancellationStatusReasonInfo:
      type: object
      description: |
        Provides detailed information on a cancellation status reason.
      required:
        - reason
      properties:
        reason:
          $ref: '#/components/schemas/RequestToPayCancellationStatusReasonType'
        additionalInformation:
          type: string
          description: >
            A human friendly description of the status reason including any
            further details if applicable.
    RequestToPayCancellationStatus:
      type: object
      required:
        - status
      properties:
        status:
          type: string
          enum:
            - CANCELLED
            - REJECTED
          description: >
            * `CANCELLED`: Cancelled - The cancellation was successfully
            processed and the request for payment has been cancelled.

            * `REJECTED`: Rejected - The cancellation was rejected. Refer to the
            `reasonInfo` for further information.
        reasonInfo:
          type: array
          minItems: 1
          description: >
            A list of `RequestToPayCancellationStatusReasonInfo` values
            providing detailed reason information for the status.
          items:
            $ref: '#/components/schemas/RequestToPayCancellationStatusReasonInfo'
    RequestToPayCancellationResponse:
      description: |
        Provides the outcome of a prior request to pay cancellation.
      type: object
      properties:
        status:
          $ref: '#/components/schemas/RequestToPayCancellationStatus'
        instructingAgent:
          $ref: '#/components/schemas/InstitutionIdentification'
          description: >
            The instructing agent is the party sending the cancellation response
            message and not the party that sent the original

            cancellation instruction that is being reported on.
        instructedAgent:
          $ref: '#/components/schemas/InstitutionIdentification'
          description: >
            The instructed agent is the party receiving the cancellation
            response message and not the party that received the

            original cancellation instruction that is being reported on.
        originalRequestToPayData:
          $ref: '#/components/schemas/OriginalRequestToPayData'
        schema:
          type: string
          enum:
            - RequestToPayCancellationResponse
        messageIdentifiers:
          $ref: '#/components/schemas/MessageIdentifiers'
        originalMessageIdentifiers:
          $ref: '#/components/schemas/MessageIdentifiers'
        originalTransactionIdentifiers:
          $ref: '#/components/schemas/TransactionIdentifiers'
      required:
        - status
        - schema
        - messageIdentifiers
        - originalMessageIdentifiers
        - originalTransactionIdentifiers
    RequestToPayStatusRequest:
      description: |
        Provides details to identify a previously submitted request to pay.
      type: object
      required:
        - messageIdentifiers
        - originalTransactionIdentifiers
      properties:
        instructedAgent:
          description: >
            Agent that is instructed by the previous party in the chain to carry
            out the (set of) instruction(s).
          $ref: '#/components/schemas/InstitutionIdentification'
        instructingAgent:
          description: >
            Agent that instructs the next party in the chain to carry out the
            (set of) instruction(s)
          $ref: '#/components/schemas/InstitutionIdentification'
        schema:
          type: string
          enum:
            - RequestToPayStatusRequest
        messageIdentifiers:
          $ref: '#/components/schemas/MessageIdentifiers'
        originalMessageIdentifiers:
          $ref: '#/components/schemas/MessageIdentifiers'
        originalTransactionIdentifiers:
          $ref: '#/components/schemas/TransactionIdentifiers'
    EventPayload:
      type: object
      oneOf:
        - $ref: '#/components/schemas/CreditTransfer'
        - $ref: '#/components/schemas/PaymentStatusReport'
        - $ref: '#/components/schemas/IdentifierSchemeDeregistrationRequest'
        - $ref: '#/components/schemas/IdentifierSchemeDeregistrationResponse'
        - $ref: '#/components/schemas/IdentifierSchemeRegistrationResponse'
        - $ref: '#/components/schemas/IdentifierSchemeRegistrationRequest'
        - $ref: '#/components/schemas/SchemeInquiryRequest'
        - $ref: '#/components/schemas/SchemeInquiryResponse'
        - $ref: '#/components/schemas/IdentifierDeterminationRequest'
        - $ref: '#/components/schemas/IdentifierDeterminationResponse'
        - $ref: '#/components/schemas/AccountUpdateRequest'
        - $ref: '#/components/schemas/AccountAdditionalIdUpdateRequest'
        - $ref: '#/components/schemas/ValidationOutcome'
        - $ref: '#/components/schemas/ErrorDetail'
        - $ref: '#/components/schemas/DirectDebit'
        - $ref: '#/components/schemas/PaymentReturn'
        - $ref: '#/components/schemas/CreditTransferStatusRequest'
        - $ref: '#/components/schemas/RequestToPay'
        - $ref: '#/components/schemas/RequestToPayResponse'
        - $ref: '#/components/schemas/RequestToPayCancellation'
        - $ref: '#/components/schemas/RequestToPayCancellationResponse'
        - $ref: '#/components/schemas/RequestToPayStatusRequest'
        - $ref: '#/components/schemas/AccountVerificationRequest'
        - $ref: '#/components/schemas/AccountVerificationResponse'
        - $ref: '#/components/schemas/ReservationRequest'
        - $ref: '#/components/schemas/Receipt'
        - $ref: '#/components/schemas/PostingRequest'
      discriminator:
        propertyName: schema
        mapping:
          CreditTransfer: '#/components/schemas/CreditTransfer'
          PaymentStatusReport: '#/components/schemas/PaymentStatusReport'
          IdentifierSchemeDeregistrationRequest: '#/components/schemas/IdentifierSchemeDeregistrationRequest'
          IdentifierSchemeDeregistrationResponse: '#/components/schemas/IdentifierSchemeDeregistrationResponse'
          IdentifierSchemeRegistrationRequest: '#/components/schemas/IdentifierSchemeRegistrationRequest'
          IdentifierSchemeRegistrationResponse: '#/components/schemas/IdentifierSchemeRegistrationResponse'
          SchemeInquiryRequest: '#/components/schemas/SchemeInquiryRequest'
          SchemeInquiryResponse: '#/components/schemas/SchemeInquiryResponse'
          IdentifierDeterminationRequest: '#/components/schemas/IdentifierDeterminationRequest'
          IdentifierDeterminationResponse: '#/components/schemas/IdentifierDeterminationResponse'
          AccountUpdateRequest: '#/components/schemas/AccountUpdateRequest'
          AccountAdditionalIdUpdateRequest: '#/components/schemas/AccountAdditionalIdUpdateRequest'
          ValidationOutcome: '#/components/schemas/ValidationOutcome'
          ErrorDetail: '#/components/schemas/ErrorDetail'
          DirectDebit: '#/components/schemas/DirectDebit'
          PaymentReturn: '#/components/schemas/PaymentReturn'
          CreditTransferStatusRequest: '#/components/schemas/CreditTransferStatusRequest'
          RequestToPay: '#/components/schemas/RequestToPay'
          RequestToPayResponse: '#/components/schemas/RequestToPayResponse'
          RequestToPayCancellation: '#/components/schemas/RequestToPayCancellation'
          RequestToPayCancellationResponse: '#/components/schemas/RequestToPayCancellationResponse'
          RequestToPayStatusRequest: '#/components/schemas/RequestToPayStatusRequest'
          AccountVerificationRequest: '#/components/schemas/AccountVerificationRequest'
          AccountVerificationResponse: '#/components/schemas/AccountVerificationResponse'
          Receipt: '#/components/schemas/Receipt'
          ReservationRequest: '#/components/schemas/ReservationRequest'
          PostingRequest: '#/components/schemas/PostingRequest'
    TransactionStateEvent:
      allOf:
        - $ref: '#/components/schemas/Event'
        - type: object
          required:
            - class
            - type
            - name
            - stageVersion
          description: >
            All of the data supplied as part of the state event.


            The stage change that triggered the event is provided by the `type`
            field. Each event also

            carries a globally unique value in the inherited `name` field which
            is simply the `class`

            (which is always `STATE` for state-triggered events) concatenated
            (using an underscore) with

            the `type`.


            The specific states which elicit an event are:


            |State|Circumstance|

            |-----|------------|


            |CREDIT_AUTH_ACCEPTED|Deprecated; use PAYMENT_AUTH_REQUEST_ACCEPTED
            instead. Indicates that the prior auth request passed all technical
            validation and

            will be functionally processed. Corresponds to an HTTP `2xx` back to
            where the auth request originated from.|

            |CREDIT_AUTH_DELIVERY_PENDING|Deprecated; use
            PAYMENT_AUTH_REQUEST_PENDING instead. Indicates that Electrum has
            performed functional processing of an auth

            request (which was previously accepted) and Electrum is forwarding
            it on to the partner or industry for processing, depending

            on whether the transaction is an inbound or outbound transaction.|

            |CREDIT_AUTH_DELIVERED|Deprecated; no alternative state provided.
            Indicates that Electrum has successfully delivered the auth request
            to the intended recipient.|

            |CREDIT_AUTH_DELIVERY_FAILURE|Deprecated; use
            PAYMENT_AUTH_REQUEST_DELIVERY_FAILURE instead. Indicates that
            Electrum encountered a technical error while delivering the auth

            request to the intended recipient (for example receiving HTTP 5xx
            responses from the partner).|

            |CREDIT_AUTH_RECEIVED|Deprecated; use PAYMENT_AUTH_REQUEST_RECEIVED
            instead. Indicates that Electrum received an auth request.|

            |CREDIT_AUTH_REJECTED|Deprecated; use PAYMENT_AUTH_REQUEST_REJECTED
            instead. The opposite of CREDIT_AUTH_REQUEST_ACCEPTED. No further
            processing of the credit

            auth is performed. Corresponds with an HTTP `4xx` or `5xx` back to
            where the auth request originated from.|

            |CREDIT_AUTH_RESPONSE_ACCEPTED|Deprecated; use
            PAYMENT_AUTH_RESPONSE_ACCEPTED instead. Indicates that the prior
            auth response passed all technical

            validation and will be functionally processed. Corresponds with an
            HTTP `2xx` back to where the auth response originated from.|

            |CREDIT_AUTH_RESPONSE_RECEIVED|Deprecated; use
            PAYMENT_AUTH_RESPONSE_RECEIVED instead. Electrum received an auth
            response for a prior auth request that Electrum had

            forwarded.|

            |CREDIT_AUTH_RESPONSE_REJECTED|Deprecated; use
            PAYMENT_AUTH_RESPONSE_REJECTED instead. The opposite of
            CREDIT_AUTH_RESPONSE_ACCEPTED. No further

            processing of the credit auth response is performed. Corresponds to
            an HTTP `4xx` or `5xx` back to the sender of the credit auth
            response.|

            |CREDIT_AUTH_TIMEOUT|Deprecated; use PAYMENT_AUTH_TIMEOUT instead.
            No accepted credit auth response was received by Electrum
            timeously.|

            |CREDIT_COMPLETION_ACCEPTED|Deprecated; use
            PAYMENT_COMPLETION_ACCEPTED instead. Indicates that the prior credit
            transfer completion request passed all

            technical validation and will be functionally processed. Corresponds
            with an HTTP `2xx` back to where the credit completion originated
            from.|

            |CREDIT_COMPLETION_RECEIVED|Deprecated; use
            PAYMENT_COMPLETION_RECEIVED instead. Indicates that Electrum
            received a request to complete a previously approved credit

            transfer authorsation.|

            |CREDIT_COMPLETION_DELIVERY_PENDING|Deprecated; use
            PAYMENT_COMPLETED instead. Indicates that Electrum has performed
            functional processing of a completion

            request (which was previously accepted) and Electrum is forwarding
            it on to the partner or industry for processing, depending

            on whether the transaction is an inbound or outbound transaction.|

            |CREDIT_COMPLETION_DELIVERED|Deprecated; no alternative state
            provided. Electrum successfully delivered the credit completion to
            the intended recipient.|

            |CREDIT_COMPLETION_DELIVERY_FAILURE|Deprecated; use
            PAYMENT_COMPLETION_DELIVERY_FAILURE instead. Indicates that a credit
            transfer completion message was not successfully delivered to the
            intended recipient.|

            |CREDIT_TRANSFER_STATUS_PENDING|Deprecated; use
            PAYMENT_STATUS_PENDING instead. Indicates that Electrum is awaiting
            the status of a credit transfer after sending a status request to
            industry.|

            |CREDIT_COMPLETION_REJECTED|Deprecated; use
            PAYMENT_COMPLETION_REJECTED instead. The opposite of
            CREDIT_COMPLETION_ACCEPTED. No further processing of the

            credit transfer completion request is performed. Corresponds to an
            HTTP `4xx` or `5xx` back to where the completion originated from.|

            |CREDIT_AUTH_RESPONSE_DELIVERED|Deprecated; no alternative state
            provided. Electrum successfully delivered the authorisation response
            (either approved or declined) to industry.|

            |CREDIT_AUTH_RESPONSE_DELIVERY_FAILURE|Deprecated; use
            PAYMENT_AUTH_RESPONSE_DELIVERY_FAILURE instead. Indicates that
            Electrum encountered a technical error while delivering an
            authorisation response

            (either approved or declined) to the partner or industry.|

            |CREDIT_AUTH_RESPONSE_DELIVERY_PENDING|Deprecated; use
            PAYMENT_AUTH_APPROVED or PAYMENT_AUTH_FAILED instead. Indicates that
            Electrum has performed functional processing of an auth

            response (which was previously accepted) and Electrum is forwarding
            it on to intended recipient for processing.|

            |CREDIT_TRANSFER_RECEIVED|Deprecated; use PAYMENT_REQUEST_RECEIVED
            instead. Indicates that Electrum received a credit transfer
            request.|

            |CREDIT_TRANSFER_ACCEPTED|Deprecated; use PAYMENT_REQUEST_ACCEPTED
            instead. Indicates that the prior credit transfer request passed all
            technical validation and

            will be functionally processed. Corresponds to an HTTP `2xx` back to
            where the credit transfer request originated from.|

            |CREDIT_TRANSFER_REJECTED|Deprecated; use PAYMENT_REQUEST_REJECTED
            instead. The opposite of CREDIT_TRANSFER_ACCEPTED. No further
            processing of the credit transfer request

            is performed. Corresponds with an HTTP `4xx` or `5xx` back to where
            the credit transfer request originated from.|

            |CREDIT_TRANSFER_DELIVERY_PENDING|Deprecated; use PAYMENT_PENDING
            instead. Indicates that Electrum has performed functional processing
            of a credit transfer

            request (which was previously accepted) and Electrum is forwarding
            it on to the partner or industry for processing, depending

            on whether the transaction is an inbound or outbound transaction.
            Electrum has not yet received an acknowledgement of the credit
            transfer request.|

            |CREDIT_TRANSFER_DELIVERED|Deprecated; no alternative state
            provided. Indicates that Electrum has successfully delivered the
            credit transfer request to the intended recipient.|

            |CREDIT_TRANSFER_DELIVERY_FAILURE|Deprecated; use
            PAYMENT_REQUEST_DELIVERY_FAILURE instead. Indicates that Electrum
            encountered a technical error while delivering the credit transfer

            request to the intended recipient (for example receiving HTTP 5xx
            responses from the partner).|

            |CREDIT_TRANSFER_TIMEOUT|Deprecated; use PAYMENT_TIMEOUT instead. No
            accepted credit transfer response was received by Electrum
            timeously.|

            |CREDIT_TRANSFER_RESPONSE_RECEIVED|Deprecated; use
            PAYMENT_RESPONSE_RECEIVED instead. Electrum received a credit
            transfer response for a prior credit transfer request that Electrum
            had forwarded.|

            |CREDIT_TRANSFER_RESPONSE_ACCEPTED|Deprecated; use
            PAYMENT_RESPONSE_ACCEPTED instead. Indicates that the prior credit
            transfer response passed all technical

            validation and will be functionally processed. Corresponds with an
            HTTP `2xx` back to where the credit transfer response originated
            from.|

            |CREDIT_TRANSFER_RESPONSE_REJECTED|Deprecated; use
            PAYMENT_RESPONSE_REJECTED instead. The opposite of
            CREDIT_TRANSFER_RESPONSE_ACCEPTED. No further

            processing of the credit transfer response is performed. Corresponds
            to an HTTP `4xx` or `5xx` back to the sender of the credit transfer
            response.|

            |CREDIT_TRANSFER_APPROVED|Deprecated; use PAYMENT_APPROVED instead.
            Indicates that the credit transfer request has been approved and
            settlement is expected.|

            |CREDIT_TRANSFER_DECLINED|Deprecated; use PAYMENT_FAILED instead.
            Indicates that a credit transfer attempt has failed. The cause of
            the failure is contained in the payload.|

            |IDENTIFIER_DEREGISTRATION_RECEIVED|Indicates that Electrum received
            a request to deregister an identifier with a scheme.|

            |IDENTIFIER_DEREGISTRATION_FAILED|Indicates that the request to
            deregister an identifier with a scheme failed.

            This could be because it was rejected, or because no response was
            received within the time limit.|

            |IDENTIFIER_DEREGISTRATION_SUCCEEDED|Indicates that the request to
            deregister an identifier with a scheme succeeded.|

            |IDENTIFIER_DETERMINATION_FAILED|Indicates that the identifier
            determination response received from industry has been

            forwarded to the partner. The response from industry was not an
            approval.|

            |IDENTIFIER_DETERMINATION_PENDING|Indicates that Electrum has
            performed functional processing of an identifier

            determination request (which was previously accepted) and that
            Electrum is forwarding it on to industry for processing.|

            |IDENTIFIER_DETERMINATION_REQUEST_DELIVERY_PENDING|Deprecated; use
            IDENTIFIER_DETERMINATION_PENDING instead. Indicates that Electrum
            has performed functional processing of an identifier

            determination request (which was previously accepted) and that
            Electrum is forwarding it on to industry for processing. No
            acknowledgement has been received.|

            |IDENTIFIER_DETERMINATION_REQUEST_DELIVERED|Deprecated; no
            alternative state provided. Indicates that an accepted identifier
            determination request was successfully delivered

            to the intended recipient.|

            |IDENTIFIER_DETERMINATION_REQUEST_DELIVERY_FAILURE|Indicates that
            Electrum encountered a technical error while delivering the

            identifier determination request to the intended recipient (for
            example receiving HTTP 5xx responses from the partner).|

            |IDENTIFIER_DETERMINATION_PROVIDED|Indicates that the identifier
            determination response received from industry has

            been forwarded to the partner. The response from industry was an
            approval.|

            |IDENTIFIER_DETERMINATION_REQUEST_ACCEPTED|Indicates that the prior
            identifier determination request passed all

            technical validation and will be functionally processed. Corresponds
            to an HTTP `2xx` back to industry.|

            |IDENTIFIER_DETERMINATION_REQUEST_RECEIVED|Electrum received a
            request to provide industry with identifying information

            of a recipient based on the provided information|

            |IDENTIFIER_DETERMINATION_REQUEST_REJECTED|The opposite of
            IDENTIFIER_DETERMINATION_REQUEST_ACCEPTED. No further

            processing of the identifier determination request is performed.
            Corresponds to an HTTP `4xx` or `5xx` back to the sender

            of the identifier determination request.|

            |IDENTIFIER_DETERMINATION_RESPONSE_ACCEPTED|Indicates that the prior
            identifier determination response passed all

            technical validation and will be functionally processed. Corresponds
            to an HTTP `2xx` back to industry.|

            |IDENTIFIER_DETERMINATION_RESPONSE_RECEIVED|Electrum received a
            response from industry to a request to retrieve

            identifying information for a recipient (creditor).|

            |IDENTIFIER_DETERMINATION_RESPONSE_REJECTED|The opposite of
            IDENTIFIER_DETERMINATION_RESPONSE_ACCEPTED. No further

            processing of the identifier determination response is performed.
            Corresponds to an HTTP `4xx` or `5xx` back to the sender

            of the identifier determination response.|

            |IDENTIFIER_DETERMINATION_RESPONSE_DELIVERY_FAILURE|Indicates that
            Electrum encountered a technical error while delivering the

            identifier determination response to the intended recipient (for
            example receiving HTTP 5xx responses from the partner).|

            |IDENTIFIER_DETERMINATION_TIMEOUT|No accepted identifier
            determination response was received from industry timeously.|

            |IDENTIFIER_REGISTRATION_RECEIVED|Indicates that Electrum received a
            request to register an identifier with a scheme|

            |IDENTIFIER_REGISTRATION_FAILED|Indicates that the request to
            register an identifier with a scheme failed.

            This could be because it was rejected, or because no response was
            received within the time limit.|

            |IDENTIFIER_REGISTRATION_SUCCEEDED|Indicates that the request to
            register an identifier with a scheme succeeded.|

            |PAYMENT_AUTH_REQUEST_RECEIVED|Indicates that Electrum received an
            auth request.|

            |PAYMENT_AUTH_REQUEST_ACCEPTED|Indicates that the prior auth request
            passed all technical validation and

            will be functionally processed. Corresponds to an HTTP `2xx` back to
            where the auth request originated from.|

            |PAYMENT_AUTH_REQUEST_REJECTED|The opposite of
            PAYMENT_AUTH_ACCEPTED. No further processing of the payment

            auth is performed. Corresponds with an HTTP `4xx` or `5xx` back to
            where the auth request originated from.|

            |PAYMENT_AUTH_REQUEST_PENDING|Indicates that Electrum has performed
            functional processing of an auth

            request (which was previously accepted) and Electrum is forwarding
            it on to the partner or industry for processing, depending

            on whether the transaction is an inbound or outbound transaction.|

            |PAYMENT_AUTH_REQUEST_DELIVERY_FAILURE|Indicates that Electrum
            encountered a technical error while delivering the auth

            request to the intended recipient (for example receiving HTTP 5xx
            responses from the partner).|

            |PAYMENT_AUTH_RESPONSE_RECEIVED|Electrum received an auth response
            for a prior auth request that Electrum had

            forwarded.|

            |PAYMENT_AUTH_RESPONSE_ACCEPTED|Indicates that the prior auth
            response passed all technical

            validation and will be functionally processed. Corresponds with an
            HTTP `2xx` back to where the auth response originated from.|

            |PAYMENT_AUTH_RESPONSE_REJECTED|The opposite of
            PAYMENT_AUTH_RESPONSE_ACCEPTED. No further

            processing of the payment auth response is performed. Corresponds to
            an HTTP `4xx` or `5xx` back to the sender of the payment auth
            response.|

            |PAYMENT_AUTH_APPROVED|Indicates that the payment authorisation
            request has been approved.|

            |PAYMENT_AUTH_APPROVED_DELIVERY_FAILURE|Indicates that the payment
            authorisation request has been approved but the delivery of the
            payment authorisation response has failed.|

            |PAYMENT_AUTH_APPROVED_DELIVERY_PENDING|Indicates that the payment
            authorisation request has been approved and the delivery of the
            payment authorisation response is still in progress.| 

            |PAYMENT_AUTH_FAILED|Indicates that a payment authorisation attempt
            has failed. The cause of the failure is contained in the payload.|

            |PAYMENT_AUTH_FAILED_DELIVERY_FAILURE|Indicates that a payment
            authorisation attempt has failed and the delivery of the payment
            authorisation response has failed.|

            |PAYMENT_AUTH_FAILED_DELIVERY_PENDING|Indicates that a payment
            authorisation attempt has failed and the delivery of the payment
            authorisation response is still in progress.|

            |PAYMENT_AUTH_TIMEOUT|No accepted payment auth response was received
            by Electrum timeously.|

            |PAYMENT_AUTH_RESPONSE_DELIVERY_FAILURE|Indicates that Electrum
            encountered a technical error while delivering an authorisation
            response

            (either approved or declined) to the intended recipient.|

            |PAYMENT_COMPLETION_RECEIVED|Indicates that Electrum received a
            request to complete a previously approved payment authorsation.|

            |PAYMENT_COMPLETION_ACCEPTED|Indicates that the prior payment
            completion request passed all

            technical validation and will be functionally processed. Corresponds
            with an HTTP `2xx` back to where the completion originated from.|

            |PAYMENT_COMPLETION_REJECTED|The opposite of
            PAYMENT_COMPLETION_ACCEPTED. No further processing of the

            payment completion request is performed. Corresponds to an HTTP
            `4xx` or `5xx` back to where the completion originated from.|

            |PAYMENT_COMPLETED|Indicates that a payment completion has been
            queued to be delivered to the

            intended recipient.|

            |PAYMENT_COMPLETION_DELIVERY_FAILURE|Indicates that a payment
            completion message was not successfully delivered to the intended
            recipient.|

            |PAYMENT_REQUEST_RECEIVED|Indicates that Electrum received a payment
            request.|

            |PAYMENT_REQUEST_ACCEPTED|Indicates that the prior payment request
            passed all technical validation and

            will be functionally processed. Corresponds to an HTTP `2xx` back to
            where the payment request originated from.|

            |PAYMENT_REQUEST_REJECTED|The opposite of PAYMENT_REQUEST_ACCEPTED.
            No further processing of the payment request

            is performed. Corresponds with an HTTP `4xx` or `5xx` back to where
            the payment request originated from.|

            |PAYMENT_PENDING|Indicates that Electrum has performed functional
            processing of a payment

            request (which was previously accepted) and Electrum is forwarding
            it on to the partner or industry for processing, depending

            on whether the transaction is an inbound or outbound transaction.|

            |PAYMENT_REQUEST_DELIVERY_FAILURE|Indicates that Electrum
            encountered a technical error while delivering the payment

            request to the intended recipient (for example receiving HTTP 5xx
            responses from the partner).|

            |PAYMENT_TIMEOUT|No accepted payment response was received by
            Electrum timeously.|

            |PAYMENT_STATUS_PENDING|Indicates that Electrum is awaiting the
            status of a payment after sending a status request to either the
            partner or industry.|

            |PAYMENT_RESPONSE_RECEIVED|Electrum received a payment response for
            a prior payment request that Electrum had forwarded.|

            |PAYMENT_RESPONSE_ACCEPTED|Indicates that the prior payment response
            passed all technical

            validation and will be functionally processed. Corresponds with an
            HTTP `2xx` back to where the payment response originated from.|

            |PAYMENT_RESPONSE_REJECTED|The opposite of
            PAYMENT_RESPONSE_ACCEPTED. No further

            processing of the payment response is performed. Corresponds to an
            HTTP `4xx` or `5xx` back to the sender of the payment response.|

            |PAYMENT_APPROVED|Indicates that the payment request has been
            approved and settlement is expected.|

            |PAYMENT_FAILED|Indicates that a payment attempt has failed. The
            cause of the failure is contained in the payload.|

            |REQUEST_TO_PAY_INITIATION_RECEIVED|Indicates that Electrum received
            a request to pay.|

            |REQUEST_TO_PAY_INITIATION_ACCEPTED|Indicates that the prior request
            to pay passed all technical validation and

            will be functionally processed. Corresponds to an HTTP `2xx` back to
            where the request to pay originated from.|

            |REQUEST_TO_PAY_INITIATION_REJECTED|The opposite of
            REQUEST_TO_PAY_INITIATION_ACCEPTED. No further processing of the
            request

            to pay is performed. Corresponds with an HTTP `4xx` or `5xx` back to
            where the request to pay originated from.|

            |REQUEST_TO_PAY_INITIATION_PENDING|Indicates that Electrum has
            performed functional processing of a request to pay

            (which was previously accepted) and Electrum is forwarding it on to
            the partner or industry for processing, depending

            on whether the request to pay is an inbound or outbound request to
            pay.|

            |REQUEST_TO_PAY_INITIATION_DELIVERY_FAILED|Indicates that Electrum
            encountered a technical error while delivering the

            request to pay to the intended recipient (for example receiving HTTP
            5xx responses from the partner).|

            |REQUEST_TO_PAY_RESPONSE_RECEIVED|Electrum received a request to pay
            response for a prior request to pay that Electrum had

            forwarded.|

            |REQUEST_TO_PAY_RESPONSE_ACCEPTED|Indicates that the prior request
            to pay response passed all technical

            validation and will be functionally processed. Corresponds with an
            HTTP `2xx` back to where the request to pay response

            originated from.|

            |REQUEST_TO_PAY_RESPONSE_REJECTED|The opposite of
            REQUEST_TO_PAY_RESPONSE_ACCEPTED. No further processing of the
            request to

            pay response is performed. Corresponds to an HTTP `4xx` or `5xx`
            back to the sender of the request to pay response.|

            |REQUEST_TO_PAY_PRESENTED|Indicates that the request to pay has been
            accepted by the partner or payer participant and it

            will be shown to the payer to be accepted or rejected.|

            |REQUEST_TO_PAY_INITIATION_TIMEOUT|No accepted request to pay
            response was received by Electrum timeously when processing a

            request to pay initiation.|

            |REQUEST_TO_PAY_INITIATION_ENQUIRY_PENDING|Indicates that Electrum
            is awaiting the status of a request to pay after sending

            a status request to either the partner or industry.|

            |REQUEST_TO_PAY_INITIATION_ENQUIRY_TIMEOUT|Subsequent to the
            `REQUEST_TO_PAY_INITIATION_ENQUIRY_PENDING` state, this

            indicates no accepted request to pay response was received
            timeously.

            |REQUEST_TO_PAY_CANCELLATION_REQUEST_RECEIVED|Indicates that
            Electrum received a request to cancel a prior request to pay.|

            |REQUEST_TO_PAY_CANCELLATION_REQUEST_ACCEPTED|Indicates that the
            prior request to cancel a prior request to pay passed all

            technical validation and will be functionally processed. Corresponds
            to an HTTP `2xx` back to where the request to cancel a

            prior request to pay originated from.|

            |REQUEST_TO_PAY_CANCELLATION_REQUEST_REJECTED|The opposite of
            REQUEST_TO_PAY_INITIATION_ACCEPTED. No further processing of

            the request to cancel a prior request to pay is performed.
            Corresponds with an HTTP `4xx` or `5xx` back to where the request

            to cancel a prior request to pay originated from.|

            |REQUEST_TO_PAY_CANCELLATION_REQUEST_PENDING|Indicates that Electrum
            has performed functional processing of a request to

            cancel a prior request to pay (which was previously accepted) and
            Electrum is forwarding it on to the partner or industry for

            processing, depending on whether the request to pay is an inbound or
            outbound request to pay.|

            |REQUEST_TO_PAY_CANCELLATION_REQUEST_DELIVERY_FAILED|Indicates that
            Electrum encountered a technical error while delivering

            the request to cancel a prior request to pay to the intended
            recipient (for example receiving HTTP 5xx responses from the
            partner).|

            |REQUEST_TO_PAY_CANCELLATION_RESPONSE_RECEIVED|Electrum received a
            response for a prior request to cancel a prior request to

            pay that Electrum had forwarded.|

            |REQUEST_TO_PAY_CANCELLATION_RESPONSE_ACCEPTED|Indicates that the
            prior request to pay cancellation response passed all technical

            validation and will be functionally processed. Corresponds with an
            HTTP `2xx` back to where the request to pay cancellation response

            originated from.|

            |REQUEST_TO_PAY_CANCELLATION_RESPONSE_REJECTED|The opposite of
            REQUEST_TO_PAY_CANCELLATION_RESPONSE_ACCEPTED. No further

            processing of the request to pay cancellation response is performed.
            Corresponds to an HTTP `4xx` or `5xx` back to the sender of the

            request to pay cancellation response.|

            |REQUEST_TO_PAY_CANCELLATION_TIMEOUT|No accepted response to the
            request to pay cancellation was timeously received

            by Electrum.|

            |REQUEST_TO_PAY_CANCELLATION_ENQUIRY_PENDING|Indicates that Electrum
            is awaiting the status of a request to pay cancellation after

            sending a request to pay status request to either the partner or
            industry.|

            |REQUEST_TO_PAY_CANCELLATION_ENQUIRY_TIMEOUT|Subsequent to the
            `REQUEST_TO_PAY_CANCELLATION_TIMEOUT` state, this indicates

            no accepted request to pay cancellation response was received
            timeously.|

            |REQUEST_TO_PAY_ACCEPTED|Indicates that the payer has accepted the
            request to pay. A payment transaction will be subsequently

            initiated to fulfil the request to pay. Note: not all schemes
            express this payer decision via a dedicated message. Please

            consult with Electrum in this regard prior to designing a solution.|

            |REQUEST_TO_PAY_CANCELLATION_FAILURE|Indicates that a request to pay
            cancellation failed i.e. the cancellation

            failed. This could be due to a number of reasons e.g. the request to
            pay has already been fulfilled.|

            |REQUEST_TO_PAY_CANCELLED|Indicates that a request to pay
            cancellation was successful i.e. a subsequent payment

            which attempts to fulfil the request to pay is expected to be
            rejected.|

            |REQUEST_TO_PAY_DECLINED|Indicates that the payer (or an agent on
            their behalf) has explicitly chosen to reject the request

            to pay. No subsequent payment transaction should be expected.|

            |REQUEST_TO_PAY_FAILED|Indicates that the request to pay failed for
            a technical reason (as opposed to an explicit decision on

            the part of the payer or their agent) e.g. the payer identified in
            the request to pay was not found.|

            |SCHEME_INQUIRY_RECEIVED|Indicates that Electrum received a request
            to perform an inquiry against a scheme.|

            |SCHEME_INQUIRY_FAILED|Indicates that an inquiry against a scheme
            failed. This could be because it was rejected,

            or because no response was received within the time limit.|

            |SCHEME_INQUIRY_SUCCEEDED|Indicates that an inquiry against a scheme
            succeeded.|

            |ACCOUNT_VERIFICATION_REQUEST_RECEIVED|Indicates that Electrum
            received a request to verify that the 

            information provided in the request regarding an account (store of
            value) is correct|

            |ACCOUNT_VERIFICATION_REQUEST_ACCEPTED|Indicates that the prior
            account verification request passed all

            technical validation and will be functionally processed. Corresponds
            to an HTTP `2xx` back to the sender 

            of the account verification request.|

            |ACCOUNT_VERIFICATION_REQUEST_REJECTED|The opposite of
            ACCOUNT_VERIFICATION_REQUEST_ACCEPTED. No further

            processing of the account verification request is performed.
            Corresponds to an HTTP `4xx` or `5xx` back to

            the sender of the account verification request.|

            |ACCOUNT_VERIFICATION_PENDING|Indicates that Electrum has performed
            functional processing of an account 

            verification request (which was previously accepted) and that
            Electrum is forwarding it on for further processing.|

            |ACCOUNT_VERIFICATION_REQUEST_DELIVERY_FAILURE|Indicates that
            Electrum encountered a technical error while 

            delivering the account verification request to the intended
            recipient (for example receiving HTTP 5xx 

            responses from the partner).

            |ACCOUNT_VERIFICATION_RESPONSE_RECEIVED|Indicates that Electrum
            received an account verification response 

            for a prior account verification request that Electrum had
            forwarded.|

            |ACCOUNT_VERIFICATION_RESPONSE_ACCEPTED|Indicates that the prior
            account verification response passed all 

            technical validation and will be functionally processed. Corresponds
            with an HTTP `2xx` back to where the 

            account verification response originated from.|

            |ACCOUNT_VERIFICATION_RESPONSE_REJECTED|The opposite of
            ACCOUNT_VERIFICATION_RESPONSE_ACCEPTED. 

            No further processing of the payment response is performed.
            Corresponds to an HTTP `4xx` or `5xx` back to 

            the sender of the account verification response.|

            |ACCOUNT_VERIFICATION_RESPONSE_DELIVERY_FAILURE| Indicates that
            Electrum encountered a technical error while 

            delivering the account verification response to the intended
            recipient (for example receiving HTTP 5xx responses 

            from the partner).|

            |ACCOUNT_VERIFICATION_TIMEOUT|No accepted response to the account
            verification request was timeously received

            by Electrum.

            |ACCOUNT_VERIFICATION_SUCCESSFUL|Indicates that the account
            verification response received has been forwarded

            back to where the original account verification request originated
            from, and that the status of the response

            is APPROVED.|

            |ACCOUNT_VERIFICATION_FAILED|Indicates that an account verification
            response has been forwarded back to where

            the original account verification request originated from, and that
            the status of the response is not APPROVED.|

            |VALIDATION_FAILED|The prior validation request did not yield a
            valid outcome. Note that this is the final

            state for validations regardless of the failure (i.e. timeouts,
            technical declines and business-rule declines

            all end up here).|

            |VALIDATION_PENDING|Electrum received a validation request and it is
            being processed.|

            |VALIDATION_SUCCESSFUL|The prior validation request yielded an "is
            valid" outcome.|

            |VALIDATION_TIMEOUT|If Electrum takes too long to perform a
            validation operation, a timeout is triggered.|

            |SWITCH_FAILURE|A special stage which signifies a technical error
            within Electrum.|

            |TRANSACTION_BROKEN|A terminal stage indicating that parties may
            disagree on the outcome of a transaction due to an error during
            processing, such as a timeout waiting to receive a completion
            message, or the permanent failure to deliver a completion message.|

            |VIGILANCE_AUTH_REQUESTED|Indicates that a request to perform a
            vigilance auth has been been sent. This breakout is synchronous|

            |VIGILANCE_AUTH_SUCCESSFUL|Indicates that the response received
            contained a positive outcome. This breakout is synchronous|

            |VIGILANCE_AUTH_FAILED|Indicates that the response received
            contained a negative outcome. This breakout is synchronous|

            |VIGILANCE_AUTH_TIMEOUT|Indicates that a timeout has occurred while
            waiting for a response. This breakout is synchronous|

            |RESERVATION_REQUESTED|Indicates that an asynchronous request to
            perform a reservation has been sent|

            |RESERVATION_ACCEPTED|Indicates that Electrum has received a
            positive technical response (ACK) for a previously sent reservation
            request. Use of this state indicates that the breakout is
            asynchronous|

            |RESERVATION_REJECTED|Indicates that Electrum has received a
            negative technical response (NACK) for a previously sent reservation
            request. Use of this state indicates that the breakout is
            asynchronous|

            |RESERVATION_RESPONSE_RECEIVED|Indicates that Electrum has received
            a functional response for a previously sent reservation request. Use
            of this state indicates that the breakout is asynchronous|

            |RESERVATION_RESPONSE_ACCEPTED|Indicates that Electrum has found a
            reservation functional response to be technically valid. Use of this
            state indicates that the breakout is asynchronous|

            |RESERVATION_RESPONSE_REJECTED|Indicates that Electrum has found a
            reservation functional response to be technically invalid. Use of
            this state indicates that the breakout is asynchronous|

            |RESERVATION_SUCCESSFUL|Indicates that the response received
            contained a positive outcome|

            |RESERVATION_FAILED|Indicates that the response received contained a
            negative outcome|

            |RESERVATION_TIMEOUT|A timeout occurred while waiting for a
            response|

            Note that all of these events are emitted when a transaction
            transitions **into** the associated state.
          properties:
            name:
              type: string
              description: >
                The unique name of this event. This is a convenience field and
                is typically the

                concatenation of `class` and `type` as `"class_type"` since
                these two fields uniquely identify

                an event. The `name` field may be inspected first, to determine
                whether the server is

                interested in the event received. If the event is of interest,
                the dedicated `class`

                and `type` fields may then be used to process the event
                programmatically.
            tranInfo:
              $ref: '#/components/schemas/EventTranInfo'
            messageInfo:
              $ref: '#/components/schemas/EventMessageInfo'
            type:
              type: string
              description: >
                Enumerates the specific transaction processing event being
                emitted.
              enum:
                - CREDIT_AUTH_ACCEPTED
                - CREDIT_AUTH_RECEIVED
                - CREDIT_AUTH_REJECTED
                - CREDIT_TRANSFER_RECEIVED
                - CREDIT_TRANSFER_ACCEPTED
                - CREDIT_TRANSFER_REJECTED
                - CREDIT_AUTH_DELIVERY_PENDING
                - CREDIT_AUTH_DELIVERED
                - CREDIT_AUTH_DELIVERY_FAILURE
                - CREDIT_AUTH_RESPONSE_ACCEPTED
                - CREDIT_AUTH_RESPONSE_RECEIVED
                - CREDIT_AUTH_RESPONSE_REJECTED
                - CREDIT_AUTH_TIMEOUT
                - CREDIT_COMPLETION_ACCEPTED
                - CREDIT_COMPLETION_RECEIVED
                - CREDIT_COMPLETION_REJECTED
                - CREDIT_AUTH_RESPONSE_DELIVERY_PENDING
                - CREDIT_AUTH_RESPONSE_DELIVERED
                - CREDIT_AUTH_RESPONSE_DELIVERY_FAILURE
                - CREDIT_TRANSFER_DELIVERY_PENDING
                - CREDIT_TRANSFER_DELIVERED
                - CREDIT_TRANSFER_DELIVERY_FAILURE
                - CREDIT_TRANSFER_TIMEOUT
                - CREDIT_TRANSFER_STATUS_PENDING
                - CREDIT_TRANSFER_RESPONSE_RECEIVED
                - CREDIT_TRANSFER_RESPONSE_ACCEPTED
                - CREDIT_TRANSFER_RESPONSE_REJECTED
                - CREDIT_COMPLETION_DELIVERY_PENDING
                - CREDIT_COMPLETION_DELIVERED
                - CREDIT_COMPLETION_DELIVERY_FAILURE
                - CREDIT_TRANSFER_APPROVED
                - CREDIT_TRANSFER_DECLINED
                - IDENTIFIER_DETERMINATION_FAILED
                - IDENTIFIER_DETERMINATION_PENDING
                - IDENTIFIER_DETERMINATION_REQUEST_DELIVERY_PENDING
                - IDENTIFIER_DETERMINATION_REQUEST_DELIVERED
                - IDENTIFIER_DETERMINATION_REQUEST_DELIVERY_FAILURE
                - IDENTIFIER_DETERMINATION_PROVIDED
                - IDENTIFIER_DETERMINATION_REQUEST_ACCEPTED
                - IDENTIFIER_DETERMINATION_REQUEST_RECEIVED
                - IDENTIFIER_DETERMINATION_REQUEST_REJECTED
                - IDENTIFIER_DETERMINATION_RESPONSE_ACCEPTED
                - IDENTIFIER_DETERMINATION_RESPONSE_RECEIVED
                - IDENTIFIER_DETERMINATION_RESPONSE_REJECTED
                - IDENTIFIER_DETERMINATION_RESPONSE_DELIVERY_FAILURE
                - IDENTIFIER_DETERMINATION_TIMEOUT
                - IDENTIFIER_REGISTRATION_RECEIVED
                - IDENTIFIER_REGISTRATION_SUCCEEDED
                - IDENTIFIER_REGISTRATION_FAILED
                - IDENTIFIER_DEREGISTRATION_RECEIVED
                - IDENTIFIER_DEREGISTRATION_SUCCEEDED
                - IDENTIFIER_DEREGISTRATION_FAILED
                - SCHEME_INQUIRY_RECEIVED
                - SCHEME_INQUIRY_SUCCEEDED
                - SCHEME_INQUIRY_FAILED
                - PAYMENT_AUTH_REQUEST_ACCEPTED
                - PAYMENT_AUTH_REQUEST_RECEIVED
                - PAYMENT_AUTH_REQUEST_REJECTED
                - PAYMENT_REQUEST_RECEIVED
                - PAYMENT_REQUEST_ACCEPTED
                - PAYMENT_REQUEST_REJECTED
                - PAYMENT_AUTH_REQUEST_PENDING
                - PAYMENT_AUTH_REQUEST_DELIVERY_FAILURE
                - PAYMENT_AUTH_RESPONSE_ACCEPTED
                - PAYMENT_AUTH_RESPONSE_RECEIVED
                - PAYMENT_AUTH_RESPONSE_REJECTED
                - PAYMENT_AUTH_TIMEOUT
                - PAYMENT_COMPLETION_ACCEPTED
                - PAYMENT_COMPLETION_RECEIVED
                - PAYMENT_COMPLETION_REJECTED
                - PAYMENT_AUTH_APPROVED
                - PAYMENT_AUTH_APPROVED_DELIVERY_FAILURE
                - PAYMENT_AUTH_APPROVED_DELIVERY_PENDING
                - PAYMENT_AUTH_FAILED
                - PAYMENT_AUTH_FAILED_DELIVERY_FAILURE
                - PAYMENT_AUTH_FAILED_DELIVERY_PENDING
                - PAYMENT_AUTH_RESPONSE_DELIVERY_FAILURE
                - PAYMENT_REQUEST_DELIVERY_FAILURE
                - PAYMENT_PENDING
                - PAYMENT_TIMEOUT
                - PAYMENT_STATUS_PENDING
                - PAYMENT_RESPONSE_RECEIVED
                - PAYMENT_RESPONSE_ACCEPTED
                - PAYMENT_RESPONSE_REJECTED
                - PAYMENT_COMPLETED
                - PAYMENT_COMPLETION_DELIVERY_FAILURE
                - PAYMENT_APPROVED
                - PAYMENT_FAILED
                - REQUEST_TO_PAY_ACCEPTED
                - REQUEST_TO_PAY_CANCELLATION_ENQUIRY_PENDING
                - REQUEST_TO_PAY_CANCELLATION_ENQUIRY_TIMEOUT
                - REQUEST_TO_PAY_CANCELLATION_FAILURE
                - REQUEST_TO_PAY_CANCELLATION_REQUEST_ACCEPTED
                - REQUEST_TO_PAY_CANCELLATION_REQUEST_DELIVERY_FAILED
                - REQUEST_TO_PAY_CANCELLATION_REQUEST_PENDING
                - REQUEST_TO_PAY_CANCELLATION_REQUEST_RECEIVED
                - REQUEST_TO_PAY_CANCELLATION_REQUEST_REJECTED
                - REQUEST_TO_PAY_CANCELLATION_RESPONSE_ACCEPTED
                - REQUEST_TO_PAY_CANCELLATION_RESPONSE_RECEIVED
                - REQUEST_TO_PAY_CANCELLATION_RESPONSE_REJECTED
                - REQUEST_TO_PAY_CANCELLATION_TIMEOUT
                - REQUEST_TO_PAY_CANCELLED
                - REQUEST_TO_PAY_DECLINED
                - REQUEST_TO_PAY_FAILED
                - REQUEST_TO_PAY_INITIATION_ACCEPTED
                - REQUEST_TO_PAY_INITIATION_DELIVERY_FAILED
                - REQUEST_TO_PAY_INITIATION_ENQUIRY_PENDING
                - REQUEST_TO_PAY_INITIATION_ENQUIRY_TIMEOUT
                - REQUEST_TO_PAY_INITIATION_PENDING
                - REQUEST_TO_PAY_INITIATION_RECEIVED
                - REQUEST_TO_PAY_INITIATION_REJECTED
                - REQUEST_TO_PAY_INITIATION_TIMEOUT
                - REQUEST_TO_PAY_PRESENTED
                - REQUEST_TO_PAY_RESPONSE_ACCEPTED
                - REQUEST_TO_PAY_RESPONSE_RECEIVED
                - REQUEST_TO_PAY_RESPONSE_REJECTED
                - ACCOUNT_VERIFICATION_REQUEST_RECEIVED
                - ACCOUNT_VERIFICATION_REQUEST_ACCEPTED
                - ACCOUNT_VERIFICATION_REQUEST_REJECTED
                - ACCOUNT_VERIFICATION_PENDING
                - ACCOUNT_VERIFICATION_REQUEST_DELIVERY_FAILURE
                - ACCOUNT_VERIFICATION_RESPONSE_RECEIVED
                - ACCOUNT_VERIFICATION_RESPONSE_ACCEPTED
                - ACCOUNT_VERIFICATION_RESPONSE_REJECTED
                - ACCOUNT_VERIFICATION_RESPONSE_DELIVERY_FAILURE
                - ACCOUNT_VERIFICATION_TIMEOUT
                - ACCOUNT_VERIFICATION_SUCCESSFUL
                - ACCOUNT_VERIFICATION_FAILED
                - SWITCH_FAILURE
                - TRANSACTION_BROKEN
                - VALIDATION_FAILED
                - VALIDATION_PENDING
                - VALIDATION_SUCCESSFUL
                - VALIDATION_TIMEOUT
                - VIGILANCE_AUTH_REQUESTED
                - VIGILANCE_AUTH_SUCCESSFUL
                - VIGILANCE_AUTH_FAILED
                - VIGILANCE_AUTH_TIMEOUT
                - RESERVATION_REQUESTED
                - RESERVATION_ACCEPTED
                - RESERVATION_REJECTED
                - RESERVATION_RESPONSE_RECEIVED
                - RESERVATION_RESPONSE_ACCEPTED
                - RESERVATION_RESPONSE_REJECTED
                - RESERVATION_SUCCESSFUL
                - RESERVATION_FAILED
                - RESERVATION_TIMEOUT
            payload:
              $ref: '#/components/schemas/EventPayload'
            stageVersion:
              type: integer
              description: >
                A numerical identifier that tracks the version of the
                transaction processing event being emitted.

                Each time the transaction's stage successfully transitions, this
                version is incremented.
  examples:
    RtcInboundCreditAuthReceivedEvent:
      summary: RTC Inbound Credit Transfer Received
      description: >-
        Request for the `inboundCreditTransferAuthorization` operation is
        received by the Switch. A customer at Grey Bank, Bob, is paying a
        customer at Blue Bank, Alice, using RTC. Electrum's partner is Blue
        Bank.
      value:
        name: TRANSACTION_STATE_CREDIT_AUTH_RECEIVED
        apiVersion: 0.27.0
        class: TRANSACTION_STATE
        type: CREDIT_AUTH_RECEIVED
        stageVersion: 1
        tranInfo:
          tranUetr: f27a34ad-c5ab-4b70-a3f9-946d743eaeaa
          direction: INBOUND
          paymentScheme: ZA_RTC
          service: RTC_INBOUND
        messageInfo:
          messageIdentification: 8fd51c7124ba4819b9253e296a68e1da
          creationDateTime: '2022-05-04T03:02:01Z'
        payload:
          schema: CreditTransfer
          messageIdentifiers:
            messageIdentification: 8fd51c7124ba4819b9253e296a68e1da
            creationDateTime: '2022-05-04T03:02:01Z'
          paymentScheme:
            schema: ZA_RTC
            schemeData:
              userReference: Ab1 xxxxxxxxxxxxxxxx
              originatorEchoData: Ab1 xxxxxxxxxxxxxxxx
              businessReference: 11Ab1xxxxx
          transactionIdentifiers:
            endToEndIdentification: '6249118655591098'
            transactionIdentification: RRN000000001
            uetr: f27a34ad-c5ab-4b70-a3f9-946d743eaeaa
          amounts:
            bankSettlementAmount:
              value: 1
              currency: ZAR
            instructedAmount:
              value: 1
              currency: ZAR
          paymentTypeInformation:
            localInstrument:
              schema: CODE
              value: BTR
          creditor:
            address:
              addressType: ADDR
              department: Department of Mysteries
              streetName: Street of Mysteries
              buildingNumber: 42
              buildingName: Mysterious Building
              floor: 42
              postBox: 1024
              postCode: 4242
              townName: Mysty Town
              townLocationName: Mysty Location
              districtName: Mysty District
              countrySubDivision: Mysterious Cape
              country: ZA
              addressLine:
                - 16A
                - New market street
                - Foreshore
                - Cape Town
                - ZA
                - 8001
            contactDetails:
              phoneNumber: +27-0214620000
              mobileNumber: +27-08230000000
              emailAddress: bob@grey.com
            countryOfResidence: ZA
            identification:
              schema: PERSON
              identifiers:
                - identification: 90001236549870
                  issuer: Dept of Home Affairs
                  scheme:
                    schema: CODE
                    value: NIDN
          creditorAccount:
            identification:
              schema: GENERIC
              scheme:
                schema: PROPRIETARY
                value: AProprietaryCode123
              issuer: Blue Bank
              value: abcdef987654
            type:
              schema: CODE
              value: CACC
            currency: ZAR
          creditorAgent:
            bicfi: BLUEZAJ0
            memberId: BlueBankId
            name: Blue Bank Inc
            branch:
              identification: 210514
              name: ABC Plettenberg Bay
              address:
                addressType: ADDR
                department: Department of Mysteries
                streetName: Street of Mysteries
                buildingNumber: 42
                buildingName: Mysterious Building
                floor: 42
                postBox: 1024
                postCode: 4242
                townName: Mysty Town
                townLocationName: Mysty Location
                districtName: Mysty District
                countrySubDivision: Mysterious Cape
                country: ZA
                addressLine:
                  - 16A
                  - New market street
                  - Foreshore
                  - Cape Town
                  - ZA
                  - 8001
          debtor:
            address:
              addressType: ADDR
              department: Department of Mysteries
              streetName: Street of Mysteries
              buildingNumber: 42
              buildingName: Mysterious Building
              floor: 42
              postBox: 1024
              postCode: 4242
              townName: Mysty Town
              townLocationName: Mysty Location
              districtName: Mysty District
              countrySubDivision: Mysterious Cape
              country: ZA
              addressLine:
                - 16A
                - New market street
                - Foreshore
                - Cape Town
                - ZA
                - 8001
            contactDetails:
              phoneNumber: +27-0214620000
              mobileNumber: +27-08230000000
              emailAddress: bob@grey.com
            countryOfResidence: ZA
            identification:
              schema: PERSON
              identifiers:
                - identification: 90001236549870
                  issuer: Dept of Home Affairs
                  scheme:
                    schema: CODE
                    value: NIDN
          debtorAccount:
            identification:
              schema: GENERIC
              scheme:
                schema: PROPRIETARY
                value: AProprietaryCode123
              issuer: Grey Bank
              value: abcdef987654
            type:
              schema: CODE
              value: CACC
            currency: ZAR
          debtorAgent:
            bicfi: GREYZAJ0
            memberId: GreyBankId
            name: Grey Bank Inc
            branch:
              identification: 210514
              name: ABC Plettenberg Bay
              address:
                addressType: ADDR
                department: Department of Mysteries
                streetName: Street of Mysteries
                buildingNumber: 42
                buildingName: Mysterious Building
                floor: 42
                postBox: 1024
                postCode: 4242
                townName: Mysty Town
                townLocationName: Mysty Location
                districtName: Mysty District
                countrySubDivision: Mysterious Cape
                country: ZA
                addressLine:
                  - 16A
                  - New market street
                  - Foreshore
                  - Cape Town
                  - ZA
                  - 8001
          instructingAgent:
            bicfi: GREYZAJ0
            memberId: GreyBankId
            name: Grey Bank Inc
            branch:
              identification: 210514
              name: ABC Plettenberg Bay
              address:
                addressType: ADDR
                department: Department of Mysteries
                streetName: Street of Mysteries
                buildingNumber: 42
                buildingName: Mysterious Building
                floor: 42
                postBox: 1024
                postCode: 4242
                townName: Mysty Town
                townLocationName: Mysty Location
                districtName: Mysty District
                countrySubDivision: Mysterious Cape
                country: ZA
                addressLine:
                  - 16A
                  - New market street
                  - Foreshore
                  - Cape Town
                  - ZA
                  - 8001
          instructedAgent:
            bicfi: GREYZAJ0
            memberId: GreyBankId
            name: Grey Bank Inc
            branch:
              identification: 210514
              name: ABC Plettenberg Bay
              address:
                addressType: ADDR
                department: Department of Mysteries
                streetName: Street of Mysteries
                buildingNumber: 42
                buildingName: Mysterious Building
                floor: 42
                postBox: 1024
                postCode: 4242
                townName: Mysty Town
                townLocationName: Mysty Location
                districtName: Mysty District
                countrySubDivision: Mysterious Cape
                country: ZA
                addressLine:
                  - 16A
                  - New market street
                  - Foreshore
                  - Cape Town
                  - ZA
                  - 8001
          instructionForCreditorAgent:
            - code: TELA
              information: Please email example@example.com
          intermediaryAgents:
            - bicfi: GREYZAJ0
              memberId: GreyBankId
              name: Grey Bank Inc
              branch:
                identification: 210514
                name: ABC Plettenberg Bay
                address:
                  addressType: ADDR
                  department: Department of Mysteries
                  streetName: Street of Mysteries
                  buildingNumber: 42
                  buildingName: Mysterious Building
                  floor: 42
                  postBox: 1024
                  postCode: 4242
                  townName: Mysty Town
                  townLocationName: Mysty Location
                  districtName: Mysty District
                  countrySubDivision: Mysterious Cape
                  country: ZA
                  addressLine:
                    - 16A
                    - New market street
                    - Foreshore
                    - Cape Town
                    - ZA
                    - 8001
          previousInstructingAgents:
            - bicfi: GREYZAJ0
              memberId: GreyBankId
              name: Grey Bank Inc
              branch:
                identification: 210514
                name: ABC Plettenberg Bay
                address:
                  addressType: ADDR
                  department: Department of Mysteries
                  streetName: Street of Mysteries
                  buildingNumber: 42
                  buildingName: Mysterious Building
                  floor: 42
                  postBox: 1024
                  postCode: 4242
                  townName: Mysty Town
                  townLocationName: Mysty Location
                  districtName: Mysty District
                  countrySubDivision: Mysterious Cape
                  country: ZA
                  addressLine:
                    - 16A
                    - New market street
                    - Foreshore
                    - Cape Town
                    - ZA
                    - 8001
          purpose:
            schema: CODE
            value: BKDF
          remittanceInformation:
            unstructured:
              - some
              - unstructured
              - information
            structured:
              - referredDocuments:
                  - type:
                      issuer: GreyBank123456
                      schema: CODE
                      value: CINV
                    documentIdentifier: A0123456789
                referredDocumentAmount:
                  duePayableAmount:
                    value: 1
                    currency: ZAR
                  remittedAmount:
                    value: 1
                    currency: ZAR
                creditorReference:
                  type:
                    issuer: GreyBank1234
                    schema: CODE
                    value: RADM
                  reference: ABC123XYZ999
                additionalRemittanceInformation:
                  - Some
                  - Additional
                  - Information
          tax:
            totalAmount:
              value: 1
              currency: ZAR
    RtcInboundCreditAuthAcceptedEvent:
      summary: RTC Inbound Credit Transfer Accepted
      description: >-
        Request for the `inboundCreditTransferAuthorization` operation is
        accepted by the Switch. The associated
        `inboundCreditTransferAuthorization` received event is described in
        `RtcInboundCreditAuthReceivedEvent`.
      value:
        name: TRANSACTION_STATE_CREDIT_AUTH_ACCEPTED
        apiVersion: 0.27.0
        class: TRANSACTION_STATE
        type: CREDIT_AUTH_ACCEPTED
        stageVersion: 2
        tranInfo:
          tranUetr: f27a34ad-c5ab-4b70-a3f9-946d743eaeaa
          direction: INBOUND
          paymentScheme: ZA_RTC
          service: RTC_INBOUND
        messageInfo:
          messageIdentification: 8fd51c7124ba4819b9253e296a68e1da
          creationDateTime: '2022-05-04T03:02:01Z'
        payload:
          schema: CreditTransfer
          messageIdentifiers:
            messageIdentification: 8fd51c7124ba4819b9253e296a68e1da
            creationDateTime: '2022-05-04T03:02:01Z'
          paymentScheme:
            schema: ZA_RTC
            schemeData:
              userReference: Ab1 xxxxxxxxxxxxxxxx
              originatorEchoData: Ab1 xxxxxxxxxxxxxxxx
              businessReference: 11Ab1xxxxx
          transactionIdentifiers:
            endToEndIdentification: '6249118655591098'
            transactionIdentification: RRN000000001
            uetr: f27a34ad-c5ab-4b70-a3f9-946d743eaeaa
          amounts:
            bankSettlementAmount:
              value: 1
              currency: ZAR
            instructedAmount:
              value: 1
              currency: ZAR
          paymentTypeInformation:
            localInstrument:
              schema: CODE
              value: BTR
          creditor:
            address:
              addressType: ADDR
              department: Department of Mysteries
              streetName: Street of Mysteries
              buildingNumber: 42
              buildingName: Mysterious Building
              floor: 42
              postBox: 1024
              postCode: 4242
              townName: Mysty Town
              townLocationName: Mysty Location
              districtName: Mysty District
              countrySubDivision: Mysterious Cape
              country: ZA
              addressLine:
                - 16A
                - New market street
                - Foreshore
                - Cape Town
                - ZA
                - 8001
            contactDetails:
              phoneNumber: +27-0214620000
              mobileNumber: +27-08230000000
              emailAddress: alice@blue.com
            countryOfResidence: ZA
            identification:
              schema: PERSON
              identifiers:
                - identification: 90001236549870
                  issuer: Dept of Home Affairs
                  scheme:
                    schema: CODE
                    value: NIDN
          creditorAccount:
            identification:
              schema: GENERIC
              scheme:
                schema: PROPRIETARY
                value: AProprietaryCode123
              issuer: Blue Bank
              value: abcdef987654
            type:
              schema: CODE
              value: CACC
            currency: ZAR
          creditorAgent:
            bicfi: BLUEZAJ0
            memberId: BlueBankId
            name: Blue Bank Inc
            branch:
              identification: 210514
              name: ABC Plettenberg Bay
              address:
                addressType: ADDR
                department: Department of Mysteries
                streetName: Street of Mysteries
                buildingNumber: 42
                buildingName: Mysterious Building
                floor: 42
                postBox: 1024
                postCode: 4242
                townName: Mysty Town
                townLocationName: Mysty Location
                districtName: Mysty District
                countrySubDivision: Mysterious Cape
                country: ZA
                addressLine:
                  - 16A
                  - New market street
                  - Foreshore
                  - Cape Town
                  - ZA
                  - 8001
          debtor:
            address:
              addressType: ADDR
              department: Department of Mysteries
              streetName: Street of Mysteries
              buildingNumber: 42
              buildingName: Mysterious Building
              floor: 42
              postBox: 1024
              postCode: 4242
              townName: Mysty Town
              townLocationName: Mysty Location
              districtName: Mysty District
              countrySubDivision: Mysterious Cape
              country: ZA
              addressLine:
                - 16A
                - New market street
                - Foreshore
                - Cape Town
                - ZA
                - 8001
            contactDetails:
              phoneNumber: +27-0214620000
              mobileNumber: +27-08230000000
              emailAddress: bob@grey.com
            countryOfResidence: ZA
            identification:
              schema: PERSON
              identifiers:
                - identification: 90001236549870
                  issuer: Dept of Home Affairs
                  scheme:
                    schema: CODE
                    value: NIDN
          debtorAccount:
            identification:
              schema: GENERIC
              scheme:
                schema: PROPRIETARY
                value: AProprietaryCode123
              issuer: Grey Bank
              value: abcdef987654
            type:
              schema: CODE
              value: CACC
            currency: ZAR
          debtorAgent:
            bicfi: GREYZAJ0
            memberId: GreyBankId
            name: Grey Bank Inc
            branch:
              identification: 210514
              name: ABC Plettenberg Bay
              address:
                addressType: ADDR
                department: Department of Mysteries
                streetName: Street of Mysteries
                buildingNumber: 42
                buildingName: Mysterious Building
                floor: 42
                postBox: 1024
                postCode: 4242
                townName: Mysty Town
                townLocationName: Mysty Location
                districtName: Mysty District
                countrySubDivision: Mysterious Cape
                country: ZA
                addressLine:
                  - 16A
                  - New market street
                  - Foreshore
                  - Cape Town
                  - ZA
                  - 8001
          instructingAgent:
            bicfi: GREYZAJ0
            memberId: GreyBankId
            name: Grey Bank Inc
            branch:
              identification: 210514
              name: ABC Plettenberg Bay
              address:
                addressType: ADDR
                department: Department of Mysteries
                streetName: Street of Mysteries
                buildingNumber: 42
                buildingName: Mysterious Building
                floor: 42
                postBox: 1024
                postCode: 4242
                townName: Mysty Town
                townLocationName: Mysty Location
                districtName: Mysty District
                countrySubDivision: Mysterious Cape
                country: ZA
                addressLine:
                  - 16A
                  - New market street
                  - Foreshore
                  - Cape Town
                  - ZA
                  - 8001
          instructedAgent:
            bicfi: GREYZAJ0
            memberId: GreyBankId
            name: Grey Bank Inc
            branch:
              identification: 210514
              name: ABC Plettenberg Bay
              address:
                addressType: ADDR
                department: Department of Mysteries
                streetName: Street of Mysteries
                buildingNumber: 42
                buildingName: Mysterious Building
                floor: 42
                postBox: 1024
                postCode: 4242
                townName: Mysty Town
                townLocationName: Mysty Location
                districtName: Mysty District
                countrySubDivision: Mysterious Cape
                country: ZA
                addressLine:
                  - 16A
                  - New market street
                  - Foreshore
                  - Cape Town
                  - ZA
                  - 8001
          instructionForCreditorAgent:
            - code: TELA
              information: Please email example@example.com
          intermediaryAgents:
            - bicfi: GREYZAJ0
              memberId: GreyBankId
              name: Grey Bank Inc
              branch:
                identification: 210514
                name: ABC Plettenberg Bay
                address:
                  addressType: ADDR
                  department: Department of Mysteries
                  streetName: Street of Mysteries
                  buildingNumber: 42
                  buildingName: Mysterious Building
                  floor: 42
                  postBox: 1024
                  postCode: 4242
                  townName: Mysty Town
                  townLocationName: Mysty Location
                  districtName: Mysty District
                  countrySubDivision: Mysterious Cape
                  country: ZA
                  addressLine:
                    - 16A
                    - New market street
                    - Foreshore
                    - Cape Town
                    - ZA
                    - 8001
          previousInstructingAgents:
            - bicfi: GREYZAJ0
              memberId: GreyBankId
              name: Grey Bank Inc
              branch:
                identification: 210514
                name: ABC Plettenberg Bay
                address:
                  addressType: ADDR
                  department: Department of Mysteries
                  streetName: Street of Mysteries
                  buildingNumber: 42
                  buildingName: Mysterious Building
                  floor: 42
                  postBox: 1024
                  postCode: 4242
                  townName: Mysty Town
                  townLocationName: Mysty Location
                  districtName: Mysty District
                  countrySubDivision: Mysterious Cape
                  country: ZA
                  addressLine:
                    - 16A
                    - New market street
                    - Foreshore
                    - Cape Town
                    - ZA
                    - 8001
          purpose:
            schema: CODE
            value: BKDF
          remittanceInformation:
            unstructured:
              - some
              - unstructured
              - information
            structured:
              - referredDocuments:
                  - type:
                      issuer: GreyBank123456
                      schema: CODE
                      value: CINV
                    documentIdentifier: A0123456789
                referredDocumentAmount:
                  duePayableAmount:
                    value: 1
                    currency: ZAR
                  remittedAmount:
                    value: 1
                    currency: ZAR
                creditorReference:
                  type:
                    issuer: GreyBank1234
                    schema: CODE
                    value: RADM
                  reference: ABC123XYZ999
                additionalRemittanceInformation:
                  - Some
                  - Additional
                  - Information
          tax:
            totalAmount:
              value: 1
              currency: ZAR
    RtcInboundCreditAuthRejectedEvent:
      summary: RTC Inbound Credit Transfer Rejected
      description: >-
        Request for the `inboundCreditTransferAuthorization` operation is
        rejected by the Switch due to formatting errors. The associated
        `inboundCreditTransferAuthorization` received event is described in
        `RtcInboundCreditAuthReceivedEvent`.
      value:
        name: TRANSACTION_STATE_CREDIT_AUTH_REJECTED
        apiVersion: 0.27.0
        class: TRANSACTION_STATE
        type: CREDIT_AUTH_REJECTED
        stageVersion: 3
        tranInfo:
          tranUetr: f27a34ad-c5ab-4b70-a3f9-946d743eaeaa
          direction: INBOUND
          paymentScheme: ZA_RTC
          service: RTC_INBOUND
        messageInfo:
          messageIdentification: 8fd51c7124ba4819b9253e296a68e1da
          creationDateTime: '2022-05-04T03:02:01Z'
          httpStatusCode: 400
        payload:
          schema: ErrorDetail
          message: Message is malformed
    RtcInboundCreditAuthPendingEvent:
      summary: RTC Inbound Credit Transfer Pending
      description: >-
        Request for the `inboundCreditTransferAuthorization` operation is
        forwarded by the Switch to the partner. The associated
        `inboundCreditTransferAuthorization` received event is described in
        `RtcInboundCreditAuthReceivedEvent`.
      value:
        name: TRANSACTION_STATE_CREDIT_AUTH_PENDING
        apiVersion: 0.27.0
        class: TRANSACTION_STATE
        type: CREDIT_AUTH_DELIVERY_PENDING
        stageVersion: 3
        tranInfo:
          tranUetr: f27a34ad-c5ab-4b70-a3f9-946d743eaeaa
          direction: INBOUND
          paymentScheme: ZA_RTC
          service: RTC_INBOUND
        messageInfo:
          messageIdentification: 8fd51c7124ba4819b9253e296a68e1da
          creationDateTime: '2022-05-04T03:02:01Z'
        payload:
          schema: CreditTransfer
          messageIdentifiers:
            messageIdentification: 8fd51c7124ba4819b9253e296a68e1da
            creationDateTime: '2022-05-04T03:02:01Z'
          paymentScheme:
            schema: ZA_RTC
            schemeData:
              userReference: Ab1 xxxxxxxxxxxxxxxx
              originatorEchoData: Ab1 xxxxxxxxxxxxxxxx
              businessReference: 11Ab1xxxxx
          transactionIdentifiers:
            endToEndIdentification: '6249118655591098'
            transactionIdentification: RRN000000001
            uetr: f27a34ad-c5ab-4b70-a3f9-946d743eaeaa
          amounts:
            bankSettlementAmount:
              value: 1
              currency: ZAR
            instructedAmount:
              value: 1
              currency: ZAR
          paymentTypeInformation:
            localInstrument:
              schema: CODE
              value: BTR
          creditor:
            address:
              addressType: ADDR
              department: Department of Mysteries
              streetName: Street of Mysteries
              buildingNumber: 42
              buildingName: Mysterious Building
              floor: 42
              postBox: 1024
              postCode: 4242
              townName: Mysty Town
              townLocationName: Mysty Location
              districtName: Mysty District
              countrySubDivision: Mysterious Cape
              country: ZA
              addressLine:
                - 16A
                - New market street
                - Foreshore
                - Cape Town
                - ZA
                - 8001
            contactDetails:
              phoneNumber: +27-0214620000
              mobileNumber: +27-08230000000
              emailAddress: alice@blue.com
            countryOfResidence: ZA
            identification:
              schema: PERSON
              identifiers:
                - identification: 90001236549870
                  issuer: Dept of Home Affairs
                  scheme:
                    schema: CODE
                    value: NIDN
          creditorAccount:
            identification:
              schema: GENERIC
              scheme:
                schema: PROPRIETARY
                value: AProprietaryCode123
              issuer: Blue Bank
              value: abcdef987654
            type:
              schema: CODE
              value: CACC
            currency: ZAR
          creditorAgent:
            bicfi: BLUEZAJ0
            memberId: BlueBankId
            name: Blue Bank Inc
            branch:
              identification: 210514
              name: ABC Plettenberg Bay
              address:
                addressType: ADDR
                department: Department of Mysteries
                streetName: Street of Mysteries
                buildingNumber: 42
                buildingName: Mysterious Building
                floor: 42
                postBox: 1024
                postCode: 4242
                townName: Mysty Town
                townLocationName: Mysty Location
                districtName: Mysty District
                countrySubDivision: Mysterious Cape
                country: ZA
                addressLine:
                  - 16A
                  - New market street
                  - Foreshore
                  - Cape Town
                  - ZA
                  - 8001
          debtor:
            address:
              addressType: ADDR
              department: Department of Mysteries
              streetName: Street of Mysteries
              buildingNumber: 42
              buildingName: Mysterious Building
              floor: 42
              postBox: 1024
              postCode: 4242
              townName: Mysty Town
              townLocationName: Mysty Location
              districtName: Mysty District
              countrySubDivision: Mysterious Cape
              country: ZA
              addressLine:
                - 16A
                - New market street
                - Foreshore
                - Cape Town
                - ZA
                - 8001
            contactDetails:
              phoneNumber: +27-0214620000
              mobileNumber: +27-08230000000
              emailAddress: bob@grey.com
            countryOfResidence: ZA
            identification:
              schema: PERSON
              identifiers:
                - identification: 90001236549870
                  issuer: Dept of Home Affairs
                  scheme:
                    schema: CODE
                    value: NIDN
          debtorAccount:
            identification:
              schema: GENERIC
              scheme:
                schema: PROPRIETARY
                value: AProprietaryCode123
              issuer: Grey Bank
              value: abcdef987654
            type:
              schema: CODE
              value: CACC
            currency: ZAR
          debtorAgent:
            bicfi: GREYZAJ0
            memberId: GreyBankId
            name: Grey Bank Inc
            branch:
              identification: 210514
              name: ABC Plettenberg Bay
              address:
                addressType: ADDR
                department: Department of Mysteries
                streetName: Street of Mysteries
                buildingNumber: 42
                buildingName: Mysterious Building
                floor: 42
                postBox: 1024
                postCode: 4242
                townName: Mysty Town
                townLocationName: Mysty Location
                districtName: Mysty District
                countrySubDivision: Mysterious Cape
                country: ZA
                addressLine:
                  - 16A
                  - New market street
                  - Foreshore
                  - Cape Town
                  - ZA
                  - 8001
          instructingAgent:
            bicfi: GREYZAJ0
            memberId: GreyBankId
            name: Grey Bank Inc
            branch:
              identification: 210514
              name: ABC Plettenberg Bay
              address:
                addressType: ADDR
                department: Department of Mysteries
                streetName: Street of Mysteries
                buildingNumber: 42
                buildingName: Mysterious Building
                floor: 42
                postBox: 1024
                postCode: 4242
                townName: Mysty Town
                townLocationName: Mysty Location
                districtName: Mysty District
                countrySubDivision: Mysterious Cape
                country: ZA
                addressLine:
                  - 16A
                  - New market street
                  - Foreshore
                  - Cape Town
                  - ZA
                  - 8001
          instructedAgent:
            bicfi: GREYZAJ0
            memberId: GreyBankId
            name: Grey Bank Inc
            branch:
              identification: 210514
              name: ABC Plettenberg Bay
              address:
                addressType: ADDR
                department: Department of Mysteries
                streetName: Street of Mysteries
                buildingNumber: 42
                buildingName: Mysterious Building
                floor: 42
                postBox: 1024
                postCode: 4242
                townName: Mysty Town
                townLocationName: Mysty Location
                districtName: Mysty District
                countrySubDivision: Mysterious Cape
                country: ZA
                addressLine:
                  - 16A
                  - New market street
                  - Foreshore
                  - Cape Town
                  - ZA
                  - 8001
          instructionForCreditorAgent:
            - code: TELA
              information: Please email example@example.com
          intermediaryAgents:
            - bicfi: GREYZAJ0
              memberId: GreyBankId
              name: Grey Bank Inc
              branch:
                identification: 210514
                name: ABC Plettenberg Bay
                address:
                  addressType: ADDR
                  department: Department of Mysteries
                  streetName: Street of Mysteries
                  buildingNumber: 42
                  buildingName: Mysterious Building
                  floor: 42
                  postBox: 1024
                  postCode: 4242
                  townName: Mysty Town
                  townLocationName: Mysty Location
                  districtName: Mysty District
                  countrySubDivision: Mysterious Cape
                  country: ZA
                  addressLine:
                    - 16A
                    - New market street
                    - Foreshore
                    - Cape Town
                    - ZA
                    - 8001
          previousInstructingAgents:
            - bicfi: GREYZAJ0
              memberId: GreyBankId
              name: Grey Bank Inc
              branch:
                identification: 210514
                name: ABC Plettenberg Bay
                address:
                  addressType: ADDR
                  department: Department of Mysteries
                  streetName: Street of Mysteries
                  buildingNumber: 42
                  buildingName: Mysterious Building
                  floor: 42
                  postBox: 1024
                  postCode: 4242
                  townName: Mysty Town
                  townLocationName: Mysty Location
                  districtName: Mysty District
                  countrySubDivision: Mysterious Cape
                  country: ZA
                  addressLine:
                    - 16A
                    - New market street
                    - Foreshore
                    - Cape Town
                    - ZA
                    - 8001
          purpose:
            schema: CODE
            value: BKDF
          remittanceInformation:
            unstructured:
              - some
              - unstructured
              - information
            structured:
              - referredDocuments:
                  - type:
                      issuer: GreyBank123456
                      schema: CODE
                      value: CINV
                    documentIdentifier: A0123456789
                referredDocumentAmount:
                  duePayableAmount:
                    value: 1
                    currency: ZAR
                  remittedAmount:
                    value: 1
                    currency: ZAR
                creditorReference:
                  type:
                    issuer: GreyBank1234
                    schema: CODE
                    value: RADM
                  reference: ABC123XYZ999
                additionalRemittanceInformation:
                  - Some
                  - Additional
                  - Information
          tax:
            totalAmount:
              value: 1
              currency: ZAR
    RtcInboundCreditAuthDeclinedNackEvent:
      summary: RTC Inbound Credit Transfer nACK By Partner
      description: >-
        Request for the `inboundCreditTransferAuthorization` operation is
        forwarded by the Switch to the partner who nACKs the technical request.
        The associated `inboundCreditTransferAuthorization` pending event is
        described in `RtcInboundCreditAuthPendingEvent`.
      value:
        name: TRANSACTION_STATE_CREDIT_AUTH_DECLINED
        apiVersion: 0.27.0
        class: TRANSACTION_STATE
        type: CREDIT_AUTH_REJECTED
        stageVersion: 4
        messageInfo:
          messageIdentification: 8fd51c7124ba4819b9253e296a68e1da
          creationDateTime: '2022-05-04T03:02:01Z'
          httpStatusCode: 400
        tranInfo:
          tranUetr: f27a34ad-c5ab-4b70-a3f9-946d743eaeaa
          direction: INBOUND
          paymentScheme: ZA_RTC
          service: RTC_INBOUND
        payload:
          schema: ErrorDetail
          message: Message is malformed
    RtcInboundCreditAuthResponseReceivedEvent:
      summary: 'RTC Inbound Credit Transfer Response Received (Statrus: ACSC)'
      description: >-
        Request for the `inboundCreditTransferAuthorizationResponse` operation
        is received by the Switch. The associated
        `inboundCreditTransferAuthorization` pending event is described in
        `RtcInboundCreditAuthPendingEvent`.
      value:
        name: TRANSACTION_STATE_CREDIT_AUTH_RESPONSE_RECEIVED
        apiVersion: 0.27.0
        class: TRANSACTION_STATE
        type: CREDIT_AUTH_RESPONSE_RECEIVED
        stageVersion: 3
        tranInfo:
          tranUetr: f27a34ad-c5ab-4b70-a3f9-946d743eaeaa
          direction: INBOUND
          paymentScheme: ZA_RTC
          service: RTC_INBOUND
        messageInfo:
          messageIdentification: 9fd51c1234ba4819bbheyde296a68e1da
          creationDateTime: '2022-05-04T03:22:11Z'
        payload:
          schema: PaymentStatusReport
          messageIdentifiers:
            messageIdentification: 9fd51c1234ba4819bbheyde296a68e1da
            creationDateTime: '2022-05-04T03:22:11Z'
          originalMessageIdentifiers:
            messageIdentification: 8fd51c7124ba4819b9253e296a68e1da
            creationDateTime: '2022-05-04T03:02:01Z'
          paymentScheme:
            schema: ZA_RTC
            schemeData:
              beneficiaryEchoData: Ab1 xxxxxxxxxxxxxxxx
              authorisationId: Ab1 xx
            originalSchemeData:
              userReference: Ab1 xxxxxxxxxxxxxxxx
              originatorEchoData: Ab1 xxxxxxxxxxxxxxxx
              businessReference: 11Ab1xxxxx
          transactionIdentifiers:
            endToEndIdentification: '6249118655591098'
            transactionIdentification: RRN000000001
            uetr: f27a34ad-c5ab-4b70-a3f9-946d743eaeaa
          status:
            outcome: APPROVED
            reasonInfo:
              - reason:
                  schema: CODE
                  value: ACSC
                additionalInformation: Settlement completed on debtor account
          instructingAgent:
            bicfi: GREYZAJ0
            memberId: GreyBankId
            name: Grey Bank Inc
            branch:
              identification: 210514
              name: ABC Plettenberg Bay
              address:
                addressType: ADDR
                department: Department of Mysteries
                streetName: Street of Mysteries
                buildingNumber: 42
                buildingName: Mysterious Building
                floor: 42
                postBox: 1024
                postCode: 4242
                townName: Mysty Town
                townLocationName: Mysty Location
                districtName: Mysty District
                countrySubDivision: Mysterious Cape
                country: ZA
                addressLine:
                  - 16A
                  - New market street
                  - Foreshore
                  - Cape Town
                  - ZA
                  - 8001
          instructedAgent:
            bicfi: GREYZAJ0
            memberId: GreyBankId
            name: Grey Bank Inc
            branch:
              identification: 210514
              name: ABC Plettenberg Bay
              address:
                addressType: ADDR
                department: Department of Mysteries
                streetName: Street of Mysteries
                buildingNumber: 42
                buildingName: Mysterious Building
                floor: 42
                postBox: 1024
                postCode: 4242
                townName: Mysty Town
                townLocationName: Mysty Location
                districtName: Mysty District
                countrySubDivision: Mysterious Cape
                country: ZA
                addressLine:
                  - 16A
                  - New market street
                  - Foreshore
                  - Cape Town
                  - ZA
                  - 8001
          originalTransactionData:
            creditor:
              address:
                addressType: ADDR
                department: Department of Mysteries
                streetName: Street of Mysteries
                buildingNumber: '42'
                buildingName: Mysterious Building
                floor: '42'
                postBox: '1024'
                postCode: '4242'
                townName: Mysty Town
                townLocationName: Mysty Location
                districtName: Mysty District
                countrySubDivision: Mysterious Cape
                country: ZA
                addressLine:
                  - 16A
                  - New market street
                  - Foreshore
                  - Cape Town
                  - ZA
                  - '8001'
              contactDetails:
                phoneNumber: +27-0214620000
                mobileNumber: +27-08230000000
                emailAddress: developer.dave@electrum.com
              countryOfResidence: ZA
              identification:
                schema: PERSON
                identifiers:
                  - identification: '90001236549870'
                    scheme:
                      schema: CODE
                      value: NIDN
                    issuer: Dept of Home Affairs
            creditorAccount:
              identification:
                schema: GENERIC
                scheme:
                  schema: PROPRIETARY
                  value: AProprietaryCode123
                issuer: Blue Bank
                value: abcdef987654
              type:
                schema: CODE
                value: CACC
            creditorAgent:
              bicfi: BLUEZAJ0
              memberId: BlueBankId
              name: Blue Bank Inc
              branch:
                identification: 210514
                name: ABC Plettenberg Bay
                address:
                  addressType: ADDR
                  department: Department of Mysteries
                  streetName: Street of Mysteries
                  buildingNumber: 42
                  buildingName: Mysterious Building
                  floor: 42
                  postBox: 1024
                  postCode: 4242
                  townName: Mysty Town
                  townLocationName: Mysty Location
                  districtName: Mysty District
                  countrySubDivision: Mysterious Cape
                  country: ZA
                  addressLine:
                    - 16A
                    - New market street
                    - Foreshore
                    - Cape Town
                    - ZA
                    - 8001
            amounts:
              bankSettlementAmount:
                value: 1
                currency: ZAR
              instructedAmount:
                value: 1
                currency: ZAR
            remittanceInformation:
              unstructured:
                - some
                - unstructured
                - information
              structured:
                - referredDocuments:
                    - type:
                        issuer: GreyBank123456
                        schema: CODE
                        value: CINV
                      documentIdentifier: A0123456789
                  referredDocumentAmount:
                    duePayableAmount:
                      value: 1
                      currency: ZAR
                    remittedAmount:
                      value: 1
                      currency: ZAR
                  creditorReference:
                    type:
                      issuer: GreyBank1234
                      schema: CODE
                      value: RADM
                    reference: ABC123XYZ999
                  additionalRemittanceInformation:
                    - Some
                    - Additional
                    - Information
            debtor:
              address:
                addressType: ADDR
                department: Department of Mysteries
                streetName: Street of Mysteries
                buildingNumber: '42'
                buildingName: Mysterious Building
                floor: '42'
                postBox: '1024'
                postCode: '4242'
                townName: Mysty Town
                townLocationName: Mysty Location
                districtName: Mysty District
                countrySubDivision: Mysterious Cape
                country: ZA
                addressLine:
                  - 16A
                  - New market street
                  - Foreshore
                  - Cape Town
                  - ZA
                  - '8001'
              contactDetails:
                phoneNumber: +27-0214620000
                mobileNumber: +27-08230000000
                emailAddress: developer.dave@electrum.com
              countryOfResidence: ZA
              identification:
                schema: PERSON
                identifiers:
                  - identification: '90001236549870'
                    scheme:
                      schema: CODE
                      value: NIDN
                    issuer: Dept of Home Affairs
            debtorAccount:
              identification:
                schema: GENERIC
                scheme:
                  schema: PROPRIETARY
                  value: AProprietaryCode123
                issuer: Grey Bank
                value: abcdef987654
              type:
                schema: CODE
                value: CACC
            debtorAgent:
              bicfi: GREYZAJ0
              memberId: GreyBankId
              name: Grey Bank Inc
              branch:
                identification: 210514
                name: ABC Plettenberg Bay
                address:
                  addressType: ADDR
                  department: Department of Mysteries
                  streetName: Street of Mysteries
                  buildingNumber: 42
                  buildingName: Mysterious Building
                  floor: 42
                  postBox: 1024
                  postCode: 4242
                  townName: Mysty Town
                  townLocationName: Mysty Location
                  districtName: Mysty District
                  countrySubDivision: Mysterious Cape
                  country: ZA
                  addressLine:
                    - 16A
                    - New market street
                    - Foreshore
                    - Cape Town
                    - ZA
                    - 8001
    RtcInboundCreditAuthResponseAcceptedEvent:
      summary: RTC Inbound Credit Transfer Response Accepted
      description: >-
        Request for the `inboundCreditTransferAuthorizationResponse` operation
        is accepted by the Switch. The associated
        `inboundCreditTransferAuthorizationResponse` received event is described
        in `RtcInboundCreditAuthResponseAcscReceivedEvent`.
      value:
        name: TRANSACTION_STATE_CREDIT_AUTH_RESPONSE_ACCEPTED
        apiVersion: 0.27.0
        class: TRANSACTION_STATE
        type: CREDIT_AUTH_RESPONSE_ACCEPTED
        stageVersion: 5
        tranInfo:
          tranUetr: f27a34ad-c5ab-4b70-a3f9-946d743eaeaa
          direction: INBOUND
          paymentScheme: ZA_RTC
          service: RTC_INBOUND
        messageInfo:
          messageIdentification: 9fd51c1234ba4819bbheyde296a68e1da
          creationDateTime: '2022-05-04T03:22:11Z'
        payload:
          schema: PaymentStatusReport
          messageIdentifiers:
            messageIdentification: 9fd51c1234ba4819bbheyde296a68e1da
            creationDateTime: '2022-05-04T03:22:11Z'
          originalMessageIdentifiers:
            messageIdentification: 8fd51c7124ba4819b9253e296a68e1da
            creationDateTime: '2022-05-04T03:02:01Z'
          paymentScheme:
            schema: ZA_RTC
            schemeData:
              beneficiaryEchoData: Ab1 xxxxxxxxxxxxxxxx
              authorisationId: Ab1 xx
            originalSchemeData:
              userReference: Ab1 xxxxxxxxxxxxxxxx
              originatorEchoData: Ab1 xxxxxxxxxxxxxxxx
              businessReference: 11Ab1xxxxx
          transactionIdentifiers:
            endToEndIdentification: '6249118655591098'
            transactionIdentification: RRN000000001
            uetr: f27a34ad-c5ab-4b70-a3f9-946d743eaeaa
          status:
            outcome: REJECTED
            reasonInfo:
              - reason:
                  schema: CODE
                  value: RR04
                additionalInformation: >-
                  The time of the payment instruction is outside of the allowed
                  hours
          instructingAgent:
            bicfi: GREYZAJ0
            memberId: GreyBankId
            name: Grey Bank Inc
            branch:
              identification: 210514
              name: ABC Plettenberg Bay
              address:
                addressType: ADDR
                department: Department of Mysteries
                streetName: Street of Mysteries
                buildingNumber: 42
                buildingName: Mysterious Building
                floor: 42
                postBox: 1024
                postCode: 4242
                townName: Mysty Town
                townLocationName: Mysty Location
                districtName: Mysty District
                countrySubDivision: Mysterious Cape
                country: ZA
                addressLine:
                  - 16A
                  - New market street
                  - Foreshore
                  - Cape Town
                  - ZA
                  - 8001
          instructedAgent:
            bicfi: GREYZAJ0
            memberId: GreyBankId
            name: Grey Bank Inc
            branch:
              identification: 210514
              name: ABC Plettenberg Bay
              address:
                addressType: ADDR
                department: Department of Mysteries
                streetName: Street of Mysteries
                buildingNumber: 42
                buildingName: Mysterious Building
                floor: 42
                postBox: 1024
                postCode: 4242
                townName: Mysty Town
                townLocationName: Mysty Location
                districtName: Mysty District
                countrySubDivision: Mysterious Cape
                country: ZA
                addressLine:
                  - 16A
                  - New market street
                  - Foreshore
                  - Cape Town
                  - ZA
                  - 8001
          originalTransactionData:
            creditor:
              address:
                addressType: ADDR
                department: Department of Mysteries
                streetName: Street of Mysteries
                buildingNumber: '42'
                buildingName: Mysterious Building
                floor: '42'
                postBox: '1024'
                postCode: '4242'
                townName: Mysty Town
                townLocationName: Mysty Location
                districtName: Mysty District
                countrySubDivision: Mysterious Cape
                country: ZA
                addressLine:
                  - 16A
                  - New market street
                  - Foreshore
                  - Cape Town
                  - ZA
                  - '8001'
              contactDetails:
                phoneNumber: +27-0214620000
                mobileNumber: +27-08230000000
                emailAddress: developer.dave@electrum.com
              countryOfResidence: ZA
              identification:
                schema: PERSON
                identifiers:
                  - identification: '90001236549870'
                    scheme:
                      schema: CODE
                      value: NIDN
                    issuer: Dept of Home Affairs
            creditorAccount:
              identification:
                schema: GENERIC
                scheme:
                  schema: PROPRIETARY
                  value: AProprietaryCode123
                issuer: Blue Bank
                value: abcdef987654
              type:
                schema: CODE
                value: CACC
            creditorAgent:
              bicfi: BLUEZAJ0
              memberId: BlueBankId
              name: Blue Bank Inc
              branch:
                identification: 210514
                name: ABC Plettenberg Bay
                address:
                  addressType: ADDR
                  department: Department of Mysteries
                  streetName: Street of Mysteries
                  buildingNumber: 42
                  buildingName: Mysterious Building
                  floor: 42
                  postBox: 1024
                  postCode: 4242
                  townName: Mysty Town
                  townLocationName: Mysty Location
                  districtName: Mysty District
                  countrySubDivision: Mysterious Cape
                  country: ZA
                  addressLine:
                    - 16A
                    - New market street
                    - Foreshore
                    - Cape Town
                    - ZA
                    - 8001
            amounts:
              bankSettlementAmount:
                value: 1
                currency: ZAR
              instructedAmount:
                value: 1
                currency: ZAR
            remittanceInformation:
              unstructured:
                - some
                - unstructured
                - information
              structured:
                - referredDocuments:
                    - type:
                        issuer: GreyBank123456
                        schema: CODE
                        value: CINV
                      documentIdentifier: A0123456789
                  referredDocumentAmount:
                    duePayableAmount:
                      value: 1
                      currency: ZAR
                    remittedAmount:
                      value: 1
                      currency: ZAR
                  creditorReference:
                    type:
                      issuer: GreyBank1234
                      schema: CODE
                      value: RADM
                    reference: ABC123XYZ999
                  additionalRemittanceInformation:
                    - Some
                    - Additional
                    - Information
            debtor:
              address:
                addressType: ADDR
                department: Department of Mysteries
                streetName: Street of Mysteries
                buildingNumber: '42'
                buildingName: Mysterious Building
                floor: '42'
                postBox: '1024'
                postCode: '4242'
                townName: Mysty Town
                townLocationName: Mysty Location
                districtName: Mysty District
                countrySubDivision: Mysterious Cape
                country: ZA
                addressLine:
                  - 16A
                  - New market street
                  - Foreshore
                  - Cape Town
                  - ZA
                  - '8001'
              contactDetails:
                phoneNumber: +27-0214620000
                mobileNumber: +27-08230000000
                emailAddress: developer.dave@electrum.com
              countryOfResidence: ZA
              identification:
                schema: PERSON
                identifiers:
                  - identification: '90001236549870'
                    scheme:
                      schema: CODE
                      value: NIDN
                    issuer: Dept of Home Affairs
            debtorAccount:
              identification:
                schema: GENERIC
                scheme:
                  schema: PROPRIETARY
                  value: AProprietaryCode123
                issuer: Grey Bank
                value: abcdef987654
              type:
                schema: CODE
                value: CACC
            debtorAgent:
              bicfi: GREYZAJ0
              memberId: GreyBankId
              name: Grey Bank Inc
              branch:
                identification: 210514
                name: ABC Plettenberg Bay
                address:
                  addressType: ADDR
                  department: Department of Mysteries
                  streetName: Street of Mysteries
                  buildingNumber: 42
                  buildingName: Mysterious Building
                  floor: 42
                  postBox: 1024
                  postCode: 4242
                  townName: Mysty Town
                  townLocationName: Mysty Location
                  districtName: Mysty District
                  countrySubDivision: Mysterious Cape
                  country: ZA
                  addressLine:
                    - 16A
                    - New market street
                    - Foreshore
                    - Cape Town
                    - ZA
                    - 8001
    RtcInboundCreditAuthResponseRejectedEvent:
      summary: RTC Inbound Credit Transfer Response Rejected
      description: >-
        Request for the `inboundCreditTransferAuthorizationResponse` operation
        is rejected by the Switch due to format errors. The associated
        `inboundCreditTransferAuthorizationResponse` received event is described
        in `RtcInboundCreditAuthResponseAcscReceivedEvent`.
      value:
        name: TRANSACTION_STATE_CREDIT_AUTH_RESPONSE_REJECTED
        apiVersion: 0.27.0
        class: TRANSACTION_STATE
        type: CREDIT_AUTH_RESPONSE_REJECTED
        stageVersion: 5
        tranInfo:
          tranUetr: f27a34ad-c5ab-4b70-a3f9-946d743eaeaa
          direction: INBOUND
          paymentScheme: ZA_RTC
          service: RTC_INBOUND
        messageInfo:
          messageIdentification: 9fd51c1234ba4819bbheyde296a68e1da
          creationDateTime: '2022-05-04T03:22:11Z'
          httpStatusCode: 400
        payload:
          schema: ErrorDetail
          detail: BAD_REQUEST
          message: Message is malformed
    RtcInboundCreditAuthApprovedEvent:
      summary: RTC Inbound Credit Transfer Approved
      description: >-
        Request for the `inboundCreditTransferAuthorizationResponse` operation
        is forwarded by the Switch back to industry. The associated
        `inboundCreditTransferAuthorizationResponse` received event is described
        in `RtcInboundCreditAuthResponseAcscReceivedEvent`.
      value:
        name: TRANSACTION_STATE_CREDIT_AUTH_APPROVED
        apiVersion: 0.27.0
        class: TRANSACTION_STATE
        type: CREDIT_AUTH_ACCEPTED
        stageVersion: 3
        tranInfo:
          tranUetr: f27a34ad-c5ab-4b70-a3f9-946d743eaeaa
          direction: INBOUND
          paymentScheme: ZA_RTC
          service: RTC_INBOUND
        messageInfo:
          messageIdentification: 9fd51c1234ba4819bbheyde296a68e1da
          creationDateTime: '2022-05-04T03:22:11Z'
        payload:
          schema: PaymentStatusReport
          messageIdentifiers:
            messageIdentification: 9fd51c1234ba4819bbheyde296a68e1da
            creationDateTime: '2022-05-04T03:22:11Z'
          originalMessageIdentifiers:
            messageIdentification: 8fd51c7124ba4819b9253e296a68e1da
            creationDateTime: '2022-05-04T03:02:01Z'
          paymentScheme:
            schema: ZA_RTC
            schemeData:
              beneficiaryEchoData: Ab1 xxxxxxxxxxxxxxxx
              authorisationId: Ab1 xx
            originalSchemeData:
              userReference: Ab1 xxxxxxxxxxxxxxxx
              originatorEchoData: Ab1 xxxxxxxxxxxxxxxx
              businessReference: 11Ab1xxxxx
          transactionIdentifiers:
            endToEndIdentification: '6249118655591098'
            transactionIdentification: RRN000000001
            uetr: f27a34ad-c5ab-4b70-a3f9-946d743eaeaa
          status:
            outcome: APPROVED
            reasonInfo:
              - reason:
                  schema: CODE
                  value: ACSC
                additionalInformation: Settlement completed on debtor account
          instructingAgent:
            bicfi: GREYZAJ0
            memberId: GreyBankId
            name: Grey Bank Inc
            branch:
              identification: 210514
              name: ABC Plettenberg Bay
              address:
                addressType: ADDR
                department: Department of Mysteries
                streetName: Street of Mysteries
                buildingNumber: 42
                buildingName: Mysterious Building
                floor: 42
                postBox: 1024
                postCode: 4242
                townName: Mysty Town
                townLocationName: Mysty Location
                districtName: Mysty District
                countrySubDivision: Mysterious Cape
                country: ZA
                addressLine:
                  - 16A
                  - New market street
                  - Foreshore
                  - Cape Town
                  - ZA
                  - 8001
          instructedAgent:
            bicfi: GREYZAJ0
            memberId: GreyBankId
            name: Grey Bank Inc
            branch:
              identification: 210514
              name: ABC Plettenberg Bay
              address:
                addressType: ADDR
                department: Department of Mysteries
                streetName: Street of Mysteries
                buildingNumber: 42
                buildingName: Mysterious Building
                floor: 42
                postBox: 1024
                postCode: 4242
                townName: Mysty Town
                townLocationName: Mysty Location
                districtName: Mysty District
                countrySubDivision: Mysterious Cape
                country: ZA
                addressLine:
                  - 16A
                  - New market street
                  - Foreshore
                  - Cape Town
                  - ZA
                  - 8001
          originalTransactionData:
            creditor:
              address:
                addressType: ADDR
                department: Department of Mysteries
                streetName: Street of Mysteries
                buildingNumber: '42'
                buildingName: Mysterious Building
                floor: '42'
                postBox: '1024'
                postCode: '4242'
                townName: Mysty Town
                townLocationName: Mysty Location
                districtName: Mysty District
                countrySubDivision: Mysterious Cape
                country: ZA
                addressLine:
                  - 16A
                  - New market street
                  - Foreshore
                  - Cape Town
                  - ZA
                  - '8001'
              contactDetails:
                phoneNumber: +27-0214620000
                mobileNumber: +27-08230000000
                emailAddress: developer.dave@electrum.com
              countryOfResidence: ZA
              identification:
                schema: PERSON
                identifiers:
                  - identification: '90001236549870'
                    scheme:
                      schema: CODE
                      value: NIDN
                    issuer: Dept of Home Affairs
            creditorAccount:
              identification:
                schema: GENERIC
                scheme:
                  schema: PROPRIETARY
                  value: AProprietaryCode123
                issuer: Blue Bank
                value: abcdef987654
              type:
                schema: CODE
                value: CACC
            creditorAgent:
              bicfi: BLUEZAJ0
              memberId: BlueBankId
              name: Blue Bank Inc
              branch:
                identification: 210514
                name: ABC Plettenberg Bay
                address:
                  addressType: ADDR
                  department: Department of Mysteries
                  streetName: Street of Mysteries
                  buildingNumber: 42
                  buildingName: Mysterious Building
                  floor: 42
                  postBox: 1024
                  postCode: 4242
                  townName: Mysty Town
                  townLocationName: Mysty Location
                  districtName: Mysty District
                  countrySubDivision: Mysterious Cape
                  country: ZA
                  addressLine:
                    - 16A
                    - New market street
                    - Foreshore
                    - Cape Town
                    - ZA
                    - 8001
            amounts:
              bankSettlementAmount:
                value: 1
                currency: ZAR
              instructedAmount:
                value: 1
                currency: ZAR
            remittanceInformation:
              unstructured:
                - some
                - unstructured
                - information
              structured:
                - referredDocuments:
                    - type:
                        issuer: GreyBank123456
                        schema: CODE
                        value: CINV
                      documentIdentifier: A0123456789
                  referredDocumentAmount:
                    duePayableAmount:
                      value: 1
                      currency: ZAR
                    remittedAmount:
                      value: 1
                      currency: ZAR
                  creditorReference:
                    type:
                      issuer: GreyBank1234
                      schema: CODE
                      value: RADM
                    reference: ABC123XYZ999
                  additionalRemittanceInformation:
                    - Some
                    - Additional
                    - Information
            debtor:
              address:
                addressType: ADDR
                department: Department of Mysteries
                streetName: Street of Mysteries
                buildingNumber: '42'
                buildingName: Mysterious Building
                floor: '42'
                postBox: '1024'
                postCode: '4242'
                townName: Mysty Town
                townLocationName: Mysty Location
                districtName: Mysty District
                countrySubDivision: Mysterious Cape
                country: ZA
                addressLine:
                  - 16A
                  - New market street
                  - Foreshore
                  - Cape Town
                  - ZA
                  - '8001'
              contactDetails:
                phoneNumber: +27-0214620000
                mobileNumber: +27-08230000000
                emailAddress: developer.dave@electrum.com
              countryOfResidence: ZA
              identification:
                schema: PERSON
                identifiers:
                  - identification: '90001236549870'
                    scheme:
                      schema: CODE
                      value: NIDN
                    issuer: Dept of Home Affairs
            debtorAccount:
              identification:
                schema: GENERIC
                scheme:
                  schema: PROPRIETARY
                  value: AProprietaryCode123
                issuer: Grey Bank
                value: abcdef987654
              type:
                schema: CODE
                value: CACC
            debtorAgent:
              bicfi: GREYZAJ0
              memberId: GreyBankId
              name: Grey Bank Inc
              branch:
                identification: 210514
                name: ABC Plettenberg Bay
                address:
                  addressType: ADDR
                  department: Department of Mysteries
                  streetName: Street of Mysteries
                  buildingNumber: 42
                  buildingName: Mysterious Building
                  floor: 42
                  postBox: 1024
                  postCode: 4242
                  townName: Mysty Town
                  townLocationName: Mysty Location
                  districtName: Mysty District
                  countrySubDivision: Mysterious Cape
                  country: ZA
                  addressLine:
                    - 16A
                    - New market street
                    - Foreshore
                    - Cape Town
                    - ZA
                    - 8001
    RtcInboundCreditAuthDeclinedEvent:
      summary: RTC Inbound Credit Transfer Declined
      description: >-
        Request for the `inboundCreditTransferAuthorizationResponse` operation
        is forwarded by the Switch back to industry. The associated
        `inboundCreditTransferAuthorizationResponse` received event is described
        in `RtcInboundCreditAuthResponseRjctReceivedEvent`.
      value:
        name: TRANSACTION_STATE_CREDIT_AUTH_DECLINED
        apiVersion: 0.27.0
        class: TRANSACTION_STATE
        type: CREDIT_AUTH_REJECTED
        stageVersion: 3
        tranInfo:
          tranUetr: f27a34ad-c5ab-4b70-a3f9-946d743eaeaa
          direction: INBOUND
          paymentScheme: ZA_RTC
          service: RTC_INBOUND
        messageInfo:
          messageIdentification: 9fd51c1234ba4819bbheyde296a68e1da
          creationDateTime: '2022-05-04T03:22:11Z'
        payload:
          schema: PaymentStatusReport
          messageIdentifiers:
            messageIdentification: 9fd51c1234ba4819bbheyde296a68e1da
            creationDateTime: '2022-05-04T03:22:11Z'
          originalMessageIdentifiers:
            messageIdentification: 8fd51c7124ba4819b9253e296a68e1da
            creationDateTime: '2022-05-04T03:02:01Z'
          paymentScheme:
            schema: ZA_RTC
            schemeData:
              beneficiaryEchoData: Ab1 xxxxxxxxxxxxxxxx
              authorisationId: Ab1 xx
            originalSchemeData:
              userReference: Ab1 xxxxxxxxxxxxxxxx
              originatorEchoData: Ab1 xxxxxxxxxxxxxxxx
              businessReference: 11Ab1xxxxx
          transactionIdentifiers:
            endToEndIdentification: '6249118655591098'
            transactionIdentification: RRN000000001
            uetr: f27a34ad-c5ab-4b70-a3f9-946d743eaeaa
          status:
            outcome: REJECTED
            reasonInfo:
              - reason:
                  schema: CODE
                  value: RR04
                additionalInformation: >-
                  The time of the payment instruction is outside of the allowed
                  hours
          instructingAgent:
            bicfi: GREYZAJ0
            memberId: GreyBankId
            name: Grey Bank Inc
            branch:
              identification: 210514
              name: ABC Plettenberg Bay
              address:
                addressType: ADDR
                department: Department of Mysteries
                streetName: Street of Mysteries
                buildingNumber: 42
                buildingName: Mysterious Building
                floor: 42
                postBox: 1024
                postCode: 4242
                townName: Mysty Town
                townLocationName: Mysty Location
                districtName: Mysty District
                countrySubDivision: Mysterious Cape
                country: ZA
                addressLine:
                  - 16A
                  - New market street
                  - Foreshore
                  - Cape Town
                  - ZA
                  - 8001
          instructedAgent:
            bicfi: GREYZAJ0
            memberId: GreyBankId
            name: Grey Bank Inc
            branch:
              identification: 210514
              name: ABC Plettenberg Bay
              address:
                addressType: ADDR
                department: Department of Mysteries
                streetName: Street of Mysteries
                buildingNumber: 42
                buildingName: Mysterious Building
                floor: 42
                postBox: 1024
                postCode: 4242
                townName: Mysty Town
                townLocationName: Mysty Location
                districtName: Mysty District
                countrySubDivision: Mysterious Cape
                country: ZA
                addressLine:
                  - 16A
                  - New market street
                  - Foreshore
                  - Cape Town
                  - ZA
                  - 8001
          originalTransactionData:
            creditor:
              address:
                addressType: ADDR
                department: Department of Mysteries
                streetName: Street of Mysteries
                buildingNumber: '42'
                buildingName: Mysterious Building
                floor: '42'
                postBox: '1024'
                postCode: '4242'
                townName: Mysty Town
                townLocationName: Mysty Location
                districtName: Mysty District
                countrySubDivision: Mysterious Cape
                country: ZA
                addressLine:
                  - 16A
                  - New market street
                  - Foreshore
                  - Cape Town
                  - ZA
                  - '8001'
              contactDetails:
                phoneNumber: +27-0214620000
                mobileNumber: +27-08230000000
                emailAddress: developer.dave@electrum.com
              countryOfResidence: ZA
              identification:
                schema: PERSON
                identifiers:
                  - identification: '90001236549870'
                    scheme:
                      schema: CODE
                      value: NIDN
                    issuer: Dept of Home Affairs
            creditorAccount:
              identification:
                schema: GENERIC
                scheme:
                  schema: PROPRIETARY
                  value: AProprietaryCode123
                issuer: Blue Bank
                value: abcdef987654
              type:
                schema: CODE
                value: CACC
            creditorAgent:
              bicfi: BLUEZAJ0
              memberId: BlueBankId
              name: Blue Bank Inc
              branch:
                identification: 210514
                name: ABC Plettenberg Bay
                address:
                  addressType: ADDR
                  department: Department of Mysteries
                  streetName: Street of Mysteries
                  buildingNumber: 42
                  buildingName: Mysterious Building
                  floor: 42
                  postBox: 1024
                  postCode: 4242
                  townName: Mysty Town
                  townLocationName: Mysty Location
                  districtName: Mysty District
                  countrySubDivision: Mysterious Cape
                  country: ZA
                  addressLine:
                    - 16A
                    - New market street
                    - Foreshore
                    - Cape Town
                    - ZA
                    - 8001
            amounts:
              bankSettlementAmount:
                value: 1
                currency: ZAR
              instructedAmount:
                value: 1
                currency: ZAR
            remittanceInformation:
              unstructured:
                - some
                - unstructured
                - information
              structured:
                - referredDocuments:
                    - type:
                        issuer: GreyBank123456
                        schema: CODE
                        value: CINV
                      documentIdentifier: A0123456789
                  referredDocumentAmount:
                    duePayableAmount:
                      value: 1
                      currency: ZAR
                    remittedAmount:
                      value: 1
                      currency: ZAR
                  creditorReference:
                    type:
                      issuer: GreyBank1234
                      schema: CODE
                      value: RADM
                    reference: ABC123XYZ999
                  additionalRemittanceInformation:
                    - Some
                    - Additional
                    - Information
            debtor:
              address:
                addressType: ADDR
                department: Department of Mysteries
                streetName: Street of Mysteries
                buildingNumber: '42'
                buildingName: Mysterious Building
                floor: '42'
                postBox: '1024'
                postCode: '4242'
                townName: Mysty Town
                townLocationName: Mysty Location
                districtName: Mysty District
                countrySubDivision: Mysterious Cape
                country: ZA
                addressLine:
                  - 16A
                  - New market street
                  - Foreshore
                  - Cape Town
                  - ZA
                  - '8001'
              contactDetails:
                phoneNumber: +27-0214620000
                mobileNumber: +27-08230000000
                emailAddress: developer.dave@electrum.com
              countryOfResidence: ZA
              identification:
                schema: PERSON
                identifiers:
                  - identification: '90001236549870'
                    scheme:
                      schema: CODE
                      value: NIDN
                    issuer: Dept of Home Affairs
            debtorAccount:
              identification:
                schema: GENERIC
                scheme:
                  schema: PROPRIETARY
                  value: AProprietaryCode123
                issuer: Grey Bank
                value: abcdef987654
              type:
                schema: CODE
                value: CACC
            debtorAgent:
              bicfi: GREYZAJ0
              memberId: GreyBankId
              name: Grey Bank Inc
              branch:
                identification: 210514
                name: ABC Plettenberg Bay
                address:
                  addressType: ADDR
                  department: Department of Mysteries
                  streetName: Street of Mysteries
                  buildingNumber: 42
                  buildingName: Mysterious Building
                  floor: 42
                  postBox: 1024
                  postCode: 4242
                  townName: Mysty Town
                  townLocationName: Mysty Location
                  districtName: Mysty District
                  countrySubDivision: Mysterious Cape
                  country: ZA
                  addressLine:
                    - 16A
                    - New market street
                    - Foreshore
                    - Cape Town
                    - ZA
                    - 8001
    RtcInboundCreditAuthTimeoutEvent:
      summary: RTC Inbound Credit Transfer Timeout
      description: >-
        Request for the `inboundCreditTransferAuthorization` forwarded by the
        Switch to the partner times out while awaiting an
        `inboundCreditTransferAuthorizationResponse` functional response. The
        associated `inboundCreditTransferAuthorization` pending event is
        described in `RtcInboundCreditAuthPendingEvent`.
      value:
        name: TRANSACTION_STATE_CREDIT_AUTH_TIMEOUT
        apiVersion: 0.27.0
        class: TRANSACTION_STATE
        type: CREDIT_AUTH_TIMEOUT
        stageVersion: 4
        tranInfo:
          tranUetr: f27a34ad-c5ab-4b70-a3f9-946d743eaeaa
          direction: INBOUND
          paymentScheme: ZA_RTC
          service: RTC_INBOUND
        messageInfo:
          messageIdentification: 8fd51c7124ba4819b9253e296a68e1da
          creationDateTime: '2022-05-04T03:02:01Z'
        payload:
          schema: CreditTransfer
          messageIdentifiers:
            messageIdentification: 8fd51c7124ba4819b9253e296a68e1da
            creationDateTime: '2022-05-04T03:02:01Z'
          paymentScheme:
            schema: ZA_RTC
            schemeData:
              userReference: Ab1 xxxxxxxxxxxxxxxx
              originatorEchoData: Ab1 xxxxxxxxxxxxxxxx
              businessReference: 11Ab1xxxxx
          transactionIdentifiers:
            endToEndIdentification: '6249118655591098'
            transactionIdentification: RRN000000001
            uetr: f27a34ad-c5ab-4b70-a3f9-946d743eaeaa
          amounts:
            bankSettlementAmount:
              value: 1
              currency: ZAR
            instructedAmount:
              value: 1
              currency: ZAR
          paymentTypeInformation:
            localInstrument:
              schema: CODE
              value: BTR
          creditor:
            address:
              addressType: ADDR
              department: Department of Mysteries
              streetName: Street of Mysteries
              buildingNumber: 42
              buildingName: Mysterious Building
              floor: 42
              postBox: 1024
              postCode: 4242
              townName: Mysty Town
              townLocationName: Mysty Location
              districtName: Mysty District
              countrySubDivision: Mysterious Cape
              country: ZA
              addressLine:
                - 16A
                - New market street
                - Foreshore
                - Cape Town
                - ZA
                - 8001
            contactDetails:
              phoneNumber: +27-0214620000
              mobileNumber: +27-08230000000
              emailAddress: alice@blue.com
            countryOfResidence: ZA
            identification:
              schema: PERSON
              identifiers:
                - identification: 90001236549870
                  issuer: Dept of Home Affairs
                  scheme:
                    schema: CODE
                    value: NIDN
          creditorAccount:
            identification:
              schema: GENERIC
              scheme:
                schema: PROPRIETARY
                value: AProprietaryCode123
              issuer: Blue Bank
              value: abcdef987654
            type:
              schema: CODE
              value: CACC
            currency: ZAR
          creditorAgent:
            bicfi: BLUEZAJ0
            memberId: BlueBankId
            name: Blue Bank Inc
            branch:
              identification: 210514
              name: ABC Plettenberg Bay
              address:
                addressType: ADDR
                department: Department of Mysteries
                streetName: Street of Mysteries
                buildingNumber: 42
                buildingName: Mysterious Building
                floor: 42
                postBox: 1024
                postCode: 4242
                townName: Mysty Town
                townLocationName: Mysty Location
                districtName: Mysty District
                countrySubDivision: Mysterious Cape
                country: ZA
                addressLine:
                  - 16A
                  - New market street
                  - Foreshore
                  - Cape Town
                  - ZA
                  - 8001
          debtor:
            address:
              addressType: ADDR
              department: Department of Mysteries
              streetName: Street of Mysteries
              buildingNumber: 42
              buildingName: Mysterious Building
              floor: 42
              postBox: 1024
              postCode: 4242
              townName: Mysty Town
              townLocationName: Mysty Location
              districtName: Mysty District
              countrySubDivision: Mysterious Cape
              country: ZA
              addressLine:
                - 16A
                - New market street
                - Foreshore
                - Cape Town
                - ZA
                - 8001
            contactDetails:
              phoneNumber: +27-0214620000
              mobileNumber: +27-08230000000
              emailAddress: bob@grey.com
            countryOfResidence: ZA
            identification:
              schema: PERSON
              identifiers:
                - identification: 90001236549870
                  issuer: Dept of Home Affairs
                  scheme:
                    schema: CODE
                    value: NIDN
          debtorAccount:
            identification:
              schema: GENERIC
              scheme:
                schema: PROPRIETARY
                value: AProprietaryCode123
              issuer: Grey Bank
              value: abcdef987654
            type:
              schema: CODE
              value: CACC
            currency: ZAR
          debtorAgent:
            bicfi: GREYZAJ0
            memberId: GreyBankId
            name: Grey Bank Inc
            branch:
              identification: 210514
              name: ABC Plettenberg Bay
              address:
                addressType: ADDR
                department: Department of Mysteries
                streetName: Street of Mysteries
                buildingNumber: 42
                buildingName: Mysterious Building
                floor: 42
                postBox: 1024
                postCode: 4242
                townName: Mysty Town
                townLocationName: Mysty Location
                districtName: Mysty District
                countrySubDivision: Mysterious Cape
                country: ZA
                addressLine:
                  - 16A
                  - New market street
                  - Foreshore
                  - Cape Town
                  - ZA
                  - 8001
          instructingAgent:
            bicfi: GREYZAJ0
            memberId: GreyBankId
            name: Grey Bank Inc
            branch:
              identification: 210514
              name: ABC Plettenberg Bay
              address:
                addressType: ADDR
                department: Department of Mysteries
                streetName: Street of Mysteries
                buildingNumber: 42
                buildingName: Mysterious Building
                floor: 42
                postBox: 1024
                postCode: 4242
                townName: Mysty Town
                townLocationName: Mysty Location
                districtName: Mysty District
                countrySubDivision: Mysterious Cape
                country: ZA
                addressLine:
                  - 16A
                  - New market street
                  - Foreshore
                  - Cape Town
                  - ZA
                  - 8001
          instructedAgent:
            bicfi: GREYZAJ0
            memberId: GreyBankId
            name: Grey Bank Inc
            branch:
              identification: 210514
              name: ABC Plettenberg Bay
              address:
                addressType: ADDR
                department: Department of Mysteries
                streetName: Street of Mysteries
                buildingNumber: 42
                buildingName: Mysterious Building
                floor: 42
                postBox: 1024
                postCode: 4242
                townName: Mysty Town
                townLocationName: Mysty Location
                districtName: Mysty District
                countrySubDivision: Mysterious Cape
                country: ZA
                addressLine:
                  - 16A
                  - New market street
                  - Foreshore
                  - Cape Town
                  - ZA
                  - 8001
          instructionForCreditorAgent:
            - code: TELA
              information: Please email example@example.com
          intermediaryAgents:
            - bicfi: GREYZAJ0
              memberId: GreyBankId
              name: Grey Bank Inc
              branch:
                identification: 210514
                name: ABC Plettenberg Bay
                address:
                  addressType: ADDR
                  department: Department of Mysteries
                  streetName: Street of Mysteries
                  buildingNumber: 42
                  buildingName: Mysterious Building
                  floor: 42
                  postBox: 1024
                  postCode: 4242
                  townName: Mysty Town
                  townLocationName: Mysty Location
                  districtName: Mysty District
                  countrySubDivision: Mysterious Cape
                  country: ZA
                  addressLine:
                    - 16A
                    - New market street
                    - Foreshore
                    - Cape Town
                    - ZA
                    - 8001
          previousInstructingAgents:
            - bicfi: GREYZAJ0
              memberId: GreyBankId
              name: Grey Bank Inc
              branch:
                identification: 210514
                name: ABC Plettenberg Bay
                address:
                  addressType: ADDR
                  department: Department of Mysteries
                  streetName: Street of Mysteries
                  buildingNumber: 42
                  buildingName: Mysterious Building
                  floor: 42
                  postBox: 1024
                  postCode: 4242
                  townName: Mysty Town
                  townLocationName: Mysty Location
                  districtName: Mysty District
                  countrySubDivision: Mysterious Cape
                  country: ZA
                  addressLine:
                    - 16A
                    - New market street
                    - Foreshore
                    - Cape Town
                    - ZA
                    - 8001
          purpose:
            schema: CODE
            value: BKDF
          remittanceInformation:
            unstructured:
              - some
              - unstructured
              - information
            structured:
              - referredDocuments:
                  - type:
                      issuer: GreyBank123456
                      schema: CODE
                      value: CINV
                    documentIdentifier: A0123456789
                referredDocumentAmount:
                  duePayableAmount:
                    value: 1
                    currency: ZAR
                  remittedAmount:
                    value: 1
                    currency: ZAR
                creditorReference:
                  type:
                    issuer: GreyBank1234
                    schema: CODE
                    value: RADM
                  reference: ABC123XYZ999
                additionalRemittanceInformation:
                  - Some
                  - Additional
                  - Information
          tax:
            totalAmount:
              value: 1
              currency: ZAR
    RtcInboundCreditAuthValidationEvent:
      summary: RTC Inbound Credit Transfer Validation
      description: >-
        Request for the `inboundCreditTransferAuthorization` received by the
        Switch is sent for validation prior to functional processing. The
        associated `inboundCreditTransferAuthorization` pending event is
        described in `RtcInboundCreditAuthReceivedEvent`.
      value:
        name: TRANSACTION_STATE_VALIDATION_PENDING
        apiVersion: 0.27.0
        class: TRANSACTION_STATE
        type: VALIDATION_PENDING
        stageVersion: 6
        tranInfo:
          tranUetr: f27a34ad-c5ab-4b70-a3f9-946d743eaeaa
          direction: INBOUND
          paymentScheme: ZA_RTC
          service: RTC_INBOUND
        messageInfo:
          messageIdentification: 8fd51c7124ba4819b9253e296a68e1da
          creationDateTime: '2022-05-04T03:02:01Z'
        payload:
          schema: CreditTransfer
          messageIdentifiers:
            messageIdentification: 8fd51c7124ba4819b9253e296a68e1da
            creationDateTime: '2022-05-04T03:02:01Z'
          paymentScheme:
            schema: ZA_RTC
            schemeData:
              userReference: Ab1 xxxxxxxxxxxxxxxx
              originatorEchoData: Ab1 xxxxxxxxxxxxxxxx
              businessReference: 11Ab1xxxxx
          transactionIdentifiers:
            endToEndIdentification: '6249118655591098'
            transactionIdentification: RRN000000001
            uetr: f27a34ad-c5ab-4b70-a3f9-946d743eaeaa
          amounts:
            bankSettlementAmount:
              value: 1
              currency: ZAR
            instructedAmount:
              value: 1
              currency: ZAR
          paymentTypeInformation:
            localInstrument:
              schema: CODE
              value: BTR
          creditor:
            address:
              addressType: ADDR
              department: Department of Mysteries
              streetName: Street of Mysteries
              buildingNumber: 42
              buildingName: Mysterious Building
              floor: 42
              postBox: 1024
              postCode: 4242
              townName: Mysty Town
              townLocationName: Mysty Location
              districtName: Mysty District
              countrySubDivision: Mysterious Cape
              country: ZA
              addressLine:
                - 16A
                - New market street
                - Foreshore
                - Cape Town
                - ZA
                - 8001
            contactDetails:
              phoneNumber: +27-0214620000
              mobileNumber: +27-08230000000
              emailAddress: alice@blue.com
            countryOfResidence: ZA
            identification:
              schema: PERSON
              identifiers:
                - identification: 90001236549870
                  issuer: Dept of Home Affairs
                  scheme:
                    schema: CODE
                    value: NIDN
          creditorAccount:
            identification:
              schema: GENERIC
              scheme:
                schema: PROPRIETARY
                value: AProprietaryCode123
              issuer: Blue Bank
              value: abcdef987654
            type:
              schema: CODE
              value: CACC
            currency: ZAR
          creditorAgent:
            bicfi: BLUEZAJ0
            memberId: BlueBankId
            name: Blue Bank Inc
            branch:
              identification: 210514
              name: ABC Plettenberg Bay
              address:
                addressType: ADDR
                department: Department of Mysteries
                streetName: Street of Mysteries
                buildingNumber: 42
                buildingName: Mysterious Building
                floor: 42
                postBox: 1024
                postCode: 4242
                townName: Mysty Town
                townLocationName: Mysty Location
                districtName: Mysty District
                countrySubDivision: Mysterious Cape
                country: ZA
                addressLine:
                  - 16A
                  - New market street
                  - Foreshore
                  - Cape Town
                  - ZA
                  - 8001
          debtor:
            address:
              addressType: ADDR
              department: Department of Mysteries
              streetName: Street of Mysteries
              buildingNumber: 42
              buildingName: Mysterious Building
              floor: 42
              postBox: 1024
              postCode: 4242
              townName: Mysty Town
              townLocationName: Mysty Location
              districtName: Mysty District
              countrySubDivision: Mysterious Cape
              country: ZA
              addressLine:
                - 16A
                - New market street
                - Foreshore
                - Cape Town
                - ZA
                - 8001
            contactDetails:
              phoneNumber: +27-0214620000
              mobileNumber: +27-08230000000
              emailAddress: bob@grey.com
            countryOfResidence: ZA
            identification:
              schema: PERSON
              identifiers:
                - identification: 90001236549870
                  issuer: Dept of Home Affairs
                  scheme:
                    schema: CODE
                    value: NIDN
          debtorAccount:
            identification:
              schema: GENERIC
              scheme:
                schema: PROPRIETARY
                value: AProprietaryCode123
              issuer: Grey Bank
              value: abcdef987654
            type:
              schema: CODE
              value: CACC
            currency: ZAR
          debtorAgent:
            bicfi: GREYZAJ0
            memberId: GreyBankId
            name: Grey Bank Inc
            branch:
              identification: 210514
              name: ABC Plettenberg Bay
              address:
                addressType: ADDR
                department: Department of Mysteries
                streetName: Street of Mysteries
                buildingNumber: 42
                buildingName: Mysterious Building
                floor: 42
                postBox: 1024
                postCode: 4242
                townName: Mysty Town
                townLocationName: Mysty Location
                districtName: Mysty District
                countrySubDivision: Mysterious Cape
                country: ZA
                addressLine:
                  - 16A
                  - New market street
                  - Foreshore
                  - Cape Town
                  - ZA
                  - 8001
          instructingAgent:
            bicfi: GREYZAJ0
            memberId: GreyBankId
            name: Grey Bank Inc
            branch:
              identification: 210514
              name: ABC Plettenberg Bay
              address:
                addressType: ADDR
                department: Department of Mysteries
                streetName: Street of Mysteries
                buildingNumber: 42
                buildingName: Mysterious Building
                floor: 42
                postBox: 1024
                postCode: 4242
                townName: Mysty Town
                townLocationName: Mysty Location
                districtName: Mysty District
                countrySubDivision: Mysterious Cape
                country: ZA
                addressLine:
                  - 16A
                  - New market street
                  - Foreshore
                  - Cape Town
                  - ZA
                  - 8001
          instructedAgent:
            bicfi: GREYZAJ0
            memberId: GreyBankId
            name: Grey Bank Inc
            branch:
              identification: 210514
              name: ABC Plettenberg Bay
              address:
                addressType: ADDR
                department: Department of Mysteries
                streetName: Street of Mysteries
                buildingNumber: 42
                buildingName: Mysterious Building
                floor: 42
                postBox: 1024
                postCode: 4242
                townName: Mysty Town
                townLocationName: Mysty Location
                districtName: Mysty District
                countrySubDivision: Mysterious Cape
                country: ZA
                addressLine:
                  - 16A
                  - New market street
                  - Foreshore
                  - Cape Town
                  - ZA
                  - 8001
          instructionForCreditorAgent:
            - code: TELA
              information: Please email example@example.com
          intermediaryAgents:
            - bicfi: GREYZAJ0
              memberId: GreyBankId
              name: Grey Bank Inc
              branch:
                identification: 210514
                name: ABC Plettenberg Bay
                address:
                  addressType: ADDR
                  department: Department of Mysteries
                  streetName: Street of Mysteries
                  buildingNumber: 42
                  buildingName: Mysterious Building
                  floor: 42
                  postBox: 1024
                  postCode: 4242
                  townName: Mysty Town
                  townLocationName: Mysty Location
                  districtName: Mysty District
                  countrySubDivision: Mysterious Cape
                  country: ZA
                  addressLine:
                    - 16A
                    - New market street
                    - Foreshore
                    - Cape Town
                    - ZA
                    - 8001
          previousInstructingAgents:
            - bicfi: GREYZAJ0
              memberId: GreyBankId
              name: Grey Bank Inc
              branch:
                identification: 210514
                name: ABC Plettenberg Bay
                address:
                  addressType: ADDR
                  department: Department of Mysteries
                  streetName: Street of Mysteries
                  buildingNumber: 42
                  buildingName: Mysterious Building
                  floor: 42
                  postBox: 1024
                  postCode: 4242
                  townName: Mysty Town
                  townLocationName: Mysty Location
                  districtName: Mysty District
                  countrySubDivision: Mysterious Cape
                  country: ZA
                  addressLine:
                    - 16A
                    - New market street
                    - Foreshore
                    - Cape Town
                    - ZA
                    - 8001
          purpose:
            schema: CODE
            value: BKDF
          remittanceInformation:
            unstructured:
              - some
              - unstructured
              - information
            structured:
              - referredDocuments:
                  - type:
                      issuer: GreyBank123456
                      schema: CODE
                      value: CINV
                    documentIdentifier: A0123456789
                referredDocumentAmount:
                  duePayableAmount:
                    value: 1
                    currency: ZAR
                  remittedAmount:
                    value: 1
                    currency: ZAR
                creditorReference:
                  type:
                    issuer: GreyBank1234
                    schema: CODE
                    value: RADM
                  reference: ABC123XYZ999
                additionalRemittanceInformation:
                  - Some
                  - Additional
                  - Information
          tax:
            totalAmount:
              value: 1
              currency: ZAR
    RtcInboundCreditAuthValidationSuccessEvent:
      summary: RTC Inbound Credit Transfer Validation Successful
      description: >-
        The `inboundCreditTransferAuthorization` received by the Switch was
        successfully validated. The associated
        `inboundCreditTransferAuthorization` validation event is described in
        `RtcInboundCreditAuthValidationEvent`.
      value:
        name: TRANSACTION_STATE_VALIDATION_SUCCESSFUL
        apiVersion: 0.27.0
        class: TRANSACTION_STATE
        type: VALIDATION_SUCCESSFUL
        stageVersion: 7
        tranInfo:
          tranUetr: f27a34ad-c5ab-4b70-a3f9-946d743eaeaa
          direction: INBOUND
          paymentScheme: ZA_RTC
          service: RTC_INBOUND
        messageInfo:
          messageIdentification: 8fd51c7124ba4819b9253e296a68e1da
          creationDateTime: '2022-05-04T03:02:01Z'
        payload:
          schema: ValidationOutcome
          isSuccessful: true
          steps:
            - description: >-
                Check that the amount in the payment instruction is in South
                African Rands
              result: PASSED
            - description: >-
                Check that the time of the payment instruction is within the
                allowed hours
              result: PASSED
    RtcInboundCreditAuthValidationFailedEvent:
      summary: RTC Inbound Credit Transfer Validation Failed
      description: >-
        The `inboundCreditTransferAuthorization` received by the Switch was not
        successfully validated. The associated
        `inboundCreditTransferAuthorization` validation event is described in
        `RtcInboundCreditAuthValidationEvent`.
      value:
        name: TRANSACTION_STATE_VALIDATION_FAILED
        apiVersion: 0.27.0
        class: TRANSACTION_STATE
        type: VALIDATION_FAILED
        stageVersion: 7
        tranInfo:
          tranUetr: f27a34ad-c5ab-4b70-a3f9-946d743eaeaa
          direction: INBOUND
          paymentScheme: ZA_RTC
          service: RTC_INBOUND
        messageInfo:
          messageIdentification: 8fd51c7124ba4819b9253e296a68e1da
          creationDateTime: '2022-05-04T03:02:01Z'
        payload:
          schema: ValidationOutcome
          isSuccessful: 'false'
          steps:
            - description: >-
                Check that the amount in the payment instruction is in South
                African Rands
              result: PASSED
            - description: >-
                Check that the time of the payment instruction is within the
                allowed hours
              result: FAILED
              reasonInfo:
                reason:
                  schema: CODE
                  value: RR04
                additionalInformation: >-
                  The time of the payment instruction is outside of the allowed
                  hours
    RtcInboundCreditAuthValidationTimeoutEvent:
      summary: RTC Inbound Credit Transfer Validation Timeout
      description: >-
        The `inboundCreditTransferAuthorization` received by the Switch was not
        successfully validated because no validation response was received. The
        associated `inboundCreditTransferAuthorization` validation event is
        described in `RtcInboundCreditAuthValidationEvent`.
      value:
        name: TRANSACTION_STATE_VALIDATION_TIMEOUT
        apiVersion: 0.27.0
        class: TRANSACTION_STATE
        type: VALIDATION_TIMEOUT
        stageVersion: 8
        tranInfo:
          tranUetr: f27a34ad-c5ab-4b70-a3f9-946d743eaeaa
          direction: INBOUND
          paymentScheme: ZA_RTC
          service: RTC_INBOUND
        messageInfo:
          messageIdentification: 8fd51c7124ba4819b9253e296a68e1da
          creationDateTime: '2022-05-04T03:02:01Z'
        payload:
          schema: CreditTransfer
          messageIdentifiers:
            messageIdentification: 8fd51c7124ba4819b9253e296a68e1da
            creationDateTime: '2022-05-04T03:02:01Z'
          paymentScheme:
            schema: ZA_RTC
            schemeData:
              userReference: Ab1 xxxxxxxxxxxxxxxx
              originatorEchoData: Ab1 xxxxxxxxxxxxxxxx
              businessReference: 11Ab1xxxxx
          transactionIdentifiers:
            endToEndIdentification: '6249118655591098'
            transactionIdentification: RRN000000001
            uetr: f27a34ad-c5ab-4b70-a3f9-946d743eaeaa
          amounts:
            bankSettlementAmount:
              value: 1
              currency: ZAR
            instructedAmount:
              value: 1
              currency: ZAR
          paymentTypeInformation:
            localInstrument:
              schema: CODE
              value: BTR
          creditor:
            address:
              addressType: ADDR
              department: Department of Mysteries
              streetName: Street of Mysteries
              buildingNumber: 42
              buildingName: Mysterious Building
              floor: 42
              postBox: 1024
              postCode: 4242
              townName: Mysty Town
              townLocationName: Mysty Location
              districtName: Mysty District
              countrySubDivision: Mysterious Cape
              country: ZA
              addressLine:
                - 16A
                - New market street
                - Foreshore
                - Cape Town
                - ZA
                - 8001
            contactDetails:
              phoneNumber: +27-0214620000
              mobileNumber: +27-08230000000
              emailAddress: alice@blue.com
            countryOfResidence: ZA
            identification:
              schema: PERSON
              identifiers:
                - identification: 90001236549870
                  issuer: Dept of Home Affairs
                  scheme:
                    schema: CODE
                    value: NIDN
          creditorAccount:
            identification:
              schema: GENERIC
              scheme:
                schema: PROPRIETARY
                value: AProprietaryCode123
              issuer: Blue Bank
              value: abcdef987654
            type:
              schema: CODE
              value: CACC
            currency: ZAR
          creditorAgent:
            bicfi: BLUEZAJ0
            memberId: BlueBankId
            name: Blue Bank Inc
            branch:
              identification: 210514
              name: ABC Plettenberg Bay
              address:
                addressType: ADDR
                department: Department of Mysteries
                streetName: Street of Mysteries
                buildingNumber: 42
                buildingName: Mysterious Building
                floor: 42
                postBox: 1024
                postCode: 4242
                townName: Mysty Town
                townLocationName: Mysty Location
                districtName: Mysty District
                countrySubDivision: Mysterious Cape
                country: ZA
                addressLine:
                  - 16A
                  - New market street
                  - Foreshore
                  - Cape Town
                  - ZA
                  - 8001
          debtor:
            address:
              addressType: ADDR
              department: Department of Mysteries
              streetName: Street of Mysteries
              buildingNumber: 42
              buildingName: Mysterious Building
              floor: 42
              postBox: 1024
              postCode: 4242
              townName: Mysty Town
              townLocationName: Mysty Location
              districtName: Mysty District
              countrySubDivision: Mysterious Cape
              country: ZA
              addressLine:
                - 16A
                - New market street
                - Foreshore
                - Cape Town
                - ZA
                - 8001
            contactDetails:
              phoneNumber: +27-0214620000
              mobileNumber: +27-08230000000
              emailAddress: bob@grey.com
            countryOfResidence: ZA
            identification:
              schema: PERSON
              identifiers:
                - identification: 90001236549870
                  issuer: Dept of Home Affairs
                  scheme:
                    schema: CODE
                    value: NIDN
          debtorAccount:
            identification:
              schema: GENERIC
              scheme:
                schema: PROPRIETARY
                value: AProprietaryCode123
              issuer: Grey Bank
              value: abcdef987654
            type:
              schema: CODE
              value: CACC
            currency: ZAR
          debtorAgent:
            bicfi: GREYZAJ0
            memberId: GreyBankId
            name: Grey Bank Inc
            branch:
              identification: 210514
              name: ABC Plettenberg Bay
              address:
                addressType: ADDR
                department: Department of Mysteries
                streetName: Street of Mysteries
                buildingNumber: 42
                buildingName: Mysterious Building
                floor: 42
                postBox: 1024
                postCode: 4242
                townName: Mysty Town
                townLocationName: Mysty Location
                districtName: Mysty District
                countrySubDivision: Mysterious Cape
                country: ZA
                addressLine:
                  - 16A
                  - New market street
                  - Foreshore
                  - Cape Town
                  - ZA
                  - 8001
          instructingAgent:
            bicfi: GREYZAJ0
            memberId: GreyBankId
            name: Grey Bank Inc
            branch:
              identification: 210514
              name: ABC Plettenberg Bay
              address:
                addressType: ADDR
                department: Department of Mysteries
                streetName: Street of Mysteries
                buildingNumber: 42
                buildingName: Mysterious Building
                floor: 42
                postBox: 1024
                postCode: 4242
                townName: Mysty Town
                townLocationName: Mysty Location
                districtName: Mysty District
                countrySubDivision: Mysterious Cape
                country: ZA
                addressLine:
                  - 16A
                  - New market street
                  - Foreshore
                  - Cape Town
                  - ZA
                  - 8001
          instructedAgent:
            bicfi: GREYZAJ0
            memberId: GreyBankId
            name: Grey Bank Inc
            branch:
              identification: 210514
              name: ABC Plettenberg Bay
              address:
                addressType: ADDR
                department: Department of Mysteries
                streetName: Street of Mysteries
                buildingNumber: 42
                buildingName: Mysterious Building
                floor: 42
                postBox: 1024
                postCode: 4242
                townName: Mysty Town
                townLocationName: Mysty Location
                districtName: Mysty District
                countrySubDivision: Mysterious Cape
                country: ZA
                addressLine:
                  - 16A
                  - New market street
                  - Foreshore
                  - Cape Town
                  - ZA
                  - 8001
          instructionForCreditorAgent:
            - code: TELA
              information: Please email example@example.com
          intermediaryAgents:
            - bicfi: GREYZAJ0
              memberId: GreyBankId
              name: Grey Bank Inc
              branch:
                identification: 210514
                name: ABC Plettenberg Bay
                address:
                  addressType: ADDR
                  department: Department of Mysteries
                  streetName: Street of Mysteries
                  buildingNumber: 42
                  buildingName: Mysterious Building
                  floor: 42
                  postBox: 1024
                  postCode: 4242
                  townName: Mysty Town
                  townLocationName: Mysty Location
                  districtName: Mysty District
                  countrySubDivision: Mysterious Cape
                  country: ZA
                  addressLine:
                    - 16A
                    - New market street
                    - Foreshore
                    - Cape Town
                    - ZA
                    - 8001
          previousInstructingAgents:
            - bicfi: GREYZAJ0
              memberId: GreyBankId
              name: Grey Bank Inc
              branch:
                identification: 210514
                name: ABC Plettenberg Bay
                address:
                  addressType: ADDR
                  department: Department of Mysteries
                  streetName: Street of Mysteries
                  buildingNumber: 42
                  buildingName: Mysterious Building
                  floor: 42
                  postBox: 1024
                  postCode: 4242
                  townName: Mysty Town
                  townLocationName: Mysty Location
                  districtName: Mysty District
                  countrySubDivision: Mysterious Cape
                  country: ZA
                  addressLine:
                    - 16A
                    - New market street
                    - Foreshore
                    - Cape Town
                    - ZA
                    - 8001
          purpose:
            schema: CODE
            value: BKDF
          remittanceInformation:
            unstructured:
              - some
              - unstructured
              - information
            structured:
              - referredDocuments:
                  - type:
                      issuer: GreyBank123456
                      schema: CODE
                      value: CINV
                    documentIdentifier: A0123456789
                referredDocumentAmount:
                  duePayableAmount:
                    value: 1
                    currency: ZAR
                  remittedAmount:
                    value: 1
                    currency: ZAR
                creditorReference:
                  type:
                    issuer: GreyBank1234
                    schema: CODE
                    value: RADM
                  reference: ABC123XYZ999
                additionalRemittanceInformation:
                  - Some
                  - Additional
                  - Information
          tax:
            totalAmount:
              value: 1
              currency: ZAR
