openapi: 3.0.3
info:
  version: 15.2.0
  title: Electrum Regulated Payments API
  description: >
    The Electrum Regulated Payments API is an asynchronous API that allows
    partners to participate in various nationally

    regulated payment schemes.


    This document describes the operations exposed _by_ Electrum _for_ partners
    to consume in order to initiate outbound

    or respond to inbound payments.


    As the Regulated Payments API is asynchronous, partners have a choice of how
    to integrate with Electrum:

    - Webhooks: Electrum will send events to the partner containing inbound
    payments to action, or responses to
      outbound payment requests. Webhooks are defined in _this_ document.
    - Partner API: Electrum will call operations exposed by the partner
    containing inbound payments to action, or responses to
      outbound payment requests. The operations are defined in the _Electrum Regulated Payments Partner API_.

    Receiving transactional events via webhooks or API are equivalent, except
    that it may be more familiar or convenient

    to implement one style or the other. Partners may request the method of
    communication Electrum should use when

    selecting which payment schemes to participate in.
  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/api/v1
    description: Payments API sandbox
tags:
  - name: transactional
    description: >-
      Operations that participate in transaction processing, which may or may
      not have financial impact.
  - name: financial
    description: >-
      Operations that participate in transaction processing and have financial
      impact.
  - name: credit-transfer
    description: Operations related to credit transfer transactions.
  - name: direct-debit
    description: Operations related to direct debit transactions.
  - name: payment-return
    description: Operations related to payment returns.
  - name: account-management
    description: Operations that involve customer account information.
  - name: proxy
    description: Operations that involve the management or processing of proxies
  - name: scheme-inquiry
    description: >-
      Operations that are related to retrieving information from industry for a
      particular scheme.
  - name: identifier-determination
    description: >-
      Operations used to retrieve additional information related to an
      identifier
  - name: identifier-verification
    description: Operations used to verify information relating to an account identifier
  - name: request-to-pay
    description: >-
      Operations which pertain to a request for payment from a creditor to a
      debtor
  - name: funds-management
    description: >-
      Operations related to the management of funds, including reservations,
      postings, and voiding of reservations.
  - name: refund
    description: >-
      Operations related to the refund of a prior successful financial
      transaction.
paths:
  /health:
    get:
      summary: Do a system health check
      tags:
        - operational
      description: >
        This **synchronous** operation reports on the overall health of the
        system.
      operationId: healthCheck
      parameters:
        - in: header
          name: traceparent
          schema:
            $ref: '#/components/schemas/traceparent'
        - in: header
          name: tracestate
          schema:
            $ref: '#/components/schemas/tracestate'
      responses:
        '200':
          description: >-
            OK. [RFC9110 -
            200](https://www.rfc-editor.org/rfc/rfc9110#name-200-ok)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HealthReport'
        '500':
          description: >-
            Internal server error. [RFC9110 -
            500](https://www.rfc-editor.org/rfc/rfc9110#name-500-internal-server-error)
        '503':
          description: >-
            Service unavailable. [RFC9110 -
            503](https://www.rfc-editor.org/rfc/rfc9110#name-503-service-unavailable)
  /transactions/outbound/credit-transfer:
    post:
      tags:
        - transactional
        - credit-transfer
        - financial
      summary: Perform a credit transfer against a scheme
      description: >
        This operation is **asynchronous**. It is responded to by the
        [outboundCreditTransferResponse
        operation](https://api.electrum.io/elpapi/openapi/elpapi-partner/operation/outboundCreditTransferResponse/)


        Instructs Electrum to execute an outbound credit transfer transaction
        that will credit funds to a beneficiary

        at another financial institution using the indicated scheme.


        Scheme | Applicable

        --- | ---

        ZA_EFT | ✓

        ZA_RPP | ✓

        ZA_RTC | ✓
      operationId: outboundCreditTransfer
      parameters:
        - in: header
          name: traceparent
          schema:
            $ref: '#/components/schemas/traceparent'
        - in: header
          name: tracestate
          schema:
            $ref: '#/components/schemas/tracestate'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreditTransfer'
            examples:
              RPP:
                $ref: '#/components/examples/OutboundCreditTransferRPP'
              EFT:
                $ref: '#/components/examples/OutboundCreditTransferEFT'
        required: true
      responses:
        '202':
          description: >-
            Accepted. [RFC9110 -
            202](https://www.rfc-editor.org/rfc/rfc9110#name-202-accepted)
        '400':
          description: >-
            Bad request. [RFC9110 -
            400](https://www.rfc-editor.org/rfc/rfc9110#name-400-bad-request)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '401':
          description: >-
            Unauthorized. [RFC9110 -
            401](https://www.rfc-editor.org/rfc/rfc9110#name-401-unauthorized)
        '403':
          description: >-
            Forbidden. [RFC9110 -
            403](https://www.rfc-editor.org/rfc/rfc9110#name-403-forbidden)
        '405':
          description: >-
            Method not allowed. [RFC9110 -
            405](https://www.rfc-editor.org/rfc/rfc9110#name-405-method-not-allowed)
        '422':
          description: >-
            Unprocessable content. [RFC9110 -
            422](https://www.rfc-editor.org/rfc/rfc9110#name-422-unprocessable-content)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '429':
          description: >-
            Too Many Requests. [RFC6585 -
            429](https://www.rfc-editor.org/rfc/rfc6585.html#section-4)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '500':
          description: >-
            Internal server error. [RFC9110 -
            500](https://www.rfc-editor.org/rfc/rfc9110#name-500-internal-server-error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
              examples:
                ServerError:
                  $ref: '#/components/examples/ErrorDetailServerError'
        '503':
          description: >-
            Service unavailable. [RFC9110 -
            503](https://www.rfc-editor.org/rfc/rfc9110#name-503-service-unavailable)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
              examples:
                ServerError:
                  $ref: '#/components/examples/ErrorDetailServerError'
  /transactions/outbound/bulk/credit-transfer:
    post:
      tags:
        - transactional
        - credit-transfer
        - financial
        - bulk
      summary: Perform a 'bulk' credit transfer initiation against a scheme
      description: >
        This operation is **asynchronous**. It is responded to by the
        [outboundBulkCreditTransferResponse
        operation](https://api.electrum.io/elpapi/openapi/elpapi-partner/operation/outboundBulkCreditTransferResponse/)


        Instructs Electrum to execute multiple outbound credit transfer
        transactions that will credit funds to different beneficiaries at

        other financial institutions or the partner bank using the indicated
        scheme.


        Scheme | Applicable

        --- | ---

        ZA_EFT | x

        ZA_RPP | ✓

        ZA_RTC | ✓
      operationId: outboundBulkCreditTransfer
      parameters:
        - in: header
          name: traceparent
          schema:
            $ref: '#/components/schemas/traceparent'
        - in: header
          name: tracestate
          schema:
            $ref: '#/components/schemas/tracestate'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreditTransferInitiation'
            examples:
              RPP:
                $ref: '#/components/examples/OutboundBulkCreditTransferRPP'
        required: true
      responses:
        '202':
          description: >-
            Accepted. [RFC9110 -
            202](https://www.rfc-editor.org/rfc/rfc9110#name-202-accepted)
        '400':
          description: >-
            Bad request. [RFC9110 -
            400](https://www.rfc-editor.org/rfc/rfc9110#name-400-bad-request)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '401':
          description: >-
            Unauthorized. [RFC9110 -
            401](https://www.rfc-editor.org/rfc/rfc9110#name-401-unauthorized)
        '403':
          description: >-
            Forbidden. [RFC9110 -
            403](https://www.rfc-editor.org/rfc/rfc9110#name-403-forbidden)
        '405':
          description: >-
            Method not allowed. [RFC9110 -
            405](https://www.rfc-editor.org/rfc/rfc9110#name-405-method-not-allowed)
        '422':
          description: >-
            Unprocessable content. [RFC9110 -
            422](https://www.rfc-editor.org/rfc/rfc9110#name-422-unprocessable-content)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '429':
          description: >-
            Too Many Requests. [RFC6585 -
            429](https://www.rfc-editor.org/rfc/rfc6585.html#section-4)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '500':
          description: >-
            Internal server error. [RFC9110 -
            500](https://www.rfc-editor.org/rfc/rfc9110#name-500-internal-server-error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
              examples:
                ServerError:
                  $ref: '#/components/examples/ErrorDetailServerError'
        '503':
          description: >-
            Service unavailable. [RFC9110 -
            503](https://www.rfc-editor.org/rfc/rfc9110#name-503-service-unavailable)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
              examples:
                ServerError:
                  $ref: '#/components/examples/ErrorDetailServerError'
  /transactions/outbound/credit-transfer/status-request:
    post:
      tags:
        - transactional
        - credit-transfer
      summary: Retrieve information about an outbound credit transfer
      description: >
        This operation is **asynchronous**. It is responded to by the
        [outboundCreditTransferResponse
        operation](https://api.electrum.io/elpapi/openapi/elpapi-partner/operation/outboundCreditTransferResponse/)


        A query for information about a previously submitted outbound credit
        transfer. This operation may

        be called at any time by the partner in order to query the state of the
        outbound transfer. If

        acknowledged by the server, the current status of the transaction will
        be communicated to the

        partner via the `outboundCreditTransferResponse` operation of the
        Partner API.


        Scheme | Applicable

        --- | ---

        ZA_EFT | ✓

        ZA_RPP | ✓

        ZA_RTC | ✓
      operationId: getOutboundCreditTransferStatus
      parameters:
        - in: header
          name: traceparent
          schema:
            $ref: '#/components/schemas/traceparent'
        - in: header
          name: tracestate
          schema:
            $ref: '#/components/schemas/tracestate'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreditTransferStatusRequest'
            examples:
              StatusRequest:
                $ref: '#/components/examples/CreditTransferStatusRequestExample'
        required: true
      responses:
        '202':
          description: >-
            Accepted. [RFC9110 -
            202](https://www.rfc-editor.org/rfc/rfc9110#name-202-accepted)
        '400':
          description: >-
            Bad request. [RFC9110 -
            400](https://www.rfc-editor.org/rfc/rfc9110#name-400-bad-request)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '401':
          description: >-
            Unauthorized. [RFC9110 -
            401](https://www.rfc-editor.org/rfc/rfc9110#name-401-unauthorized)
        '403':
          description: >-
            Forbidden. [RFC9110 -
            403](https://www.rfc-editor.org/rfc/rfc9110#name-403-forbidden)
        '404':
          description: >
            Not Found. [RFC9110 -
            404](https://www.rfc-editor.org/rfc/rfc9110#name-404-not-found)


            Indicates that the original transaction cannot be found. Subsequent
            requests for the transaction status may elicit

            either an HTTP 202 or HTTP 409 response if a
            `outboundCreditTransfer` operation is submitted later with matching
            identifiers.
        '405':
          description: >-
            Method not allowed. [RFC9110 -
            405](https://www.rfc-editor.org/rfc/rfc9110#name-405-method-not-allowed)
        '409':
          description: >
            Conflict. [RFC9110 -
            409](https://www.rfc-editor.org/rfc/rfc9110#name-409-conflict)


            Indicates that the original `outboundCreditTransfer` operation was
            negatively acknowledged for some reason. The body of the

            response will echo the HTTP status and `ErrorDetail` of the original
            negative acknowledgement.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OriginalErrorResponse'
              examples:
                StatusRequest:
                  $ref: '#/components/examples/OriginalErrorResponseBadRequest'
        '422':
          description: >-
            Unprocessable content. [RFC9110 -
            422](https://www.rfc-editor.org/rfc/rfc9110#name-422-unprocessable-content)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '429':
          description: >-
            Too Many Requests. [RFC6585 -
            429](https://www.rfc-editor.org/rfc/rfc6585.html#section-4)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '500':
          description: >-
            Internal server error. [RFC9110 -
            500](https://www.rfc-editor.org/rfc/rfc9110#name-500-internal-server-error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
              examples:
                ServerError:
                  $ref: '#/components/examples/ErrorDetailServerError'
        '503':
          description: >-
            Service unavailable. [RFC9110 -
            503](https://www.rfc-editor.org/rfc/rfc9110#name-503-service-unavailable)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
              examples:
                ServerError:
                  $ref: '#/components/examples/ErrorDetailServerError'
  /transactions/outbound/bulk/credit-transfer/status-request:
    post:
      tags:
        - transactional
        - credit-transfer
        - bulk
      summary: Retrieve information about an outbound bulk credit transfer initiation
      description: >
        This operation is **asynchronous**. It is responded to by the
        [outboundBulkCreditTransferResponse
        operation](https://api.electrum.io/elpapi/openapi/elpapi-partner/operation/outboundBulkCreditTransferResponse/)


        A query for information about a previously submitted outbound bulk
        credit transfer initiation. This operation may

        be called at any time by the partner in order to query the state of the
        outbound request. If

        acknowledged by the server, the current status of the 'bulk' will be
        communicated to the

        partner via the `outboundBulkCreditTransferResponse` operation of the
        Partner API.


        Scheme | Applicable

        --- | ---

        ZA_EFT | ✗

        ZA_RPP | ✓

        ZA_RTC | ✓
      operationId: getOutboundBulkCreditTransferStatus
      parameters:
        - in: header
          name: traceparent
          schema:
            $ref: '#/components/schemas/traceparent'
        - in: header
          name: tracestate
          schema:
            $ref: '#/components/schemas/tracestate'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreditTransferInitiationStatusRequest'
            examples:
              BulkStatusRequest:
                $ref: '#/components/examples/BulkCreditTransferStatusRequestExample'
        required: true
      responses:
        '202':
          description: >-
            Accepted. [RFC9110 -
            202](https://www.rfc-editor.org/rfc/rfc9110#name-202-accepted)
        '400':
          description: >-
            Bad request. [RFC9110 -
            400](https://www.rfc-editor.org/rfc/rfc9110#name-400-bad-request)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '401':
          description: >-
            Unauthorized. [RFC9110 -
            401](https://www.rfc-editor.org/rfc/rfc9110#name-401-unauthorized)
        '403':
          description: >-
            Forbidden. [RFC9110 -
            403](https://www.rfc-editor.org/rfc/rfc9110#name-403-forbidden)
        '404':
          description: >
            Not Found. [RFC9110 -
            404](https://www.rfc-editor.org/rfc/rfc9110#name-404-not-found)


            Indicates that the original initiation cannot be found. Subsequent
            requests for the initiation status may elicit

            either an HTTP 202 or HTTP 409 response if a
            `outboundBulkCreditTransfer` operation is submitted later with
            matching identifiers.
        '405':
          description: >-
            Method not allowed. [RFC9110 -
            405](https://www.rfc-editor.org/rfc/rfc9110#name-405-method-not-allowed)
        '409':
          description: >
            Conflict. [RFC9110 -
            409](https://www.rfc-editor.org/rfc/rfc9110#name-409-conflict)


            Indicates that the original `outboundBulkCreditTransfer` operation
            was negatively acknowledged for some reason. The body of the

            response will echo the HTTP status and `ErrorDetail` of the original
            negative acknowledgement.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OriginalErrorResponse'
              examples:
                BulkStatusRequest:
                  $ref: '#/components/examples/OriginalErrorResponseBadRequest'
        '422':
          description: >-
            Unprocessable content. [RFC9110 -
            422](https://www.rfc-editor.org/rfc/rfc9110#name-422-unprocessable-content)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '429':
          description: >-
            Too Many Requests. [RFC6585 -
            429](https://www.rfc-editor.org/rfc/rfc6585.html#section-4)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '500':
          description: >-
            Internal server error. [RFC9110 -
            500](https://www.rfc-editor.org/rfc/rfc9110#name-500-internal-server-error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
              examples:
                ServerError:
                  $ref: '#/components/examples/ErrorDetailServerError'
        '503':
          description: >-
            Service unavailable. [RFC9110 -
            503](https://www.rfc-editor.org/rfc/rfc9110#name-503-service-unavailable)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
              examples:
                ServerError:
                  $ref: '#/components/examples/ErrorDetailServerError'
  /transactions/inbound/credit-transfer-response:
    post:
      tags:
        - transactional
        - credit-transfer
      summary: Respond to an inbound credit transfer request
      description: >
        This operation is **asynchronous**. It starts with the
        [inboundCreditTransfer
        operation](https://api.electrum.io/elpapi/openapi/elpapi-partner/operation/inboundCreditTransfer/)


        Invoked when a response to a credit transfer is available. The response
        will indicate the success or failure of

        the inbound credit transfer.


        Scheme | Applicable

        --- | ---

        ZA_EFT | ✓

        ZA_RPP | ✗

        ZA_RTC | ✗
      operationId: inboundCreditTransferResponse
      parameters:
        - in: header
          name: traceparent
          schema:
            $ref: '#/components/schemas/traceparent'
        - in: header
          name: tracestate
          schema:
            $ref: '#/components/schemas/tracestate'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PaymentStatusReport'
            examples:
              EFT_APPROVED:
                $ref: '#/components/examples/PaymentStatusReportApprovedEFT'
        required: true
      responses:
        '202':
          description: >-
            Accepted. [RFC9110 -
            202](https://www.rfc-editor.org/rfc/rfc9110#name-202-accepted)
        '400':
          description: >-
            Bad request. [RFC9110 -
            400](https://www.rfc-editor.org/rfc/rfc9110#name-400-bad-request)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '401':
          description: >-
            Unauthorized. [RFC9110 -
            401](https://www.rfc-editor.org/rfc/rfc9110#name-401-unauthorized)
        '403':
          description: >-
            Forbidden. [RFC9110 -
            403](https://www.rfc-editor.org/rfc/rfc9110#name-403-forbidden)
        '404':
          description: >
            Not Found. [RFC9110 -
            404](https://www.rfc-editor.org/rfc/rfc9110#name-404-not-found)


            Indicates that the associated request transaction cannot be found.
        '405':
          description: >-
            Method not allowed. [RFC9110 -
            405](https://www.rfc-editor.org/rfc/rfc9110#name-405-method-not-allowed)
        '422':
          description: >-
            Unprocessable content. [RFC9110 -
            422](https://www.rfc-editor.org/rfc/rfc9110#name-422-unprocessable-content)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '429':
          description: >-
            Too Many Requests. [RFC6585 -
            429](https://www.rfc-editor.org/rfc/rfc6585.html#section-4)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '500':
          description: >-
            Internal server error. [RFC9110 -
            500](https://www.rfc-editor.org/rfc/rfc9110#name-500-internal-server-error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
              examples:
                ServerError:
                  $ref: '#/components/examples/ErrorDetailServerError'
        '503':
          description: >-
            Service unavailable. [RFC9110 -
            503](https://www.rfc-editor.org/rfc/rfc9110#name-503-service-unavailable)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
              examples:
                ServerError:
                  $ref: '#/components/examples/ErrorDetailServerError'
  /transactions/inbound/credit-transfer-authorisation-response:
    post:
      tags:
        - transactional
        - credit-transfer
      summary: Respond to an inbound credit transfer authorisation request
      description: >
        This operation is **asynchronous**. It starts with the
        [inboundCreditTransferAuthorisation
        operation](https://api.electrum.io/elpapi/openapi/elpapi-partner/operation/inboundCreditTransferAuthorisation/)


        This operation is called by partners to provide a response approving or
        declining an inbound credit transfer

        authorisation request that Electrum made earlier. For declined
        authorisations, no further action is taken.

        For approved authorisations, Electrum will respond with a final callback
        indicating the successful completion

        of the credit transfer. For declined authorisations, no subsequent
        response is sent.


        Scheme | Applicable

        --- | ---

        ZA_EFT | ✗

        ZA_RPP | ✓

        ZA_RTC | ✓
      operationId: inboundCreditTransferAuthorisationResponse
      parameters:
        - in: header
          name: traceparent
          schema:
            $ref: '#/components/schemas/traceparent'
        - in: header
          name: tracestate
          schema:
            $ref: '#/components/schemas/tracestate'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PaymentStatusReport'
            examples:
              RTC_APPROVED:
                $ref: '#/components/examples/PaymentStatusReportInboundRtcApproved'
        required: true
      responses:
        '202':
          description: >-
            Accepted. [RFC9110 -
            202](https://www.rfc-editor.org/rfc/rfc9110#name-202-accepted)
        '400':
          description: >-
            Bad request. [RFC9110 -
            400](https://www.rfc-editor.org/rfc/rfc9110#name-400-bad-request)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '401':
          description: >-
            Unauthorized. [RFC9110 -
            401](https://www.rfc-editor.org/rfc/rfc9110#name-401-unauthorized)
        '403':
          description: >-
            Forbidden. [RFC9110 -
            403](https://www.rfc-editor.org/rfc/rfc9110#name-403-forbidden)
        '404':
          description: >
            Not Found. [RFC9110 -
            404](https://www.rfc-editor.org/rfc/rfc9110#name-404-not-found)


            Indicates that the associated request transaction cannot be found.
        '405':
          description: >-
            Method not allowed. [RFC9110 -
            405](https://www.rfc-editor.org/rfc/rfc9110#name-405-method-not-allowed)
        '422':
          description: >-
            Unprocessable content. [RFC9110 -
            422](https://www.rfc-editor.org/rfc/rfc9110#name-422-unprocessable-content)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '429':
          description: >-
            Too Many Requests. [RFC6585 -
            429](https://www.rfc-editor.org/rfc/rfc6585.html#section-4)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '500':
          description: >-
            Internal server error. [RFC9110 -
            500](https://www.rfc-editor.org/rfc/rfc9110#name-500-internal-server-error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
              examples:
                ServerError:
                  $ref: '#/components/examples/ErrorDetailServerError'
        '503':
          description: >-
            Service unavailable. [RFC9110 -
            503](https://www.rfc-editor.org/rfc/rfc9110#name-503-service-unavailable)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
              examples:
                ServerError:
                  $ref: '#/components/examples/ErrorDetailServerError'
  /transactions/inbound/credit-transfer/status-request:
    post:
      tags:
        - transactional
        - credit-transfer
      summary: Retrieve information about an inbound credit transfer
      description: >
        This operation is **asynchronous**. It is responded to by the
        [inboundCreditTransferCompletion
        operation](https://api.electrum.io/elpapi/openapi/elpapi-partner/operation/inboundCreditTransferResponse/)


        A query for information about a previously authorised inbound credit
        transfer. This operation may

        be called at any time by the partner in order to query the state of the
        inbound transfer. If

        acknowledged by the server, the current status of the transaction will
        be communicated to the

        partner via the `inboundCreditTransferCompletion` operation of the
        Partner API.


        Scheme | Applicable

        --- | ---

        ZA_EFT | ✓

        ZA_RPP | ✓

        ZA_RTC | ✓
      operationId: getInboundCreditTransferStatus
      parameters:
        - in: header
          name: traceparent
          schema:
            $ref: '#/components/schemas/traceparent'
        - in: header
          name: tracestate
          schema:
            $ref: '#/components/schemas/tracestate'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreditTransferStatusRequest'
            examples:
              StatusRequest:
                $ref: '#/components/examples/CreditTransferStatusRequestExample'
        required: true
      responses:
        '202':
          description: >-
            Accepted. [RFC9110 -
            202](https://www.rfc-editor.org/rfc/rfc9110#name-202-accepted)
        '400':
          description: >-
            Bad request. [RFC9110 -
            400](https://www.rfc-editor.org/rfc/rfc9110#name-400-bad-request)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '401':
          description: >-
            Unauthorized. [RFC9110 -
            401](https://www.rfc-editor.org/rfc/rfc9110#name-401-unauthorized)
        '403':
          description: >-
            Forbidden. [RFC9110 -
            403](https://www.rfc-editor.org/rfc/rfc9110#name-403-forbidden)
        '404':
          description: >
            Not Found. [RFC9110 -
            404](https://www.rfc-editor.org/rfc/rfc9110#name-404-not-found)


            Indicates that the original transaction cannot be found. Subsequent
            requests for the transaction status may elicit

            either an HTTP 202 or HTTP 409 response if a `inboundCreditTransfer`
            operation is submitted later with matching identifiers.
        '405':
          description: >-
            Method not allowed. [RFC9110 -
            405](https://www.rfc-editor.org/rfc/rfc9110#name-405-method-not-allowed)
        '409':
          description: >
            Conflict. [RFC9110 -
            409](https://www.rfc-editor.org/rfc/rfc9110#name-409-conflict)


            Indicates that the original `inboundCreditTransferAuthorisation`
            operation was negatively acknowledged for some reason.

            The body of the response will echo the HTTP status and `ErrorDetail`
            of the original negative acknowledgement.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OriginalErrorResponse'
              examples:
                StatusRequest:
                  $ref: '#/components/examples/OriginalErrorResponseBadRequest'
        '422':
          description: >-
            Unprocessable content. [RFC9110 -
            422](https://www.rfc-editor.org/rfc/rfc9110#name-422-unprocessable-content)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '429':
          description: >-
            Too Many Requests. [RFC6585 -
            429](https://www.rfc-editor.org/rfc/rfc6585.html#section-4)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '500':
          description: >-
            Internal server error. [RFC9110 -
            500](https://www.rfc-editor.org/rfc/rfc9110#name-500-internal-server-error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
              examples:
                ServerError:
                  $ref: '#/components/examples/ErrorDetailServerError'
        '503':
          description: >-
            Service unavailable. [RFC9110 -
            503](https://www.rfc-editor.org/rfc/rfc9110#name-503-service-unavailable)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
              examples:
                ServerError:
                  $ref: '#/components/examples/ErrorDetailServerError'
  /transactions/outbound/direct-debit:
    post:
      tags:
        - transactional
        - direct-debit
        - financial
      summary: Perform a direct debit against a scheme
      description: >
        This operation is **asynchronous**. It is responded to by the
        [outboundDirectDebitResponse
        operation](https://api.electrum.io/elpapi/openapi/elpapi-partner/operation/outboundDirectDebitResponse/).


        Instructs Electrum to execute an outbound direct debit transaction that
        will debit funds from a debtor

        at another financial institution using the indicated scheme.


        Scheme | Applicable

        --- | ---

        ZA_EFT | ✓

        ZA_RPP | ✗

        ZA_RTC | ✗
      operationId: outboundDirectDebit
      parameters:
        - in: header
          name: traceparent
          schema:
            $ref: '#/components/schemas/traceparent'
        - in: header
          name: tracestate
          schema:
            $ref: '#/components/schemas/tracestate'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DirectDebit'
            examples:
              EFT:
                $ref: '#/components/examples/InboundDirectDebitEFT'
        required: true
      responses:
        '202':
          description: >-
            Accepted. [RFC9110 -
            202](https://www.rfc-editor.org/rfc/rfc9110#name-202-accepted)
        '400':
          description: >-
            Bad request. [RFC9110 -
            400](https://www.rfc-editor.org/rfc/rfc9110#name-400-bad-request)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '401':
          description: >-
            Unauthorized. [RFC9110 -
            401](https://www.rfc-editor.org/rfc/rfc9110#name-401-unauthorized)
        '403':
          description: >-
            Forbidden. [RFC9110 -
            403](https://www.rfc-editor.org/rfc/rfc9110#name-403-forbidden)
        '405':
          description: >-
            Method not allowed. [RFC9110 -
            405](https://www.rfc-editor.org/rfc/rfc9110#name-405-method-not-allowed)
        '422':
          description: >-
            Unprocessable content. [RFC9110 -
            422](https://www.rfc-editor.org/rfc/rfc9110#name-422-unprocessable-content)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '429':
          description: >-
            Too Many Requests. [RFC6585 -
            429](https://www.rfc-editor.org/rfc/rfc6585.html#section-4)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '500':
          description: >-
            Internal server error. [RFC9110 -
            500](https://www.rfc-editor.org/rfc/rfc9110#name-500-internal-server-error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
              examples:
                ServerError:
                  $ref: '#/components/examples/ErrorDetailServerError'
        '503':
          description: >-
            Service unavailable. [RFC9110 -
            503](https://www.rfc-editor.org/rfc/rfc9110#name-503-service-unavailable)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
              examples:
                ServerError:
                  $ref: '#/components/examples/ErrorDetailServerError'
  /transactions/inbound/direct-debit-response:
    post:
      summary: Respond to an inbound direct debit request
      tags:
        - transactional
        - direct-debit
        - financial
      description: >
        This operation is **asynchronous**. It starts with the
        [inboundDirectDebit
        operation](https://api.electrum.io/elpapi/openapi/elpapi-partner/operation/inboundDirectDebit/)


        Invoked when a response to a direct debit is available. The response
        will indicate the success or failure of the

        inbound direct debit.


        Scheme | Applicable

        --- | ---

        ZA_EFT | ✓

        ZA_RPP | ✗

        ZA_RTC | ✗
      operationId: inboundDirectDebitResponse
      parameters:
        - in: header
          name: traceparent
          schema:
            $ref: '#/components/schemas/traceparent'
        - in: header
          name: tracestate
          schema:
            $ref: '#/components/schemas/tracestate'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PaymentStatusReport'
            examples:
              EFT_APPROVED:
                $ref: '#/components/examples/PaymentStatusReportApprovedEFT'
        required: true
      responses:
        '202':
          description: >-
            Accepted. [RFC9110 -
            202](https://www.rfc-editor.org/rfc/rfc9110#name-202-accepted)
        '400':
          description: >-
            Bad request. [RFC9110 -
            400](https://www.rfc-editor.org/rfc/rfc9110#name-400-bad-request)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '401':
          description: >-
            Unauthorized. [RFC9110 -
            401](https://www.rfc-editor.org/rfc/rfc9110#name-401-unauthorized)
        '403':
          description: >-
            Forbidden. [RFC9110 -
            403](https://www.rfc-editor.org/rfc/rfc9110#name-403-forbidden)
        '405':
          description: >-
            Method not allowed. [RFC9110 -
            405](https://www.rfc-editor.org/rfc/rfc9110#name-405-method-not-allowed)
        '422':
          description: >-
            Unprocessable content. [RFC9110 -
            422](https://www.rfc-editor.org/rfc/rfc9110#name-422-unprocessable-content)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '429':
          description: >-
            Too Many Requests. [RFC6585 -
            429](https://www.rfc-editor.org/rfc/rfc6585.html#section-4)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '500':
          description: >-
            Internal server error. [RFC9110 -
            500](https://www.rfc-editor.org/rfc/rfc9110#name-500-internal-server-error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
              examples:
                ServerError:
                  $ref: '#/components/examples/ErrorDetailServerError'
        '503':
          description: >-
            Service unavailable. [RFC9110 -
            503](https://www.rfc-editor.org/rfc/rfc9110#name-503-service-unavailable)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
              examples:
                ServerError:
                  $ref: '#/components/examples/ErrorDetailServerError'
  /transactions/inbound/payment-return-response:
    post:
      tags:
        - transactional
        - payment-return
        - financial
      summary: >-
        Respond to an inbound return for an earlier outbound direct debit or
        credit transfer
      description: >
        This operation is **asynchronous**. It starts with the
        [inboundPaymentReturn
        operation](https://api.electrum.io/elpapi/openapi/elpapi-partner/operation/inboundPaymentReturn/)


        This operation is called by partners to provide a response to an inbound
        payment return for an earlier outbound

        credit transfer or outbound direct debit. Note that some payment schemes
        may not support rejecting the return.

        In these cases, a rejected response will cause Electrum to mark the
        transaction as broken.


        Scheme | Applicable

        --- | ---

        ZA_EFT | ✓

        ZA_RPP | ✗

        ZA_RTC | ✗
      operationId: inboundPaymentReturnResponse
      parameters:
        - in: header
          name: traceparent
          schema:
            $ref: '#/components/schemas/traceparent'
        - in: header
          name: tracestate
          schema:
            $ref: '#/components/schemas/tracestate'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PaymentStatusReport'
            examples:
              EFT:
                $ref: '#/components/examples/PaymentStatusReportApprovedEFT'
        required: true
      responses:
        '202':
          description: >-
            Accepted. [RFC9110 -
            202](https://www.rfc-editor.org/rfc/rfc9110#name-202-accepted)
        '400':
          description: >-
            Bad request. [RFC9110 -
            400](https://www.rfc-editor.org/rfc/rfc9110#name-400-bad-request)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '401':
          description: >-
            Unauthorized. [RFC9110 -
            401](https://www.rfc-editor.org/rfc/rfc9110#name-401-unauthorized)
        '403':
          description: >-
            Forbidden. [RFC9110 -
            403](https://www.rfc-editor.org/rfc/rfc9110#name-403-forbidden)
        '405':
          description: >-
            Method not allowed. [RFC9110 -
            405](https://www.rfc-editor.org/rfc/rfc9110#name-405-method-not-allowed)
        '422':
          description: >-
            Unprocessable content. [RFC9110 -
            422](https://www.rfc-editor.org/rfc/rfc9110#name-422-unprocessable-content)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '429':
          description: >-
            Too Many Requests. [RFC6585 -
            429](https://www.rfc-editor.org/rfc/rfc6585.html#section-4)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '500':
          description: >-
            Internal server error. [RFC9110 -
            500](https://www.rfc-editor.org/rfc/rfc9110#name-500-internal-server-error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
              examples:
                ServerError:
                  $ref: '#/components/examples/ErrorDetailServerError'
        '503':
          description: >-
            Service unavailable. [RFC9110 -
            503](https://www.rfc-editor.org/rfc/rfc9110#name-503-service-unavailable)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
              examples:
                ServerError:
                  $ref: '#/components/examples/ErrorDetailServerError'
  /transactions/outbound/payment-return:
    post:
      tags:
        - transactional
        - payment-return
        - financial
      summary: >-
        Perform an outbound return for an earlier inbound direct debit or credit
        transfer
      description: >
        This operation is **asynchronous**. It is responded to by the
        [outboundPaymentReturnResponse
        operation](https://api.electrum.io/elpapi/openapi/elpapi-partner/operation/outboundPaymentReturnResponse/).


        Instructs Electrum to execute a return transaction that will return
        funds to the debtor of an earlier inbound

        direct debit or deduct funds from the creditor of an earlier inbound
        credit transfer.


        Scheme | Applicable

        --- | ---

        ZA_EFT | ✓

        ZA_RPP | ✗

        ZA_RTC | ✗
      operationId: outboundPaymentReturn
      parameters:
        - in: header
          name: traceparent
          schema:
            $ref: '#/components/schemas/traceparent'
        - in: header
          name: tracestate
          schema:
            $ref: '#/components/schemas/tracestate'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PaymentReturn'
            examples:
              EFT:
                $ref: '#/components/examples/PaymentReturnEFT'
        required: true
      responses:
        '202':
          description: >-
            Accepted. [RFC9110 -
            202](https://www.rfc-editor.org/rfc/rfc9110#name-202-accepted)
        '400':
          description: >-
            Bad request. [RFC9110 -
            400](https://www.rfc-editor.org/rfc/rfc9110#name-400-bad-request)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '401':
          description: >-
            Unauthorized. [RFC9110 -
            401](https://www.rfc-editor.org/rfc/rfc9110#name-401-unauthorized)
        '403':
          description: >-
            Forbidden. [RFC9110 -
            403](https://www.rfc-editor.org/rfc/rfc9110#name-403-forbidden)
        '405':
          description: >-
            Method not allowed. [RFC9110 -
            405](https://www.rfc-editor.org/rfc/rfc9110#name-405-method-not-allowed)
        '422':
          description: >-
            Unprocessable content. [RFC9110 -
            422](https://www.rfc-editor.org/rfc/rfc9110#name-422-unprocessable-content)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '429':
          description: >-
            Too Many Requests. [RFC6585 -
            429](https://www.rfc-editor.org/rfc/rfc6585.html#section-4)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '500':
          description: >-
            Internal server error. [RFC9110 -
            500](https://www.rfc-editor.org/rfc/rfc9110#name-500-internal-server-error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
              examples:
                ServerError:
                  $ref: '#/components/examples/ErrorDetailServerError'
        '503':
          description: >-
            Service unavailable. [RFC9110 -
            503](https://www.rfc-editor.org/rfc/rfc9110#name-503-service-unavailable)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
              examples:
                ServerError:
                  $ref: '#/components/examples/ErrorDetailServerError'
  /transactions/outbound/request-to-pay:
    post:
      tags:
        - request-to-pay
      summary: Request a payment to an account
      description: >
        Instructs Electrum to request an Industry Participant to credit an
        account at the partner.

        If the debtor (i.e. the Industry Participant's customer) agrees, an
        [inboundCreditTransfer

        operation](https://api.electrum.io/elpapi/openapi/elpapi-partner/operation/inboundCreditTransfer/)

        will be performed to credit the account. If the Industry Participant or
        Industry Operator rejects the

        request, this will be communicated via an [outboundRequestToPayResponse 
        operation](https://api.electrum.io/elpapi/openapi/elpapi-partner/operation/outboundRequestToPayResponse/).


        The Industry scheme may provide a confirmation that the request for a
        payment _is to be presented_

        to a payer _prior_ to the payer accepting or rejecting the request for a
        payment. Where this is the

        case, such a confirmation is communicated by way of an
        [outboundRequestToPayResponse
        operation](https://api.electrum.io/elpapi/openapi/elpapi-partner/operation/outboundRequestToPayResponse/).


        Scheme | Applicable

        --- | ---

        ZA_RPP | ✓

        ZA_EFT | ✗

        ZA_RTC | ✗
      operationId: outboundRequestToPay
      parameters:
        - in: header
          name: traceparent
          schema:
            $ref: '#/components/schemas/traceparent'
        - in: header
          name: tracestate
          schema:
            $ref: '#/components/schemas/tracestate'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RequestToPay'
            examples:
              RequestToPayExact:
                $ref: '#/components/examples/RequestToPayExact'
              RequestToPayAnyAmount:
                $ref: '#/components/examples/RequestToPayAnyAmount'
        required: true
      responses:
        '202':
          description: >-
            Accepted. [RFC9110 -
            202](https://www.rfc-editor.org/rfc/rfc9110#name-202-accepted)
        '400':
          description: >-
            Bad request. [RFC9110 -
            400](https://www.rfc-editor.org/rfc/rfc9110#name-400-bad-request)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '401':
          description: >-
            Unauthorized. [RFC9110 -
            401](https://www.rfc-editor.org/rfc/rfc9110#name-401-unauthorized)
        '403':
          description: >-
            Forbidden. [RFC9110 -
            403](https://www.rfc-editor.org/rfc/rfc9110#name-403-forbidden)
        '405':
          description: >-
            Method not allowed. [RFC9110 -
            405](https://www.rfc-editor.org/rfc/rfc9110#name-405-method-not-allowed)
        '422':
          description: >-
            Unprocessable content. [RFC9110 -
            422](https://www.rfc-editor.org/rfc/rfc9110#name-422-unprocessable-content)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '429':
          description: >-
            Too Many Requests. [RFC6585 -
            429](https://www.rfc-editor.org/rfc/rfc6585.html#section-4)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '500':
          description: >-
            Internal server error. [RFC9110 -
            500](https://www.rfc-editor.org/rfc/rfc9110#name-500-internal-server-error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
              examples:
                ServerError:
                  $ref: '#/components/examples/ErrorDetailServerError'
        '503':
          description: >-
            Service unavailable. [RFC9110 -
            503](https://www.rfc-editor.org/rfc/rfc9110#name-503-service-unavailable)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
  /transactions/inbound/request-to-pay-response:
    post:
      tags:
        - request-to-pay
      summary: Response to a prior request to pay
      description: >
        Communicates the status of a prior request to pay initiated by a
        customer of another Industry Participant.


        An `inboundRequestToPayResponse` may indicate that a request to pay,

        sent to the partner by Electrum, will be presented to the debtor (i.e.

        the partner's customer), has already been paid or has failed for some

        reason. A new unsolicited `inboundRequestToPayResponse` may be received

        for each status update of the request to pay.


        If Electrum is unsure of the status of an `inboundRequestToPay`, an

        [inboundRequestToPayStatusRequest](https://api.electrum.io/elpapi/openapi/elpapi-partner/operation/inboundRequestToPayStatusRequest/)

        may be used to solicit an up-to-date `inboundRequestToPayResponse`.


        Scheme | Applicable

        --- | ---

        ZA_RPP | ✓

        ZA_EFT | ✗

        ZA_RTC | ✗
      operationId: inboundRequestToPayResponse
      parameters:
        - in: header
          name: traceparent
          schema:
            $ref: '#/components/schemas/traceparent'
        - in: header
          name: tracestate
          schema:
            $ref: '#/components/schemas/tracestate'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RequestToPayResponse'
            examples:
              RequestToPayResponsePresented:
                $ref: '#/components/examples/RequestToPayResponsePresented'
              RequestToPayResponseCancelled:
                $ref: '#/components/examples/RequestToPayResponseCancelled'
              RequestToPayResponseRejected:
                $ref: '#/components/examples/RequestToPayResponseRejected'
              RequestToPayResponseExpired:
                $ref: '#/components/examples/RequestToPayResponseExpired'
              RequestToPayResponsePaid:
                $ref: '#/components/examples/RequestToPayResponsePaid'
        required: true
      responses:
        '202':
          description: >-
            Accepted. [RFC9110 -
            202](https://www.rfc-editor.org/rfc/rfc9110#name-202-accepted)
        '400':
          description: >-
            Bad request. [RFC9110 -
            400](https://www.rfc-editor.org/rfc/rfc9110#name-400-bad-request)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '401':
          description: >-
            Unauthorized. [RFC9110 -
            401](https://www.rfc-editor.org/rfc/rfc9110#name-401-unauthorized)
        '403':
          description: >-
            Forbidden. [RFC9110 -
            403](https://www.rfc-editor.org/rfc/rfc9110#name-403-forbidden)
        '405':
          description: >-
            Method not allowed. [RFC9110 -
            405](https://www.rfc-editor.org/rfc/rfc9110#name-405-method-not-allowed)
        '422':
          description: >-
            Unprocessable content. [RFC9110 -
            422](https://www.rfc-editor.org/rfc/rfc9110#name-422-unprocessable-content)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '429':
          description: >-
            Too Many Requests. [RFC6585 -
            429](https://www.rfc-editor.org/rfc/rfc6585.html#section-4)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '500':
          description: >-
            Internal server error. [RFC9110 -
            500](https://www.rfc-editor.org/rfc/rfc9110#name-500-internal-server-error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '503':
          description: >-
            Service unavailable. [RFC9110 -
            503](https://www.rfc-editor.org/rfc/rfc9110#name-503-service-unavailable)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
  /transactions/outbound/request-to-pay/cancellation-request:
    post:
      tags:
        - request-to-pay
      summary: Cancel a prior request for a payment to an account
      description: >
        Instructs Electrum to notify an Industry Participant that a prior
        [outboundRequestToPay 
        operation](https://api.electrum.io/elpapi/openapi/elpapi/operation/outboundRequestToPay/)

        should be cancelled if it's not yet been completed. This does not

        guarantee a cancellation however as the requested payment may have

        already been paid or rejected or expired etc. Whether the cancellation
        was successful or not is

        communicated via an [outboundRequestToPayCancellationResponse
        operation](https://api.electrum.io/elpapi/openapi/elpapi-partner/operation/outboundRequestToPayCancellationResponse/).

        If the cancellation was successful, the status will be `CANCELLED`.
        Otherwise the status will

        reflect the current status of the RTP.


        Scheme | Applicable

        --- | ---

        ZA_RPP | ✓

        ZA_EFT | ✗

        ZA_RTC | ✗
      operationId: outboundRequestToPayCancellationRequest
      parameters:
        - in: header
          name: traceparent
          schema:
            $ref: '#/components/schemas/traceparent'
        - in: header
          name: tracestate
          schema:
            $ref: '#/components/schemas/tracestate'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RequestToPayCancellation'
            examples:
              RequestToPayCancellation:
                $ref: '#/components/examples/RequestToPayCancellation'
        required: true
      responses:
        '202':
          description: >-
            Accepted. [RFC9110 -
            202](https://www.rfc-editor.org/rfc/rfc9110#name-202-accepted)
        '400':
          description: >-
            Bad request. [RFC9110 -
            400](https://www.rfc-editor.org/rfc/rfc9110#name-400-bad-request)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '401':
          description: >-
            Unauthorized. [RFC9110 -
            401](https://www.rfc-editor.org/rfc/rfc9110#name-401-unauthorized)
        '403':
          description: >-
            Forbidden. [RFC9110 -
            403](https://www.rfc-editor.org/rfc/rfc9110#name-403-forbidden)
        '405':
          description: >-
            Method not allowed. [RFC9110 -
            405](https://www.rfc-editor.org/rfc/rfc9110#name-405-method-not-allowed)
        '422':
          description: >-
            Unprocessable content. [RFC9110 -
            422](https://www.rfc-editor.org/rfc/rfc9110#name-422-unprocessable-content)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '429':
          description: >-
            Too Many Requests. [RFC6585 -
            429](https://www.rfc-editor.org/rfc/rfc6585.html#section-4)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '500':
          description: >-
            Internal server error. [RFC9110 -
            500](https://www.rfc-editor.org/rfc/rfc9110#name-500-internal-server-error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
              examples:
                ServerError:
                  $ref: '#/components/examples/ErrorDetailServerError'
        '503':
          description: >-
            Service unavailable. [RFC9110 -
            503](https://www.rfc-editor.org/rfc/rfc9110#name-503-service-unavailable)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
  /transactions/inbound/request-to-pay/cancellation-response:
    post:
      tags:
        - request-to-pay
      summary: The outcome of a prior cancellation request
      description: >
        Communicates the outcome of a prior
        [inboundRequestToPayCancellationRequest
        operation](https://api.electrum.io/elpapi/openapi/elpapi-partner/operation/inboundRequestToPayCancellationRequest/).


        An [inboundRequestToPayCancellationRequest
        operation](https://api.electrum.io/elpapi/openapi/elpapi-partner/operation/inboundRequestToPayCancellationRequest/)

        is not guaranteed to be successful. For example, if the associated
        [inboundRequestToPay](https://api.electrum.io/elpapi/openapi/elpapi-partner/operation/inboundRequestToPay/)

        has already been paid then it cannot be cancelled.


        Note too that if the associated
        [inboundRequestToPay](https://api.electrum.io/elpapi/openapi/elpapi-partner/operation/inboundRequestToPay/)

        was rejected or has already expired then the
        [inboundRequestToPayCancellationRequest
        operation](https://api.electrum.io/elpapi/openapi/elpapi-partner/operation/inboundRequestToPayCancellationRequest/)

        will be deemed to have failed despite the net result of no subsequent
        payment.

        This is because the final status of the
        [inboundRequestToPay](https://api.electrum.io/elpapi/openapi/elpapi-partner/operation/inboundRequestToPay/)

        will be something other than a cancellation.


        Scheme | Applicable

        --- | ---

        ZA_RPP | ✓

        ZA_EFT | ✗

        ZA_RTC | ✗
      operationId: inboundRequestToPayCancellationResponse
      parameters:
        - in: header
          name: traceparent
          schema:
            $ref: '#/components/schemas/traceparent'
        - in: header
          name: tracestate
          schema:
            $ref: '#/components/schemas/tracestate'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RequestToPayCancellationResponse'
            examples:
              RequestToPayCancellationResponseCancelled:
                $ref: >-
                  #/components/examples/RequestToPayCancellationResponseCancelled
              RequestToPayCancellationResponseAlreadyPaid:
                $ref: >-
                  #/components/examples/RequestToPayCancellationResponseAlreadyPaid
        required: true
      responses:
        '202':
          description: >-
            Accepted. [RFC9110 -
            202](https://www.rfc-editor.org/rfc/rfc9110#name-202-accepted)
        '400':
          description: >-
            Bad request. [RFC9110 -
            400](https://www.rfc-editor.org/rfc/rfc9110#name-400-bad-request)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '401':
          description: >-
            Unauthorized. [RFC9110 -
            401](https://www.rfc-editor.org/rfc/rfc9110#name-401-unauthorized)
        '403':
          description: >-
            Forbidden. [RFC9110 -
            403](https://www.rfc-editor.org/rfc/rfc9110#name-403-forbidden)
        '405':
          description: >-
            Method not allowed. [RFC9110 -
            405](https://www.rfc-editor.org/rfc/rfc9110#name-405-method-not-allowed)
        '422':
          description: >-
            Unprocessable content. [RFC9110 -
            422](https://www.rfc-editor.org/rfc/rfc9110#name-422-unprocessable-content)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '429':
          description: >-
            Too Many Requests. [RFC6585 -
            429](https://www.rfc-editor.org/rfc/rfc6585.html#section-4)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '500':
          description: >-
            Internal server error. [RFC9110 -
            500](https://www.rfc-editor.org/rfc/rfc9110#name-500-internal-server-error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '503':
          description: >-
            Service unavailable. [RFC9110 -
            503](https://www.rfc-editor.org/rfc/rfc9110#name-503-service-unavailable)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
  /transactions/outbound/refund-initiation:
    post:
      tags:
        - refund
        - request-to-pay
      summary: >-
        Initiate the processing of a refund which must relate to a prior
        successful financial transaction.
      description: >
        This operation is *asynchronous*. It is responded to by the
        [outboundRefundInitiationResponse
        operation](https://api.electrum.io/elpapi/openapi/elpapi-partner/operation/outboundRefundInitiationResponse/). 


        Initiate the processing of a refund which must relate to a prior
        successful financial transaction. Non-financial transactions cannot be
        refunded. Movement of funds in the processing of the refund is in the
        opposite direction to the original financial transaction.

        Refunds are cleared according to the
        `RefundInitiationRequest.paymentScheme`. The prior successful financial
        transaction must be of the same payment scheme.


        RTP-Refunds:

        Instructs Electrum to attempt to perform a refund for a prior
        [outboundRequestToPay
        operation](https://api.electrum.io/elpapi/openapi/elpapi/operation/outboundRequestToPay/)

        which was initiated by the Partner and paid by the recipient of the
        request-to-pay.


        The original request-to-pay should be referenced through
        `RefundInitiationRequest.originalTransactionIdentifiers.uetr`.

        Refunds are processed as a new
        [outboundCreditTransfer](https://api.electrum.io/elpapi/openapi/elpapi/operation/outboundCreditTransfer/)

        with Industry, using the new
        `RefundInitiationRequest.transactionIdentifiers.uetr`. Refunds are
        additionally subject to the same processing rules as other outbound
        financial payments.

        For example, if the refund recipients' account is closed, the refund
        will be rejected.


        An [outboundRefundInitiation
        operation](https://api.electrum.io/elpapi/openapi/elpapi/operation/outboundRefundInitiation/)

        is not guaranteed to be successful. `RefundInitiationRequest` are also
        subject to a number of "refund" validations before the refund request is
        accepted for processing, such as: 

        - A matching original request-to-pay must be found, using the
        `RequestToPayRefundRequests.originalTransactionIdentifiers.uetr`

        - Original request-to-pay must be in the `PAID` state, indicating the
        initiator of the request-to-pay has received funds

        - If provided, the requested refund amount must be less than the paid
        amount from the original request-to-pay. If omitted, the original paid
        amount will be used.

        - If provided, the `DebtorAccount` values will be used when reserving
        funds for the new refund payment. If omitted, the `CreditorAccount` of
        the original payment will be used. 


        NOTE: Refunds for Inbound request-to-pay's are not supported.


        Scheme | Applicable

        --- | ---

        ZA_RPP | ✓

        ZA_EFT | ✗

        ZA_RTC | ✗
      operationId: outboundRefundInitiation
      parameters:
        - in: header
          name: traceparent
          schema:
            $ref: '#/components/schemas/traceparent'
        - in: header
          name: tracestate
          schema:
            $ref: '#/components/schemas/tracestate'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RefundInitiationRequest'
            examples:
              RefundInitiationRequest:
                $ref: '#/components/examples/RefundInitiationRequest'
        required: true
      responses:
        '202':
          description: >-
            Accepted. [RFC9110 -
            202](https://www.rfc-editor.org/rfc/rfc9110#name-202-accepted)
        '400':
          description: >-
            Bad request. [RFC9110 -
            400](https://www.rfc-editor.org/rfc/rfc9110#name-400-bad-request)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '401':
          description: >-
            Unauthorized. [RFC9110 -
            401](https://www.rfc-editor.org/rfc/rfc9110#name-401-unauthorized)
        '403':
          description: >-
            Forbidden. [RFC9110 -
            403](https://www.rfc-editor.org/rfc/rfc9110#name-403-forbidden)
        '405':
          description: >-
            Method not allowed. [RFC9110 -
            405](https://www.rfc-editor.org/rfc/rfc9110#name-405-method-not-allowed)
        '422':
          description: >-
            Unprocessable content. [RFC9110 -
            422](https://www.rfc-editor.org/rfc/rfc9110#name-422-unprocessable-content)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '429':
          description: >-
            Too Many Requests. [RFC6585 -
            429](https://www.rfc-editor.org/rfc/rfc6585.html#section-4)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '500':
          description: >-
            Internal server error. [RFC9110 -
            500](https://www.rfc-editor.org/rfc/rfc9110#name-500-internal-server-error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
              examples:
                ServerError:
                  $ref: '#/components/examples/ErrorDetailServerError'
        '503':
          description: >-
            Service unavailable. [RFC9110 -
            503](https://www.rfc-editor.org/rfc/rfc9110#name-503-service-unavailable)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
  /transactions/outbound/request-to-pay/status-request:
    post:
      tags:
        - request-to-pay
      summary: Request the latest status of a prior request to pay
      description: >
        Requests the latest status of a prior [outboundRequestToPay
        operation](https://api.electrum.io/elpapi/openapi/elpapi/operation/outboundRequestToPay/).

        If Electrum knows the final status (e.g. it was cancelled, has expired

        or was paid or rejected), Electrum may report this without confirming

        the latest status with an Industry Participant. If the last status
        observed by

        Electrum was a temporary status (e.g. it was presented to the payer but

        has not yet been accepted or rejected or cancelled or expired),

        Electrum will request the latest status from the Industry Participant.


        The requested status is communicated via an

        [outboundRequestToPayResponse
        operation](https://api.electrum.io/elpapi/openapi/elpapi-partner/operation/outboundRequestToPayResponse/).


        Scheme | Applicable

        --- | ---

        ZA_RPP | ✓

        ZA_EFT | ✗

        ZA_RTC | ✗
      operationId: outboundRequestToPayStatusRequest
      parameters:
        - in: header
          name: traceparent
          schema:
            $ref: '#/components/schemas/traceparent'
        - in: header
          name: tracestate
          schema:
            $ref: '#/components/schemas/tracestate'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RequestToPayStatusRequest'
            examples:
              RequestToPayStatusRequest:
                $ref: '#/components/examples/RequestToPayStatusRequest'
        required: true
      responses:
        '202':
          description: >-
            Accepted. [RFC9110 -
            202](https://www.rfc-editor.org/rfc/rfc9110#name-202-accepted)
        '400':
          description: >-
            Bad request. [RFC9110 -
            400](https://www.rfc-editor.org/rfc/rfc9110#name-400-bad-request)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '401':
          description: >-
            Unauthorized. [RFC9110 -
            401](https://www.rfc-editor.org/rfc/rfc9110#name-401-unauthorized)
        '403':
          description: >-
            Forbidden. [RFC9110 -
            403](https://www.rfc-editor.org/rfc/rfc9110#name-403-forbidden)
        '405':
          description: >-
            Method not allowed. [RFC9110 -
            405](https://www.rfc-editor.org/rfc/rfc9110#name-405-method-not-allowed)
        '422':
          description: >-
            Unprocessable content. [RFC9110 -
            422](https://www.rfc-editor.org/rfc/rfc9110#name-422-unprocessable-content)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '429':
          description: >-
            Too Many Requests. [RFC6585 -
            429](https://www.rfc-editor.org/rfc/rfc6585.html#section-4)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '500':
          description: >-
            Internal server error. [RFC9110 -
            500](https://www.rfc-editor.org/rfc/rfc9110#name-500-internal-server-error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
              examples:
                ServerError:
                  $ref: '#/components/examples/ErrorDetailServerError'
        '503':
          description: >-
            Service unavailable. [RFC9110 -
            503](https://www.rfc-editor.org/rfc/rfc9110#name-503-service-unavailable)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
  /transactions/outbound/bulk/request-to-pay:
    post:
      tags:
        - bulk
        - transactional
        - request-to-pay
      summary: Perform a 'bulk' request to pay initiation against a scheme
      description: >
        This operation is **asynchronous**. It is responded to by the 

        [outboundBulkRequestToPayResponse
        operation](https://api.electrum.io/elpapi/openapi/elpapi-partner/operation/outboundBulkRequestToPayResponse/)


        Instructs Electrum to request multiple Industry Participants to credit
        multiple accounts at the partner.

        If the debtor associated with an RTP (i.e. the Industry Participant's
        customer) agrees, an [inboundCreditTransfer

        operation](https://api.electrum.io/elpapi/openapi/elpapi-partner/operation/inboundCreditTransfer/)

        will be performed to credit the account associated with that RTP. If the
        Industry Participant or Industry Operator rejects the

        request, this will be communicated via an [outboundRequestToPayResponse

        operation](https://api.electrum.io/elpapi/openapi/elpapi-partner/operation/outboundRequestToPayResponse/).

        These responses will be sent via an async call with the operation 

        [outboundBulkRequestToPayResponse](https://api.electrum.io/elpapi/openapi/elpapi-partner/operation/outboundBulkRequestToPayResponse/)


        The bulk status can be checked with the async request with operation 

        [getOutboundBulkRequestToPayStatus](https://api.electrum.io/elpapi/openapi/elpapi/operation/getOutboundBulkRequestToPayStatus/)


        Scheme | Applicable

        --- | ---

        ZA_RPP | ✓

        ZA_EFT | ✗

        ZA_RTC | ✗
      operationId: outboundBulkRequestToPay
      parameters:
        - in: header
          name: traceparent
          schema:
            $ref: '#/components/schemas/traceparent'
        - in: header
          name: tracestate
          schema:
            $ref: '#/components/schemas/tracestate'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RequestToPayInitiation'
            examples:
              RequestToPayStatusRequest:
                $ref: '#/components/examples/RequestToPayInitiation'
        required: true
      responses:
        '202':
          description: >-
            Accepted. [RFC9110 -
            202](https://www.rfc-editor.org/rfc/rfc9110#name-202-accepted)
        '400':
          description: >-
            Bad request. [RFC9110 -
            400](https://www.rfc-editor.org/rfc/rfc9110#name-400-bad-request)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '401':
          description: >-
            Unauthorized. [RFC9110 -
            401](https://www.rfc-editor.org/rfc/rfc9110#name-401-unauthorized)
        '403':
          description: >-
            Forbidden. [RFC9110 -
            403](https://www.rfc-editor.org/rfc/rfc9110#name-403-forbidden)
        '405':
          description: >-
            Method not allowed. [RFC9110 -
            405](https://www.rfc-editor.org/rfc/rfc9110#name-405-method-not-allowed)
        '422':
          description: >-
            Unprocessable content. [RFC9110 -
            422](https://www.rfc-editor.org/rfc/rfc9110#name-422-unprocessable-content)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '429':
          description: >-
            Too Many Requests. [RFC6585 -
            429](https://www.rfc-editor.org/rfc/rfc6585.html#section-4)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '500':
          description: >-
            Internal server error. [RFC9110 -
            500](https://www.rfc-editor.org/rfc/rfc9110#name-500-internal-server-error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
              examples:
                ServerError:
                  $ref: '#/components/examples/ErrorDetailServerError'
        '503':
          description: >-
            Service unavailable. [RFC9110 -
            503](https://www.rfc-editor.org/rfc/rfc9110#name-503-service-unavailable)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
  /transactions/outbound/bulk/request-to-pay/status-request:
    post:
      tags:
        - bulk
        - request-to-pay
        - transactional
      summary: Retrieve information about an outbound bulk request to pay initiation
      description: >
        This operation is **asynchronous**. It is responded to by the
        [outboundBulkRequestToPayResponse
        operation](https://api.electrum.io/elpapi/openapi/elpapi-partner/operation/outboundBulkRequestToPayResponse/)


        A query for information about a previously submitted outbound bulk
        request to pay initiation. This operation may

        be called at any time by the partner in order to query the state of the
        outbound request. If

        acknowledged by the server, the current status of the 'bulk' will be
        communicated to the

        partner via the `outboundBulkRequestToPayResponse` operation of the
        Partner API.


        The requested status is communicated via an

        [outboundBulkRequestToPayResponse](https://api.electrum.io/elpapi/openapi/elpapi-partner/operation/outboundBulkRequestToPayResponse/)


        Scheme | Applicable

        --- | ---

        ZA_RPP | ✓

        ZA_EFT | ✗

        ZA_RTC | ✗
      operationId: getOutboundBulkRequestToPayStatus
      parameters:
        - in: header
          name: traceparent
          schema:
            $ref: '#/components/schemas/traceparent'
        - in: header
          name: tracestate
          schema:
            $ref: '#/components/schemas/tracestate'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RequestToPayInitiationStatusRequest'
            examples:
              RequestToPayStatusRequest:
                $ref: '#/components/examples/examples-RequestToPayStatusRequest'
        required: true
      responses:
        '202':
          description: >-
            Accepted. [RFC9110 -
            202](https://www.rfc-editor.org/rfc/rfc9110#name-202-accepted)
        '400':
          description: >-
            Bad request. [RFC9110 -
            400](https://www.rfc-editor.org/rfc/rfc9110#name-400-bad-request)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '401':
          description: >-
            Unauthorized. [RFC9110 -
            401](https://www.rfc-editor.org/rfc/rfc9110#name-401-unauthorized)
        '403':
          description: >-
            Forbidden. [RFC9110 -
            403](https://www.rfc-editor.org/rfc/rfc9110#name-403-forbidden)
        '405':
          description: >-
            Method not allowed. [RFC9110 -
            405](https://www.rfc-editor.org/rfc/rfc9110#name-405-method-not-allowed)
        '422':
          description: >-
            Unprocessable content. [RFC9110 -
            422](https://www.rfc-editor.org/rfc/rfc9110#name-422-unprocessable-content)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '429':
          description: >-
            Too Many Requests. [RFC6585 -
            429](https://www.rfc-editor.org/rfc/rfc6585.html#section-4)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '500':
          description: >-
            Internal server error. [RFC9110 -
            500](https://www.rfc-editor.org/rfc/rfc9110#name-500-internal-server-error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
              examples:
                ServerError:
                  $ref: '#/components/examples/ErrorDetailServerError'
        '503':
          description: >-
            Service unavailable. [RFC9110 -
            503](https://www.rfc-editor.org/rfc/rfc9110#name-503-service-unavailable)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
  /accounts:
    put:
      tags:
        - account-management
        - proxy
      summary: Add or update a customer account record
      description: >
        This **synchronous** operation adds or updates a customer account
        record, when making use of Electrum account mirroring. Note

        that the supplied `Account` details object must include the Account's
        `primaryIdentifier` (which is in fact

        mandatory in the `Account` object). If the supplied `primaryIdentifier`
        is known, it will be assumed that this

        is an update operation. If the supplied `primaryIdentifier` is not
        known, it will be assumed that this is an

        insert operation.


        Behaviour:

        Electrum Account Mirror as Primary source of proxy data | Electrum
        Account Mirror as Secondary source of proxy data | Electrum Account
        Mirror deactivated

        --- | --- | ---

        As per description. | As per description. Note that the Electrum Account
        Mirror will overwrite stored information per the request sent. | Not
        allowed
      operationId: putCustomerAccount
      parameters:
        - in: header
          name: traceparent
          schema:
            $ref: '#/components/schemas/traceparent'
        - in: header
          name: tracestate
          schema:
            $ref: '#/components/schemas/tracestate'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AccountUpdateRequest'
            examples:
              UpdateRequest:
                $ref: '#/components/examples/AccountUpdateRequest'
        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)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '401':
          description: >-
            Unauthorized. [RFC9110 -
            401](https://www.rfc-editor.org/rfc/rfc9110#name-401-unauthorized)
        '403':
          description: >-
            Forbidden. [RFC9110 -
            403](https://www.rfc-editor.org/rfc/rfc9110#name-403-forbidden)
        '405':
          description: >-
            Method not allowed. [RFC9110 -
            405](https://www.rfc-editor.org/rfc/rfc9110#name-405-method-not-allowed)
        '422':
          description: >-
            Unprocessable content. [RFC9110 -
            422](https://www.rfc-editor.org/rfc/rfc9110#name-422-unprocessable-content)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '429':
          description: >-
            Too Many Requests. [RFC6585 -
            429](https://www.rfc-editor.org/rfc/rfc6585.html#section-4)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '500':
          description: >-
            Internal server error. [RFC9110 -
            500](https://www.rfc-editor.org/rfc/rfc9110#name-500-internal-server-error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
              examples:
                ServerError:
                  $ref: '#/components/examples/ErrorDetailServerError'
        '503':
          description: >-
            Service unavailable. [RFC9110 -
            503](https://www.rfc-editor.org/rfc/rfc9110#name-503-service-unavailable)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
              examples:
                ServerError:
                  $ref: '#/components/examples/ErrorDetailServerError'
  /accounts/get:
    post:
      tags:
        - account-management
        - proxy
      summary: Retrieve a customer account record
      description: >
        This **synchronous** operation retrieves the details of all accounts
        given an `accountId` when using the Electrum Account Mirror.

        The `accountId` is one of the unique identifiers for an account (e.g.
        `GenericAccountIdentifier.value` or

        `MobileNumberIdentifier.value`).


        Behaviour:

        Electrum Account Mirror as Primary source of proxy data | Electrum
        Account Mirror as Secondary source of proxy data | Electrum Account
        Mirror deactivated

        --- | --- | ---

        As per description. | As per description. | Not allowed
      operationId: getCustomerAccountWithPOST
      parameters:
        - in: header
          name: traceparent
          schema:
            $ref: '#/components/schemas/traceparent'
        - in: header
          name: tracestate
          schema:
            $ref: '#/components/schemas/tracestate'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AccountIdentifier'
      responses:
        '200':
          description: >-
            OK. [RFC9110 -
            200](https://www.rfc-editor.org/rfc/rfc9110#name-200-ok)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccountLookupResponse'
              examples:
                AccountLookupResponse:
                  $ref: '#/components/examples/AccountLookupResponseExample'
        '400':
          description: >-
            Bad request. [RFC9110 -
            400](https://www.rfc-editor.org/rfc/rfc9110#name-400-bad-request)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '401':
          description: >-
            Unauthorized. [RFC9110 -
            401](https://www.rfc-editor.org/rfc/rfc9110#name-401-unauthorized)
        '403':
          description: >-
            Forbidden. [RFC9110 -
            403](https://www.rfc-editor.org/rfc/rfc9110#name-403-forbidden)
        '404':
          description: >
            Not Found. [RFC9110 -
            404](https://www.rfc-editor.org/rfc/rfc9110#name-404-not-found)


            Indicates that the associated account cannot be found.
        '405':
          description: >-
            Method not allowed. [RFC9110 -
            405](https://www.rfc-editor.org/rfc/rfc9110#name-405-method-not-allowed)
        '429':
          description: >-
            Too Many Requests. [RFC6585 -
            429](https://www.rfc-editor.org/rfc/rfc6585.html#section-4)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '500':
          description: >-
            Internal server error. [RFC9110 -
            500](https://www.rfc-editor.org/rfc/rfc9110#name-500-internal-server-error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
              examples:
                ServerError:
                  $ref: '#/components/examples/ErrorDetailServerError'
        '503':
          description: >-
            Service unavailable. [RFC9110 -
            503](https://www.rfc-editor.org/rfc/rfc9110#name-503-service-unavailable)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
              examples:
                ServerError:
                  $ref: '#/components/examples/ErrorDetailServerError'
  /accounts/delete:
    post:
      tags:
        - account-management
        - proxy
      summary: Delete a customer account record
      description: >
        This **synchronous** operation deletes a customer account record from
        the Electrum account mirror. This is a

        permanent deletion.


        Behaviour:

        Electrum Account Mirror as Primary source of proxy data | Electrum
        Account Mirror as Secondary source of proxy data | Electrum Account
        Mirror deactivated

        --- | --- | ---

        As per description. | As per description. | Not allowed
      operationId: deleteCustomerAccountWithPOST
      parameters:
        - in: header
          name: traceparent
          schema:
            $ref: '#/components/schemas/traceparent'
        - in: header
          name: tracestate
          schema:
            $ref: '#/components/schemas/tracestate'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AccountIdentifier'
      responses:
        '204':
          description: >-
            No content. [RFC9110 -
            204](https://www.rfc-editor.org/rfc/rfc9110#name-204-no-content)
        '400':
          description: >-
            Bad request. [RFC9110 -
            400](https://www.rfc-editor.org/rfc/rfc9110#name-400-bad-request)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '401':
          description: >-
            Unauthorized. [RFC9110 -
            401](https://www.rfc-editor.org/rfc/rfc9110#name-401-unauthorized)
        '403':
          description: >-
            Forbidden. [RFC9110 -
            403](https://www.rfc-editor.org/rfc/rfc9110#name-403-forbidden)
        '404':
          description: >
            Not Found. [RFC9110 -
            404](https://www.rfc-editor.org/rfc/rfc9110#name-404-not-found)


            Indicates that the associated account cannot be found.
        '405':
          description: >-
            Method not allowed. [RFC9110 -
            405](https://www.rfc-editor.org/rfc/rfc9110#name-405-method-not-allowed)
        '429':
          description: >-
            Too Many Requests. [RFC6585 -
            429](https://www.rfc-editor.org/rfc/rfc6585.html#section-4)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '500':
          description: >-
            Internal server error. [RFC9110 -
            500](https://www.rfc-editor.org/rfc/rfc9110#name-500-internal-server-error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
              examples:
                ServerError:
                  $ref: '#/components/examples/ErrorDetailServerError'
        '503':
          description: >-
            Service unavailable. [RFC9110 -
            503](https://www.rfc-editor.org/rfc/rfc9110#name-503-service-unavailable)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
              examples:
                ServerError:
                  $ref: '#/components/examples/ErrorDetailServerError'
  /accounts/additional-identifiers:
    put:
      tags:
        - account-management
        - proxy
      summary: Update a customer account record with an additional identifier
      description: >
        This **synchronous** operation adds an additional identifier to a
        customer's account record. It will not report an error if the additional
        identifier already exists.


        Behaviour:

        Electrum Account Mirror as Primary source of proxy data | Electrum
        Account Mirror as Secondary source of proxy data | Electrum Account
        Mirror deactivated

        --- | --- | ---

        Adds an additional identifier to a customer account record | Adds an
        additional identifier to a customer account record. | Not allowed
      operationId: updateCustomerAccountAddId
      parameters:
        - in: header
          name: traceparent
          schema:
            $ref: '#/components/schemas/traceparent'
        - in: header
          name: tracestate
          schema:
            $ref: '#/components/schemas/tracestate'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AccountAdditionalIdUpdateRequest'
            examples:
              InstitutionId:
                $ref: '#/components/examples/AccountAdditionalIdUpdateRequestInst'
        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)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '401':
          description: >-
            Unauthorized. [RFC9110 -
            401](https://www.rfc-editor.org/rfc/rfc9110#name-401-unauthorized)
        '403':
          description: >-
            Forbidden. [RFC9110 -
            403](https://www.rfc-editor.org/rfc/rfc9110#name-403-forbidden)
        '404':
          description: >
            Not Found. [RFC9110 -
            404](https://www.rfc-editor.org/rfc/rfc9110#name-404-not-found)


            Indicates that the associated request transaction cannot be found.
        '405':
          description: >-
            Method not allowed. [RFC9110 -
            405](https://www.rfc-editor.org/rfc/rfc9110#name-405-method-not-allowed)
        '422':
          description: >-
            Unprocessable content. [RFC9110 -
            422](https://www.rfc-editor.org/rfc/rfc9110#name-422-unprocessable-content)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '429':
          description: >-
            Too Many Requests. [RFC6585 -
            429](https://www.rfc-editor.org/rfc/rfc6585.html#section-4)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '500':
          description: >-
            Internal server error. [RFC9110 -
            500](https://www.rfc-editor.org/rfc/rfc9110#name-500-internal-server-error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
              examples:
                ServerError:
                  $ref: '#/components/examples/ErrorDetailServerError'
        '503':
          description: >-
            Service unavailable. [RFC9110 -
            503](https://www.rfc-editor.org/rfc/rfc9110#name-503-service-unavailable)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
              examples:
                ServerError:
                  $ref: '#/components/examples/ErrorDetailServerError'
  /accounts/additional-identifiers/delete:
    post:
      tags:
        - account-management
        - proxy
      summary: Delete an additional identifier for a customer account record
      description: >
        This **synchronous** operation deletes the provided additional
        identifier from the Electrum account mirror. This is

        a permanent deletion. Note: this operation will report a failure if the
        provided `AccountIdentifier` is the only one

        associated with the account as this would result in an account with no
        identifier.


        Behaviour:

        Electrum Account Mirror as Primary source of proxy data | Electrum
        Account Mirror as Secondary source of proxy data | Electrum Account
        Mirror deactivated

        --- | --- | ---

        As per description. | As per description. We recommend using the `PUT
        /accounts` operation instead. | Not allowed
      operationId: deleteCustomerAccountAddIdWithPOST
      parameters:
        - in: header
          name: traceparent
          schema:
            $ref: '#/components/schemas/traceparent'
        - in: header
          name: tracestate
          schema:
            $ref: '#/components/schemas/tracestate'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AccountIdentifier'
        required: true
      responses:
        '204':
          description: >-
            No content. [RFC9110 -
            204](https://www.rfc-editor.org/rfc/rfc9110#name-204-no-content)
        '400':
          description: >-
            Bad request. [RFC9110 -
            400](https://www.rfc-editor.org/rfc/rfc9110#name-400-bad-request)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '401':
          description: >-
            Unauthorized. [RFC9110 -
            401](https://www.rfc-editor.org/rfc/rfc9110#name-401-unauthorized)
        '403':
          description: >-
            Forbidden. [RFC9110 -
            403](https://www.rfc-editor.org/rfc/rfc9110#name-403-forbidden)
        '404':
          description: >
            Not Found. [RFC9110 -
            404](https://www.rfc-editor.org/rfc/rfc9110#name-404-not-found)


            Indicates that the associated request transaction cannot be found.
        '405':
          description: >-
            Method not allowed. [RFC9110 -
            405](https://www.rfc-editor.org/rfc/rfc9110#name-405-method-not-allowed)
        '429':
          description: >-
            Too Many Requests. [RFC6585 -
            429](https://www.rfc-editor.org/rfc/rfc6585.html#section-4)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '500':
          description: >-
            Internal server error. [RFC9110 -
            500](https://www.rfc-editor.org/rfc/rfc9110#name-500-internal-server-error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
              examples:
                ServerError:
                  $ref: '#/components/examples/ErrorDetailServerError'
        '503':
          description: >-
            Service unavailable. [RFC9110 -
            503](https://www.rfc-editor.org/rfc/rfc9110#name-503-service-unavailable)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
              examples:
                ServerError:
                  $ref: '#/components/examples/ErrorDetailServerError'
  /schemes/registered-identifiers/register:
    post:
      tags:
        - accounts
        - proxy
      summary: Register an account identifier externally with a scheme
      description: >
        This operation is **synchronous**.


        This operation can be used to register an account identifier externally
        with a specific scheme (determined by the body of

        the operation). This effectively makes the account that is associated
        with the registered account identifier

        addressable externally from the scheme.


        Behaviour:

        Electrum Account Mirror as Primary source of proxy data | Electrum
        Account Mirror as Secondary source of proxy data | Electrum Account
        Mirror deactivated

        --- | --- | ---

        As per description. The Electrum Account Mirror will also automatically
        store scheme registration information for the identifier in question. |
        As per description. The Electrum Account Mirror *will not* store the
        scheme registration information. The client must subsequently use either
        the `PUT /accounts` or `PUT /accounts/additional-identifiers` to update
        the identifier scheme registration information within the Account
        Mirror. | Not allowed
      operationId: registerCustomerAccountAddIdWithScheme
      parameters:
        - in: header
          name: traceparent
          schema:
            $ref: '#/components/schemas/traceparent'
        - in: header
          name: tracestate
          schema:
            $ref: '#/components/schemas/tracestate'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/IdentifierSchemeRegistrationRequest'
            examples:
              IdentifierSchemeRegistrationRequest:
                $ref: >-
                  #/components/examples/IdentifierSchemeRegistrationRequestExample
        required: true
      responses:
        '200':
          description: >-
            OK. [RFC9110 -
            200](https://www.rfc-editor.org/rfc/rfc9110#name-200-ok)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IdentifierSchemeRegistrationResponse'
              examples:
                IdentifierSchemeRegistrationResponseAccepted:
                  $ref: >-
                    #/components/examples/IdentifierSchemeRegistrationResponseAccepted
                IdentifierSchemeRegistrationResponseRejected:
                  $ref: >-
                    #/components/examples/IdentifierSchemeRegistrationResponseRejected
        '400':
          description: >-
            Bad request. [RFC9110 -
            400](https://www.rfc-editor.org/rfc/rfc9110#name-400-bad-request)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '404':
          description: >-
            Not found. [RFC9110 -
            404](https://www.rfc-editor.org/rfc/rfc9110#name-404-not-found)
        '422':
          description: >-
            Unprocessable content. [RFC9110 -
            422](https://www.rfc-editor.org/rfc/rfc9110#name-422-unprocessable-content)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '429':
          description: >-
            Too Many Requests. [RFC6585 -
            429](https://www.rfc-editor.org/rfc/rfc6585.html#section-4)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '500':
          description: >-
            Internal server error. [RFC9110 -
            500](https://www.rfc-editor.org/rfc/rfc9110#name-500-internal-server-error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
              examples:
                ServerError:
                  $ref: '#/components/examples/ErrorDetailServerError'
        '503':
          description: >-
            Service unavailable. [RFC9110 -
            503](https://www.rfc-editor.org/rfc/rfc9110#name-503-service-unavailable)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
              examples:
                ServerError:
                  $ref: '#/components/examples/ErrorDetailServerError'
  /schemes/registered-identifiers/deregister:
    post:
      tags:
        - account-management
        - proxy
      summary: Deregister an account identifier externally with a scheme
      description: >
        This **synchronous** operation deregisters an account identifier with a
        specific scheme. This effectively makes

        it impossible to address the account externally from the scheme.


        Behaviour:

        Electrum Account Mirror as Primary source of proxy data | Electrum
        Account Mirror as Secondary source of proxy data | Electrum Account
        Mirror deactivated

        --- | --- | ---

        As per description. | As per description. | Not allowed
      operationId: deregisterCustomerAccountAddIdWithScheme
      parameters:
        - in: header
          name: traceparent
          schema:
            $ref: '#/components/schemas/traceparent'
        - in: header
          name: tracestate
          schema:
            $ref: '#/components/schemas/tracestate'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/IdentifierSchemeDeregistrationRequest'
            examples:
              IdentifierSchemeDeregistrationRequest:
                $ref: >-
                  #/components/examples/IdentifierSchemeDeregistrationRequestExample
        required: true
      responses:
        '200':
          description: >-
            OK. [RFC9110 -
            200](https://www.rfc-editor.org/rfc/rfc9110#name-200-ok)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IdentifierSchemeDeregistrationResponse'
              examples:
                IdentifierSchemeRegistrationResponseAccepted:
                  $ref: >-
                    #/components/examples/IdentifierSchemeDeregistrationResponseAccepted
                IdentifierSchemeRegistrationResponseRejected:
                  $ref: >-
                    #/components/examples/IdentifierSchemeDeregistrationResponseRejected
        '400':
          description: >-
            Bad request. [RFC9110 -
            400](https://www.rfc-editor.org/rfc/rfc9110#name-400-bad-request)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '404':
          description: >-
            Not found. [RFC9110 -
            404](https://www.rfc-editor.org/rfc/rfc9110#name-404-not-found)
        '422':
          description: >-
            Unprocessable content. [RFC9110 -
            422](https://www.rfc-editor.org/rfc/rfc9110#name-422-unprocessable-content)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '429':
          description: >-
            Too Many Requests. [RFC6585 -
            429](https://www.rfc-editor.org/rfc/rfc6585.html#section-4)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '500':
          description: >-
            Internal server error. [RFC9110 -
            500](https://www.rfc-editor.org/rfc/rfc9110#name-500-internal-server-error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
              examples:
                ServerError:
                  $ref: '#/components/examples/ErrorDetailServerError'
        '503':
          description: >-
            Service unavailable. [RFC9110 -
            503](https://www.rfc-editor.org/rfc/rfc9110#name-503-service-unavailable)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
              examples:
                ServerError:
                  $ref: '#/components/examples/ErrorDetailServerError'
  /schemes/registered-identifiers/{registeredAccountId}:
    get:
      tags:
        - account-management
        - proxy
      summary: Retrieve list of schemes where an account identifier is registered
      description: >
        This **synchronous** operation retrieves a set of schemes for which the
        provided account identifier is registered.


        Behaviour:

        Electrum Account Mirror as Primary source of proxy data | Electrum
        Account Mirror as Secondary source of proxy data | Electrum Account
        Mirror deactivated

        --- | --- | ---

        As per description. | As per description. | Not allowed
      operationId: getRegisteredSchemesForAccountId
      parameters:
        - in: header
          name: traceparent
          schema:
            $ref: '#/components/schemas/traceparent'
        - in: header
          name: tracestate
          schema:
            $ref: '#/components/schemas/tracestate'
        - name: registeredAccountId
          in: path
          description: >-
            The value of the account identifier for which schemes that it is
            registered against must be retrieved. This value *must* be URL
            encoded.
          required: true
          schema:
            type: string
      responses:
        '200':
          description: >-
            OK. [RFC9110 -
            200](https://www.rfc-editor.org/rfc/rfc9110#name-200-ok)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IdentifierSchemeRegistrations'
              examples:
                IdentifierSchemeRegistrationsExample:
                  $ref: '#/components/examples/IdentifierSchemeRegistrationsExample'
        '400':
          description: >-
            Bad request. [RFC9110 -
            400](https://www.rfc-editor.org/rfc/rfc9110#name-400-bad-request)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '401':
          description: >-
            Unauthorized. [RFC9110 -
            401](https://www.rfc-editor.org/rfc/rfc9110#name-401-unauthorized)
        '403':
          description: >-
            Forbidden. [RFC9110 -
            403](https://www.rfc-editor.org/rfc/rfc9110#name-403-forbidden)
        '404':
          description: >
            Not Found. [RFC9110 -
            404](https://www.rfc-editor.org/rfc/rfc9110#name-404-not-found)
        '405':
          description: >-
            Method not allowed. [RFC9110 -
            405](https://www.rfc-editor.org/rfc/rfc9110#name-405-method-not-allowed)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '422':
          description: >-
            Unprocessable content. [RFC9110 -
            422](https://www.rfc-editor.org/rfc/rfc9110#name-422-unprocessable-content)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '429':
          description: >-
            Too Many Requests. [RFC6585 -
            429](https://www.rfc-editor.org/rfc/rfc6585.html#section-4)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '500':
          description: >-
            Internal server error. [RFC9110 -
            500](https://www.rfc-editor.org/rfc/rfc9110#name-500-internal-server-error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
              examples:
                ServerError:
                  $ref: '#/components/examples/ErrorDetailServerError'
        '503':
          description: >-
            Service unavailable. [RFC9110 -
            503](https://www.rfc-editor.org/rfc/rfc9110#name-503-service-unavailable)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
              examples:
                ServerError:
                  $ref: '#/components/examples/ErrorDetailServerError'
  /schemes/inquiry:
    post:
      tags:
        - scheme-inquiry
      summary: Perform an inquiry on a particular scheme
      description: >
        This operation is **synchronous**.


        The scheme inquiry operation can be called to perform an inquiry on some
        information relevant to the given

        scheme, typically for the purposes of retrieving administrative or
        operational information. For example, this

        operation would be used to retrieve a list of valid domains for the
        `ZA_RPP` scheme.


        In this context, a partner sends Electrum an inquiry destined for a
        particular industry and scheme.

        Scheme | Applicable

        --- | ---

        ZA_EFT | ✗

        ZA_RPP | ✓

        ZA_RTC | ✗
      operationId: outboundSchemeInquiry
      parameters:
        - in: header
          name: traceparent
          schema:
            $ref: '#/components/schemas/traceparent'
        - in: header
          name: tracestate
          schema:
            $ref: '#/components/schemas/tracestate'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SchemeInquiryRequest'
            examples:
              ZaRppDomainListSchemeInquiry:
                $ref: '#/components/examples/ZaRppDomainListSchemeInquiry'
        required: true
      responses:
        '200':
          description: >-
            OK. [RFC9110 -
            200](https://www.rfc-editor.org/rfc/rfc9110#name-200-ok)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SchemeInquiryResponse'
              examples:
                ZaRppListDomainsReport:
                  $ref: '#/components/examples/ZaRppListDomainsReport'
        '400':
          description: >-
            Bad request. [RFC9110 -
            400](https://www.rfc-editor.org/rfc/rfc9110#name-400-bad-request)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '401':
          description: >-
            Unauthorized. [RFC9110 -
            401](https://www.rfc-editor.org/rfc/rfc9110#name-401-unauthorized)
        '403':
          description: >-
            Forbidden. [RFC9110 -
            403](https://www.rfc-editor.org/rfc/rfc9110#name-403-forbidden)
        '405':
          description: >-
            Method not allowed. [RFC9110 -
            405](https://www.rfc-editor.org/rfc/rfc9110#name-405-method-not-allowed)
        '422':
          description: >-
            Unprocessable content. [RFC9110 -
            422](https://www.rfc-editor.org/rfc/rfc9110#name-422-unprocessable-content)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '429':
          description: >-
            Too Many Requests. [RFC6585 -
            429](https://www.rfc-editor.org/rfc/rfc6585.html#section-4)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '500':
          description: >-
            Internal server error. [RFC9110 -
            500](https://www.rfc-editor.org/rfc/rfc9110#name-500-internal-server-error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
              examples:
                ServerError:
                  $ref: '#/components/examples/ErrorDetailServerError'
        '503':
          description: >-
            Service unavailable. [RFC9110 -
            503](https://www.rfc-editor.org/rfc/rfc9110#name-503-service-unavailable)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
              examples:
                ServerError:
                  $ref: '#/components/examples/ErrorDetailServerError'
  /identifiers/outbound/identifier-determination:
    post:
      tags:
        - identifier-determination
      summary: Request identifier information
      description: >
        This operation is **asynchronous**. The outcome of the request is
        delivered by the `outboundIdentifierDeterminationReport`

        [operation](https://api.electrum.io/elpapi/openapi/elpapi-partner/operation/outboundIdentifierDeterminationReport/).


        The outbound identifier determination operation can be called to resolve
        additional information about an identifier, for example

        to resolve a proxy.


        In the context of an outbound payment, a partner sends Electrum an
        identifier determination inquiry. Electrum then performs whatever
        routing, orchestration and protocol translation is necessary to fulfil
        the request with the correct upstream party.


        Scheme | Applicable | Function Enabled

        --- | --- | ---

        ZA_EFT | ✗ | N/A

        ZA_RPP | ✓ | Proxy Resolution - Validate a proxy and return additional
        information for use in a subsequent credit transfer

        ZA_RTC | ✗ | N/A
      operationId: outboundIdentifierDetermination
      parameters:
        - in: header
          name: traceparent
          schema:
            $ref: '#/components/schemas/traceparent'
        - in: header
          name: tracestate
          schema:
            $ref: '#/components/schemas/tracestate'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/IdentifierDeterminationRequest'
            examples:
              ZA-RPP-Proxy-Resolution-Request:
                $ref: >-
                  #/components/examples/ZaRppProxyResolutionIdentifierDeterminationRequest
              ZA-RPP-Account-Resolution-Request:
                $ref: >-
                  #/components/examples/ZaRppAccountResolutionIdentifierDeterminationRequest
        required: true
      responses:
        '202':
          description: >-
            Accepted. [RFC9110 -
            202](https://www.rfc-editor.org/rfc/rfc9110#name-202-accepted)
        '400':
          description: >-
            Bad request. [RFC9110 -
            400](https://www.rfc-editor.org/rfc/rfc9110#name-400-bad-request)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '401':
          description: >-
            Unauthorized. [RFC9110 -
            401](https://www.rfc-editor.org/rfc/rfc9110#name-401-unauthorized)
        '403':
          description: >-
            Forbidden. [RFC9110 -
            403](https://www.rfc-editor.org/rfc/rfc9110#name-403-forbidden)
        '405':
          description: >-
            Method not allowed. [RFC9110 -
            405](https://www.rfc-editor.org/rfc/rfc9110#name-405-method-not-allowed)
        '422':
          description: >-
            Unprocessable content. [RFC9110 -
            422](https://www.rfc-editor.org/rfc/rfc9110#name-422-unprocessable-content)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '429':
          description: >-
            Too Many Requests. [RFC6585 -
            429](https://www.rfc-editor.org/rfc/rfc6585.html#section-4)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '500':
          description: >-
            Internal server error. [RFC9110 -
            500](https://www.rfc-editor.org/rfc/rfc9110#name-500-internal-server-error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
              examples:
                ServerError:
                  $ref: '#/components/examples/ErrorDetailServerError'
        '503':
          description: >-
            Service unavailable. [RFC9110 -
            503](https://www.rfc-editor.org/rfc/rfc9110#name-503-service-unavailable)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
              examples:
                ServerError:
                  $ref: '#/components/examples/ErrorDetailServerError'
  /identifiers/inbound/identifier-determination-report:
    post:
      tags:
        - identifier-determination
      summary: Deliver additional identifier information
      description: >
        This operation is **asynchronous**. It communicates the outcome of an
        `inboundIdentifierDetermination`

        [operation](https://api.electrum.io/elpapi/openapi/elpapi-partner/operation/inboundIdentifierDetermination/).


        The inbound identifier determination operation can be called to
        determine information related to an identifier, for example

        to resolve a proxy. This operation is the asynchronous response to that
        operation.


        In the context of an inbound payment, the partner sends Electrum the
        outcome of an identifier determination which was previously

        forwarded to the partner for processing.


        Scheme | Applicable | Function Enabled

        --- | --- | ---

        ZA_EFT | ✗ | N/A

        ZA_RPP | ✓ | Proxy Resolution - Validate a proxy and return additional
        information for use in a subsequent credit transfer

        ZA_RTC | ✗ | N/A
      operationId: inboundIdentifierDeterminationReport
      parameters:
        - in: header
          name: traceparent
          schema:
            $ref: '#/components/schemas/traceparent'
        - in: header
          name: tracestate
          schema:
            $ref: '#/components/schemas/tracestate'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/IdentifierDeterminationResponse'
            examples:
              Successful-ZA-RPP-Proxy-Resolution-Response:
                $ref: '#/components/examples/ZaRppProxyResolutionSuccessfulResponse'
              Unsuccessful-ZA-RPP-Proxy-Resolution-Response:
                $ref: '#/components/examples/ZaRppProxyResolutionUnsuccessfulResponse'
        required: true
      responses:
        '202':
          description: >-
            Accepted. [RFC9110 -
            202](https://www.rfc-editor.org/rfc/rfc9110#name-202-accepted)
        '400':
          description: >-
            Bad request. [RFC9110 -
            400](https://www.rfc-editor.org/rfc/rfc9110#name-400-bad-request)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '401':
          description: >-
            Unauthorized. [RFC9110 -
            401](https://www.rfc-editor.org/rfc/rfc9110#name-401-unauthorized)
        '403':
          description: >-
            Forbidden. [RFC9110 -
            403](https://www.rfc-editor.org/rfc/rfc9110#name-403-forbidden)
        '405':
          description: >-
            Method not allowed. [RFC9110 -
            405](https://www.rfc-editor.org/rfc/rfc9110#name-405-method-not-allowed)
        '422':
          description: >-
            Unprocessable content. [RFC9110 -
            422](https://www.rfc-editor.org/rfc/rfc9110#name-422-unprocessable-content)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '429':
          description: >-
            Too Many Requests. [RFC6585 -
            429](https://www.rfc-editor.org/rfc/rfc6585.html#section-4)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '500':
          description: >-
            Internal server error. [RFC9110 -
            500](https://www.rfc-editor.org/rfc/rfc9110#name-500-internal-server-error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
              examples:
                ServerError:
                  $ref: '#/components/examples/ErrorDetailServerError'
        '503':
          description: >-
            Service unavailable. [RFC9110 -
            503](https://www.rfc-editor.org/rfc/rfc9110#name-503-service-unavailable)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
              examples:
                ServerError:
                  $ref: '#/components/examples/ErrorDetailServerError'
  /identifiers/outbound/identifier-determination-sync:
    post:
      tags:
        - identifier-determination
      summary: Request identifier information synchronously
      description: >
        This operation is **synchronous**.


        The outbound identifier determination operation can be called to resolve
        additional information about an identifier, for example

        to resolve a proxy.


        In the context of an outbound payment, a partner sends Electrum an
        identifier determination inquiry. Electrum then performs whatever
        routing, orchestration and protocol translation is necessary to fulfil
        the request with the correct upstream party.


        Scheme | Applicable | Function Enabled

        --- | --- | ---

        ZA_EFT | ✗ | N/A

        ZA_RPP | ✓ | Proxy Resolution - Validate a proxy and return additional
        information for use in a subsequent credit transfer

        ZA_RTC | ✗ | N/A
      operationId: outboundSynchronousIdentifierDetermination
      parameters:
        - in: header
          name: traceparent
          schema:
            $ref: '#/components/schemas/traceparent'
        - in: header
          name: tracestate
          schema:
            $ref: '#/components/schemas/tracestate'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/IdentifierDeterminationRequest'
            examples:
              ZA-RPP-Proxy-Resolution-Request:
                $ref: >-
                  #/components/examples/ZaRppProxyResolutionIdentifierDeterminationRequest
              ZA-RPP-Account-Resolution-Request:
                $ref: >-
                  #/components/examples/ZaRppAccountResolutionIdentifierDeterminationRequest
        required: true
      responses:
        '200':
          description: >
            OK. [RFC9110 -
            200](https://www.rfc-editor.org/rfc/rfc9110#name-200-ok)


            Note that a response containing a 200 (OK) HTTP status does not
            necessarily mean that the response contains a positive outcome but
            rather that Electrum successfully processed the request and is
            providing a response. The functional outcome might still be a
            negative one (e.g. the identifier was not found). In the event that
            Electrum encounters a *technical* error when processing the request,
            the appropriate 4xx or 5xx response will be used.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IdentifierDeterminationResponse'
              examples:
                Successful-ZA-RPP-Proxy-Resolution-Response:
                  $ref: '#/components/examples/ZaRppProxyResolutionSuccessfulResponse'
                Unsuccessful-ZA-RPP-Proxy-Resolution-Response:
                  $ref: >-
                    #/components/examples/ZaRppProxyResolutionUnsuccessfulResponse
        '400':
          description: >-
            Bad request. [RFC9110 -
            400](https://www.rfc-editor.org/rfc/rfc9110#name-400-bad-request)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '401':
          description: >-
            Unauthorized. [RFC9110 -
            401](https://www.rfc-editor.org/rfc/rfc9110#name-401-unauthorized)
        '403':
          description: >-
            Forbidden. [RFC9110 -
            403](https://www.rfc-editor.org/rfc/rfc9110#name-403-forbidden)
        '405':
          description: >-
            Method not allowed. [RFC9110 -
            405](https://www.rfc-editor.org/rfc/rfc9110#name-405-method-not-allowed)
        '409':
          description: >-
            Conflict. [RFC9110 -
            409](https://www.rfc-editor.org/rfc/rfc9110#name-409-conflict)
        '422':
          description: >-
            Unprocessable content. [RFC9110 -
            422](https://www.rfc-editor.org/rfc/rfc9110#name-422-unprocessable-content)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '500':
          description: >-
            Internal server error. [RFC9110 -
            500](https://www.rfc-editor.org/rfc/rfc9110#name-500-internal-server-error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
              examples:
                ServerError:
                  $ref: '#/components/examples/ErrorDetailServerError'
        '503':
          description: >-
            Service unavailable. [RFC9110 -
            503](https://www.rfc-editor.org/rfc/rfc9110#name-503-service-unavailable)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
              examples:
                ServerError:
                  $ref: '#/components/examples/ErrorDetailServerError'
  /identifiers/check-digit-verification:
    post:
      tags:
        - identifier-verification
      summary: Validate the check digit for the provided identifier
      description: >
        This **synchronous** operation is designed for identifier validation.


        The Check Digit Verification (CDV) operation facilitates identifier
        validation through specific check digit algorithms. Notably, these
        algorithms may vary across Payment Systems. To distinguish between them,
        a verification scheme is employed. Presently, the supported scheme is
        'ZA_CDV.'


        This operation allows verification of the provided account number, bank
        identifier, and account type identifier against the provided
        verification scheme's check digit algorithm. It assesses the
        plausibility of these identifiers within the context of the chosen
        verification scheme.


        Validation Scheme | Applicable | Function Enabled

        --- | --- | ---

        ZA_CDV | ✓ | South African Check Digit Verification - Check digit
        verification within the context of the South African National Payments
        System.
      operationId: validateIdentifierUsingCheckDigit
      parameters:
        - in: header
          name: traceparent
          schema:
            $ref: '#/components/schemas/traceparent'
        - in: header
          name: tracestate
          schema:
            $ref: '#/components/schemas/tracestate'
        - in: query
          name: verbose
          description: >-
            A header flag that can be set to `true` to return more informative
            messages downstream after a Cdv Test.
          schema:
            type: boolean
          allowEmptyValue: true
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CheckDigitVerificationRequest'
            examples:
              ZA_CDV:
                $ref: >-
                  #/components/examples/ZaCdvCheckDigitVerificationRequestExample
        required: true
      responses:
        '200':
          description: >-
            OK. [RFC9110 -
            200](https://www.rfc-editor.org/rfc/rfc9110#name-200-ok)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CheckDigitVerificationReport'
              examples:
                ValidationPassed:
                  $ref: >-
                    #/components/examples/CheckDigitVerificationReportPassedExample
                ValidationFailed:
                  $ref: >-
                    #/components/examples/CheckDigitVerificationReportFailedExample
                ValidationSkipped:
                  $ref: >-
                    #/components/examples/CheckDigitVerificationReportSkippedExample
                ValidationVerbosePassed:
                  $ref: >-
                    #/components/examples/CheckDigitVerificationReportVerbosePassedExample
                ValidationVerboseFailed:
                  $ref: >-
                    #/components/examples/CheckDigitVerificationReportVerboseFailedExample
        '400':
          description: >-
            Bad request. [RFC9110 -
            400](https://www.rfc-editor.org/rfc/rfc9110#name-400-bad-request)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
              examples:
                BadRequest:
                  $ref: '#/components/examples/ErrorDetailBadRequest'
                ValidationVerboseError:
                  $ref: >-
                    #/components/examples/CheckDigitVerificationReportVerboseErrorExample
        '500':
          description: >-
            Internal server error. [RFC9110 -
            500](https://www.rfc-editor.org/rfc/rfc9110#name-500-internal-server-error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
              examples:
                ServerError:
                  $ref: '#/components/examples/ErrorDetailServerError'
        '503':
          description: >-
            Service unavailable. [RFC9110 -
            503](https://www.rfc-editor.org/rfc/rfc9110#name-503-service-unavailable)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
              examples:
                ServerError:
                  $ref: '#/components/examples/ErrorDetailServerError'
  /request-to-pay/get:
    post:
      tags:
        - request-to-pay
      summary: Get the details of a request to pay
      description: |
        This **synchronous** operation is designed for retrieving the details of
        a request to pay.

        A request to pay has various properties which may need to be retrieved
        at the time the payment is to be made and the request to pay may also
        transition through various states. At any time, this operation may be
        used to determine Electrum's latest view of the request to pay.
      operationId: getRequestToPayWithPOST
      parameters:
        - in: header
          name: traceparent
          schema:
            $ref: '#/components/schemas/traceparent'
        - in: header
          name: tracestate
          schema:
            $ref: '#/components/schemas/tracestate'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RequestToPayStatusRequest'
        required: true
      responses:
        '200':
          description: >-
            OK. [RFC9110 -
            200](https://www.rfc-editor.org/rfc/rfc9110#name-200-ok)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RequestToPayResponse'
        '400':
          description: >-
            Bad request. [RFC9110 -
            400](https://www.rfc-editor.org/rfc/rfc9110#name-400-bad-request)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '401':
          description: >-
            Unauthorized. [RFC9110 -
            401](https://www.rfc-editor.org/rfc/rfc9110#name-401-unauthorized)
        '403':
          description: >-
            Forbidden. [RFC9110 -
            403](https://www.rfc-editor.org/rfc/rfc9110#name-403-forbidden)
        '404':
          description: >-
            Not Found. [RFC9110 -
            400](https://www.rfc-editor.org/rfc/rfc9110#name-404-not-found)
        '500':
          description: >-
            Internal server error. [RFC9110 -
            500](https://www.rfc-editor.org/rfc/rfc9110#name-500-internal-server-error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
              examples:
                ServerError:
                  $ref: '#/components/examples/ErrorDetailServerError'
        '503':
          description: >-
            Service unavailable. [RFC9110 -
            503](https://www.rfc-editor.org/rfc/rfc9110#name-503-service-unavailable)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
              examples:
                ServerError:
                  $ref: '#/components/examples/ErrorDetailServerError'
  /accounts/inbound/account-verification-report:
    post:
      tags:
        - account-verification
      summary: Deliver account verification outcome
      description: >
        This operation is **asynchronous**. It communicates the outcome of an
        `inboundAccountVerification`

        [operation](https://api.electrum.io/elpapi/openapi/elpapi-partner/operation/inboundAccountVerification/).


        The inbound account verification report operation can be called to
        deliver the outcome of a previously requested

        account verification request.


        Scheme | Applicable | Function Enabled

        --- | --- | ---

        ZA_AVS | ✓ | Verifying account information
      operationId: inboundAccountVerificationReport
      parameters:
        - in: header
          name: traceparent
          schema:
            $ref: '#/components/schemas/traceparent'
        - in: header
          name: tracestate
          schema:
            $ref: '#/components/schemas/tracestate'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AccountVerificationResponse'
            examples:
              ZA-Account-Verification-Response:
                $ref: '#/components/examples/ZaAccountVerificationResponse'
        required: true
      responses:
        '202':
          description: >-
            Accepted. [RFC9110 -
            202](https://www.rfc-editor.org/rfc/rfc9110#name-202-accepted)
        '400':
          description: >-
            Bad request. [RFC9110 -
            400](https://www.rfc-editor.org/rfc/rfc9110#name-400-bad-request)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '401':
          description: >-
            Unauthorized. [RFC9110 -
            401](https://www.rfc-editor.org/rfc/rfc9110#name-401-unauthorized)
        '403':
          description: >-
            Forbidden. [RFC9110 -
            403](https://www.rfc-editor.org/rfc/rfc9110#name-403-forbidden)
        '405':
          description: >-
            Method not allowed. [RFC9110 -
            405](https://www.rfc-editor.org/rfc/rfc9110#name-405-method-not-allowed)
        '422':
          description: >-
            Unprocessable content. [RFC9110 -
            422](https://www.rfc-editor.org/rfc/rfc9110#name-422-unprocessable-content)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '429':
          description: >-
            Too Many Requests. [RFC6585 -
            429](https://www.rfc-editor.org/rfc/rfc6585.html#section-4)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '500':
          description: >-
            Internal server error. [RFC9110 -
            500](https://www.rfc-editor.org/rfc/rfc9110#name-500-internal-server-error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
              examples:
                ServerError:
                  $ref: '#/components/examples/ErrorDetailServerError'
        '503':
          description: >-
            Service unavailable. [RFC9110 -
            503](https://www.rfc-editor.org/rfc/rfc9110#name-503-service-unavailable)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
              examples:
                ServerError:
                  $ref: '#/components/examples/ErrorDetailServerError'
  /accounts/outbound/account-verification:
    post:
      tags:
        - account-verification
      summary: Verify account information
      description: >
        This operation is **asynchronous**. The outcome of the request is
        delivered by the `outboundAccountVerificationReport`

        [operation](https://api.electrum.io/elpapi/openapi/elpapi-partner/operation/outboundAccountVerificationReport/).


        The outbound account verification operation can be called to verify
        whether information held by the caller regarding

        an account (store of value) is valid.


        In the context of payments, this operation is often used prior to making
        payment, or loading a beneficiary to

        a banking profile.


        Scheme | Applicable | Function Enabled

        --- | --- | ---

        ZA_AVS | ✓ | Verifying account information
      operationId: outboundAccountVerification
      parameters:
        - in: header
          name: traceparent
          schema:
            $ref: '#/components/schemas/traceparent'
        - in: header
          name: tracestate
          schema:
            $ref: '#/components/schemas/tracestate'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AccountVerificationRequest'
            examples:
              ZA-Account-Verification-Request:
                $ref: '#/components/examples/ZaAccountVerificationRequest'
        required: true
      responses:
        '202':
          description: >-
            Accepted. [RFC9110 -
            202](https://www.rfc-editor.org/rfc/rfc9110#name-202-accepted)
        '400':
          description: >-
            Bad request. [RFC9110 -
            400](https://www.rfc-editor.org/rfc/rfc9110#name-400-bad-request)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '401':
          description: >-
            Unauthorized. [RFC9110 -
            401](https://www.rfc-editor.org/rfc/rfc9110#name-401-unauthorized)
        '403':
          description: >-
            Forbidden. [RFC9110 -
            403](https://www.rfc-editor.org/rfc/rfc9110#name-403-forbidden)
        '405':
          description: >-
            Method not allowed. [RFC9110 -
            405](https://www.rfc-editor.org/rfc/rfc9110#name-405-method-not-allowed)
        '422':
          description: >-
            Unprocessable content. [RFC9110 -
            422](https://www.rfc-editor.org/rfc/rfc9110#name-422-unprocessable-content)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '429':
          description: >-
            Too Many Requests. [RFC6585 -
            429](https://www.rfc-editor.org/rfc/rfc6585.html#section-4)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '500':
          description: >-
            Internal server error. [RFC9110 -
            500](https://www.rfc-editor.org/rfc/rfc9110#name-500-internal-server-error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
              examples:
                ServerError:
                  $ref: '#/components/examples/ErrorDetailServerError'
        '503':
          description: >-
            Service unavailable. [RFC9110 -
            503](https://www.rfc-editor.org/rfc/rfc9110#name-503-service-unavailable)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
              examples:
                ServerError:
                  $ref: '#/components/examples/ErrorDetailServerError'
  /accounts/outbound/account-verification-sync:
    post:
      tags:
        - account-verification
      summary: Verify account information synchronously
      description: >
        This operation is **synchronous**.


        The outbound account verification operation can be called to verify
        whether information held by the caller regarding

        an account (store of value) is valid.


        In the context of payments, this operation is often used prior to making
        payment, or loading a beneficiary to

        a banking profile.


        Scheme | Applicable | Function Enabled

        --- | --- | ---

        ZA_AVS | ✓ | Verifying account information
      operationId: outboundSynchronousAccountVerification
      parameters:
        - in: header
          name: traceparent
          schema:
            $ref: '#/components/schemas/traceparent'
        - in: header
          name: tracestate
          schema:
            $ref: '#/components/schemas/tracestate'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AccountVerificationRequest'
            examples:
              ZA-Account-Verification-Request:
                $ref: '#/components/examples/ZaAccountVerificationRequest'
        required: true
      responses:
        '200':
          description: >
            OK. [RFC9110 -
            200](https://www.rfc-editor.org/rfc/rfc9110#name-200-ok)


            Note that a response containing a 200 (OK) HTTP status does not
            necessarily mean that the response contains 

            a positive outcome but rather that Electrum successfully processed
            the request and is providing a response. 

            The functional outcome might still be a negative one (e.g. the
            information provided failed verification). 

            In the event that Electrum encounters a *technical* error when
            processing the request, the appropriate 

            4xx or 5xx response will be used.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccountVerificationResponse'
              examples:
                ZA-Account-Verification-Response:
                  $ref: '#/components/examples/ZaAccountVerificationResponse'
        '400':
          description: >-
            Bad request. [RFC9110 -
            400](https://www.rfc-editor.org/rfc/rfc9110#name-400-bad-request)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '401':
          description: >-
            Unauthorized. [RFC9110 -
            401](https://www.rfc-editor.org/rfc/rfc9110#name-401-unauthorized)
        '403':
          description: >-
            Forbidden. [RFC9110 -
            403](https://www.rfc-editor.org/rfc/rfc9110#name-403-forbidden)
        '405':
          description: >-
            Method not allowed. [RFC9110 -
            405](https://www.rfc-editor.org/rfc/rfc9110#name-405-method-not-allowed)
        '422':
          description: >-
            Unprocessable content. [RFC9110 -
            422](https://www.rfc-editor.org/rfc/rfc9110#name-422-unprocessable-content)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '429':
          description: >-
            Too Many Requests. [RFC6585 -
            429](https://www.rfc-editor.org/rfc/rfc6585.html#section-4)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '500':
          description: >-
            Internal server error. [RFC9110 -
            500](https://www.rfc-editor.org/rfc/rfc9110#name-500-internal-server-error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
              examples:
                ServerError:
                  $ref: '#/components/examples/ErrorDetailServerError'
        '503':
          description: >-
            Service unavailable. [RFC9110 -
            503](https://www.rfc-editor.org/rfc/rfc9110#name-503-service-unavailable)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
              examples:
                ServerError:
                  $ref: '#/components/examples/ErrorDetailServerError'
  /funds-management/reservation-response:
    post:
      summary: Deliver the response to a reservation request
      tags:
        - funds-management
      description: >
        This operation is **asynchronous**. It starts with the
        [createReservation
        operation](https://api.electrum.io/elpapi/openapi/elpapi-partner/operation/createReservation/)


        Invoked when a response to a reservation is available. The response will
        indicate the success or failure of the reservation.


        Scheme | Applicable

        --- | ---

        ZA_EFT | ✓

        ZA_RPP | ✓

        ZA_RTC | ✓
      operationId: createReservationResponse
      parameters:
        - in: header
          name: traceparent
          schema:
            $ref: '#/components/schemas/traceparent'
        - in: header
          name: tracestate
          schema:
            $ref: '#/components/schemas/tracestate'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Receipt'
            examples:
              ReservationApproved:
                $ref: '#/components/examples/FundsManagementApprovedResponse'
              ReservationRejected:
                $ref: '#/components/examples/FundsManagementRejectedResponse'
        required: true
      responses:
        '202':
          description: >-
            Accepted. [RFC9110 -
            202](https://www.rfc-editor.org/rfc/rfc9110#name-202-accepted)
        '400':
          description: >-
            Bad request. [RFC9110 -
            400](https://www.rfc-editor.org/rfc/rfc9110#name-400-bad-request)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '401':
          description: >-
            Unauthorized. [RFC9110 -
            401](https://www.rfc-editor.org/rfc/rfc9110#name-401-unauthorized)
        '403':
          description: >-
            Forbidden. [RFC9110 -
            403](https://www.rfc-editor.org/rfc/rfc9110#name-403-forbidden)
        '405':
          description: >-
            Method not allowed. [RFC9110 -
            405](https://www.rfc-editor.org/rfc/rfc9110#name-405-method-not-allowed)
        '422':
          description: >-
            Unprocessable content. [RFC9110 -
            422](https://www.rfc-editor.org/rfc/rfc9110#name-422-unprocessable-content)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '429':
          description: >-
            Too Many Requests. [RFC6585 -
            429](https://www.rfc-editor.org/rfc/rfc6585.html#section-4)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '500':
          description: >-
            Internal server error. [RFC9110 -
            500](https://www.rfc-editor.org/rfc/rfc9110#name-500-internal-server-error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
              examples:
                ServerError:
                  $ref: '#/components/examples/ErrorDetailServerError'
        '503':
          description: >-
            Service unavailable. [RFC9110 -
            503](https://www.rfc-editor.org/rfc/rfc9110#name-503-service-unavailable)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
              examples:
                ServerError:
                  $ref: '#/components/examples/ErrorDetailServerError'
  /funds-management/posting-response:
    post:
      tags:
        - funds-management
      summary: Deliver the response to a posting request
      description: >
        This operation is **asynchronous**. It starts with the [createPosting
        operation](https://api.electrum.io/elpapi/openapi/elpapi-partner/operation/createPosting/)


        Invoked when a response to a posting is available. It indicates the
        success or failure of the posting.


        Scheme | Applicable

        --- | ---

        ZA_EFT | ✓

        ZA_RPP | ✓

        ZA_RTC | ✓
      operationId: createPostingResponse
      parameters:
        - in: header
          name: traceparent
          schema:
            $ref: '#/components/schemas/traceparent'
        - in: header
          name: tracestate
          schema:
            $ref: '#/components/schemas/tracestate'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Receipt'
            examples:
              PostingResponse:
                $ref: '#/components/examples/PostingResponse'
        required: true
      responses:
        '202':
          description: >-
            Accepted. [RFC9110 -
            202](https://www.rfc-editor.org/rfc/rfc9110#name-202-accepted)
        '400':
          description: >-
            Bad request. [RFC9110 -
            400](https://www.rfc-editor.org/rfc/rfc9110#name-400-bad-request)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '401':
          description: >-
            Unauthorized. [RFC9110 -
            401](https://www.rfc-editor.org/rfc/rfc9110#name-401-unauthorized)
        '403':
          description: >-
            Forbidden. [RFC9110 -
            403](https://www.rfc-editor.org/rfc/rfc9110#name-403-forbidden)
        '405':
          description: >-
            Method not allowed. [RFC9110 -
            405](https://www.rfc-editor.org/rfc/rfc9110#name-405-method-not-allowed)
        '422':
          description: >-
            Unprocessable content. [RFC9110 -
            422](https://www.rfc-editor.org/rfc/rfc9110#name-422-unprocessable-content)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '429':
          description: >-
            Too Many Requests. [RFC6585 -
            429](https://www.rfc-editor.org/rfc/rfc6585.html#section-4)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '500':
          description: >-
            Internal server error. [RFC9110 -
            500](https://www.rfc-editor.org/rfc/rfc9110#name-500-internal-server-error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
              examples:
                ServerError:
                  $ref: '#/components/examples/ErrorDetailServerError'
        '503':
          description: >-
            Service unavailable. [RFC9110 -
            503](https://www.rfc-editor.org/rfc/rfc9110#name-503-service-unavailable)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
              examples:
                ServerError:
                  $ref: '#/components/examples/ErrorDetailServerError'
  /funds-management/reservation/void-response:
    post:
      tags:
        - funds-management
      summary: Deliver the response to a reservation void request
      description: >
        This operation is **asynchronous**. It starts with the [voidReservation
        operation](https://api.electrum.io/elpapi/openapi/elpapi-partner/operation/voidReservation/)


        Invoked when a response to a reservation-void is available. It indicates
        the success or failure of the reservation-void.


        Scheme | Applicable

        --- | ---

        ZA_EFT | ✓

        ZA_RPP | ✓

        ZA_RTC | ✓
      operationId: voidReservationResponse
      parameters:
        - in: header
          name: traceparent
          schema:
            $ref: '#/components/schemas/traceparent'
        - in: header
          name: tracestate
          schema:
            $ref: '#/components/schemas/tracestate'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Receipt'
            examples:
              VoidReservationResponse:
                $ref: '#/components/examples/VoidReservationResponse'
        required: true
      responses:
        '202':
          description: >-
            Accepted. [RFC9110 -
            202](https://www.rfc-editor.org/rfc/rfc9110#name-202-accepted)
        '400':
          description: >-
            Bad request. [RFC9110 -
            400](https://www.rfc-editor.org/rfc/rfc9110#name-400-bad-request)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '401':
          description: >-
            Unauthorized. [RFC9110 -
            401](https://www.rfc-editor.org/rfc/rfc9110#name-401-unauthorized)
        '403':
          description: >-
            Forbidden. [RFC9110 -
            403](https://www.rfc-editor.org/rfc/rfc9110#name-403-forbidden)
        '405':
          description: >-
            Method not allowed. [RFC9110 -
            405](https://www.rfc-editor.org/rfc/rfc9110#name-405-method-not-allowed)
        '422':
          description: >-
            Unprocessable content. [RFC9110 -
            422](https://www.rfc-editor.org/rfc/rfc9110#name-422-unprocessable-content)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '429':
          description: >-
            Too Many Requests. [RFC6585 -
            429](https://www.rfc-editor.org/rfc/rfc6585.html#section-4)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '500':
          description: >-
            Internal server error. [RFC9110 -
            500](https://www.rfc-editor.org/rfc/rfc9110#name-500-internal-server-error)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
              examples:
                ServerError:
                  $ref: '#/components/examples/ErrorDetailServerError'
        '503':
          description: >-
            Service unavailable. [RFC9110 -
            503](https://www.rfc-editor.org/rfc/rfc9110#name-503-service-unavailable)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
              examples:
                ServerError:
                  $ref: '#/components/examples/ErrorDetailServerError'
components:
  schemas:
    traceparent:
      description: >
        A value used to trace an HTTP message within an Electrum Regulated
        Payments implementation.

        This field must be set as per the `traceparent` element defined in the
        [W3C Trace Context Level 2

        specification](https://www.w3.org/TR/trace-context-2).
      type: string
      pattern: ^[A-Fa-f0-9]{2}\-[A-Fa-f0-9]{32}\-[A-Fa-f0-9]{16}\-[A-Fa-f0-9]{2}$
    tracestate:
      description: >
        A value used to provide context to an HTTP message as it is traced
        within an Electrum Regulated

        Payments implementation. This field must be set as per the `traceparent`
        element defined in the

        [W3C Trace Context Level 2
        specification](https://www.w3.org/TR/trace-context-2).
      type: string
      pattern: ^[A-Za-z0-9=, _\*/@]{0,1024}$
    HealthDetail:
      type: object
      required:
        - component
        - message
      properties:
        component:
          type: string
          description: The name of the component reporting
        message:
          type: string
    HealthReport:
      type: object
      required:
        - status
      properties:
        status:
          type: string
          enum:
            - PASS
            - FAIL
            - WARN
          description: |
            * `PASS`: The service is healthy
            * `FAIL`: The service is unhealthy
            * `WARN`: The service is healthy with some concerns
        version:
          type: string
          description: The version of the service
        detail:
          type: array
          items:
            $ref: '#/components/schemas/HealthDetail'
    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'
    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.
    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
    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'
    OriginalErrorResponse:
      type: object
      description: >
        A model carrying information detailing a previously returned error
        response. If the original response included an `ErrorDetail` payload it
        is returned in the `detail` field.
      required:
        - httpStatus
      properties:
        httpStatus:
          type: string
          description: >-
            The HTTP status of the HTTP response which originally communicated
            the error.
        detail:
          $ref: '#/components/schemas/ErrorDetail'
        schema:
          type: string
          enum:
            - OriginalErrorResponse
    CreditTransferInitiationStatusRequest:
      description: >
        Provides details to identify a previously submitted bulk credit transfer
        initiation.
      type: object
      required:
        - schema
        - messageIdentifiers
        - originalMessageIdentifiers
        - paymentInformationId
      properties:
        schema:
          type: string
          enum:
            - CreditTransferInitiationStatusRequest
        messageIdentifiers:
          $ref: '#/components/schemas/MessageIdentifiers'
          description: >
            Details used to unambiguously identify the message between the
            sending and receiving party.
        originalMessageIdentifiers:
          $ref: '#/components/schemas/MessageIdentifiers'
          description: >
            Details that identified the original message in this transaction
            flow to which this status request relates to
        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. 
        includeIndividualCreditsStatuses:
          type: boolean
          description: >
            A flag to indicate if the status of each individual credit transfer,
            as per Electrum's view, should 

            be reflected in the response
    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
    ZaRppRefundInitiationPaymentScheme:
      description: ''
      properties:
        schema:
          $ref: '#/components/schemas/PaymentSchemeName'
        schemeData:
          $ref: '#/components/schemas/ZaRppSchemeData'
      required:
        - schema
    RefundInitiationPaymentScheme:
      description: >
        Designates which scheme a refund initiation is associated with and
        describes scheme-specific information for the

        refund to be processed. Currently only `ZA_RPP` supported.
      type: object
      oneOf:
        - $ref: '#/components/schemas/ZaRppRefundInitiationPaymentScheme'
      discriminator:
        propertyName: schema
        mapping:
          ZA_RPP: '#/components/schemas/ZaRppRefundInitiationPaymentScheme'
    RefundInitiationRequest:
      description: >
        Requests that a prior Receipt-of-funds transaction (i.e. some inbound
        payment) is refunded, if possible according to specified scheme rules.
        Refer to scheme User Guides for validation conditions.
      type: object
      properties:
        schema:
          type: string
          enum:
            - RefundInitiationRequest
        paymentScheme:
          $ref: '#/components/schemas/RefundInitiationPaymentScheme'
        messageIdentifiers:
          $ref: '#/components/schemas/MessageIdentifiers'
          description: |
            The message identifier values for this `RefundInitiationRequest`
        transactionIdentifiers:
          $ref: '#/components/schemas/TransactionIdentifiers'
          description: >
            The transaction identifier values for this new
            `RefundInitiationRequest`.

            Note the `uetr` and `endToEndIdentification` values may be used in
            processing the refund according to the scheme rules
        originalTransactionIdentifiers:
          $ref: '#/components/schemas/TransactionIdentifiers'
          description: >
            The transaction identifier values for the original Receipt-of-funds
            transaction which has been requested to be refunded.

            Note the `uetr` value must match the original `Receipt-of-funds
            transaction.uetr`, as certain refund properties are validated
            against the original Receipt-of-funds transaction's values.
        amounts:
          $ref: '#/components/schemas/TransactionAmounts'
        debtorAccount:
          $ref: '#/components/schemas/PaymentAccount'
        refundReference:
          type: string
          description: >
            An explanation of the transaction, as assigned by the refund
            initiator, to unambiguously refer to this refund payment.

            This value will be used as the transaction reference if the clearing
            scheme supports it.
      required:
        - schema
        - paymentScheme
        - messageIdentifiers
        - transactionIdentifiers
        - 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'
    RequestToPayInitiationInstruction:
      type: object
      description: >
        Initiation instruction object. This is a striped down version of the
        requestToPay model with the fields that can be

        inferred from the bulk information removed.
      required:
        - messageIdentifiers
        - transactionIdentifiers
        - expiryDateTime
        - requestToPayConditions
        - creditor
        - creditorAccount
        - creditorAgent
        - debtorAccount
        - paymentTypeInformation
        - remittanceInformation
      properties:
        messageIdentifiers:
          $ref: '#/components/schemas/MessageIdentifiers'
        transactionIdentifiers:
          $ref: '#/components/schemas/TransactionIdentifiers'
        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:
          $ref: '#/components/schemas/Party'
        creditorAccount:
          $ref: '#/components/schemas/PaymentAccount'
        creditorAgent:
          $ref: '#/components/schemas/InstitutionIdentification'
        debtor:
          $ref: '#/components/schemas/Party'
        debtorAccount:
          $ref: '#/components/schemas/PaymentAccount'
        debtorAgent:
          $ref: '#/components/schemas/InstitutionIdentification'
        paymentTypeInformation:
          $ref: '#/components/schemas/PaymentTypeInformation'
        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'
        purpose:
          $ref: '#/components/schemas/PurposeType'
        remittanceInformation:
          $ref: '#/components/schemas/RemittanceInformation'
        tax:
          $ref: '#/components/schemas/TaxInformation'
    RequestToPayInitiation:
      allOf:
        - description: >
            Object used to initiate a bulk of request to pay transactions. The
            transactions are defined in the `requestToPayInitiationInstructions`

            array. The bulk can only contain one payment scheme's transactions.
        - $ref: '#/components/schemas/BaseMessage'
        - type: object
          required:
            - requestToPayInformationId
            - bulkPaymentSchemeName
            - requestToPayInitiationInstructions
          properties:
            requestToPayInformationId:
              type: string
              format: UUID
              description: >
                Universally unique identifier to identify the bulk collection
                itself.
            bulkPaymentSchemeName:
              $ref: '#/components/schemas/PaymentSchemeName'
            requestToPayInitiationInstructions:
              type: array
              minItems: 1
              items:
                $ref: '#/components/schemas/RequestToPayInitiationInstruction'
              description: >-
                List of instructions to initiate each request to pay within the
                bulk with other financial institutions or the partner bank.
            initiatingParty:
              $ref: '#/components/schemas/Party'
            numberOfTransactions:
              description: The total number of transactions in the bulk.
              type: integer
              minimum: 1
    RequestToPayInitiationStatusRequest:
      description: >
        Provides details to identify a previously submitted bulk request to pay
        collections.
      type: object
      required:
        - schema
        - messageIdentifiers
        - originalMessageIdentifiers
        - requestToPayInformationId
      properties:
        schema:
          type: string
          enum:
            - RequestToPayInitiationStatusRequest
        messageIdentifiers:
          $ref: '#/components/schemas/MessageIdentifiers'
        originalMessageIdentifiers:
          $ref: '#/components/schemas/MessageIdentifiers'
        requestToPayInformationId:
          type: string
          format: UUID
          description: >
            Universally unique identifier to identify the bulk collection
            itself.
        includeIndividualRequestToPayStatuses:
          type: boolean
          description: >
            A flag to indicate if the status of each individual request to pay,
            as per Electrum's view, should 

            be reflected in the response
    AccountLookupResponse:
      type: object
      properties:
        account:
          $ref: '#/components/schemas/Account'
        primaryAccountOwnerDetails:
          $ref: '#/components/schemas/AccountOwner'
        otherAccountOwnerDetails:
          type: array
          items:
            $ref: '#/components/schemas/AccountOwner'
      required:
        - account
        - primaryAccountOwnerDetails
    IdentifierSchemeRegistrations:
      type: object
      required:
        - registeredSchemes
      properties:
        registeredSchemes:
          type: array
          description: The list of schemes with which the identifier is registered.
          items:
            $ref: '#/components/schemas/PaymentSchemeName'
    ZaCdvCheckDigitVerificationRequest:
      description: >
        Performs a check digit verification on the provided account number and
        branch code.


        If the `accountType` is not provided, it will be inferred using the
        `identifier` and `branch`. The following account type map applies for ZA
        CDV checks:

        | Industry           | Electrum |

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

        | Current            | CACC     |

        | Savings            | SVGS     |

        | Transmission       | TRAN     |

        | Bond               | LOAN     |

        | Subscription_Share | OTHR     |
      type: object
      required:
        - verificationScheme
        - identifier
        - branch
      properties:
        verificationScheme:
          type: string
          description: >
            The name of the verification scheme to be used to verify the
            provided data.
        identifier:
          $ref: '#/components/schemas/GenericAccountIdentifier'
          description: |
            The account number to be verified.
        branch:
          $ref: '#/components/schemas/BranchIdentification'
          description: |
            The branch code of the account to be verified.
        accountType:
          $ref: '#/components/schemas/AccountType'
          description: >
            The type of account to be verified. The account type will be
            inferred if not provided.
    CheckDigitVerificationRequest:
      description: >
        A request that includes information to be verified using the provided
        verification routine.
      type: object
      oneOf:
        - $ref: '#/components/schemas/ZaCdvCheckDigitVerificationRequest'
      discriminator:
        propertyName: verificationScheme
        mapping:
          ZA_CDV: '#/components/schemas/ZaCdvCheckDigitVerificationRequest'
    CheckDigitVerificationReport:
      description: >
        The response to a check digit verification request, containing the
        outcome of the performed verification.
      type: object
      required:
        - outcome
      properties:
        outcome:
          type: string
          description: >
            Indicates whether the check digit verification was successful or
            not.


            `PASSED`: The provided data passed verification.


            `FAILED`: The provided data failed verification.


            `SKIPPED`: No verification was performed.
          enum:
            - PASSED
            - FAILED
            - SKIPPED
        reasonInfo:
          $ref: '#/components/schemas/VerificationReasonInfo'
          description: >
            Provides detailed information about the reason for the outcome of
            the verification.
  examples:
    OutboundCreditTransferRPP:
      summary: Outbound credit transfer initiation for the RPP payment scheme.
      value:
        schema: CreditTransfer
        messageIdentifiers:
          creationDateTime: '2022-05-04T03:02:01Z'
          messageIdentification: uniqueMessageId
        paymentScheme:
          schema: ZA_RPP
        amounts:
          bankSettlementAmount:
            value: 1
            currency: ZAR
        creditor:
          legalName: PersonLegalName
          knownAsName: PersonCommonName
        creditorAccount:
          identification:
            schema: GENERIC
            scheme:
              schema: PROPRIETARY
              value: AProprietaryCode123
            issuer: Amazing Bank
            value: abcdef987654
          proxy:
            namespace: NeoBank
            schema: MOBILE
            value: +27-0214620000
          type:
            schema: CODE
            value: CACC
        creditorAgent:
          memberId: ABSAZAJ
        debtor:
          legalName: PersonLegalName
          knownAsName: PersonCommonName
        debtorAccount:
          identification:
            schema: GENERIC
            scheme:
              schema: PROPRIETARY
              value: AProprietaryCode123
            issuer: Amazing Bank
            value: abcdef987654
          type:
            schema: CODE
            value: CACC
        debtorAgent:
          memberId: FIRNMZM
        transactionIdentifiers:
          endToEndIdentification: uniqueEndToEndId
          transactionIdentification: RRN000000001
          uetr: f27a34ad-c5ab-4b70-a3f9-946d743eaeaa
        instructingAgent:
          memberId: FIRNMZM
        instructedAgent:
          memberId: ABSAZAJ
        remittanceInformation:
          structured:
            - creditorReference:
                type:
                  value: RADM
                  schema: CODE
                  issuer: AnotherAmazeBank1234
                reference: Their statement reference
              originatorReference: My statement reference
        supplementaryData:
          customData1: My custom data 1
          customData2: My custom data 2
    OutboundCreditTransferEFT:
      summary: Outbound credit transfer for the EFT payment scheme.
      value:
        paymentScheme:
          schema: ZA_EFT
          schemeData:
            userReference: REF 1234
        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: 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: Amazing Bank
            value: abcdef987654
          type:
            schema: CODE
            value: CACC
          currency: ZAR
        creditorAgent:
          bicfi: RY8PEG0L
          memberId: AmazingBankId
          name: Amazing 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: 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: Amazing Bank
            value: abcdef987654
          type:
            schema: CODE
            value: CACC
          currency: ZAR
        debtorAgent:
          bicfi: RY8PEG0L
          memberId: AmazingBankId
          name: Amazing 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: RY8PEG0L
          memberId: AmazingBankId
          name: Amazing 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: RY8PEG0L
          memberId: AmazingBankId
          name: Amazing 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: RY8PEG0L
            memberId: AmazingBankId
            name: Amazing 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: RY8PEG0L
            memberId: AmazingBankId
            name: Amazing 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:
                    value: CINV
                    schema: CODE
                    issuer: AmazeBank123456
                  documentIdentifier: A0123456789
              referredDocumentAmount:
                duePayableAmount:
                  value: 1
                  currency: ZAR
                remittedAmount:
                  value: 1
                  currency: ZAR
              creditorReference:
                type:
                  value: RADM
                  schema: CODE
                  issuer: AnotherAmazeBank1234
                reference: ABC123XYZ999
              additionalRemittanceInformation:
                - Some
                - Additional
                - Information
        tax:
          totalAmount:
            value: 1
            currency: ZAR
        schema: CreditTransfer
        messageIdentifiers:
          messageIdentification: 8fd51c7124ba4819b9253e296a68e1da
          creationDateTime: '2022-05-04T03:02:01Z'
        transactionIdentifiers:
          endToEndIdentification: '6249118655591098'
          transactionIdentification: RRN000000001
          uetr: f27a34ad-c5ab-4b70-a3f9-946d743eaeaa
    ErrorDetailServerError:
      summary: An error indicating an unexpected server error
      value:
        schema: ErrorDetail
        message: An unexpected error occurred. Please try again later.
    OutboundBulkCreditTransferRPP:
      summary: Outbound bulk credit transfer initiation for the RPP payment scheme.
      value:
        schema: CreditTransferInitiation
        paymentInformationId: uniqueUUID
        messageIdentifiers:
          creationDateTime: '2024-05-04T03:02:01Z'
          messageIdentification: uniqueMessageId
        bulkPaymentSchemeName: ZA_RPP
        numberOfTransactions: 2
        controlSum:
          value: 100
          currency: ZAR
        debtor:
          legalName: PersonLegalName
          knownAsName: PersonCommonName
        debtorAccount:
          identification:
            schema: GENERIC
            scheme:
              schema: PROPRIETARY
              value: AProprietaryCode123
            issuer: Amazing Bank
            value: abcdef987654
          type:
            schema: CODE
            value: CACC
        debtorAgent:
          bicfi: FIRNMZM
        requestedExecutionDate: '2024-05-04'
        supplementaryData:
          customData1: My custom data 1
          customData2: My custom data 2
        creditTransferInitiationInstructions:
          - transactionIdentifiers:
              endToEndIdentification: uniqueEndToEndId1
              transactionIdentification: RRN000000001
              uetr: uniqueUUID1
            amounts:
              bankSettlementAmount:
                value: 50
                currency: ZAR
            creditor:
              legalName: PersonLegalName
              knownAsName: PersonCommonName
            creditorAccount:
              identification:
                schema: GENERIC
                scheme:
                  schema: PROPRIETARY
                  value: AProprietaryCode123
                issuer: Amazing Bank
                value: abcdef987654
              proxy:
                namespace: NeoBank
                schema: MOBILE
                value: +27-0214620000
              type:
                schema: CODE
                value: CACC
            creditorAgent:
              bicfi: ABSAZAJ
            purpose:
              schema: CODE
              value: ABCD
            remittanceInformation:
              structured:
                - referredDocuments:
                    - type:
                        value: CINV
                        schema: CODE
                        issuer: AmazeBank123456
                      documentIdentifier: A0123456789
                  referredDocumentAmount:
                    duePayableAmount:
                      value: 1
                      currency: ZAR
                    remittedAmount:
                      value: 1
                      currency: ZAR
                  creditorReference:
                    reference: Their statement reference
                    type:
                      value: RADM
                      schema: CODE
                      issuer: AnotherAmazeBank1234
                  originatorReference: My statement reference
          - transactionIdentifiers:
              endToEndIdentification: uniqueEndToEndId2
              transactionIdentification: RRN000000002
              uetr: uniqueUUID2
            amounts:
              bankSettlementAmount:
                value: 50
                currency: ZAR
            creditor:
              legalName: PersonLegalName
              knownAsName: PersonCommonName
            creditorAccount:
              identification:
                schema: GENERIC
                scheme:
                  schema: PROPRIETARY
                  value: AProprietaryCode123
                issuer: Amazing Bank
                value: abcdef987654
              proxy:
                namespace: NeoBank
                schema: MOBILE
                value: +27-0214620000
              type:
                schema: CODE
                value: CACC
            creditorAgent:
              bicfi: ABSAZAJ
            purpose:
              schema: CODE
              value: ABCD
            remittanceInformation:
              structured:
                - referredDocuments:
                    - type:
                        value: CINV
                        schema: CODE
                        issuer: AmazeBank123456
                      documentIdentifier: A0123456789
                  referredDocumentAmount:
                    duePayableAmount:
                      value: 1
                      currency: ZAR
                    remittedAmount:
                      value: 1
                      currency: ZAR
                  creditorReference:
                    type:
                      value: RADM
                      schema: CODE
                      issuer: AnotherAmazeBank1234
                    reference: ABC123XYZ999
    CreditTransferStatusRequestExample:
      summary: A request for the status of a credit transfer.
      value:
        schema: CreditTransferStatusRequest
        messageIdentifiers:
          creationDateTime: '2022-05-04T03:01:01Z'
          messageIdentification: messageId
        originalMessageIdentifiers:
          creationDateTime: '2022-05-04T03:02:01Z'
          messageIdentification: uniqueMessageId
        originalTransactionIdentifiers:
          endToEndIdentification: uniqueEndToEndId
          transactionIdentification: RRN000000001
          uetr: f27a34ad-c5ab-4b70-a3f9-946d743eaeaa
    OriginalErrorResponseBadRequest:
      summary: An echo of a prior error response caused by a bad reuest
      value:
        httpStatus: 400
        detail:
          schema: ErrorDetail
          message: >-
            Invalid request. Field 'creditTransfer.transactionIdentifiers.uetr'
            required but not present.
        schema: OriginalErrorResponse
    BulkCreditTransferStatusRequestExample:
      summary: A request for the status of a bulk credit transfer.
      value:
        schema: CreditTransferInitiationStatusRequest
        messageIdentifiers:
          creationDateTime: '2024-05-04T03:03:01Z'
          messageIdentification: messageId
        originalMessageIdentifiers:
          creationDateTime: '2024-05-04T03:02:01Z'
          messageIdentification: uniqueMessageId
        paymentInformationId: uniqueUUID
        includeIndividualCreditsStatuses: false
    PaymentStatusReportApprovedEFT:
      summary: Approved payment status report for an EFT credit or debit
      value:
        schema: PaymentStatusReport
        messageIdentifiers:
          messageIdentification: 9fd51c1234ba4819bbheyde296a68e1da
          creationDateTime: '2022-05-04T03:22:11Z'
        originalMessageIdentifiers:
          messageIdentification: 8fd51c7124ba4819b9253e296a68e1da
          creationDateTime: '2022-05-04T03:02:01Z'
        paymentScheme:
          schema: ZA_EFT
        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: RY8PEG0L
          memberId: AmazingBankId
          name: Amazing 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: RY8PEG0L
          memberId: AmazingBankId
          name: Amazing 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:
          paymentMethod: CreditTransfer
          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: Amazing Bank
              value: abcdef987654
            type:
              schema: CODE
              value: CACC
          creditorAgent:
            bicfi: RY8PEG0L
            memberId: AmazingBankId
            name: Amazing 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: AmazeBank123456
                      schema: CODE
                      value: CINV
                    documentIdentifier: A0123456789
                referredDocumentAmount:
                  duePayableAmount:
                    value: 1
                    currency: ZAR
                  remittedAmount:
                    value: 1
                    currency: ZAR
                creditorReference:
                  type:
                    issuer: AnotherAmazeBank1234
                    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: Amazing Bank
              value: abcdef987654
            type:
              schema: CODE
              value: CACC
          debtorAgent:
            bicfi: RY8PEG0L
            memberId: AmazingBankId
            name: Amazing 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
          supplementaryData:
            customData1: My custom data 1
            customData2: My custom data 2
          paymentTypeInformation:
            localInstrument:
              schema: CODE
              value: BTR
    PaymentStatusReportInboundRtcApproved:
      summary: >-
        Payment status report approving an inbound credit transfer authorisation
        request
      value:
        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: RY8PEG0L
          memberId: AmazingBankId
          name: Amazing 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: RY8PEG0L
          memberId: AmazingBankId
          name: Amazing 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: Amazing Bank
              value: abcdef987654
            type:
              schema: CODE
              value: CACC
          creditorAgent:
            bicfi: RY8PEG0L
            memberId: AmazingBankId
            name: Amazing 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: AmazeBank123456
                      schema: CODE
                      value: CINV
                    documentIdentifier: A0123456789
                referredDocumentAmount:
                  duePayableAmount:
                    value: 1
                    currency: ZAR
                  remittedAmount:
                    value: 1
                    currency: ZAR
                creditorReference:
                  type:
                    issuer: AnotherAmazeBank1234
                    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: Amazing Bank
              value: abcdef987654
            type:
              schema: CODE
              value: CACC
          debtorAgent:
            bicfi: RY8PEG0L
            memberId: AmazingBankId
            name: Amazing 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'
    InboundDirectDebitEFT:
      summary: Inbound direct debit for the EFT payment scheme.
      value:
        paymentScheme:
          schema: ZA_EFT
          schemeData:
            userReference: REF 1234
        instructingAgent:
          bicfi: RY8PEG0L
          memberId: AmazingBankId
          name: Amazing 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: RY8PEG0L
          memberId: AmazingBankId
          name: Amazing 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'
        paymentTypeInformation:
          localInstrument:
            schema: CODE
            value: BTR
        sequenceType: FRST
        amounts:
          bankSettlementAmount:
            value: 1
            currency: ZAR
          instructedAmount:
            value: 1
            currency: ZAR
        purpose:
          schema: CODE
          value: BKDF
        remittanceInformation:
          unstructured:
            - some
            - unstructured
            - information
          structured:
            - referredDocuments:
                - type:
                    value: CINV
                    schema: CODE
                    issuer: AmazeBank123456
                  documentIdentifier: A0123456789
              referredDocumentAmount:
                duePayableAmount:
                  value: 1
                  currency: ZAR
                remittedAmount:
                  value: 1
                  currency: ZAR
              creditorReference:
                type:
                  value: RADM
                  schema: CODE
                  issuer: AnotherAmazeBank1234
                reference: ABC123XYZ999
              additionalRemittanceInformation:
                - Some
                - Additional
                - Information
        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: Amazing Bank
            value: abcdef987654
          type:
            schema: CODE
            value: CACC
          currency: ZAR
        creditorAgent:
          bicfi: RY8PEG0L
          memberId: AmazingBankId
          name: Amazing 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: 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: Amazing Bank
            value: abcdef987654
          type:
            schema: CODE
            value: CACC
          currency: ZAR
        debtorAgent:
          bicfi: RY8PEG0L
          memberId: AmazingBankId
          name: Amazing 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'
        intermediaryAgents:
          - bicfi: RY8PEG0L
            memberId: AmazingBankId
            name: Amazing 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'
        requestedCollectionDate: '2022-05-04'
        mandateInformation:
          mandateIdentification: A mandate ID
          dateOfSignature: '2022-05-04'
          electronicSignature: A digital signature
          firstCollectionDate: '2022-05-04'
          finalCollectionDate: '2022-06-04'
          frequency:
            schema: MonthlyFrequency
            dayOfMonth: 4
          reason:
            schema: CODE
            value: ABCD
          trackingDays: 4
        schema: DirectDebit
        messageIdentifiers:
          messageIdentification: 8fd51c7124ba4819b9253e296a68e1da
          creationDateTime: '2022-05-04T03:02:01Z'
        transactionIdentifiers:
          endToEndIdentification: '6249118655591098'
          transactionIdentification: RRN000000001
          uetr: f27a34ad-c5ab-4b70-a3f9-946d743eaeaa
    PaymentReturnEFT:
      summary: Payment return for an EFT payment
      value:
        schema: PaymentReturn
        messageIdentifiers:
          messageIdentification: 9fd51c1234ba4819bbheyde296a68e1da
          creationDateTime: '2022-05-04T03:22:11Z'
        originalMessageIdentifiers:
          messageIdentification: 8fd51c7124ba4819b9253e296a68e1da
          creationDateTime: '2022-05-04T03:02:01Z'
        paymentScheme:
          schema: ZA_EFT
          schemeData:
            returnType: UNPAID
        paymentTypeInformation:
          localInstrument:
            schema: CODE
            value: BTR
        transactionIdentifiers:
          endToEndIdentification: '6249118655591098'
          transactionIdentification: RRN000000001
          uetr: f27a34ad-c5ab-4b70-a3f9-946d743eaeaa
        reasonInfo:
          - reason:
              schema: CODE
              value: AC01
            additionalInformation: string
        returnedAmounts:
          bankSettlementAmount:
            value: 1
            currency: ZAR
          instructedAmount:
            value: 1
            currency: ZAR
        settlementDate: '2022-05-04'
        instructingAgent:
          bicfi: RY8PEG0L
          memberId: AmazingBankId
          name: Amazing 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: RY8PEG0L
          memberId: AmazingBankId
          name: Amazing 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
        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: Amazing Bank
            value: abcdef987654
          type:
            schema: CODE
            value: CACC
        creditorAgent:
          bicfi: RY8PEG0L
          memberId: AmazingBankId
          name: Amazing 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: 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: Amazing Bank
            value: abcdef987654
          type:
            schema: CODE
            value: CACC
        debtorAgent:
          bicfi: RY8PEG0L
          memberId: AmazingBankId
          name: Amazing 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:
          settlementDate: '2022-05-04'
          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: Amazing Bank
              value: abcdef987654
            type:
              schema: CODE
              value: CACC
          creditorAgent:
            bicfi: RY8PEG0L
            memberId: AmazingBankId
            name: Amazing 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: AmazeBank123456
                      schema: CODE
                      value: CINV
                    documentIdentifier: A0123456789
                referredDocumentAmount:
                  duePayableAmount:
                    value: 1
                    currency: ZAR
                  remittedAmount:
                    value: 1
                    currency: ZAR
                creditorReference:
                  type:
                    issuer: AnotherAmazeBank1234
                    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: Amazing Bank
              value: abcdef987654
            type:
              schema: CODE
              value: CACC
          debtorAgent:
            bicfi: RY8PEG0L
            memberId: AmazingBankId
            name: Amazing 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
    RequestToPayExact:
      summary: Request To Pay (exact amount)
      value:
        paymentScheme:
          schema: ZA_RPP
        amounts:
          bankSettlementAmount:
            value: 100
            currency: ZAR
        paymentTypeInformation:
          localInstrument:
            schema: PROPRIETARY
            value: PBPX
        expiryDateTime: '2024-04-09T09:32:51.395+02:00'
        requestToPayConditions:
          minAmount:
            value: 100
            currency: ZAR
          maxAmount:
            value: 100
            currency: ZAR
        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: Amazing Bank
            value: abcdef987654
          type:
            schema: CODE
            value: CACC
          currency: ZAR
        creditorAgent:
          bicfi: RY8PEG0L
          memberId: AmazingBankId
          name: Amazing 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: developer.dave@electrum.com
          countryOfResidence: ZA
          identification:
            schema: PERSON
            identifiers:
              - identification: '90001236549870'
                scheme:
                  schema: CODE
                  value: NIDN
                issuer: Dept of Home Affairs
        debtorAccount:
          proxy:
            schema: MOBILE
            value: +27-721234567
            namespace: amazebank
          type:
            schema: CODE
            value: CACC
          currency: ZAR
        debtorAgent:
          bicfi: RY8PEG0L
          memberId: AmazingBankId
          name: Amazing 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: RY8PEG0L
          memberId: AmazingBankId
          name: Amazing 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: RY8PEG0L
          memberId: AmazingBankId
          name: Amazing 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'
        remittanceInformation:
          unstructured:
            - some
            - unstructured
            - information
          structured:
            - creditorReference:
                reference: ABC123XYZ999
              additionalRemittanceInformation:
                - Some
                - Additional
                - Information
        schema: RequestToPay
        messageIdentifiers:
          messageIdentification: 8fd51c7124ba4819b9253e296a68e1da
          creationDateTime: '2022-05-04T03:02:01Z'
        transactionIdentifiers:
          endToEndIdentification: '6249118655591098'
          transactionIdentification: RRN000000001
          uetr: f27a34ad-c5ab-4b70-a3f9-946d743eaeaa
    RequestToPayAnyAmount:
      summary: Request To Pay (any amount)
      value:
        paymentScheme:
          schema: ZA_RPP
        amounts:
          bankSettlementAmount:
            value: 100
            currency: ZAR
        paymentTypeInformation:
          localInstrument:
            schema: PROPRIETARY
            value: PBPX
        expiryDateTime: '2024-04-09T09:32:51.395+02:00'
        requestToPayConditions:
          minAmount:
            value: 1
            currency: ZAR
          maxAmount:
            value: 3000
            currency: ZAR
        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: Amazing Bank
            value: abcdef987654
          type:
            schema: CODE
            value: CACC
          currency: ZAR
        creditorAgent:
          bicfi: RY8PEG0L
          memberId: AmazingBankId
          name: Amazing 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: developer.dave@electrum.com
          countryOfResidence: ZA
          identification:
            schema: PERSON
            identifiers:
              - identification: '90001236549870'
                scheme:
                  schema: CODE
                  value: NIDN
                issuer: Dept of Home Affairs
        debtorAccount:
          proxy:
            schema: MOBILE
            value: +27-721234567
            namespace: amazebank
          type:
            schema: CODE
            value: CACC
          currency: ZAR
        debtorAgent:
          bicfi: RY8PEG0L
          memberId: AmazingBankId
          name: Amazing 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: RY8PEG0L
          memberId: AmazingBankId
          name: Amazing 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: RY8PEG0L
          memberId: AmazingBankId
          name: Amazing 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'
        remittanceInformation:
          unstructured:
            - some
            - unstructured
            - information
          structured:
            - creditorReference:
                reference: ABC123XYZ999
              additionalRemittanceInformation:
                - Some
                - Additional
                - Information
        schema: RequestToPay
        messageIdentifiers:
          messageIdentification: 8fd51c7124ba4819b9253e296a68e1da
          creationDateTime: '2022-05-04T03:02:01Z'
        transactionIdentifiers:
          endToEndIdentification: '6249118655591098'
          transactionIdentification: RRN000000001
          uetr: f27a34ad-c5ab-4b70-a3f9-946d743eaeaa
    RequestToPayResponsePresented:
      summary: Request To Pay Response Presented Debtor
      value:
        status:
          status: PRESENTED
        schema: RequestToPayResponse
        messageIdentifiers:
          messageIdentification: 89730ee05e184fb094cf27cec5078d6b
          creationDateTime: '2022-05-04T03:02:02Z'
        originalMessageIdentifiers:
          messageIdentification: 8fd51c7124ba4819b9253e296a68e1da
          creationDateTime: '2022-05-04T03:02:01Z'
        transactionIdentifiers:
          endToEndIdentification: '6249118655591098'
          transactionIdentification: RRN000000001
          uetr: f27a34ad-c5ab-4b70-a3f9-946d743eaeaa
        requestToPayConditions:
          minAmount:
            value: 100
            currency: ZAR
          maxAmount:
            value: 100
            currency: ZAR
    RequestToPayResponseCancelled:
      summary: Request To Pay Response Cancelled
      value:
        status:
          status: CANCELLED
          reasonInfo:
            - reason:
                schema: CODE
                value: CUST
              additionalInformation: Cancellation requested by the Creditor
        schema: RequestToPayResponse
        messageIdentifiers:
          messageIdentification: 89730ee05e184fb094cf27cec5078d6b
          creationDateTime: '2022-05-04T03:02:02Z'
        originalMessageIdentifiers:
          messageIdentification: 8fd51c7124ba4819b9253e296a68e1da
          creationDateTime: '2022-05-04T03:02:01Z'
        transactionIdentifiers:
          endToEndIdentification: '6249118655591098'
          transactionIdentification: RRN000000001
          uetr: f27a34ad-c5ab-4b70-a3f9-946d743eaeaa
    RequestToPayResponseRejected:
      summary: Request To Pay Response Rejected By Debtor
      value:
        status:
          status: REJECTED
          reasonInfo:
            - reason:
                schema: CODE
                value: MS02
              additionalInformation: Reason has not been specified by end customer
        schema: RequestToPayResponse
        messageIdentifiers:
          messageIdentification: 89730ee05e184fb094cf27cec5078d6b
          creationDateTime: '2022-05-04T03:02:02Z'
        originalMessageIdentifiers:
          messageIdentification: 8fd51c7124ba4819b9253e296a68e1da
          creationDateTime: '2022-05-04T03:02:01Z'
        transactionIdentifiers:
          endToEndIdentification: '6249118655591098'
          transactionIdentification: RRN000000001
          uetr: f27a34ad-c5ab-4b70-a3f9-946d743eaeaa
    RequestToPayResponseExpired:
      summary: Request To Pay Response Expired
      value:
        status:
          status: EXPIRED
          reasonInfo:
            - reason:
                schema: CODE
                value: EDTR
              additionalInformation: Expiry date time of the request-to-pay is already reached.
        schema: RequestToPayResponse
        messageIdentifiers:
          messageIdentification: 89730ee05e184fb094cf27cec5078d6b
          creationDateTime: '2022-05-04T03:02:02Z'
        originalMessageIdentifiers:
          messageIdentification: 8fd51c7124ba4819b9253e296a68e1da
          creationDateTime: '2022-05-04T03:02:01Z'
        transactionIdentifiers:
          endToEndIdentification: '6249118655591098'
          transactionIdentification: RRN000000001
          uetr: f27a34ad-c5ab-4b70-a3f9-946d743eaeaa
    RequestToPayResponsePaid:
      summary: Request To Pay Response Paid
      value:
        status:
          status: PAID
        schema: RequestToPayResponse
        messageIdentifiers:
          messageIdentification: 89730ee05e184fb094cf27cec5078d6b
          creationDateTime: '2022-05-04T03:02:02Z'
        originalMessageIdentifiers:
          messageIdentification: 8fd51c7124ba4819b9253e296a68e1da
          creationDateTime: '2022-05-04T03:02:01Z'
        transactionIdentifiers:
          endToEndIdentification: '6249118655591098'
          transactionIdentification: RRN000000001
          uetr: f27a34ad-c5ab-4b70-a3f9-946d743eaeaa
    RequestToPayCancellation:
      summary: Request To Pay Cancellation Request
      value:
        reasonCode: CUST
        schema: RequestToPayCancellation
        messageIdentifiers:
          messageIdentification: 336b84c5592c3ebfa5553f6e191b6eaa
          creationDateTime: '2022-05-04T03:05:10Z'
        originalMessageIdentifiers:
          messageIdentification: 8fd51c7124ba4819b9253e296a68e1da
          creationDateTime: '2022-05-04T03:02:01Z'
        originalTransactionIdentifiers:
          endToEndIdentification: '6249118655591098'
          transactionIdentification: RRN000000001
          uetr: f27a34ad-c5ab-4b70-a3f9-946d743eaeaa
    RequestToPayCancellationResponseCancelled:
      summary: Request To Pay Cancellation Request which was successful
      value:
        status:
          status: CANCELLED
        schema: RequestToPayCancellationResponse
        messageIdentifiers:
          messageIdentification: 336b84c5592c3ebfa5553f6e191b6eaa
          creationDateTime: '2022-05-04T03:05:10Z'
        originalMessageIdentifiers:
          messageIdentification: 8fd51c7124ba4819b9253e296a68e1da
          creationDateTime: '2022-05-04T03:02:01Z'
        originalTransactionIdentifiers:
          endToEndIdentification: '6249118655591098'
          transactionIdentification: RRN000000001
          uetr: f27a34ad-c5ab-4b70-a3f9-946d743eaeaa
    RequestToPayCancellationResponseAlreadyPaid:
      summary: Request To Pay Cancellation Request which was rejected
      value:
        status:
          status: REJECTED
          reasonInfo:
            - reason:
                schema: CODE
                value: PATE
              additionalInformation: >-
                Payment related to the request-to-pay has already been
                transmitted for execution.
        schema: RequestToPayCancellationResponse
        messageIdentifiers:
          messageIdentification: 336b84c5592c3ebfa5553f6e191b6eaa
          creationDateTime: '2022-05-04T03:05:10Z'
        originalMessageIdentifiers:
          messageIdentification: 8fd51c7124ba4819b9253e296a68e1da
          creationDateTime: '2022-05-04T03:02:01Z'
        originalTransactionIdentifiers:
          endToEndIdentification: '6249118655591098'
          transactionIdentification: RRN000000001
          uetr: f27a34ad-c5ab-4b70-a3f9-946d743eaeaa
    RefundInitiationRequest:
      summary: Request a Refund of a prior outbound Request To Pay
      value:
        amounts:
          bankSettlementAmount:
            value: 50
            currency: ZAR
          instructedAmount:
            value: 50
            currency: ZAR
        debtorAccount:
          identification:
            schema: GENERIC
            scheme:
              schema: PROPRIETARY
              value: AProprietaryCode123
            issuer: Amazing Bank
            value: abcdef987654
          type:
            schema: CODE
            value: CACC
        schema: RefundInitiationRequest
        messageIdentifiers:
          messageIdentification: 9fd51c7124ba4819b9253e296a6be1da
          creationDateTime: '2022-05-04T03:02:01Z'
        transactionIdentifiers:
          endToEndIdentification: '5129118655591098'
          transactionIdentification: RRN000000002
          uetr: 9f7a56ad-c5ab-4b70-a3f9-946d743eaeaa
        originalTransactionIdentifiers:
          endToEndIdentification: '6249118655591098'
          transactionIdentification: RRN000000001
          uetr: f27a34ad-c5ab-4b70-a3f9-946d743eaeaa
        paymentScheme:
          schema: ZA_RPP
          schemeData:
            hasRtp: true
    RequestToPayStatusRequest:
      summary: Request To Pay Status Request
      value:
        schema: RequestToPayStatusRequest
        messageIdentifiers:
          messageIdentification: f3507f23c9be4812baddf81e4a1a1180
          creationDateTime: '2022-05-04T03:01:01Z'
        originalMessageIdentifiers:
          messageIdentification: 8fd51c7124ba4819b9253e296a68e1da
          creationDateTime: '2022-05-04T03:02:01Z'
        originalTransactionIdentifiers:
          endToEndIdentification: '6249118655591098'
          transactionIdentification: RRN000000001
          uetr: f27a34ad-c5ab-4b70-a3f9-946d743eaeaa
    RequestToPayInitiation:
      summary: Bulk Collection Request
      value:
        schema: RequestToPayInitiation
        messageIdentifiers:
          messageIdentification: 8fd51c7124ba4819b9253e296a68e1da
          creationDateTime: '2022-05-04T03:02:01Z'
        requestToPayInformationId: 5e3b27c8-3ac8-49d9-8f17-c2bdef7ca180
        bulkPaymentSchemeName: ZA_RPP
        requestToPayInitiationInstructions:
          - messageIdentifiers:
              messageIdentification: 8fd51c7124ba4819b9253e296a68e1da
              creationDateTime: '2022-05-04T03:02:01Z'
            transactionIdentifiers:
              endToEndIdentification: uniqueEndToEndId1
              transactionIdentification: RRN000000001
              uetr: e96b1217-b6c9-4e25-9877-fcc7aa845661
            expiryDateTime: '2024-04-09T09:32:51.395+02:00'
            requestToPayConditions:
              minAmount:
                value: 100
                currency: ZAR
              maxAmount:
                value: 100
                currency: ZAR
            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: Amazing Bank
                value: abcdef987654
              type:
                schema: CODE
                value: CACC
              currency: ZAR
            creditorAgent:
              bicfi: RY8PEG0L
              memberId: AmazingBankId
              name: Amazing 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: developer.dave@electrum.com
              countryOfResidence: ZA
              identification:
                schema: PERSON
                identifiers:
                  - identification: '90001236549870'
                    scheme:
                      schema: CODE
                      value: NIDN
                    issuer: Dept of Home Affairs
            debtorAccount:
              proxy:
                schema: MOBILE
                value: +27-721234567
                namespace: amazebank
              type:
                schema: CODE
                value: CACC
              currency: ZAR
            debtorAgent:
              bicfi: RY8PEG0L
              memberId: AmazingBankId
              name: Amazing 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'
            paymentTypeInformation:
              localInstrument:
                schema: PROPRIETARY
                value: PBPX
            remittanceInformation:
              unstructured:
                - some
                - unstructured
                - information
              structured:
                - creditorReference:
                    reference: ABC123XYZ999
                  additionalRemittanceInformation:
                    - Some
                    - Additional
                    - Information
        initiatingParty:
          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
        numberOfTransactions: 1
    examples-RequestToPayStatusRequest:
      summary: Bulk collection Status request
      value:
        schema: RequestToPayInitiationStatusRequest
        messageIdentifiers:
          creationDateTime: '2024-05-04T03:01:01Z'
          messageIdentification: messageId
        originalMessageIdentifiers:
          creationDateTime: '2024-05-04T03:02:01Z'
          messageIdentification: uniqueMessageId
        requestToPayInformationId: 6e831b77-3e51-4a0e-a818-dc99a08f80d4
        includeIndividualRequestToPayStatuses: false
    AccountUpdateRequest:
      summary: >-
        Request to Update Account information when using Electrum Account
        Mirroring.
      value:
        schema: AccountUpdateRequest
        messageIdentifiers:
          messageIdentification: 8fd51c7124ba4819b9253e296a68e1da
          creationDateTime: '2022-05-04T03:02:01Z'
        account:
          type:
            schema: CODE
            value: CASH
          accountName: MyCashAccount
          currency: ZAR
          openingDate: '2022-05-03T15:02:01Z'
          status: ENABLED
          restrictions:
            - restrictionType: NO_CREDITS
              validFrom: '2022-05-04T03:02:01Z'
              validUntil: '2022-05-05T15:02:01Z'
          primaryIdentification:
            identifier:
              schema: IBAN
              value: GB29NWBK60161331926819
            accountKnownAs: BestAccount
          additionalIdentifications:
            - identifier:
                namespace: aNamespace
                schema: MOBILE
                value: +27-0821111111
              accountKnownAs: BestAccount
              registeredSchemes:
                - ZA_RPP
        primaryAccountOwnerDetails:
          schema: INDIVIDUAL
          recordIdentifier: 123456789
          name:
            title: Mr
            initials: DD
            firstName: David
            lastName: Developer
            additionalNames: Davido
            knownAs: Dave
          identifiers:
            - identification: 90001236549870
              issuer: Dept of Home Affairs
              scheme:
                schema: CODE
                value: NIDN
          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
        otherAccountOwnerDetails:
          - schema: ORGANISATION
            recordIdentifier: 123456789
            name:
              tradingAs: Electrum
            identifiers:
              - schema: BIC
                BIC: RY8PEG0L
              - schema: LEI
                LEI: FABABA1212CDCD343400
              - schema: OTHER
                identification: 1234567890
                issuer: CIPC
                scheme:
                  schema: CODE
                  value: BOID
              - schema: OTHER
                identification: 1234567890
                issuer: CIPC
                scheme:
                  schema: PROPRIETARY
                  value: AProprietaryCode123
            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
    AccountLookupResponseExample:
      summary: Example of an AccountLookupResponse object
      value:
        account:
          type:
            schema: CODE
            value: CASH
          accountName: MyCashAccount
          currency: ZAR
          openingDate: '2022-05-03T15:02:01Z'
          status: ENABLED
          restrictions:
            - restrictionType: NO_CREDITS
              validFrom: '2022-05-04T03:02:01Z'
              validUntil: '2022-05-05T15:02:01Z'
          primaryIdentification:
            identifier:
              schema: IBAN
              value: GB29NWBK60161331926819
            accountKnownAs: BestAccount
          additionalIdentifications:
            - identifier:
                namespace: aNamespace
                schema: MOBILE
                value: +27-0821111111
              accountKnownAs: BestAccount
              registeredSchemes:
                - ZA_RPP
        primaryAccountOwnerDetails:
          schema: INDIVIDUAL
          recordIdentifier: 123456789
          name:
            title: Mr
            initials: DD
            firstName: David
            lastName: Developer
            additionalNames: Davido
            knownAs: Dave
          identifiers:
            - identification: 90001236549870
              issuer: Dept of Home Affairs
              scheme:
                schema: CODE
                value: NIDN
          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
        otherAccountOwnerDetails:
          - schema: ORGANISATION
            recordIdentifier: 123456789
            name:
              tradingAs: Electrum
            identifiers:
              - schema: BIC
                BIC: RY8PEG0L
              - schema: LEI
                LEI: FABABA1212CDCD343400
              - schema: OTHER
                identification: 1234567890
                issuer: CIPC
                scheme:
                  schema: CODE
                  value: BOID
              - schema: OTHER
                identification: 1234567890
                issuer: CIPC
                scheme:
                  schema: PROPRIETARY
                  value: AProprietaryCode123
            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
    AccountAdditionalIdUpdateRequestInst:
      summary: >-
        Request to update an additional account identifier using an
        InstitutionAccountIdentifier.
      value:
        schema: AccountAdditionalIdUpdateRequest
        messageIdentifiers:
          messageIdentification: 8fd51c7124ba4819b9253e296a68e1da
          creationDateTime: '2022-05-04T03:02:01Z'
        currentIdentification:
          identifier:
            schema: GENERIC
            scheme:
              schema: CODE
              value: AIIN
            issuer: Amazing Bank
            value: '1234567890'
        additionalIdentification:
          identifier:
            schema: IBAN
            value: GB29NWBK60161331926819
    IdentifierSchemeRegistrationRequestExample:
      summary: >-
        Example payload for the registration of a proxy identifier for the
        ZA_RPP scheme
      value:
        schema: IdentifierSchemeRegistrationRequest
        messageIdentifiers:
          messageIdentification: 8fd51c7124ba4819b9253e296a68e1da
          creationDateTime: '2022-05-04T03:02:01Z'
        uetr: f27a34ad-c5ab-4b70-a3f9-946d743eaeaa
        schemeRegistration:
          schema: ZA_RPP
          identifier:
            namespace: aDomain
            schema: MOBILE
            value: +27-0821111111
          participant:
            bicfi: RY8PEG0L
            memberId: AmazingBankId
            name: Amazing 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
    IdentifierSchemeRegistrationResponseAccepted:
      summary: >-
        Example payload for the registration response of a proxy identifier for
        the ZA_RPP scheme
      value:
        schema: IdentifierSchemeRegistrationResponse
        messageIdentifiers:
          messageIdentification: 9fd51c1234ba4819bbheyde296a68e1da
          creationDateTime: '2022-05-04T03:22:11Z'
        originalMessageIdentifiers:
          messageIdentification: 8fd51c7124ba4819b9253e296a68e1da
          creationDateTime: '2022-05-04T03:02:01Z'
        uetr: f27a34ad-c5ab-4b70-a3f9-946d743eaeaa
        schemeRegistrationOutcome:
          schema: ZA_RPP
          registrationStatus: ACCEPTED
          agent:
            bicfi: RY8PEG0L
            memberId: AmazingBankId
            name: Amazing 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
          proxy:
            schema: MOBILE
            value: +27-0214620000
    IdentifierSchemeRegistrationResponseRejected:
      summary: >-
        Example payload for the registration response of a proxy identifier for
        the ZA_RPP scheme
      value:
        schema: IdentifierSchemeRegistrationResponse
        messageIdentifiers:
          messageIdentification: 9fd51c1234ba4819bbheyde296a68e1da
          creationDateTime: '2022-05-04T03:22:11Z'
        originalMessageIdentifiers:
          messageIdentification: 8fd51c7124ba4819b9253e296a68e1da
          creationDateTime: '2022-05-04T03:02:01Z'
        uetr: f27a34ad-c5ab-4b70-a3f9-946d743eaeaa
        schemeRegistrationOutcome:
          schema: ZA_RPP
          registrationStatus: REJECTED
          reasonCode: AB06
          agent:
            bicfi: RY8PEG0L
            memberId: AmazingBankId
            name: Amazing 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
          proxy:
            schema: MOBILE
            value: +27-0214620000
    IdentifierSchemeDeregistrationRequestExample:
      summary: >-
        Example payload for the deregistration of a proxy identifier for the
        ZA_RPP scheme
      value:
        schema: IdentifierSchemeDeregistrationRequest
        messageIdentifiers:
          messageIdentification: 8fd51c7124ba4819b9253e296a68e1da
          creationDateTime: '2022-05-04T03:02:01Z'
        uetr: f27a34ad-c5ab-4b70-a3f9-946d743eaeaa
        schemeDeregistration:
          schema: ZA_RPP
          registeredAccountId:
            schema: MOBILE
            value: +27-0821111111
          participant:
            bicfi: RY8PEG0L
            memberId: AmazingBankId
            name: Amazing 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
    IdentifierSchemeDeregistrationResponseAccepted:
      summary: >-
        Example payload for the registration response of a proxy identifier for
        the ZA_RPP scheme
      value:
        schema: IdentifierSchemeDeregistrationResponse
        messageIdentifiers:
          messageIdentification: 9fd51c1234ba4819bbheyde296a68e1da
          creationDateTime: '2022-05-04T03:22:11Z'
        originalMessageIdentifiers:
          messageIdentification: 8fd51c7124ba4819b9253e296a68e1da
          creationDateTime: '2022-05-04T03:02:01Z'
        uetr: f27a34ad-c5ab-4b70-a3f9-946d743eaeaa
        schemeRegistrationOutcome:
          schema: ZA_RPP
          deregistrationStatus: ACCEPTED
          agent:
            bicfi: RY8PEG0L
            memberId: AmazingBankId
            name: Amazing 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
          proxy:
            schema: MOBILE
            value: +27-0214620000
    IdentifierSchemeDeregistrationResponseRejected:
      summary: >-
        Example payload for the registration response of a proxy identifier for
        the ZA_RPP scheme
      value:
        schema: IdentifierSchemeDeregistrationResponse
        messageIdentifiers:
          messageIdentification: 9fd51c1234ba4819bbheyde296a68e1da
          creationDateTime: '2022-05-04T03:22:11Z'
        originalMessageIdentifiers:
          messageIdentification: 8fd51c7124ba4819b9253e296a68e1da
          creationDateTime: '2022-05-04T03:02:01Z'
        uetr: f27a34ad-c5ab-4b70-a3f9-946d743eaeaa
        schemeRegistrationOutcome:
          schema: ZA_RPP
          deregistrationStatus: REJECTED
          reasonCode: AB06
          agent:
            bicfi: RY8PEG0L
            memberId: AmazingBankId
            name: Amazing 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
          proxy:
            schema: MOBILE
            value: +27-0214620000
    IdentifierSchemeRegistrationsExample:
      summary: >-
        An example response payload for the `getRegisteredSchemesForAccountId`
        operation
      value:
        registeredSchemes:
          - ZA_RPP
    ZaRppDomainListSchemeInquiry:
      summary: ZA RPP List all Domains Inquiry
      value:
        schema: SchemeInquiryRequest
        messageIdentifiers:
          messageIdentification: 8fd51c7124ba4819b9253e296a68e1da
          creationDateTime: '2022-05-04T03:02:01Z'
        inquiry:
          schema: ZA_RPP_LIST_DOMAINS
          agent:
            bicfi: RY8PEG0L
            memberId: AmazingBankId
            name: Amazing 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
    ZaRppListDomainsReport:
      summary: Successful ZA RPP Proxy resolution response
      value:
        schema: SchemeInquiryResponse
        messageIdentifiers:
          messageIdentification: 9fd51c1234ba4819bbheyde296a68e1da
          creationDateTime: '2022-05-04T03:22:11Z'
        originalMessageIdentifiers:
          messageIdentification: 8fd51c7124ba4819b9253e296a68e1da
          creationDateTime: '2022-05-04T03:02:01Z'
        report:
          schema: ZA_RPP_LIST_DOMAINS
          agent:
            bicfi: RY8PEG0L
            memberId: AmazingBankId
            name: Amazing 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
          domains:
            - domain: BLUE
            - domain: GREY
            - domain: GREEN
            - domain: RED
    ZaRppProxyResolutionIdentifierDeterminationRequest:
      summary: Identification Determination for ZA-RPP proxy resolution
      value:
        messageIdentifiers:
          messageIdentification: 8fd51c7124ba4819b9253e296a68e1da
          creationDateTime: '2022-05-04T03:02:01Z'
        schema: IdentifierDeterminationRequest
        request:
          schema: ZA_RPP
          instructedAgent:
            bicfi: RY8PEG0L
            memberId: AmazingBankId
            name: Amazing 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: RY8PEG0L
            memberId: AmazingBankId
            name: Amazing 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
          requestor:
            schema: INSTITUTION_IDENTIFICATION
            bicfi: RY8PEG0L
            memberId: AmazingBankId
            domain: ADomain
            name: Amazing Bank Inc
          identifier:
            namespace: AnotherDomain
            schema: MOBILE
            value: +27-0214620000
          uetr: f27a34ad-c5ab-4b70-a3f9-946d743eaeaa
          verificationIdentification: e3360de097fe42a195cc53251d0ec839
        supplementaryData:
          customData1: My custom data 1
          customData2: My custom data 2
    ZaRppAccountResolutionIdentifierDeterminationRequest:
      summary: Identification Determination for ZA-RPP proxy resolution
      value:
        messageIdentifiers:
          messageIdentification: 8fd51c7124ba4819b9253e296a68e1da
          creationDateTime: '2022-05-04T03:02:01Z'
        schema: IdentifierDeterminationRequest
        request:
          schema: ZA_RPP
          instructedAgent:
            bicfi: RY8PEG0L
            memberId: AmazingBankId
            name: Amazing 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: RY8PEG0L
            memberId: AmazingBankId
            name: Amazing 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
          requestor:
            schema: INSTITUTION_IDENTIFICATION
            bicfi: RY8PEG0L
            memberId: AmazingBankId
            domain: ADomain
            name: Amazing Bank Inc
          identifier:
            schema: GENERIC
            value: 1234567890
          uetr: f27a34ad-c5ab-4b70-a3f9-946d743eaeaa
          verificationIdentification: e3360de097fe42a195cc53251d0ec839
        supplementaryData:
          customData1: My custom data 1
          customData2: My custom data 2
    ZaRppProxyResolutionSuccessfulResponse:
      summary: Successful ZA RPP Proxy resolution response
      value:
        schema: IdentifierDeterminationResponse
        messageIdentifiers:
          messageIdentification: 9fd51c1234ba4819bbheyde296a68e1da
          creationDateTime: '2022-05-04T03:22:11Z'
        originalMessageIdentifiers:
          messageIdentification: 8fd51c7124ba4819b9253e296a68e1da
          creationDateTime: '2022-05-04T03:02:01Z'
        report:
          originalUetr: f27a34ad-c5ab-4b70-a3f9-946d743eaeaa
          originalVerificationIdentification: '1001'
          schema: ZA_RPP
          reportInformation:
            outcome: SUCCESSFUL
            transactionLimit:
              value: 3000
              currency: ZAR
            accountInformation:
              proxy:
                schema: MOBILE
                value: +27-812456789
              creationDate: '2021-01-01T09:55:45.015708Z'
              traditionalIdentifier:
                schema: GENERIC
                value: 1234567890
            accountOwner:
              knownAsName: Shaun
              legalName: Shaun John Smith
          instructedAgent:
            bicfi: RY8PEG0L
            memberId: AmazingBankId
            name: Amazing 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: RY8PEG0L
            memberId: AmazingBankId
            name: Amazing 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
          originalRequestor:
            schema: INSTITUTION_IDENTIFICATION
            bicfi: RY8PEG0L
            memberId: AmazingBankId
            domain: ADomain
            name: Amazing Bank Inc
        supplementaryData:
          customData1: My custom data 1
          customData2: My custom data 2
    ZaRppProxyResolutionUnsuccessfulResponse:
      summary: Unsuccessful ZA RPP Proxy resolution response
      value:
        schema: IdentifierDeterminationResponse
        messageIdentifiers:
          messageIdentification: 9fd51c1234ba4819bbheyde296a68e1da
          creationDateTime: '2022-05-04T03:22:11Z'
        originalMessageIdentifiers:
          messageIdentification: 8fd51c7124ba4819b9253e296a68e1da
          creationDateTime: '2022-05-04T03:02:01Z'
        report:
          schema: ZA_RPP
          originalUetr: f27a34ad-c5ab-4b70-a3f9-946d743eaeaa
          originalVerificationIdentification: e3360de097fe42a195cc53251d0ec839
          reportInformation:
            outcome: FAILED
            reasonCode: AB01
          instructedAgent:
            bicfi: RY8PEG0L
            memberId: AmazingBankId
            name: Amazing 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: RY8PEG0L
            memberId: AmazingBankId
            name: Amazing 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
    ZaCdvCheckDigitVerificationRequestExample:
      summary: South African Check Digit Verification Request
      value:
        verificationScheme: ZA_CDV
        identifier:
          schema: GENERIC
          scheme:
            schema: CODE
            value: BBAN
          issuer: Capitec Bank
          value: 1608249008
        branch:
          identification: 470010
        accountType:
          schema: CODE
          value: CACC
    CheckDigitVerificationReportPassedExample:
      summary: Successful South African Check Digit Verification Response
      value:
        outcome: PASSED
    CheckDigitVerificationReportFailedExample:
      summary: Unsuccessful South African Check Digit Verification Response
      value:
        outcome: FAILED
        reasonInfo:
          reason:
            schema: CODE
            value: AGNT
          additionalInformation: The supplied branch code is not a recognised branch code.
    CheckDigitVerificationReportSkippedExample:
      summary: Skipped South African Check Digit Verification Response
      value:
        outcome: SKIPPED
        reasonInfo:
          reason:
            schema: PROPRIETARY
            value: UNKNOWN_SCHEME
          additionalInformation: >-
            The supplied verification scheme is not recognised. Verification
            will not be conducted.
    CheckDigitVerificationReportVerbosePassedExample:
      summary: Successful South African Check Digit Verification Verbose Response
      value:
        outcome: PASSED
        reasonInfo:
          reason:
            schema: CODE
            value: ACC
          additionalInformation: >-
            The CDV check passed. This is the account type that was used during
            the CDV validation: CURRENT. This is the account number that was
            used during the CDV validation: 1608249008. This is the branch code
            that was used during the CDV validation: 470010. 
    CheckDigitVerificationReportVerboseFailedExample:
      summary: >-
        Unsuccessful South African Check Digit Verification Verbose Response due
        to incorrect details.
      value:
        outcome: FAILED
        reasonInfo:
          reason:
            schema: CODE
            value: AC01
          additionalInformation: >-
            The account number and branch code combination did not pass the CDV
            check. Bank Name : Nedbank. Account Indicator: _4.
            BranchCodeRange{from=BranchCode{code='100-000'},
            to=BranchCode{code='199-999'}}. The CDV check failed. This is the
            account type that was used during the CDV validation: CURRENT. This
            is the account number that was used during the CDV validation:
            9000000151. This is the branch code that was used during the CDV
            validation: 100001. 
    ErrorDetailBadRequest:
      summary: An error indicating an error with the message received.
      value:
        schema: ErrorDetail
        message: >-
          Invalid request. Field 'creditTransfer.transactionIdentifiers.uetr'
          required but not present.
    CheckDigitVerificationReportVerboseErrorExample:
      summary: >-
        Unsuccessful South African Check Digit Verification Verbose Response due
        to an error.
      value:
        schema: ErrorDetail
        message: '''NREX'' not supported'
        detail: >-
          CDV is not supported for account type 'NREX' provided. Only Current
          (CACC), Savings (SVGS), Transmission (TRAN), Bond (LOAN), Other (OTHR)
          and Subscription Share (TRAS) accounts are supported. The CDV check
          failed: The account type was not found to be a bankserv account
          type.The Account type could not be found or resolved. This is the
          account number that was used during the CDV validation: 8001133590301.
          This is the branch code that was used during the CDV validation:
          760005. 
    ZaAccountVerificationResponse:
      value:
        schema: AccountVerificationResponse
        messageIdentifiers:
          messageIdentification: 9fd51c1234ba4819bbheyde296a68e1da
          creationDateTime: '2022-05-04T03:22:11Z'
        originalMessageIdentifiers:
          messageIdentification: 8fd51c7124ba4819b9253e296a68e1da
          creationDateTime: '2022-05-04T03:02:01Z'
        transactionIdentifiers:
          endToEndIdentification: '6249118655591098'
          transactionIdentification: RRN000000001
          uetr: f27a34ad-c5ab-4b70-a3f9-946d743eaeaa
        creator:
          legalName: Zamazing Bank Inc
          identification:
            schema: ORGANISATION
            identifiers:
              - schema: BIC
                BIC: ZY8PEG0L
              - schema: OTHER
                identification: ZamazingBankClearingID
                scheme:
                  schema: CODE
                  value: CHID
        firstAgent:
          bicfi: RY8PEG0L
          memberId: ZamazingBankId
          name: Zamazing Bank Inc
          branch:
            identification: '210514'
            name: XYZ Knysna
            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'
        assigner:
          legalName: Zamazing Bank Inc
          identification:
            schema: ORGANISATION
            identifiers:
              - schema: BIC
                BIC: ZY8PEG0L
              - schema: OTHER
                identification: ZamazingBankClearingID
                scheme:
                  schema: CODE
                  value: CHID
        assignee:
          legalName: Amazing Bank Inc
          identification:
            schema: ORGANISATION
            identifiers:
              - schema: BIC
                BIC: RY8PEG0L
              - schema: OTHER
                identification: AmazingBankClearingID
                scheme:
                  schema: CODE
                  value: CHID
        originalVerification:
          identification: e21a36adc5ab4b70a3f9952d743eaeaa
          party:
            legalName: Joshua Paul du Plessis
            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-214620000
              mobileNumber: +27-8230000000
              emailAddress: josh.du.plessis@electrum.com
            countryOfResidence: ZA
            identification:
              schema: PERSON
              identifiers:
                - identification: '90001236549870'
                  scheme:
                    schema: CODE
                    value: NIDN
                  issuer: Dept of Home Affairs
          account:
            identification:
              schema: GENERIC
              scheme:
                schema: CODE
                value: BBAN
              issuer: Amazing Bank
              value: 60091645492
            type:
              schema: CODE
              value: CACC
            currency: ZAR
          agent:
            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'
          schemeVerificationData:
            schema: ZA_AVS
            checkDebitsAllowed: 'true'
            checkCreditsAllowed: 'true'
            checkOlderThanThreeMonths: 'true'
            initials: JP
            lastName: du Plessis
        originalAssignment:
          creator:
            legalName: Amazing Bank Inc
            identification:
              schema: ORGANISATION
              identifiers:
                - schema: BIC
                  BIC: RY8PEG0L
                - schema: OTHER
                  identification: AmazingBankClearingID
                  scheme:
                    schema: CODE
                    value: CHID
          firstAgent:
            bicfi: RY8PEG0L
            memberId: AmazingBankId
            name: Amazing 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'
          assigner:
            legalName: Amazing Bank Inc
            identification:
              schema: ORGANISATION
              identifiers:
                - schema: BIC
                  BIC: RY8PEG0L
                - schema: OTHER
                  identification: AmazingBankClearingID
                  scheme:
                    schema: CODE
                    value: CHID
          assignee:
            legalName: Zamazing Bank Inc
            identification:
              schema: ORGANISATION
              identifiers:
                - schema: BIC
                  BIC: ZY8PEG0L
                - schema: OTHER
                  identification: ZamazingBankClearingID
                  scheme:
                    schema: CODE
                    value: CHID
        status:
          outcome: APPROVED
          reasonInfo:
            - reason:
                schema: CODE
                value: ACCC
        report:
          originalIdentification: e21a36adc5ab4b70a3f9952d743eaeaa
          outcome:
            schema: FAILED
            reasonInfo:
              reason:
                schema: CODE
                value: MS03
          schemeVerificationReportData:
            schema: ZA_AVS
            accountFound: 'TRUE'
            accountOpen: 'TRUE'
            accountTypeMatch: 'TRUE'
            privateIdentificationMatch: 'TRUE'
            organisationIdentificationMatch: NOT_CHECKED
            trustIdentificationMatch: NOT_CHECKED
            initialsMatch: 'FALSE'
            nameMatch: 'FALSE'
            debitsAllowed: 'FALSE'
            creditsAllowed: 'TRUE'
            olderThanThreeMonths: 'TRUE'
            emailMatch: NOT_CHECKED
            mobileMatch: NOT_CHECKED
    ZaAccountVerificationRequest:
      summary: Account Verification for ZA_AVS
      value:
        schema: AccountVerificationRequest
        messageIdentifiers:
          messageIdentification: 8fd51c7124ba4819b9253e296a68e1da
          creationDateTime: '2022-05-04T03:02:01Z'
        transactionIdentifiers:
          endToEndIdentification: '6249118655591098'
          transactionIdentification: RRN000000001
          uetr: f27a34ad-c5ab-4b70-a3f9-946d743eaeaa
        creator:
          legalName: Amazing Bank Inc
          identification:
            schema: ORGANISATION
            identifiers:
              - schema: BIC
                BIC: RY8PEG0L
              - schema: OTHER
                identification: AmazingBankClearingID
                scheme:
                  schema: CODE
                  value: CHID
        firstAgent:
          bicfi: RY8PEG0L
          memberId: AmazingBankId
          name: Amazing 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'
        assigner:
          legalName: Amazing Bank Inc
          identification:
            schema: ORGANISATION
            identifiers:
              - schema: BIC
                BIC: RY8PEG0L
              - schema: OTHER
                identification: AmazingBankClearingID
                scheme:
                  schema: CODE
                  value: CHID
        assignee:
          legalName: Zamazing Bank Inc
          identification:
            schema: ORGANISATION
            identifiers:
              - schema: BIC
                BIC: ZY8PEG0L
              - schema: OTHER
                identification: ZamazingBankClearingID
                scheme:
                  schema: CODE
                  value: CHID
        verification:
          identification: e21a36adc5ab4b70a3f9952d743eaeaa
          party:
            legalName: Joshua Paul du Plessis
            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-214620000
              mobileNumber: +27-823000000
              emailAddress: joshua.du.plessis@electrum.com
            countryOfResidence: ZA
            identification:
              schema: PERSON
              identifiers:
                - identification: '90001236549870'
                  scheme:
                    schema: CODE
                    value: NIDN
                  issuer: Dept of Home Affairs
          account:
            identification:
              schema: GENERIC
              scheme:
                schema: CODE
                value: BBAN
              issuer: Amazing Bank
              value: 60091645492
            type:
              schema: CODE
              value: CACC
            currency: ZAR
          agent:
            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'
          schemeVerificationData:
            schema: ZA_AVS
            checkDebitsAllowed: 'true'
            checkCreditsAllowed: 'true'
            checkOlderThanThreeMonths: 'true'
            initials: JP
            lastName: du Plessis
    FundsManagementApprovedResponse:
      summary: Example of an approved reservation response.
      value:
        schema: Receipt
        messageIdentifiers:
          messageIdentification: msg-12345
          creationDateTime: '2025-01-23T06:29:01Z'
        originalMessageIdentifiers:
          messageIdentification: original-msg-12345
          creationDateTime: '2025-01-22T06:29:01Z'
        transactionIdentifiers:
          endToEndIdentification: e2e-12345
          transactionIdentification: txn-12345
          uetr: 550e8400-e29b-41d4-a716-446655440000
        status:
          outcome: APPROVED
        supplementaryData:
          key1: value1
          key2: value2
    FundsManagementRejectedResponse:
      summary: Example of a rejected reservation response.
      value:
        schema: Receipt
        messageIdentifiers:
          messageIdentification: msg-12345
          creationDateTime: '2025-01-23T06:29:01Z'
        originalMessageIdentifiers:
          messageIdentification: original-msg-12345
          creationDateTime: '2025-01-22T06:29:01Z'
        transactionIdentifiers:
          endToEndIdentification: e2e-12345
          transactionIdentification: txn-12345
          uetr: 550e8400-e29b-41d4-a716-446655440000
        status:
          outcome: REJECTED
          reasonInfo:
            - reason:
                schema: CODE
                value: AC01
              additionalInformation: Incorrect account number
        supplementaryData:
          key1: value1
          key2: value2
    PostingResponse:
      summary: Example of an approved postings response.
      value:
        schema: Receipt
        messageIdentifiers:
          messageIdentification: msg-12345
          creationDateTime: '2025-01-23T06:29:01Z'
        originalMessageIdentifiers:
          messageIdentification: original-msg-12345
          creationDateTime: '2025-01-22T06:29:01Z'
        transactionIdentifiers:
          endToEndIdentification: e2e-12345
          transactionIdentification: txn-12345
          uetr: 550e8400-e29b-41d4-a716-446655440000
        status:
          outcome: APPROVED
        supplementaryData:
          key1: value1
          key2: value2
    VoidReservationResponse:
      summary: Example of a void reservation response.
      value:
        schema: Receipt
        messageIdentifiers:
          messageIdentification: msg-12345
          creationDateTime: '2025-01-23T06:29:01Z'
        originalMessageIdentifiers:
          messageIdentification: original-msg-12345
          creationDateTime: '2025-01-22T06:29:01Z'
        transactionIdentifiers:
          endToEndIdentification: e2e-12345
          transactionIdentification: txn-12345
          uetr: 550e8400-e29b-41d4-a716-446655440000
        status:
          outcome: APPROVED
        supplementaryData:
          key1: value1
          key2: value2
