openapi: 3.0.3
info:
  version: 15.2.0
  title: EPC API for calling Electrum
  description: >-
    The Electrum EPC API for calling Electrum is an asynchronous API that allows
    Corporate Clients 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.
  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
paths:
  /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://bpp-developer-portal.redoc.ly/openapi/elpapi-bpp-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/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
        [https://bpp-developer-portal.redoc.ly/openapi/elpapi-bpp-partneroperation/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://bpp-developer-portal.redoc.ly/openapi/elpapi-bpp-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://bpp-developer-portal.redoc.ly/openapi/elpapi-bpp-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/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://bpp-developer-portal.redoc.ly/openapi/elpapi-bpp/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://bpp-developer-portal.redoc.ly/openapi/elpapi-bpp-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'
  /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'
  /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://bpp-developer-portal.redoc.ly/openapi/elpapi-bpp-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/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://bpp-developer-portal.redoc.ly/openapi/elpapi-bpp-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'
  /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://bpp-developer-portal.redoc.ly/openapi/elpapi-bpp-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/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'
  /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://bpp-developer-portal.redoc.ly/openapi/elpapi-bpp-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/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://bpp-developer-portal.redoc.ly/openapi/elpapi-bpp-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/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://bpp-developer-portal.redoc.ly/openapi/elpapi-bpp-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://bpp-developer-portal.redoc.ly/openapi/elpapi-bpp-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://bpp-developer-portal.redoc.ly/openapi/elpapi-bpp-partner/operation/outboundRequestToPayResponse/).

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

        [outboundBulkRequestToPayResponse](https://bpp-developer-portal.redoc.ly/openapi/elpapi-bpp-partner/operation/outboundBulkRequestToPayResponse/)


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

        [getOutboundBulkRequestToPayStatus](https://bpp-developer-portal.redoc.ly/openapi/elpapi-bpp/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://bpp-developer-portal.redoc.ly/openapi/elpapi-bpp-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.


        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/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'
  /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'
  /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'
tags:
  - name: credit-transfer
    description: Operations related to credit transfer transactions.
  - name: scheme-inquiry
    description: >-
      Operations that are related to retrieving information from industry for a
      particular scheme.
  - name: request-to-pay
    description: >-
      Operations which pertain to a request for payment from a creditor to a
      debtor
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).
      pattern: ^[A-Fa-f0-9]{2}\-[A-Fa-f0-9]{32}\-[A-Fa-f0-9]{16}\-[A-Fa-f0-9]{2}$
      type: string
    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).
      pattern: ^[A-Za-z0-9=, _\*/@]{0,1024}$
      type: string
    MessageIdentifiers:
      description: >
        Holds a point-to-point unique message identification string as well as a
        message's creation date time.
      properties:
        creationDateTime:
          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)
          format: date-time
          type: string
        messageIdentification:
          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.
          maxLength: 35
          type: string
      required:
        - messageIdentification
        - creationDateTime
      type: object
    SupplementaryData:
      additionalProperties:
        type: string
      description: >
        A list of key-value pairs to support adding any supplementary/additional
        data to an Electrum Regulated Payments API message.
      type: object
    BaseMessage:
      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.
      properties:
        messageIdentifiers:
          $ref: '#/components/schemas/MessageIdentifiers'
        supplementaryData:
          $ref: '#/components/schemas/SupplementaryData'
      required:
        - messageIdentifiers
      type: object
    BaseResponseMessage:
      allOf:
        - $ref: '#/components/schemas/BaseMessage'
        - description: >
            An extension of `BaseMessage` which includes additional information
            pertinent to an asynchronous response

            message. In particular, original message identifiers.
          properties:
            originalMessageIdentifiers:
              $ref: '#/components/schemas/MessageIdentifiers'
          required:
            - originalMessageIdentifiers
          type: object
    TransactionIdentifiers:
      description: >
        Holds a series of identifiers to identify the transaction or an
        individual message that is part of a transaction.
      properties:
        endToEndIdentification:
          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.
          maxLength: 35
          type: string
        transactionIdentification:
          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.
          maxLength: 35
          type: string
        uetr:
          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.
          format: UUID
          type: string
      required:
        - endToEndIdentification
        - uetr
      type: object
    BaseTransactionResponseMessage:
      allOf:
        - $ref: '#/components/schemas/BaseResponseMessage'
        - description: >
            An extension of `BaseTransactionMessage` which includes additional
            information pertinent to an asynchronous

            response message. In particular, original message identifiers.
          properties:
            transactionIdentifiers:
              $ref: '#/components/schemas/TransactionIdentifiers'
          required:
            - transactionIdentifiers
          type: object
    CustomIdentifier:
      allOf:
        - $ref: '#/components/schemas/NonBankingIdentifier'
        - properties:
            value:
              maxLength: 2048
              minLength: 1
              type: string
          required:
            - value
          type: object
    NonBankingIdentifier:
      discriminator:
        mapping:
          CUSTOM: '#/components/schemas/CustomIdentifier'
          MOBILE: '#/components/schemas/MobileNumberIdentifier'
        propertyName: schema
      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
          maxLength: 40
          minLength: 1
          type: string
        schema:
          description: Indicates the schema of the identifier, e.g. `MOBILE`, `CUSTOM`.
          type: string
      type: object
    PhoneNumber:
      pattern: ^\+[0-9]{1,3}-[0-9()+\-]{1,30}$
      type: string
    MobileNumberIdentifier:
      allOf:
        - $ref: '#/components/schemas/NonBankingIdentifier'
        - properties:
            value:
              $ref: '#/components/schemas/PhoneNumber'
          required:
            - value
          type: object
    FinancialInstitutionIdentifier:
      properties:
        bicfi:
          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)
          pattern: ^[A-Z0-9]{4,4}[A-Z]{2,2}[A-Z0-9]{2,2}([A-Z0-9]{3,3}){0,1}$
          type: string
        memberId:
          description: Identification of a member of a clearing system.
          maxLength: 35
          type: string
        namespaces:
          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
            maxLength: 40
            minLength: 1
            type: string
          type: array
        schema:
          description: >-
            Indicates the account identifier is a Financial Institution
            Identifier, always `FII`
          type: string
      required:
        - schema
      type: object
    ExternalAccountIdentificationCode:
      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.
      enum:
        - AIIN
        - BBAN
        - CUID
        - UPIC
      type: string
    GenericAccountIdentificationSchemeCode:
      properties:
        schema:
          description: Identifies the value as being a pre-defined code. Always `CODE`.
          type: string
        value:
          $ref: '#/components/schemas/ExternalAccountIdentificationCode'
      required:
        - value
        - schema
      type: object
    ProprietaryValueLiteral:
      description: A proprietary value.
      maxLength: 35
      type: string
    ProprietaryValue:
      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.
      properties:
        schema:
          description: >
            Identifies the value as being proprietary (i.e. not published in an
            external list). Always `PROPRIETARY`
          type: string
        value:
          $ref: '#/components/schemas/ProprietaryValueLiteral'
      required:
        - value
        - schema
      type: object
    GenericAccountIdentificationScheme:
      description: >-
        Identifies the scheme that defines the identification of a generic
        account.
      discriminator:
        mapping:
          CODE: '#/components/schemas/GenericAccountIdentificationSchemeCode'
          PROPRIETARY: '#/components/schemas/ProprietaryValue'
        propertyName: schema
      oneOf:
        - $ref: '#/components/schemas/GenericAccountIdentificationSchemeCode'
        - $ref: '#/components/schemas/ProprietaryValue'
      type: object
    GenericAccountIdentifier:
      properties:
        issuer:
          description: The entity that assigns the identification
          maxLength: 35
          type: string
        schema:
          description: Identifies this account identifier as generic, always `GENERIC`
          type: string
        scheme:
          $ref: '#/components/schemas/GenericAccountIdentificationScheme'
        value:
          maxLength: 40
          minLength: 1
          type: string
      required:
        - schema
        - value
      type: object
    IBAN:
      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
      pattern: '[A-Z]{2,2}[0-9]{2,2}[a-zA-Z0-9]{1,30}'
      type: string
    IBANIdentifier:
      properties:
        schema:
          description: Indicates the account identifier is an IBAN, always `IBAN`
          type: string
        value:
          $ref: '#/components/schemas/IBAN'
      required:
        - schema
        - value
      type: object
    AccountIdentifier:
      discriminator:
        mapping:
          CUSTOM: '#/components/schemas/CustomIdentifier'
          FII: '#/components/schemas/FinancialInstitutionIdentifier'
          GENERIC: '#/components/schemas/GenericAccountIdentifier'
          IBAN: '#/components/schemas/IBANIdentifier'
          MOBILE: '#/components/schemas/MobileNumberIdentifier'
        propertyName: schema
      oneOf:
        - $ref: '#/components/schemas/IBANIdentifier'
        - $ref: '#/components/schemas/GenericAccountIdentifier'
        - $ref: '#/components/schemas/MobileNumberIdentifier'
        - $ref: '#/components/schemas/CustomIdentifier'
        - $ref: '#/components/schemas/FinancialInstitutionIdentifier'
      type: object
    PaymentSchemeName:
      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.
      enum:
        - ZA_RTC
        - ZA_RPP
        - ZA_EFT
      type: string
    AccountIdentification:
      description: >-
        Holds details pertaining to an identifier of an account or store of
        value.
      properties:
        accountKnownAs:
          description: A name or label of the account.
          maxLength: 40
          type: string
        identifier:
          $ref: '#/components/schemas/AccountIdentifier'
        registeredSchemes:
          description: The list of schemes with which the identifier is registered.
          items:
            $ref: '#/components/schemas/PaymentSchemeName'
          type: array
      required:
        - identifier
      type: object
    AddressTypeCode:
      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
      enum:
        - ADDR
        - PBOX
        - HOME
        - BIZZ
        - MLTO
        - DLVY
      type: string
    CountryCode:
      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).
      pattern: '[A-Z]{2,2}'
      type: string
    PostalAddress:
      properties:
        addressLine:
          items:
            maxLength: 70
            minLength: 1
            type: string
          maxItems: 7
          minItems: 0
          type: array
        addressType:
          $ref: '#/components/schemas/AddressTypeCode'
        buildingName:
          maxLength: 35
          minLength: 1
          type: string
        buildingNumber:
          maxLength: 16
          minLength: 1
          type: string
        country:
          $ref: '#/components/schemas/CountryCode'
        countrySubDivision:
          maxLength: 35
          minLength: 1
          type: string
        department:
          maxLength: 70
          minLength: 1
          type: string
        districtName:
          maxLength: 35
          minLength: 1
          type: string
        floor:
          maxLength: 70
          minLength: 1
          type: string
        postBox:
          maxLength: 16
          minLength: 1
          type: string
        postCode:
          maxLength: 16
          minLength: 1
          type: string
        streetName:
          maxLength: 70
          minLength: 1
          type: string
        townLocationName:
          maxLength: 35
          minLength: 1
          type: string
        townName:
          maxLength: 35
          minLength: 1
          type: string
      type: object
    BranchIdentification:
      properties:
        address:
          $ref: '#/components/schemas/PostalAddress'
        identification:
          description: >-
            Unique and unambiguous identification of a branch of a financial
            institution.
          type: string
        name:
          description: >-
            The name by which this branch is known and is usually used to
            identify the branch.
          maxLength: 140
          type: string
      required:
        - identification
      type: object
    InstitutionIdentification:
      properties:
        additionalIdentifications:
          items:
            $ref: '#/components/schemas/AccountIdentification'
          type: array
        bicfi:
          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)
          pattern: ^[A-Z0-9]{4,4}[A-Z]{2,2}[A-Z0-9]{2,2}([A-Z0-9]{3,3}){0,1}$
          type: string
        branch:
          $ref: '#/components/schemas/BranchIdentification'
        companyRegistration:
          description: >-
            A unique identifier assigned to a company or organisation by a duly
            appointed authority within a country.
          maxLength: 35
          type: string
        lei:
          description: >-
            An organisation identified by a code allocated to a party as
            described in ISO 17442 Financial Services - Legal Entity Identifier
            (LEI).
          pattern: '[A-Z0-9]{18,18}[0-9]{2,2}'
          type: string
        memberId:
          description: Identification of a member of a clearing system.
          maxLength: 35
          type: string
        name:
          description: >-
            Name by which an institution is known and which is usually used to
            identify that institution
          maxLength: 140
          type: string
      type: object
    Amount:
      properties:
        currency:
          description: >
            A valid, active currency code as defined in ISO 4217 indicating the
            currency of the amount.
          pattern: ^[A-Z]{3}$
          type: string
        value:
          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.
          format: double
          minimum: 0
          type: number
      required:
        - value
        - currency
      type: object
    TransactionAmounts:
      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.
      required:
        - bankSettlementAmount
      type: object
    ContactDetails:
      properties:
        emailAddress:
          format: email
          type: string
        mobileNumber:
          $ref: '#/components/schemas/PhoneNumber'
        phoneNumber:
          $ref: '#/components/schemas/PhoneNumber'
      type: object
    OrganisationIdentifierBic:
      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).
      properties:
        BIC:
          pattern: '[A-Z0-9]{4,4}[A-Z]{2,2}[A-Z0-9]{2,2}([A-Z0-9]{3,3}){0,1}'
          type: string
        schema:
          description: >-
            Indicates the identifier as a BIC organisation identifier, always
            `BIC`
          type: string
      required:
        - BIC
        - schema
      type: object
    OrganisationIdentifierLei:
      description: >
        An organisation identified by a code allocated to a party as described
        in ISO 17442 Financial Services -

        Legal Entity Identifier (LEI).
      properties:
        LEI:
          pattern: '[A-Z0-9]{18,18}[0-9]{2,2}'
          type: string
        schema:
          description: >-
            Indicates the identifier as a LEI organisation identifier, always
            `LEI`
          type: string
      required:
        - LEI
        - schema
      type: object
    OrganisationIdentificationCode:
      properties:
        schema:
          description: Identifies the value as being a pre-defined code. Always `CODE`.
          type: string
        value:
          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.
          enum:
            - BANK
            - CBID
            - CHID
            - CINC
            - COID
            - CUST
            - DUNS
            - EMPL
            - GS1G
            - SREN
            - SRET
            - TXID
            - BDID
            - BOID
          type: string
      required:
        - value
        - schema
      type: object
    OrganisationIdentifierScheme:
      discriminator:
        mapping:
          CODE: '#/components/schemas/OrganisationIdentificationCode'
          PROPRIETARY: '#/components/schemas/ProprietaryValue'
        propertyName: schema
      oneOf:
        - $ref: '#/components/schemas/OrganisationIdentificationCode'
        - $ref: '#/components/schemas/ProprietaryValue'
      type: object
    OrganisationIdentifierOther:
      description: >
        A unique identification of an organisation, as assigned by an
        institution, using an identification scheme.
      properties:
        identification:
          maxLength: 35
          type: string
        issuer:
          description: The name of the entity that assigns the identification
          maxLength: 35
          type: string
        schema:
          description: >-
            Indicates the identifier as a unique identification of an
            organisation, as assigned by an institution. Always `OTHER`
          type: string
        scheme:
          $ref: '#/components/schemas/OrganisationIdentifierScheme'
      required:
        - identification
        - schema
      type: object
    OrganisationIdentifier:
      description: Holds identification details for an organisation.
      discriminator:
        mapping:
          BIC: '#/components/schemas/OrganisationIdentifierBic'
          LEI: '#/components/schemas/OrganisationIdentifierLei'
          OTHER: '#/components/schemas/OrganisationIdentifierOther'
        propertyName: schema
      oneOf:
        - $ref: '#/components/schemas/OrganisationIdentifierBic'
        - $ref: '#/components/schemas/OrganisationIdentifierLei'
        - $ref: '#/components/schemas/OrganisationIdentifierOther'
      type: object
    OrganisationIdentification:
      properties:
        identifiers:
          items:
            $ref: '#/components/schemas/OrganisationIdentifier'
          type: array
        schema:
          description: Identifies the party as an organisation, always `ORGANISATION`
          type: string
      required:
        - identifiers
        - schema
      type: object
    PersonIdentificationCode:
      properties:
        schema:
          description: Identifies the value as being a pre-defined code. Always `CODE`.
          type: string
        value:
          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.
          enum:
            - ARNU
            - CCPT
            - CUST
            - DRLC
            - EMPL
            - NIDN
            - SOSE
            - TELE
            - TXID
            - POID
          type: string
      required:
        - value
        - schema
      type: object
    PersonIdentifierScheme:
      discriminator:
        mapping:
          CODE: '#/components/schemas/PersonIdentificationCode'
          PROPRIETARY: '#/components/schemas/ProprietaryValue'
        propertyName: schema
      oneOf:
        - $ref: '#/components/schemas/PersonIdentificationCode'
        - $ref: '#/components/schemas/ProprietaryValue'
      type: object
    PersonIdentifier:
      properties:
        identification:
          description: >
            Unique and unambiguous identification of a person, for example a
            passport.
          maxLength: 35
          type: string
        issuer:
          description: The entity that assigns the identification
          maxLength: 35
          type: string
        scheme:
          $ref: '#/components/schemas/PersonIdentifierScheme'
      required:
        - identification
      type: object
    PersonIdentification:
      properties:
        identifiers:
          items:
            $ref: '#/components/schemas/PersonIdentifier'
          type: array
        schema:
          description: |
            Identifies the party as a person, always `PERSON`
          type: string
      required:
        - identifiers
        - schema
      type: object
    PartyIdentification:
      description: |
        The identification of a party, either a person or an organisation.
      discriminator:
        mapping:
          ORGANISATION: '#/components/schemas/OrganisationIdentification'
          PERSON: '#/components/schemas/PersonIdentification'
        propertyName: schema
      oneOf:
        - $ref: '#/components/schemas/PersonIdentification'
        - $ref: '#/components/schemas/OrganisationIdentification'
      type: object
    Party:
      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:
        address:
          $ref: '#/components/schemas/PostalAddress'
        contactDetails:
          $ref: '#/components/schemas/ContactDetails'
        countryOfResidence:
          $ref: '#/components/schemas/CountryCode'
        identification:
          $ref: '#/components/schemas/PartyIdentification'
        knownAsName:
          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`.
          maxLength: 140
          minLength: 1
          type: string
        legalName:
          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).
          maxLength: 140
          minLength: 1
          type: string
      type: object
    BankingIdentifier:
      discriminator:
        mapping:
          GENERIC: '#/components/schemas/GenericAccountIdentifier'
          IBAN: '#/components/schemas/IBANIdentifier'
        propertyName: schema
      oneOf:
        - $ref: '#/components/schemas/IBANIdentifier'
        - $ref: '#/components/schemas/GenericAccountIdentifier'
      type: object
    ExternalCashAccountType1Code:
      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.
      enum:
        - CACC
        - CARD
        - CASH
        - CHAR
        - CISH
        - COMM
        - CPAC
        - LLSV
        - LOAN
        - MGLD
        - MOMA
        - NREX
        - ODFT
        - ONDP
        - OTHR
        - SACC
        - SLRY
        - SVGS
        - TAXE
        - TRAN
        - TRAS
      type: string
    AccountTypeCode:
      properties:
        schema:
          description: Identifies the value as being a pre-defined code. Always `CODE`.
          type: string
        value:
          $ref: '#/components/schemas/ExternalCashAccountType1Code'
      required:
        - value
        - schema
      type: object
    AccountType:
      discriminator:
        mapping:
          CODE: '#/components/schemas/AccountTypeCode'
          PROPRIETARY: '#/components/schemas/ProprietaryValue'
        propertyName: schema
      oneOf:
        - $ref: '#/components/schemas/AccountTypeCode'
        - $ref: '#/components/schemas/ProprietaryValue'
      type: object
    PaymentAccount:
      description: >
        Representation of an account for payment purposes.

        Note that at least one of `identification` or `proxy` is expected to be
        present.
      properties:
        currency:
          description: Identification of the currency in which the account is held.
          pattern: ^[A-Z]{3}$
          type: string
        identification:
          $ref: '#/components/schemas/BankingIdentifier'
        name:
          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.
          maxLength: 70
          type: string
        proxy:
          $ref: '#/components/schemas/NonBankingIdentifier'
        type:
          $ref: '#/components/schemas/AccountType'
      type: object
    LocalInstrumentTypeCode:
      properties:
        schema:
          description: Identifies the value as being a pre-defined code. Always `CODE`.
          type: string
        value:
          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
          enum:
            - '0000'
            - '0001'
            - '0002'
            - 90
            - 91
            - 92
            - '0220'
            - '0221'
            - '0222'
            - '0223'
            - '0224'
            - '0225'
            - '0226'
            - '0227'
            - '04'
            - '05'
            - 8
            - '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
          type: string
      required:
        - value
        - schema
      type: object
    LocalInstrumentType:
      discriminator:
        mapping:
          CODE: '#/components/schemas/LocalInstrumentTypeCode'
          PROPRIETARY: '#/components/schemas/ProprietaryValue'
        propertyName: schema
      oneOf:
        - $ref: '#/components/schemas/LocalInstrumentTypeCode'
        - $ref: '#/components/schemas/ProprietaryValue'
      type: object
    PaymentTypeInformation:
      properties:
        localInstrument:
          $ref: '#/components/schemas/LocalInstrumentType'
      type: object
    CreditorReferenceType:
      discriminator:
        mapping:
          CODE: '#/components/schemas/CreditorReferenceTypeCode'
          PROPRIETARY: '#/components/schemas/CreditorReferenceTypeProprietary'
        propertyName: schema
      properties:
        issuer:
          description: Entity that assigns the credit reference type
          maxLength: 35
          type: string
        schema:
          description: >
            Identifies the value as being either proprietary (`PROPRIETARY`) or
            as being a pre-defined code (`CODE`).
          enum:
            - CODE
            - PROPRIETARY
          type: string
      required:
        - schema
      type: object
    CreditorReferenceTypeCode:
      allOf:
        - $ref: '#/components/schemas/CreditorReferenceType'
        - description: Specifies the type of creditor reference.
          properties:
            value:
              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.
              enum:
                - RADM
                - RPIN
                - FXDR
                - DISP
                - PUOR
                - SCOR
              type: string
          required:
            - value
          type: object
      type: object
    CreditorReferenceTypeProprietary:
      allOf:
        - $ref: '#/components/schemas/CreditorReferenceType'
        - properties:
            value:
              $ref: '#/components/schemas/ProprietaryValueLiteral'
          required:
            - value
          type: object
      type: object
    CreditorReference:
      properties:
        reference:
          description: >-
            Unique reference, as assigned by the creditor, to unambiguously
            refer to the payment transaction.
          maxLength: 35
          type: string
        type:
          $ref: '#/components/schemas/CreditorReferenceType'
      type: object
    ReferredDocumentAmount:
      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.
      type: object
    ReferredDocumentType:
      discriminator:
        mapping:
          CODE: '#/components/schemas/ReferredDocumentTypeCode'
          PROPRIETARY: '#/components/schemas/ReferredDocumentTypeProprietary'
        propertyName: schema
      properties:
        issuer:
          description: Identification of the issuer of the reference document _type_.
          maxLength: 35
          type: string
        schema:
          description: >
            Identifies the value as being either proprietary (`PROPRIETARY`) or
            as being a pre-defined code (`CODE`).
          enum:
            - CODE
            - PROPRIETARY
          type: string
      required:
        - schema
      type: object
    ReferredDocumentTypeCode:
      allOf:
        - $ref: '#/components/schemas/ReferredDocumentType'
        - description: Specifies the type of referred document
          properties:
            value:
              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
              enum:
                - AROI
                - BOLD
                - CINV
                - CMCN
                - CNFA
                - CREN
                - DEBN
                - DISP
                - DNFA
                - HIRI
                - MSIN
                - PUOR
                - SBIN
                - SOAC
                - TSUT
                - VCHR
              type: string
          required:
            - value
          type: object
      type: object
    ReferredDocumentTypeProprietary:
      allOf:
        - $ref: '#/components/schemas/ReferredDocumentType'
        - properties:
            value:
              $ref: '#/components/schemas/ProprietaryValueLiteral'
          required:
            - value
          type: object
      type: object
    ReferredDocument:
      properties:
        documentIdentifier:
          maxLength: 35
          type: string
        type:
          $ref: '#/components/schemas/ReferredDocumentType'
      type: object
    StructuredRemittanceInformation:
      properties:
        additionalRemittanceInformation:
          items:
            maxLength: 140
            type: string
          maxItems: 3
          type: array
        creditorReference:
          $ref: '#/components/schemas/CreditorReference'
        originatorReference:
          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.
          maxLength: 35
          type: string
        referredDocumentAmount:
          $ref: '#/components/schemas/ReferredDocumentAmount'
        referredDocuments:
          items:
            $ref: '#/components/schemas/ReferredDocument'
          type: array
      type: object
    RemittanceInformation:
      properties:
        structured:
          items:
            $ref: '#/components/schemas/StructuredRemittanceInformation'
          type: array
        unstructured:
          items:
            maxLength: 140
            type: string
          type: array
      type: object
    OriginalTransactionData:
      description: >
        Contains key elements related to the original transaction that is being
        referred to.
      properties:
        amounts:
          $ref: '#/components/schemas/TransactionAmounts'
        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'
        paymentMethod:
          description: |
            Specifies the means of payment for the original transaction.
          enum:
            - CreditTransfer
            - DirectDebit
          type: string
        paymentTypeInformation:
          $ref: '#/components/schemas/PaymentTypeInformation'
        remittanceInformation:
          $ref: '#/components/schemas/RemittanceInformation'
        settlementDate:
          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.
          format: date
          type: string
        supplementaryData:
          $ref: '#/components/schemas/SupplementaryData'
      type: object
    ZaEftPaymentStatusReportPaymentScheme:
      properties:
        schema:
          $ref: '#/components/schemas/PaymentSchemeName'
      required:
        - schema
    ZaRppPaymentStatusReportPaymentScheme:
      properties:
        schema:
          $ref: '#/components/schemas/PaymentSchemeName'
      required:
        - schema
    ZaRtcCreditTransferPaymentSchemeData:
      properties:
        businessReference:
          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).
          maxLength: 10
          pattern: ^\d{2}[\dA-z]{8}$
          type: string
        originatorEchoData:
          description: >-
            Echo data reserved for originator use. Must remain unaltered by the
            beneficiary.
          maxLength: 20
          pattern: ^[\dA-z ]*$
          type: string
        userReference:
          description: >
            An explanation of the transaction, e.g. to be printed on the account
            holder's statement.
          maxLength: 20
          pattern: ^[\dA-z ]*$
          type: string
      required:
        - businessReference
      type: object
    ZaRtcPaymentStatusReportPaymentSchemeData:
      properties:
        authorisationId:
          description: >
            A unique number assigned by the beneficiary bank to identify the
            transaction if it is approved.

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

        for the payment status report.
      discriminator:
        mapping:
          ZA_EFT: '#/components/schemas/ZaEftPaymentStatusReportPaymentScheme'
          ZA_RPP: '#/components/schemas/ZaRppPaymentStatusReportPaymentScheme'
          ZA_RTC: '#/components/schemas/ZaRtcPaymentStatusReportPaymentScheme'
        propertyName: schema
      oneOf:
        - $ref: '#/components/schemas/ZaRtcPaymentStatusReportPaymentScheme'
        - $ref: '#/components/schemas/ZaRppPaymentStatusReportPaymentScheme'
        - $ref: '#/components/schemas/ZaEftPaymentStatusReportPaymentScheme'
      type: object
    StatusReasonTypeCode:
      properties:
        schema:
          description: Identifies the value as being a pre-defined code. Always `CODE`.
          type: string
        value:
          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
          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
          type: string
      required:
        - schema
        - value
      type: object
    StatusReasonType:
      discriminator:
        mapping:
          CODE: '#/components/schemas/StatusReasonTypeCode'
          PROPRIETARY: '#/components/schemas/ProprietaryValue'
        propertyName: schema
      oneOf:
        - $ref: '#/components/schemas/StatusReasonTypeCode'
        - $ref: '#/components/schemas/ProprietaryValue'
      type: object
    StatusReasonInfo:
      description: |
        Provides detailed information on a status reason.
      properties:
        additionalInformation:
          description: >
            A human friendly description of the status reason including any
            further details if applicable.
          type: string
        reason:
          $ref: '#/components/schemas/StatusReasonType'
      required:
        - reason
      type: object
    Status:
      properties:
        outcome:
          description: |
            - `APPROVED`: The instruction has been approved.
            - `CANCELLED`: The instruction has been cancelled.
            - `PENDING`: The instruction is pending.
            - `REJECTED`: The instruction has been rejected.
          enum:
            - APPROVED
            - CANCELLED
            - PENDING
            - REJECTED
          type: string
        reasonInfo:
          description: >
            A list of `StatusReasonInfo` values providing detailed reason
            information for the outcome.
          items:
            $ref: '#/components/schemas/StatusReasonInfo'
          minItems: 1
          type: array
      required:
        - outcome
      type: object
    PaymentStatusReport:
      allOf:
        - $ref: '#/components/schemas/BaseTransactionResponseMessage'
        - properties:
            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.
            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.
            originalTransactionData:
              $ref: '#/components/schemas/OriginalTransactionData'
            paymentScheme:
              $ref: '#/components/schemas/PaymentStatusReportPaymentScheme'
            schema:
              enum:
                - PaymentStatusReport
              type: string
            status:
              $ref: '#/components/schemas/Status'
          required:
            - paymentScheme
            - status
            - schema
          type: object
      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.
    ErrorDetail:
      description: >
        A model carrying information detailing the reason for an error that
        occurred.
      properties:
        detail:
          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.
          type: string
        message:
          description: A human friendly description of the error that occurred.
          type: string
        schema:
          enum:
            - ErrorDetail
          type: string
      required:
        - schema
        - message
      type: object
    BaseTransactionMessage:
      allOf:
        - $ref: '#/components/schemas/BaseMessage'
        - description: >
            A model containing the foundational elements shared across messages
            relating to transactions.
          properties:
            transactionIdentifiers:
              $ref: '#/components/schemas/TransactionIdentifiers'
          required:
            - transactionIdentifiers
          type: object
    Instruction:
      properties:
        code:
          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.
          enum:
            - PHOA
            - TELA
            - RT14
          type: string
        information:
          description: >
            Further information complementing the coded instruction or
            instruction to the next agent that

            is bilaterally agreed or specific to a user community.
          maxLength: 140
          minLength: 1
          type: string
      type: object
    ShortenedAccountNumber:
      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.
      maxLength: 11
      minLength: 11
      type: string
    ZaEftSchemeData:
      properties:
        shortenedCreditorAccountNumber:
          $ref: '#/components/schemas/ShortenedAccountNumber'
        shortenedDebtorAccountNumber:
          $ref: '#/components/schemas/ShortenedAccountNumber'
        userReference:
          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
          type: string
      required:
        - userReference
      type: object
    ZaEftCreditTransferPaymentScheme:
      properties:
        schema:
          $ref: '#/components/schemas/PaymentSchemeName'
        schemeData:
          $ref: '#/components/schemas/ZaEftSchemeData'
      required:
        - schema
        - schemeData
      type: object
    ZaRppSchemeData:
      properties:
        hasRtp:
          description: >
            Indicates whether the RPP transaction was initiated via a Request To
            Pay.
          type: boolean
      type: object
    ZaRppCreditTransferPaymentScheme:
      description: ''
      properties:
        schema:
          $ref: '#/components/schemas/PaymentSchemeName'
        schemeData:
          $ref: '#/components/schemas/ZaRppSchemeData'
      required:
        - schema
    ZaRtcCreditTransferPaymentScheme:
      properties:
        schema:
          $ref: '#/components/schemas/PaymentSchemeName'
        schemeData:
          $ref: '#/components/schemas/ZaRtcCreditTransferPaymentSchemeData'
      required:
        - schema
        - schemeData
    CreditTransferPaymentScheme:
      description: >
        Designates which scheme a credit transfer is associated with and
        describes scheme-specific information for the

        credit transfer.
      discriminator:
        mapping:
          ZA_EFT: '#/components/schemas/ZaEftCreditTransferPaymentScheme'
          ZA_RPP: '#/components/schemas/ZaRppCreditTransferPaymentScheme'
          ZA_RTC: '#/components/schemas/ZaRtcCreditTransferPaymentScheme'
        propertyName: schema
      oneOf:
        - $ref: '#/components/schemas/ZaRtcCreditTransferPaymentScheme'
        - $ref: '#/components/schemas/ZaRppCreditTransferPaymentScheme'
        - $ref: '#/components/schemas/ZaEftCreditTransferPaymentScheme'
      type: object
    PurposeTypeCode:
      properties:
        schema:
          description: Identifies the value as being a pre-defined code. Always `CODE`.
          type: string
        value:
          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
          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
          type: string
      required:
        - value
        - schema
      type: object
    PurposeType:
      description: Specifies the underlying reason for the payment transaction
      discriminator:
        mapping:
          CODE: '#/components/schemas/PurposeTypeCode'
          PROPRIETARY: '#/components/schemas/ProprietaryValue'
        propertyName: schema
      oneOf:
        - $ref: '#/components/schemas/PurposeTypeCode'
        - $ref: '#/components/schemas/ProprietaryValue'
      type: object
    RequestToPayConditions:
      description: |
        Describes the various aspects of a request to pay which must be
        accepted or to what extent they may be altered.
      properties:
        maxAmount:
          $ref: '#/components/schemas/Amount'
          description: >
            The maximum payment amount that is acceptable to the payee. This
            does not supersede the scheme limit.
        minAmount:
          $ref: '#/components/schemas/Amount'
          description: >
            The minimum payment amount that is acceptable to the payee. This
            does not supersede the scheme limit.
      required:
        - minAmount
        - maxAmount
      type: object
    TaxInformation:
      properties:
        totalAmount:
          $ref: '#/components/schemas/Amount'
      required:
        - totalAmount
      type: object
    RequestToPay:
      allOf:
        - $ref: '#/components/schemas/BaseTransactionMessage'
        - description: >
            A model containing the necessary information to request a payer to
            initiate a transfer of funds to a payee
          properties:
            amounts:
              $ref: '#/components/schemas/TransactionAmounts'
            creditor:
              $ref: '#/components/schemas/Party'
              description: |
                Party to which an amount of money is due.
            creditorAccount:
              $ref: '#/components/schemas/PaymentAccount'
              description: >
                Unambiguous identification of the account of the creditor to
                which a credit entry will be posted as a

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

                initiating party, and intended for the debtor agent.
              items:
                $ref: '#/components/schemas/Instruction'
              minItems: 0
              type: array
            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
              items:
                $ref: '#/components/schemas/InstitutionIdentification'
              maxItems: 3
              type: array
            paymentScheme:
              $ref: '#/components/schemas/CreditTransferPaymentScheme'
            paymentTypeInformation:
              $ref: '#/components/schemas/PaymentTypeInformation'
              description: |
                Set of elements used to further specify the type of transaction.
            previousInstructingAgents:
              description: |
                Agent(s) between the debtor's agent and the instructing agent.
              items:
                $ref: '#/components/schemas/InstitutionIdentification'
              maxItems: 3
              type: array
            purpose:
              $ref: '#/components/schemas/PurposeType'
            remittanceInformation:
              $ref: '#/components/schemas/RemittanceInformation'
            requestToPayConditions:
              $ref: '#/components/schemas/RequestToPayConditions'
            schema:
              enum:
                - RequestToPay
              type: string
            tax:
              $ref: '#/components/schemas/TaxInformation'
          required:
            - paymentScheme
            - expiryDateTime
            - requestToPayConditions
            - creditor
            - creditorAccount
            - creditorAgent
            - debtorAccount
            - paymentTypeInformation
            - schema
          type: object
    OriginalRequestToPayData:
      description: >
        Contains key elements related to the original request to pay that is
        being referred to.
      properties:
        amounts:
          $ref: '#/components/schemas/TransactionAmounts'
        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'
        expiryDateTime:
          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)
          format: date-time
          type: string
        paymentTypeInformation:
          $ref: '#/components/schemas/PaymentTypeInformation'
        remittanceInformation:
          $ref: '#/components/schemas/RemittanceInformation'
        requestToPayConditions:
          $ref: '#/components/schemas/RequestToPayConditions'
      type: object
    RequestToPayCancellation:
      description: >
        Requests that a prior request to pay is cancelled if possible (e.g. it's
        not yet been actioned, rejected or expired).
      properties:
        instructedAgent:
          $ref: '#/components/schemas/InstitutionIdentification'
          description: >
            The instructed agent is the party receiving the cancellation
            message.
        instructingAgent:
          $ref: '#/components/schemas/InstitutionIdentification'
          description: |
            The instructing agent is the party sending the cancellation message.
        messageIdentifiers:
          $ref: '#/components/schemas/MessageIdentifiers'
        originalMessageIdentifiers:
          $ref: '#/components/schemas/MessageIdentifiers'
        originalRequestToPayData:
          $ref: '#/components/schemas/OriginalRequestToPayData'
        originalTransactionIdentifiers:
          $ref: '#/components/schemas/TransactionIdentifiers'
        reasonCode:
          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.
          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
          type: string
        reasonDescription:
          description: A description of the reason the request to pay is being cancelled.
          type: string
        schema:
          enum:
            - RequestToPayCancellation
          type: string
      required:
        - reasonCode
        - schema
        - messageIdentifiers
        - originalMessageIdentifiers
        - originalTransactionIdentifiers
      type: object
    RequestToPayStatusRequest:
      description: |
        Provides details to identify a previously submitted request to pay.
      properties:
        instructedAgent:
          $ref: '#/components/schemas/InstitutionIdentification'
          description: >
            Agent that is instructed by the previous party in the chain to carry
            out the (set of) instruction(s).
        instructingAgent:
          $ref: '#/components/schemas/InstitutionIdentification'
          description: >
            Agent that instructs the next party in the chain to carry out the
            (set of) instruction(s)
        messageIdentifiers:
          $ref: '#/components/schemas/MessageIdentifiers'
        originalMessageIdentifiers:
          $ref: '#/components/schemas/MessageIdentifiers'
        originalTransactionIdentifiers:
          $ref: '#/components/schemas/TransactionIdentifiers'
        schema:
          enum:
            - RequestToPayStatusRequest
          type: string
      required:
        - messageIdentifiers
        - originalTransactionIdentifiers
      type: object
    RequestToPayStatusReasonTypeCode:
      properties:
        schema:
          description: Identifies the value as being a pre-defined code. Always `CODE`.
          type: string
        value:
          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"
          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
          type: string
      required:
        - schema
        - value
      type: object
    RequestToPayStatusReasonType:
      discriminator:
        mapping:
          CODE: '#/components/schemas/RequestToPayStatusReasonTypeCode'
          PROPRIETARY: '#/components/schemas/ProprietaryValue'
        propertyName: schema
      oneOf:
        - $ref: '#/components/schemas/RequestToPayStatusReasonTypeCode'
        - $ref: '#/components/schemas/ProprietaryValue'
      type: object
    RequestToPayStatusReasonInfo:
      description: |
        Provides detailed information on a status reason.
      properties:
        additionalInformation:
          description: >
            A human friendly description of the status reason including any
            further details if applicable.
          type: string
        reason:
          $ref: '#/components/schemas/RequestToPayStatusReasonType'
      required:
        - reason
      type: object
    RequestToPayStatus:
      properties:
        reasonInfo:
          description: >
            A list of `RequestToPayStatusReasonInfo` values providing detailed
            reason information for the status.
          items:
            $ref: '#/components/schemas/RequestToPayStatusReasonInfo'
          minItems: 1
          type: array
        status:
          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
          enum:
            - PAID
            - ACCEPTED
            - CANCELLED
            - EXPIRED
            - PENDING
            - PRESENTED
            - REJECTED
            - REFUND_IN_PROGRESS
            - REFUNDED
          type: string
      required:
        - status
      type: object
    RequestToPayResponse:
      allOf:
        - $ref: '#/components/schemas/BaseTransactionResponseMessage'
        - properties:
            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.
            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.
            originalRequestToPayData:
              $ref: '#/components/schemas/OriginalRequestToPayData'
            requestToPayConditions:
              $ref: '#/components/schemas/RequestToPayConditions'
            schema:
              enum:
                - RequestToPayResponse
              type: string
            status:
              $ref: '#/components/schemas/RequestToPayStatus'
          required:
            - status
            - schema
          type: object
    CreditTransferStatusRequest:
      description: >
        Provides details to identify a previously submitted credit transfer
        transaction.
      properties:
        messageIdentifiers:
          $ref: '#/components/schemas/MessageIdentifiers'
        originalMessageIdentifiers:
          $ref: '#/components/schemas/MessageIdentifiers'
        originalTransactionIdentifiers:
          $ref: '#/components/schemas/TransactionIdentifiers'
        schema:
          enum:
            - CreditTransferStatusRequest
          type: string
      required:
        - schema
        - messageIdentifiers
        - originalMessageIdentifiers
        - originalTransactionIdentifiers
      type: object
    OriginalErrorResponse:
      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.
      properties:
        detail:
          $ref: '#/components/schemas/ErrorDetail'
        httpStatus:
          description: >-
            The HTTP status of the HTTP response which originally communicated
            the error.
          type: string
        schema:
          enum:
            - OriginalErrorResponse
          type: string
      required:
        - httpStatus
      type: object
    CreditTransfer:
      allOf:
        - $ref: '#/components/schemas/BaseTransactionMessage'
        - description: >
            A model containing the necessary information to request a transfer
            funds between a payer and a payee
          properties:
            amounts:
              $ref: '#/components/schemas/TransactionAmounts'
            creditor:
              $ref: '#/components/schemas/Party'
              description: |
                Party to which an amount of money is due.
            creditorAccount:
              $ref: '#/components/schemas/PaymentAccount'
              description: >
                Unambiguous identification of the account of the creditor to
                which a credit entry will be posted as a

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

                initiating party, and intended for the creditor agent.
              items:
                $ref: '#/components/schemas/Instruction'
              minItems: 0
              type: array
            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
              items:
                $ref: '#/components/schemas/InstitutionIdentification'
              maxItems: 3
              type: array
            paymentScheme:
              $ref: '#/components/schemas/CreditTransferPaymentScheme'
            paymentTypeInformation:
              $ref: '#/components/schemas/PaymentTypeInformation'
              description: |
                Set of elements used to further specify the type of transaction.
            previousInstructingAgents:
              description: |
                Agent(s) between the debtor's agent and the instructing agent.
              items:
                $ref: '#/components/schemas/InstitutionIdentification'
              maxItems: 3
              type: array
            purpose:
              $ref: '#/components/schemas/PurposeType'
            remittanceInformation:
              $ref: '#/components/schemas/RemittanceInformation'
            schema:
              enum:
                - CreditTransfer
              type: string
            settlementDate:
              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.
              format: date
              type: string
            tax:
              $ref: '#/components/schemas/TaxInformation'
          required:
            - paymentScheme
            - amounts
            - creditor
            - creditorAccount
            - creditorAgent
            - debtor
            - debtorAgent
            - identifiers
            - schema
          type: object
    DeterminationRequest:
      discriminator:
        mapping:
          ZA_RPP: '#/components/schemas/ZaRppDeterminationRequest'
        propertyName: schema
      properties:
        schema:
          $ref: '#/components/schemas/PaymentSchemeName'
      required:
        - schema
      type: object
    ZaRppIdentifier:
      discriminator:
        mapping:
          CUSTOM: '#/components/schemas/CustomIdentifier'
          GENERIC: '#/components/schemas/GenericAccountIdentifier'
          MOBILE: '#/components/schemas/MobileNumberIdentifier'
        propertyName: schema
      oneOf:
        - $ref: '#/components/schemas/MobileNumberIdentifier'
        - $ref: '#/components/schemas/CustomIdentifier'
        - $ref: '#/components/schemas/GenericAccountIdentifier'
    ZaRppRequestor:
      discriminator:
        mapping:
          INSTITUTION_IDENTIFICATION: '#/components/schemas/InstitutionIdentificationWithSchemaAndDomain'
          PARTY: '#/components/schemas/PartyWithSchema'
        propertyName: schema
      properties:
        schema:
          type: string
      type: object
    InstitutionIdentificationWithSchemaAndDomain:
      allOf:
        - $ref: '#/components/schemas/ZaRppRequestor'
        - $ref: '#/components/schemas/InstitutionIdentification'
        - 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
              maxLength: 35
              type: string
          type: object
    PartyWithSchema:
      allOf:
        - $ref: '#/components/schemas/ZaRppRequestor'
        - $ref: '#/components/schemas/Party'
    ZaRppDeterminationRequest:
      allOf:
        - $ref: '#/components/schemas/DeterminationRequest'
        - properties:
            identifier:
              $ref: '#/components/schemas/ZaRppIdentifier'
            instructedAgent:
              $ref: '#/components/schemas/InstitutionIdentification'
            instructingAgent:
              $ref: '#/components/schemas/InstitutionIdentification'
            requestor:
              $ref: '#/components/schemas/ZaRppRequestor'
            uetr:
              description: >
                Universally unique identifier to provide an end-to-end
                reference.

                This identifier remains the same for all messages related to the
                same transaction.
              format: UUID
              type: string
            verificationIdentification:
              description: |
                Unique identifier for this specific verification request.
              maxLength: 35
              minLength: 1
              type: string
          required:
            - identifier
            - uetr
            - verificationIdentification
          type: object
    IdentifierDeterminationRequest:
      allOf:
        - $ref: '#/components/schemas/BaseMessage'
        - properties:
            request:
              $ref: '#/components/schemas/DeterminationRequest'
            schema:
              enum:
                - IdentifierDeterminationRequest
              type: string
          required:
            - request
            - schema
          type: object
      type: object
    IdentifierDeterminationReport:
      discriminator:
        mapping:
          ZA_RPP: '#/components/schemas/ZaRppIdentifierDeterminationReport'
        propertyName: schema
      properties:
        schema:
          $ref: '#/components/schemas/PaymentSchemeName'
      required:
        - schema
      type: object
    ZaRppAccountInformation:
      properties:
        creationDate:
          description: >
            The date when the account referenced by this proxy identifier was
            created.
          format: date-time
          type: string
        proxy:
          $ref: '#/components/schemas/NonBankingIdentifier'
        traditionalAccountType:
          $ref: '#/components/schemas/AccountType'
        traditionalIdentifier:
          $ref: '#/components/schemas/BankingIdentifier'
      required:
        - traditionalIdentifier
        - creationDate
      type: object
    ZaRppIdentificationReport:
      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`
      properties:
        accountAgent:
          $ref: '#/components/schemas/InstitutionIdentification'
        accountInformation:
          $ref: '#/components/schemas/ZaRppAccountInformation'
        accountOwner:
          $ref: '#/components/schemas/Party'
        outcome:
          enum:
            - SUCCESSFUL
            - FAILED
          type: string
        reasonCode:
          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"
          maxLength: 4
          minLength: 1
          type: string
        transactionLimit:
          $ref: '#/components/schemas/Amount'
      required:
        - outcome
      type: object
    ZaRppIdentifierDeterminationReport:
      allOf:
        - $ref: '#/components/schemas/IdentifierDeterminationReport'
        - properties:
            instructedAgent:
              $ref: '#/components/schemas/InstitutionIdentification'
            instructingAgent:
              $ref: '#/components/schemas/InstitutionIdentification'
            instructionForCreatorAgent:
              description: >
                Further information related to the proxy resolution response,
                provided by the

                Operator, and intended for the creator agent.
              items:
                $ref: '#/components/schemas/Instruction'
              minItems: 0
              type: array
            originalRequestor:
              $ref: '#/components/schemas/ZaRppRequestor'
            originalUetr:
              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.
              format: UUID
              type: string
            originalVerificationIdentification:
              description: >
                The `request.verificationIdentification` as provided in the
                original request.
              maxLength: 35
              minLength: 1
              type: string
            reportInformation:
              $ref: '#/components/schemas/ZaRppIdentificationReport'
          required:
            - schema
            - originalUetr
            - originalVerificationIdentification
            - reportInformation
          type: object
    IdentifierDeterminationResponse:
      allOf:
        - $ref: '#/components/schemas/BaseResponseMessage'
        - properties:
            report:
              $ref: '#/components/schemas/IdentifierDeterminationReport'
            schema:
              enum:
                - IdentifierDeterminationResponse
              type: string
          required:
            - report
            - schema
          type: object
    CreditTransferInitiationInstruction:
      description: >
        A model containing information required to initiate a credit
        disbursement
      properties:
        amounts:
          $ref: '#/components/schemas/TransactionAmounts'
          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 
        creditor:
          $ref: '#/components/schemas/Party'
          description: |
            Party to which an amount of money is due.
        creditorAccount:
          $ref: '#/components/schemas/PaymentAccount'
          description: >
            Unambiguous identification of the account of the creditor to which a
            credit entry will be posted as a

            result of the payment transaction.
        creditorAgent:
          $ref: '#/components/schemas/InstitutionIdentification'
          description: |
            Financial institution servicing an account for the creditor.
        instructionForCreditorAgent:
          description: >
            Further information related to the processing of the payment
            instruction, provided by the

            initiating party, and intended for the creditor agent.
          items:
            $ref: '#/components/schemas/Instruction'
          minItems: 0
          type: array
        paymentScheme:
          $ref: '#/components/schemas/CreditTransferPaymentScheme'
          description: >
            Designates which scheme a credit transfer is associated with and
            describes scheme-specific information for the credit transfer.
        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
        remittanceInformation:
          $ref: '#/components/schemas/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.
        supplementaryData:
          $ref: '#/components/schemas/SupplementaryData'
          description: >
            A list of key-value pairs to support adding any
            supplementary/additional data to an Electrum Regulated Payments API
            message.
        tax:
          $ref: '#/components/schemas/TaxInformation'
          description: |
            Provides details on tax related to this credit transaction
        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 
      required:
        - paymentScheme
        - amounts
        - creditor
        - creditorAccount
        - creditorAgent
        - transactionIdentifiers
      type: object
    CreditTransferInitiation:
      allOf:
        - $ref: '#/components/schemas/BaseMessage'
        - description: >
            A model containing the necessary information to request the
            initiation of multiple credit disbursements from a single debtor 
          properties:
            controlSum:
              $ref: '#/components/schemas/Amount'
              description: |
                Sum of the credit amounts of every individual credit transfer.
            creditTransferInitiationInstructions:
              description: >
                List of instructions to initiate each credit transfer within the
                bulk with other financial institutions or the partner bank
              items:
                $ref: '#/components/schemas/CreditTransferInitiationInstruction'
              minItems: 1
              type: array
            debtor:
              $ref: '#/components/schemas/Party'
              description: >
                Party that owes money to the creditors associated with each
                individual credit transfer
            debtorAccount:
              $ref: '#/components/schemas/PaymentAccount'
              description: >
                Unambiguous identification of the account of the debtor to which
                a debit entry will be made as a result

                of the transaction.
            debtorAgent:
              $ref: '#/components/schemas/InstitutionIdentification'
              description: |
                Financial institution servicing an account for the debtor.
            initiatingParty:
              $ref: '#/components/schemas/Party'
              description: |
                Party that initiates the payment. 
            numberOfTransactions:
              description: >
                Number of individual credit transfer instructions within the
                bulk that should be initiated.
              type: integer
            paymentInformationId:
              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 
              format: UUID
              type: string
            paymentSchemeName:
              $ref: '#/components/schemas/PaymentSchemeName'
              description: >
                Identifies the payment scheme applied to all the credits within
                the bulk
            remittanceInformation:
              $ref: '#/components/schemas/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.
            requestedExecutionDate:
              description: >
                Date at which the initiating party requests the clearing agent
                to process the payment.
              format: date
              type: string
            schema:
              enum:
                - CreditTransferInitiation
              type: string
          required:
            - paymentInformationId
            - paymentSchemeName
            - controlSum
            - debtor
            - debtorAgent
            - debtorAccount
            - creditTransferInitiationInstructions
            - schema
          type: object
    CreditTransferInitiationStatusRequest:
      description: >
        Provides details to identify a previously submitted bulk credit transfer
        initiation.
      properties:
        includeIndividualCreditsStatuses:
          description: >
            A flag to indicate if the status of each individual credit transfer,
            as per Electrum's view, should 

            be reflected in the response
          type: boolean
        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:
          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. 
          format: UUID
          type: string
        schema:
          enum:
            - CreditTransferInitiationStatusRequest
          type: string
      required:
        - schema
        - messageIdentifiers
        - originalMessageIdentifiers
        - paymentInformationId
      type: object
    RequestToPayInitiationInstruction:
      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.
      properties:
        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'
        expiryDateTime:
          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)
          format: date-time
          type: string
        instructionForDebtorAgent:
          description: >
            Further information related to the processing of the payment
            instruction, provided by the

            initiating party, and intended for the debtor agent.
          items:
            $ref: '#/components/schemas/Instruction'
          minItems: 0
          type: array
        messageIdentifiers:
          $ref: '#/components/schemas/MessageIdentifiers'
        paymentTypeInformation:
          $ref: '#/components/schemas/PaymentTypeInformation'
        purpose:
          $ref: '#/components/schemas/PurposeType'
        remittanceInformation:
          $ref: '#/components/schemas/RemittanceInformation'
        requestToPayConditions:
          $ref: '#/components/schemas/RequestToPayConditions'
        tax:
          $ref: '#/components/schemas/TaxInformation'
        transactionIdentifiers:
          $ref: '#/components/schemas/TransactionIdentifiers'
      required:
        - messageIdentifiers
        - transactionIdentifiers
        - expiryDateTime
        - requestToPayConditions
        - creditor
        - creditorAccount
        - creditorAgent
        - debtorAccount
        - paymentTypeInformation
        - remittanceInformation
      type: object
    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'
        - properties:
            bulkPaymentSchemeName:
              $ref: '#/components/schemas/PaymentSchemeName'
            initiatingParty:
              $ref: '#/components/schemas/Party'
            numberOfTransactions:
              description: The total number of transactions in the bulk.
              minimum: 1
              type: integer
            requestToPayInformationId:
              description: >
                Universally unique identifier to identify the bulk collection
                itself.
              format: UUID
              type: string
            requestToPayInitiationInstructions:
              description: >-
                List of instructions to initiate each request to pay within the
                bulk with other financial institutions or the partner bank.
              items:
                $ref: '#/components/schemas/RequestToPayInitiationInstruction'
              minItems: 1
              type: array
          required:
            - requestToPayInformationId
            - bulkPaymentSchemeName
            - requestToPayInitiationInstructions
          type: object
    RequestToPayInitiationStatusRequest:
      description: >
        Provides details to identify a previously submitted bulk request to pay
        collections.
      properties:
        includeIndividualRequestToPayStatuses:
          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
          type: boolean
        messageIdentifiers:
          $ref: '#/components/schemas/MessageIdentifiers'
        originalMessageIdentifiers:
          $ref: '#/components/schemas/MessageIdentifiers'
        requestToPayInformationId:
          description: >
            Universally unique identifier to identify the bulk collection
            itself.
          format: UUID
          type: string
        schema:
          enum:
            - RequestToPayInitiationStatusRequest
          type: string
      required:
        - schema
        - messageIdentifiers
        - originalMessageIdentifiers
        - requestToPayInformationId
      type: object
    SchemeInquiry:
      discriminator:
        mapping:
          ZA_RPP_LIST_DOMAINS: '#/components/schemas/ZaRppListDomainsInquiry'
          ZA_RPP_LIST_PARTICIPANTS: '#/components/schemas/ZaRppListParticipantsInquiry'
        propertyName: schema
      properties:
        schema:
          type: string
      required:
        - schema
      type: object
    ZaRppListDomainsInquiry:
      allOf:
        - $ref: '#/components/schemas/SchemeInquiry'
      properties:
        agent:
          $ref: '#/components/schemas/InstitutionIdentification'
      required:
        - agent
      type: object
    ZaRppListParticipantsInquiry:
      allOf:
        - $ref: '#/components/schemas/SchemeInquiry'
      properties:
        agent:
          $ref: '#/components/schemas/InstitutionIdentification'
      required:
        - agent
      type: object
    SchemeInquiryRequest:
      allOf:
        - $ref: '#/components/schemas/BaseMessage'
        - properties:
            inquiry:
              $ref: '#/components/schemas/SchemeInquiry'
            schema:
              enum:
                - SchemeInquiryRequest
              type: string
          required:
            - inquiry
            - schema
          type: object
      type: object
    SchemeReport:
      discriminator:
        mapping:
          ZA_RPP_LIST_DOMAINS: '#/components/schemas/ZaRppListDomainsSchemeReport'
          ZA_RPP_LIST_PARTICIPANTS: '#/components/schemas/ZaRppListParticipantsSchemeReport'
        propertyName: schema
      properties:
        schema:
          type: string
      required:
        - schema
      type: object
    ZaInstitutionIdentificationWithDomain:
      allOf:
        - $ref: '#/components/schemas/InstitutionIdentification'
        - 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
              maxLength: 35
              type: string
          type: object
    ZaRppListDomainsSchemeReport:
      allOf:
        - $ref: '#/components/schemas/SchemeReport'
      properties:
        agent:
          $ref: '#/components/schemas/InstitutionIdentification'
        domains:
          items:
            $ref: '#/components/schemas/ZaInstitutionIdentificationWithDomain'
          type: array
      required:
        - agent
        - domains
      type: object
    ZaRppServices:
      enum:
        - PBPX
        - PBAC
        - RTP-PBPX
        - RTP-PBAC
      type: string
    ZaInstitutionDomainDetails:
      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
          maxLength: 35
          minLength: 1
          type: string
        name:
          description: >-
            Name by which an institution is known and which is usually used to
            identify that institution
          maxLength: 100
          minLength: 1
          type: string
        services:
          items:
            $ref: '#/components/schemas/ZaRppServices'
          minItems: 0
          type: array
      required:
        - domain
        - name
        - services
      type: object
    ParticipantIdentificationDetails:
      properties:
        bicfi:
          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)
          pattern: ^[A-Z0-9]{4,4}[A-Z]{2,2}[A-Z0-9]{2,2}([A-Z0-9]{3,3}){0,1}$
          type: string
        branch:
          $ref: '#/components/schemas/BranchIdentification'
        domainDetails:
          items:
            $ref: '#/components/schemas/ZaInstitutionDomainDetails'
          type: array
        memberId:
          description: Identification of a member of a clearing system.
          maxLength: 35
          minLength: 1
          type: string
        name:
          description: >-
            Name by which an institution is known and which is usually used to
            identify that institution.
          maxLength: 140
          type: string
        services:
          items:
            $ref: '#/components/schemas/ZaRppServices'
          minItems: 0
          type: array
        sponsoringAgentBicfi:
          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)
          pattern: ^[A-Z0-9]{4,4}[A-Z]{2,2}[A-Z0-9]{2,2}([A-Z0-9]{3,3}){0,1}$
          type: string
        sponsoringAgentName:
          description: >-
            Name by which an institution is known and which is usually used to
            identify that institution.
          maxLength: 100
          type: string
      required:
        - name
        - services
    ZaRppListParticipantsSchemeReport:
      allOf:
        - $ref: '#/components/schemas/SchemeReport'
      properties:
        agent:
          $ref: '#/components/schemas/InstitutionIdentification'
        participantDetails:
          items:
            $ref: '#/components/schemas/ParticipantIdentificationDetails'
          type: array
      required:
        - agent
        - participantDetails
      type: object
    SchemeInquiryResponse:
      allOf:
        - $ref: '#/components/schemas/BaseResponseMessage'
        - properties:
            report:
              $ref: '#/components/schemas/SchemeReport'
            schema:
              enum:
                - SchemeInquiryResponse
              type: string
          required:
            - originalMessageIdentification
            - originalCreationDateTime
            - schema
          type: object
      type: object
    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.
      discriminator:
        mapping:
          ZA_RPP: '#/components/schemas/ZaRppRefundInitiationPaymentScheme'
        propertyName: schema
      oneOf:
        - $ref: '#/components/schemas/ZaRppRefundInitiationPaymentScheme'
      type: object
    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.
      properties:
        amounts:
          $ref: '#/components/schemas/TransactionAmounts'
        debtorAccount:
          $ref: '#/components/schemas/PaymentAccount'
        messageIdentifiers:
          $ref: '#/components/schemas/MessageIdentifiers'
          description: |
            The message identifier values for this `RefundInitiationRequest`
        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.
        paymentScheme:
          $ref: '#/components/schemas/RefundInitiationPaymentScheme'
        refundReference:
          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.
          type: string
        schema:
          enum:
            - RefundInitiationRequest
          type: string
        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
      required:
        - schema
        - paymentScheme
        - messageIdentifiers
        - transactionIdentifiers
        - originalTransactionIdentifiers
      type: object
  examples:
    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'
    ErrorDetailServerError:
      summary: An error indicating an unexpected server error
      value:
        schema: ErrorDetail
        message: An unexpected error occurred. Please try again later.
    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
    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
    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
    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
    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
    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
    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
    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
    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
    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
    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
