openapi: 3.0.0
info:
  description: >-
    The Electrum Account Payments Service describes an interface for performing
    account payments
                      transactions. These transactions require a reference number which uniquely identifies the account
                      processor, account issuer, as well as the customer account, and is typically printed on a customer
                      invoice. The customer then makes use of this reference number to make a payment towards the
                      corresponding account. This API is often used to pay bills or to top up accounts.
  version: 4.19.0
  title: Account Payments Service Interface
  contact:
    name: Electrum Support
    url: https://electrum.co.za/contact
    email: support@electrum.co.za
  license:
    name: Apache 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0.html
paths:
  /accountLookups/policy/{requestId}:
    post:
      summary: requestPolicyInfo
      description: >-
        Requests the current status of the policy identified by the supplied
        `policyNumber`. In the case where this function is not supported by the
        service provider, a `501` HTTP status code may be returned.<br><br>This
        operation is deprecated. Use `lookupBills` instead.
      operationId: requestPolicyInfo
      parameters:
        - name: requestId
          in: path
          description: The randomly generated UUID of this request
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PolicyLookupRequest'
        description: A policy lookup request
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PolicyLookupResponse'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '501':
          description: Not implemented
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '503':
          description: Service unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '504':
          description: Gateway timeout
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
      security:
        - httpBasic: []
        - oauth2: []
      deprecated: true
  /accountLookups/traffic/{requestId}:
    post:
      summary: requestTrafficFineInfo
      description: >-
        Requests information related to a specific traffic fine as identified by
        the `noticeNumber`. In the case where this function is not supported by
        the service provider, a `501` HTTP status code will be
        returned.<br><br>This operation is deprecated. Use `lookupBills`
        instead.
      operationId: requestTrafficFineInfo
      parameters:
        - name: requestId
          in: path
          description: The randomly generated UUID of this request
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TrafficFineLookupRequest'
        description: A traffic fine lookup request
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TrafficFineLookupResponse'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '501':
          description: Not implemented
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '503':
          description: Service unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '504':
          description: Gateway timeout
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
      security:
        - httpBasic: []
        - oauth2: []
      deprecated: true
  /accountLookups/{requestId}:
    post:
      summary: requestAccountInfo
      description: >-
        Requests the current status of the account identified by the supplied
        `accountRef`. In the case where this function is not supported by the
        service provider, a `501` HTTP status code will be returned.
        <br><br>This operation is deprecated. Use `lookupBills` instead.
      operationId: requestAccountInfo
      parameters:
        - name: requestId
          in: path
          description: The randomly generated UUID of this request
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AccountLookupRequest'
        description: An account lookup request
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccountLookupResponse'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '501':
          description: Not implemented
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '503':
          description: Service unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '504':
          description: Gateway timeout
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
      security:
        - httpBasic: []
        - oauth2: []
      deprecated: true
  /billers:
    get:
      summary: listBillers
      description: >-
        Request details on managed billers. Not all service providers support
        biller management. In the case where the function is not supported a
        `501` HTTP status code will be returned.
      operationId: listBillers
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BillerListResponse'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '501':
          description: Not implemented
        '503':
          description: Service unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '504':
          description: Gateway timeout
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
      security:
        - httpBasic: []
        - oauth2: []
  /bills/{referenceNumber}:
    get:
      summary: lookupBills
      description: >-
        Requests all bills related to a specific reference number. The reference
        number can be in the form of a traffic fine notice number, ID number, or
        account reference number. Not all reference types are supported by all
        service providers and in these cases a `501` HTTP status code may be
        returned.
      operationId: lookupBills
      parameters:
        - name: referenceNumber
          in: path
          description: The reference number to use for the lookup
          required: true
          schema:
            type: string
        - name: billsType
          in: query
          description: >-
            An enumerated value describing which bills to return, e.g., traffic
            fines or account bills.
          required: true
          schema:
            type: string
            enum:
              - TRAFFIC_FINES
              - ACCOUNT_BILLS
        - name: requestId
          in: query
          description: The unique ID of this request
          required: false
          schema:
            type: string
        - name: merchantId
          in: query
          description: The assigned merchant identifier. Also known as card acceptor ID.
          required: false
          schema:
            type: string
        - name: terminalId
          in: query
          description: >-
            The ID that uniquely identifies each device or system in an
            originator's institution that is capable of sending requests
          required: false
          schema:
            type: string
        - name: originatorInstId
          in: query
          description: >-
            Identifies the institution from which the transaction originates.
            Value to be assigned by Electrum.
          required: false
          schema:
            type: string
        - name: receiverId
          in: query
          description: Originating, acquiring, processing, or receiving institution details
          required: false
          schema:
            type: string
        - name: basketRef
          in: query
          description: >-
            Used to group multiple transactions which would otherwise be
            considered independent
          required: false
          schema:
            type: string
        - name: originatorCountryCode
          in: query
          description: >-
            The country code where the originator is located from ISO 3166-1
            alpha-2, e.g. South African country code is encoded as ZA
          required: false
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BillLookupResponse'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '501':
          description: Not implemented
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '503':
          description: Service unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '504':
          description: Gateway timeout
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
      security:
        - httpBasic: []
        - oauth2: []
  /payments/policy/{paymentId}:
    post:
      summary: createPolicyPayment
      description: Requests that a payment be made towards a policy.
      operationId: createPolicyPayment
      parameters:
        - name: paymentId
          in: path
          description: The randomly generated UUID of this request
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PolicyPaymentRequest'
        description: A policy payment request
        required: true
      responses:
        '201':
          description: Created
          headers:
            Location:
              description: The location of the created payments resource
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PolicyPaymentResponse'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '503':
          description: Service unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '504':
          description: Gateway timeout
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
      security:
        - httpBasic: []
        - oauth2: []
      deprecated: true
  /payments/status/{paymentMsgId}:
    get:
      summary: paymentStatus
      description: >-
        In the case where a payment request reaches a timeout, the
        purchaseStatus operation should be used to determine the outcome of a
        prior payment. This operation will return the same PurchaseResponse or
        ErrorDetail as would have been returned had the original purchase
        completed normally. This operation should only be used for facilitating
        a single to dual flow on a digital channel.
      operationId: paymentStatus
      parameters:
        - name: paymentMsgId
          in: path
          description: The randomly generated UUID of the original failed PaymentRequest.
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentResponse'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '404':
          description: Not found
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '503':
          description: Service unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '504':
          description: Gateway timeout
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
      security:
        - httpBasic: []
        - oauth2: []
  /payments/traffic/{paymentId}:
    post:
      summary: createTrafficFinePayment
      description: Requests that a payment be made towards a traffic fine.
      operationId: createTrafficFinePayment
      parameters:
        - name: paymentId
          in: path
          description: The randomly generated UUID of this request
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TrafficFinePaymentRequest'
        description: A traffic fine payment request
        required: true
      responses:
        '201':
          description: Created
          headers:
            Location:
              description: The location of the created payments resource
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TrafficFinePaymentResponse'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '503':
          description: Service unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '504':
          description: Gateway timeout
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
      security:
        - httpBasic: []
        - oauth2: []
  /payments/{paymentId}:
    post:
      summary: createAccountPayment
      description: Requests that a payment be made towards a customer account.
      operationId: createAccountPayment
      parameters:
        - name: paymentId
          in: path
          description: The randomly generated UUID of this request
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PaymentRequest'
        description: A payment request
        required: true
      responses:
        '201':
          description: Created
          headers:
            Location:
              description: The location of the created payments resource
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentResponse'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '503':
          description: Service unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '504':
          description: Gateway timeout
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
      security:
        - httpBasic: []
        - oauth2: []
  /payments/{paymentId}/confirmations/{adviceId}:
    post:
      summary: confirmPayment
      description: >-
        If a payment request (`createPayment` operation) is successful, and
        returns a `201` status, it must be confirmed or cancelled in order to
        complete the transaction. Confirmation of a payment (this operation)
        will only succeed if the payment was previously created, but not
        cancelled. This operation must be repeated until a final HTTP status
        code is received (i.e. `202` or `400`). If a `5xx` status code is
        received, or no response is received, the request must be repeated. The
        confirmation operation is idempotent and may be called repeatedly on the
        same payment resource without adverse effect.
      operationId: confirmPayment
      parameters:
        - name: adviceId
          in: path
          description: The randomly generated UUID of this request
          required: true
          schema:
            type: string
        - name: paymentId
          in: path
          description: The UUID generated for the original `createPayment` request
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TenderAdvice'
        description: A payment confirmation
        required: true
      responses:
        '202':
          description: Accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BasicAdviceResponse'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '503':
          description: Service unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '504':
          description: Gateway timeout
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
      security:
        - httpBasic: []
        - oauth2: []
  /payments/{paymentId}/reversals/{adviceId}:
    post:
      summary: reversePayment
      description: >-
        If a payment request (`createPayment` operation) fails with a `5xx` HTTP
        status code, or no response was received within the timeout limit, it
        must be reversed. This is to ensure that the payment is not reflected on
        the customer's account. The reversal (this operation) must be repeated
        until a final HTTP status code is received (i.e. `202` or `400`). The
        operation is idempotent and so may be called repeatedly on the same
        payment resource without adverse effect.
      operationId: reversePayment
      parameters:
        - name: adviceId
          in: path
          description: The randomly generated UUID of this request
          required: true
          schema:
            type: string
        - name: paymentId
          in: path
          description: The UUID generated for the original createPayment request
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BasicReversal'
        description: A payment reversal
        required: true
      responses:
        '202':
          description: Accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BasicAdviceResponse'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '503':
          description: Service unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '504':
          description: Gateway timeout
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
      security:
        - httpBasic: []
        - oauth2: []
  /refunds/{refundId}:
    post:
      summary: createRefund
      description: >-
        If a payment is completed and confirmed successfully, some services
        allow customers to request a refund for a limited time after the payment
        took place. Not all service providers support refunds. In the case where
        this function is not supported, a `501` HTTP status code will be
        returned
      operationId: createRefund
      parameters:
        - name: refundId
          in: path
          description: The randomly generated UUID of this request
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RefundRequest'
        description: A refund request
        required: true
      responses:
        '201':
          description: Created
          headers:
            Location:
              description: The location of the created refund resource
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RefundResponse'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '501':
          description: Not implemented
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '503':
          description: Service unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '504':
          description: Gateway timeout
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
      security:
        - httpBasic: []
        - oauth2: []
  /refunds/{refundId}/confirmations/{adviceId}:
    post:
      summary: confirmRefund
      description: >-
        If a refund request (`createRefund` operation) previously succeeded with
        a `201` status it must be confirmed or reversed to complete the
        transaction. The refund confirmation (this operation) can only succeed
        if a refund was created but not reversed. The operation must be repeated
        until a final HTTP status code is received (i.e. `202` or `400`). If a
        `5xx` status code is received, or no response is received, the request
        must be repeated. The operation may be called repeatedly on the same
        refund resource without adverse effect.
      operationId: confirmRefund
      parameters:
        - name: adviceId
          in: path
          description: The randomly generated UUID of this request
          required: true
          schema:
            type: string
        - name: refundId
          in: path
          description: The UUID generated for the corresponding `createRefund` request
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BasicAdvice'
        description: A refund confirmation
        required: true
      responses:
        '202':
          description: Accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BasicAdviceResponse'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '503':
          description: Service unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '504':
          description: Gateway timeout
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
      security:
        - httpBasic: []
        - oauth2: []
  /refunds/{refundId}/reversals/{adviceId}:
    post:
      summary: reverseRefund
      description: >-
        If a refund request (`createRefund` operation) fails with a `5xx` HTTP
        status code, or no response was received within the timeout period, it
        must be reversed. This is to ensure the refund is not refelected on a
        customer's account. The refund reversal (this operation) must be
        repeated until a final HTTP status code is received (i.e. `202` or
        `400`). The operation is idempotent and may be called repeatedly on the
        same payment resource without adverse effect.
      operationId: reverseRefund
      parameters:
        - name: adviceId
          in: path
          description: The randomly generated UUID of this request
          required: true
          schema:
            type: string
        - name: refundId
          in: path
          description: The UUID generated for the corresponding `createRefund` request
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BasicReversal'
        description: A refund reversal
        required: true
      responses:
        '202':
          description: Accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BasicAdviceResponse'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '503':
          description: Service unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
        '504':
          description: Gateway timeout
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
      security:
        - httpBasic: []
        - oauth2: []
servers:
  - url: https://[placeholder].dev/billpay/v4
components:
  securitySchemes:
    httpBasic:
      description: >-
        HTTP basic authentication. If you are doing a client side integration,
        Electrum will provide the username and password to the client. If you
        are doing a server side implementation, you will be expected to provide
        these credentials.
      type: http
      scheme: basic
    oauth2:
      description: >-
        OAuth2 password authentication, where the token URL, client ID, client
        secret, username, and password will be provided by Electrum if you
        implementing a client side integration. If you are doing a server side
        implementation, you will be expected to provide these credentials.
      type: oauth2
      flows:
        password:
          tokenUrl: >-
            https://auth.electrum.dev/auth/realms/Example-Realm/protocol/openid-connect/token
          scopes: {}
  schemas:
    Account:
      type: object
      required:
        - accountRef
      properties:
        accountRef:
          type: string
          description: >-
            A reference number identifying the bill payments processor, bill
            issuer, and customer
          minLength: 6
          maxLength: 40
        dueDate:
          type: string
          format: date
          description: >-
            The effective date of the current billing period in the format
            yyyy-MM-dd
      description: Represents the status of a customer account.
    AccountLookupRequest:
      type: object
      required:
        - accountRef
        - client
        - id
        - originator
        - thirdPartyIdentifiers
        - time
      properties:
        transactionLabels:
          type: array
          description: >-
            A list containing labels that can be used to discover this
            transaction or group it with other transactions sharing labels with
            the same label name and value. Transaction labels should never be
            used to make transaction processing decisions.
          items:
            $ref: '#/components/schemas/TransactionLabel'
        selectedCategory:
          $ref: '#/components/schemas/Category'
        id:
          type: string
          description: >-
            The randomly generated UUID identifying this transaction, as defined
            for a variant 4 UUID in [RFC
            4122](https://tools.ietf.org/html/rfc4122)
        time:
          type: string
          format: date-time
          description: >-
            The date and time of the message as recorded by the sender. The
            format shall be as defined for date-time in [RFC 3339 section
            5.6](https://tools.ietf.org/html/rfc3339#section-5.6). It is
            recommended that the optional time-secfrac be included up to
            millisecond precision
        originator:
          $ref: '#/components/schemas/Originator'
        client:
          $ref: '#/components/schemas/Institution'
        settlementEntity:
          $ref: '#/components/schemas/Institution'
        receiver:
          $ref: '#/components/schemas/Institution'
        thirdPartyIdentifiers:
          type: array
          description: >-
            An array of identifiers which each identify the transaction within
            each entity's system.
          items:
            $ref: '#/components/schemas/ThirdPartyIdentifier'
        slipData:
          $ref: '#/components/schemas/SlipData'
        basketRef:
          type: string
          description: >-
            Used to group multiple transactions which would otherwise be
            considered independent.
        tranType:
          type: string
          description: >-
            Data relating to the type of transaction taking place (i.e. cash
            withdrawal, goods and services etc.).
          enum:
            - GOODS_AND_SERVICES
            - CASH_WITHDRAWAL
            - DEBIT_ADJUSTMENT
            - GOODS_AND_SERVICES_WITH_CASH_BACK
            - NON_CASH
            - RETURNS
            - DEPOSIT
            - CREDIT_ADJUSTMENT
            - GENERAL_CREDIT
            - AVAILABLE_FUNDS_INQUIRY
            - BALANCE_INQUIRY
            - GENERAL_INQUIRY
            - CARD_VERIFICATION_INQUIRY
            - CARDHOLDER_ACCOUNTS_TRANSFER
            - GENERAL_TRANSFER
            - PAYMENT_FROM_ACCOUNT
            - GENERAL_PAYMENT
            - PAYMENT_TO_ACCOUNT
            - PAYMENT_FROM_ACCOUNT_TO_ACCOUNT
            - PLACE_HOLD_ON_CARD
            - GENERAL_ADMIN
            - CHANGE_PIN
            - CARD_HOLDER_INQUIRY
            - POINTS_INQUIRY
        srcAccType:
          type: string
          description: >-
            This specifies the type of source account being used in the
            transaction (i.e. cheque, savings).
          enum:
            - DEFAULT
            - SAVINGS
            - CHEQUE
            - CREDIT
            - UNIVERSAL
            - ELECTRONIC_PURSE
            - GIFT_CARD
            - STORED_VALUE
        destAccType:
          type: string
          description: >-
            This specifies the type of destination account being used in the
            transaction (i.e. cheque, savings).
          enum:
            - DEFAULT
            - SAVINGS
            - CHEQUE
            - CREDIT
            - UNIVERSAL
            - ELECTRONIC_PURSE
            - GIFT_CARD
            - STORED_VALUE
        stan:
          type: string
          description: >-
            The System Trace Audit Number can be used to locate transactions
            across different systems.
        rrn:
          type: string
          description: This is a reference set by the original source of the transaction.
        customer:
          $ref: '#/components/schemas/Customer'
        accountRef:
          type: string
          description: >-
            A reference number identifying the bill payments processor, bill
            issuer, and customer
          minLength: 6
          maxLength: 40
      description: >-
        The data required to request account info. Replaced by new API call
        getBillInfo in v4.14.0.
    AccountLookupResponse:
      type: object
      required:
        - account
        - amounts
        - client
        - id
        - originator
        - slipData
        - thirdPartyIdentifiers
        - time
      properties:
        transactionLabels:
          type: array
          description: >-
            A list containing labels that can be used to discover this
            transaction or group it with other transactions sharing labels with
            the same label name and value. Transaction labels should never be
            used to make transaction processing decisions.
          items:
            $ref: '#/components/schemas/TransactionLabel'
        id:
          type: string
          description: >-
            The randomly generated UUID identifying this transaction, as defined
            for a variant 4 UUID in [RFC
            4122](https://tools.ietf.org/html/rfc4122)
        time:
          type: string
          format: date-time
          description: >-
            The date and time of the message as recorded by the sender. The
            format shall be as defined for date-time in [RFC 3339 section
            5.6](https://tools.ietf.org/html/rfc3339#section-5.6). It is
            recommended that the optional time-secfrac be included up to
            millisecond precision
        originator:
          $ref: '#/components/schemas/Originator'
        client:
          $ref: '#/components/schemas/Institution'
        settlementEntity:
          $ref: '#/components/schemas/Institution'
        receiver:
          $ref: '#/components/schemas/Institution'
        thirdPartyIdentifiers:
          type: array
          description: >-
            An array of identifiers which each identify the transaction within
            each entity's system.
          items:
            $ref: '#/components/schemas/ThirdPartyIdentifier'
        slipData:
          $ref: '#/components/schemas/BillSlipData'
        basketRef:
          type: string
          description: >-
            Used to group multiple transactions which would otherwise be
            considered independent.
        tranType:
          type: string
          description: >-
            Data relating to the type of transaction taking place (i.e. cash
            withdrawal, goods and services etc.).
          enum:
            - GOODS_AND_SERVICES
            - CASH_WITHDRAWAL
            - DEBIT_ADJUSTMENT
            - GOODS_AND_SERVICES_WITH_CASH_BACK
            - NON_CASH
            - RETURNS
            - DEPOSIT
            - CREDIT_ADJUSTMENT
            - GENERAL_CREDIT
            - AVAILABLE_FUNDS_INQUIRY
            - BALANCE_INQUIRY
            - GENERAL_INQUIRY
            - CARD_VERIFICATION_INQUIRY
            - CARDHOLDER_ACCOUNTS_TRANSFER
            - GENERAL_TRANSFER
            - PAYMENT_FROM_ACCOUNT
            - GENERAL_PAYMENT
            - PAYMENT_TO_ACCOUNT
            - PAYMENT_FROM_ACCOUNT_TO_ACCOUNT
            - PLACE_HOLD_ON_CARD
            - GENERAL_ADMIN
            - CHANGE_PIN
            - CARD_HOLDER_INQUIRY
            - POINTS_INQUIRY
        srcAccType:
          type: string
          description: >-
            This specifies the type of source account being used in the
            transaction (i.e. cheque, savings).
          enum:
            - DEFAULT
            - SAVINGS
            - CHEQUE
            - CREDIT
            - UNIVERSAL
            - ELECTRONIC_PURSE
            - GIFT_CARD
            - STORED_VALUE
        destAccType:
          type: string
          description: >-
            This specifies the type of destination account being used in the
            transaction (i.e. cheque, savings).
          enum:
            - DEFAULT
            - SAVINGS
            - CHEQUE
            - CREDIT
            - UNIVERSAL
            - ELECTRONIC_PURSE
            - GIFT_CARD
            - STORED_VALUE
        stan:
          type: string
          description: >-
            The System Trace Audit Number can be used to locate transactions
            across different systems.
        rrn:
          type: string
          description: This is a reference set by the original source of the transaction.
        customer:
          $ref: '#/components/schemas/Customer'
        amounts:
          $ref: '#/components/schemas/BillpayAmounts'
        partPaymentAllowed:
          type: boolean
          description: >-
            Indicates whether a payment amount may be less than the amount due.
            Defaults to true.
          default: false
        overPaymentAllowed:
          type: boolean
          description: >-
            Indicates whether a payment amount may be more than the amount due.
            Defaults to true.
          default: false
        account:
          $ref: '#/components/schemas/Account'
        paymentOriginatorDetailsRequired:
          type: boolean
          description: >-
            A boolean flag which indicates whether payment originator details
            are required in the following payment request for FATF compliance.
          default: false
      description: >-
        The data resulting from an account lookup request. Replaced by a general
        BillLookupResponse in v4.14.0.
    AccountPayment:
      allOf:
        - $ref: '#/components/schemas/PaymentMethod'
        - type: object
          properties:
            srcAccountId:
              type: string
              description: Source AccountId from which this payment will be made.
            srcCustomerId:
              type: string
              description: Source CustomerId from which this payment will be made.
            destAccountId:
              type: string
              description: Destination AccountId to which this payment will be made.
            destCustomerId:
              type: string
              description: Destination CustomerId to which this payment will be made.
          description: Model for an account-to-account payment method
    Amounts:
      type: object
      properties:
        requestAmount:
          $ref: '#/components/schemas/LedgerAmount'
        approvedAmount:
          $ref: '#/components/schemas/LedgerAmount'
        feeAmount:
          $ref: '#/components/schemas/LedgerAmount'
        balanceAmount:
          $ref: '#/components/schemas/LedgerAmount'
        additionalAmounts:
          type: object
          description: >-
            Any additional amounts that are involved in a transaction which
            don't appropriately fit into the other amount fields.
          additionalProperties:
            $ref: '#/components/schemas/LedgerAmount'
      description: Amounts which make up the transaction. Absent amounts have zero value.
    An32TokenPayment:
      allOf:
        - $ref: '#/components/schemas/PaymentMethod'
        - type: object
          required:
            - token
          properties:
            token:
              type: string
              description: 32 character alphanumeric code which identifies a token
              pattern: '[a-zA-Z0-9]{32}'
          description: Model for token-based payments
    Barcode:
      type: object
      required:
        - data
        - encoding
      properties:
        data:
          type: string
          description: Data to be encoded in the barcode
        encoding:
          type: string
          description: Specifies the encoding used in the barcode
      description: Used to indicate barcode information for a slip line.
    BasicAdvice:
      type: object
      required:
        - id
        - requestId
        - thirdPartyIdentifiers
        - time
      properties:
        id:
          type: string
          description: >-
            The randomly generated UUID identifying this advice, as defined for
            a variant 4 UUID in [RFC 4122](https://tools.ietf.org/html/rfc4122)
        requestId:
          type: string
          description: The UUID identifying the request that this advice relates to
        time:
          type: string
          format: date-time
          description: >-
            The date and time of the message as recorded by the sender. The
            format shall be as defined for date-time in [RFC 3339 section
            5.6](https://tools.ietf.org/html/rfc3339#section-5.6). It is
            recommended that the optional time-secfrac be included up to
            millisecond precision
        thirdPartyIdentifiers:
          type: array
          description: >-
            The unaltered thirdPartyIdentifiers array as supplied in the related
            BasicResponse message. Required if thirdPartyIdentifiers field was
            present in the BasicResponse. If no thirdPartyIdentifiers was
            received in the BasicResponse or no BasicResponse was received then
            this should be set to the thirdPartyIdentifiers sent in the original
            request.
          items:
            $ref: '#/components/schemas/ThirdPartyIdentifier'
        stan:
          type: string
          description: >-
            The System Trace Audit Number can be used to locate transactions
            across different systems.
        rrn:
          type: string
          description: This is a reference set by the original source of the transaction.
        amounts:
          $ref: '#/components/schemas/Amounts'
      description: The data required in all advice messages
    BasicAdviceResponse:
      type: object
      required:
        - id
        - requestId
        - thirdPartyIdentifiers
        - time
      properties:
        id:
          type: string
          description: >-
            The randomly generated UUID identifying this advice, as defined for
            a variant 4 UUID in [RFC 4122](https://tools.ietf.org/html/rfc4122)
        requestId:
          type: string
          description: The UUID identifying the request that this advice relates to
        time:
          type: string
          format: date-time
          description: >-
            The date and time of the message as recorded by the sender. The
            format shall be as defined for date-time in [RFC 3339 section
            5.6](https://tools.ietf.org/html/rfc3339#section-5.6). It is
            recommended that the optional time-secfrac be included up to
            millisecond precision
        thirdPartyIdentifiers:
          type: array
          description: >-
            The unaltered thirdPartyIdentifiers array as supplied in the related
            BasicResponse message. Required if thirdPartyIdentifiers field was
            present in the BasicResponse. If no thirdPartyIdentifiers was
            received in the BasicResponse or no BasicResponse was received then
            this should be set to the thirdPartyIdentifiers sent in the original
            request.
          items:
            $ref: '#/components/schemas/ThirdPartyIdentifier'
        stan:
          type: string
          description: >-
            The System Trace Audit Number can be used to locate transactions
            across different systems.
        rrn:
          type: string
          description: This is a reference set by the original source of the transaction.
        amounts:
          $ref: '#/components/schemas/Amounts'
      description: Basic advice response information.
    BasicReversal:
      type: object
      required:
        - id
        - requestId
        - reversalReason
        - thirdPartyIdentifiers
        - time
      properties:
        id:
          type: string
          description: >-
            The randomly generated UUID identifying this advice, as defined for
            a variant 4 UUID in [RFC 4122](https://tools.ietf.org/html/rfc4122)
        requestId:
          type: string
          description: The UUID identifying the request that this advice relates to
        time:
          type: string
          format: date-time
          description: >-
            The date and time of the message as recorded by the sender. The
            format shall be as defined for date-time in [RFC 3339 section
            5.6](https://tools.ietf.org/html/rfc3339#section-5.6). It is
            recommended that the optional time-secfrac be included up to
            millisecond precision
        thirdPartyIdentifiers:
          type: array
          description: >-
            The unaltered thirdPartyIdentifiers array as supplied in the related
            BasicResponse message. Required if thirdPartyIdentifiers field was
            present in the BasicResponse. If no thirdPartyIdentifiers was
            received in the BasicResponse or no BasicResponse was received then
            this should be set to the thirdPartyIdentifiers sent in the original
            request.
          items:
            $ref: '#/components/schemas/ThirdPartyIdentifier'
        stan:
          type: string
          description: >-
            The System Trace Audit Number can be used to locate transactions
            across different systems.
        rrn:
          type: string
          description: This is a reference set by the original source of the transaction.
        amounts:
          $ref: '#/components/schemas/Amounts'
        reversalReason:
          type: string
          description: The reason for the reversal
          enum:
            - TIMEOUT
            - CANCELLED
            - RESPONSE_NOT_FINAL
            - REFUND
            - VOID
      description: >-
        An advice that notifies of the negative completion of a transaction.
        This can be either due to customer cancellation, as a result of
        receiving a non-final response (or no response) to a request, customer
        being refunded during the transaction, or the transaction being voided
    Bill:
      type: object
      required:
        - amounts
        - referenceNumber
        - slipData
        - type
      properties:
        referenceNumber:
          type: string
          description: >-
            A reference number identifying the bill payments processor, bill
            issuer, and customer
          minLength: 6
          maxLength: 40
        dueDate:
          type: string
          format: date
          description: >-
            The effective date of the current billing period in the format
            yyyy-MM-dd
        type:
          type: string
          description: The type of bill, e.g., traffic fine, account bill, etc.
          enum:
            - TRAFFIC_FINE
            - ACCOUNT
            - UNKNOWN
        amounts:
          $ref: '#/components/schemas/BillpayAmounts'
        slipData:
          $ref: '#/components/schemas/BillSlipData'
        partPaymentAllowed:
          type: boolean
          description: >-
            Indicates whether a payment amount may be less than the amount due.
            Defaults to null.
          default: false
        overPaymentAllowed:
          type: boolean
          description: >-
            Indicates whether a payment amount may be more than the amount due.
            Defaults to null.
          default: false
        settlementEntity:
          $ref: '#/components/schemas/Institution'
        receiver:
          $ref: '#/components/schemas/Institution'
    BillLookupResponse:
      type: object
      required:
        - time
      properties:
        requestId:
          type: string
          description: A unique ID used to identify the request
        time:
          type: string
          format: date-time
          description: >-
            The date and time of the message as recorded by the sender. The
            format shall be as defined for date-time in [RFC 3339 section
            5.6](https://tools.ietf.org/html/rfc3339#section-5.6). It is
            recommended that the optional time-secfrac be included up to
            millisecond precision.
        thirdPartyIdentifiers:
          type: array
          description: >-
            An array of identifiers that identify the transaction within each
            entity's system
          items:
            $ref: '#/components/schemas/ThirdPartyIdentifier'
        customer:
          $ref: '#/components/schemas/Customer'
        bills:
          type: array
          description: >-
            A list of all bills related to a reference number. If no bills were
            found, this defaults to an empty list
          items:
            $ref: '#/components/schemas/Bill'
        paymentOriginatorDetailsRequired:
          type: boolean
          description: >-
            A boolean flag which indicates whether payment originator details
            are required in the following payment request for FATF compliance.
          default: false
    BillSlipData:
      type: object
      properties:
        messageLines:
          type: array
          description: >-
            An array of text lines and optional formatting to be printed on the
            customer slip.
          items:
            $ref: '#/components/schemas/SlipLine'
        slipWidth:
          type: integer
          format: int32
          description: The width of the slip in normal (unformatted) characters.
        issuerReference:
          type: string
          description: >-
            An identifier that is printed on the customer slip and uniquely
            identifies the payment on the service provider's system. This value
            is used by the customer to request a refund when the service
            supports this function, and it is thus important that this number is
            unique.
          pattern: '[A-Z0-9]{1,40}'
        phoneNumber:
          type: string
          description: The call centre phone number
      description: Data that may be printed on the customer slip for information purposes
    Biller:
      type: object
      required:
        - billerInstitution
      properties:
        billerInstitution:
          $ref: '#/components/schemas/Institution'
        categories:
          type: array
          description: List of Categories to which this biller belongs
          items:
            $ref: '#/components/schemas/Category'
        allowed:
          type: boolean
          description: >-
            Indicates if transactions should be blocked without sending them to
            the upstream biller. Transactions will be blocked if allowed is set
            to false, otherwise they will not be blocked.
          default: false
      description: Contains the information about the biller
    BillerListResponse:
      type: object
      properties:
        billers:
          type: array
          description: The billers supported by the catalog hosted on the Electrum system
          items:
            $ref: '#/components/schemas/Biller'
      description: The data resulting from a biller list request
    BillpayAmounts:
      type: object
      properties:
        requestAmount:
          $ref: '#/components/schemas/LedgerAmount'
        approvedAmount:
          $ref: '#/components/schemas/LedgerAmount'
        feeAmount:
          $ref: '#/components/schemas/LedgerAmount'
        balanceAmount:
          $ref: '#/components/schemas/LedgerAmount'
        additionalAmounts:
          type: object
          description: >-
            Any additional amounts that are involved in a transaction which
            don't appropriately fit into the other amount fields.
          additionalProperties:
            $ref: '#/components/schemas/LedgerAmount'
        maxPayableAmount:
          $ref: '#/components/schemas/LedgerAmount'
        minPayableAmount:
          $ref: '#/components/schemas/LedgerAmount'
      description: Amounts which make up the transaction. Absent amounts have zero value.
    CardPayment:
      allOf:
        - $ref: '#/components/schemas/PaymentMethod'
        - type: object
          required:
            - pan
          properties:
            posInfo:
              $ref: '#/components/schemas/PosInfo'
            pin:
              $ref: '#/components/schemas/Pin'
            pan:
              type: string
              description: Primary account number that uniquely identifies this card.
              pattern: '[0-9]{1,19}'
            expiryDate:
              type: string
              description: The card expiry date, in YYMM format.
              pattern: '[0-9]{4}'
            threeDSecureData:
              $ref: '#/components/schemas/ThreeDSecureData'
            encryptedPin:
              $ref: '#/components/schemas/EncryptedPin'
          description: Model for card-based payments
    Category:
      type: object
      required:
        - id
        - name
      properties:
        id:
          type: string
          description: Unique identifier for this category
          minLength: 0
          maxLength: 40
        name:
          type: string
          description: Category name
          minLength: 0
          maxLength: 100
      description: Category to which a bill issuer can belong
    Customer:
      type: object
      properties:
        firstName:
          type: string
          description: The customer's first name(s)
          minLength: 0
          maxLength: 40
        lastName:
          type: string
          description: The customer's last name
          minLength: 0
          maxLength: 40
        address:
          type: string
          description: The customer's address
          minLength: 0
          maxLength: 80
        idNumber:
          type: string
          description: The customer's ID Number
          minLength: 0
          maxLength: 13
        idType:
          type: string
          description: The type of ID document presented by the customer
          enum:
            - NATIONAL_ID
            - PASSPORT
            - DRIVERS_LICENCE
            - ASYLUM_DOCUMENT
            - UNKNOWN
        contactNumber:
          type: string
          description: The customer's contact number
          minLength: 0
          maxLength: 40
      description: A bill payment customer
    EncryptedPin:
      type: object
      required:
        - pinBlock
      properties:
        pinBlock:
          type: string
          description: Hexadecimal string representing the encrypted PIN to be used.
          pattern: '[a-fA-F0-9]{16}|[a-fA-F0-9]{32}'
        encryptionParameters:
          $ref: '#/components/schemas/EncryptionParameters'
      description: >-
        A PIN required to authorise a transaction. EncryptionParameters should
        be provided where the service will be performing operations on the
        encrypted PIN, such as PIN translation. Only the PIN block need be
        provided where the service is expected to forward it to a third party,
        where the calling client and said third party have agreed upon
        encryption parameters beforehand.
    EncryptionParameters:
      type: object
      required:
        - accountNumber
      properties:
        pinBlockFormat:
          type: string
          description: >-
            PIN block format that was used when encrypting the PIN. Defaults to
            ISO_9564_FORMAT_0.
          default: ISO_9564_FORMAT_0
          enum:
            - ISO_9564_FORMAT_0
            - ISO_9564_FORMAT_1
            - ISO_9564_FORMAT_3
            - ISO_9564_FORMAT_4
        accountNumber:
          type: string
          description: >-
            12 digit account number used when encrypting the PIN. When account
            number is a card number (PAN), this is the rightmost 12 digits
            excluding the check digit.
          pattern: '[0-9]{12}'
        keyIndex:
          type: integer
          format: int32
          description: >-
            Index of the key under which the PIN block is encrypted. Where keys
            are exchanged in TR-31 KeyBlock format, this should be set to the
            key version number field of the key used for encryption. If this
            field is not populated, the most recently exchanged key will be
            used. Note that omitting this field may require a higher level of
            synchronization during automated key exchange in some environments.
      description: >-
        Parameters pertaining to the generation of the PIN block. Required if
        the service is to perform any operations on the encrypted PIN, such as
        translation.
    ErrorDetail:
      type: object
      required:
        - errorMessage
        - errorType
        - id
        - requestType
      properties:
        errorType:
          type: string
          description: The type of error that occurred
          enum:
            - DUPLICATE_RECORD
            - FORMAT_ERROR
            - FUNCTION_NOT_SUPPORTED
            - GENERAL_ERROR
            - INVALID_AMOUNT
            - ROUTING_ERROR
            - TRANSACTION_NOT_SUPPORTED
            - UNABLE_TO_LOCATE_RECORD
            - UNKNOWN_CUSTOMER_ACCOUNT
            - UPSTREAM_UNAVAILABLE
            - ACCOUNT_ALREADY_SETTLED
            - INVALID_PRODUCT
            - INVALID_MERCHANT
            - RECEIVER_BLACKLISTED
            - LUHN_CHECK_FAILED
            - BLOCKED_USING_SETTLEMENT_ENTITY
            - BELOW_MINIMUM_ALLOWED_AMOUNT
            - ABOVE_MAXIMUM_ALLOWED_AMOUNT
            - CUSTOMER_ACCOUNT_ERROR
            - DO_NOT_HONOR
            - SYSTEM_MALFUNCTION
            - TRANSACTION_DECLINED
            - INVALID_ACCOUNT
            - LIMIT_EXCEEDED
            - INSUFFICIENT_FUNDS
            - OUTCOME_UNKNOWN
            - PAYMENT_ORIGINATOR_ERROR
        errorMessage:
          type: string
          description: A short description of the error
          minLength: 0
          maxLength: 20
        requestType:
          type: string
          description: >-
            The type of request being processed when the error occurred. Refer
            to Release Notes for deprecated values.
          enum:
            - ACCOUNT_LOOKUP_REQUEST
            - TRAFFIC_FINE_LOOKUP_REQUEST
            - POLICY_LOOKUP_REQUEST
            - PAYMENT_REQUEST
            - TRAFFIC_FINE_PAYMENT_REQUEST
            - POLICY_PAYMENT_REQUEST
            - PAYMENT_REVERSAL
            - TRAFFIC_FINE_PAYMENT_REVERSAL
            - PAYMENT_CONFIRMATION
            - TRAFFIC_FINE_PAYMENT_CONFIRMATION
            - REFUND_REQUEST
            - REFUND_REVERSAL
            - REFUND_CONFIRMATION
            - BILLER_LIST_REQUEST
            - LOOKUP_BILLS
            - PAYMENT_STATUS_REQUEST
        id:
          type: string
          description: The UUID of the message for which error occurred.
        originalId:
          type: string
          description: >-
            The UUID of the original request message in the case of an error
            occurring for an advice message.
        detailMessage:
          type: object
          description: >-
            A free form detailed description of a particular failure condition
            may optionally be supplied
      description: Represents the outcome of a completed transaction
    HashedPinParameters:
      type: object
      required:
        - name
      properties:
        name:
          type: string
          description: The name of the hashing algorithm.
          minLength: 0
          maxLength: 20
      description: >-
        A collection of parameters required to reliably reproduce the hashed
        value (excluding the actual PIN value).
    Institution:
      type: object
      required:
        - id
        - name
      properties:
        id:
          type: string
          description: >-
            The institution's ID. API implementations should take care to set
            this field as appropriate for the implementation.
        name:
          type: string
          description: The institutions's name
          minLength: 0
          maxLength: 40
      description: Originating, acquiring, processing, or receiving institution details
    LedgerAmount:
      type: object
      required:
        - amount
        - currency
      properties:
        amount:
          type: integer
          format: int64
          description: Amount in minor denomination, e.g. R799.95 is encoded as 79995
        currency:
          type: string
          description: >-
            Three digit currency number from ISO 4217, e.g. South African Rand
            is encoded as 710
          pattern: '[0-9]{3}'
        ledgerIndicator:
          type: string
          description: >-
            Indicates whether this amount is a debit or a credit. Only required
            when the amount can be either a debit or a credit
          enum:
            - DEBIT
            - CREDIT
      description: >-
        An amount object only containing value and currency, and optionally an
        indicator of DEBIT/CREDIT
    LoyaltyCardPayment:
      allOf:
        - $ref: '#/components/schemas/PaymentMethod'
        - type: object
          required:
            - cardNumber
          properties:
            cardNumber:
              type: string
              description: >-
                Primary account number of the loyalty programme card used to
                make a payment
              pattern: '[0-9]{16}'
          description: Model for payments made using loyalty programme cards
    Merchant:
      type: object
      required:
        - merchantId
        - merchantName
        - merchantType
      properties:
        merchantType:
          type: string
          description: The assigned four digit merchant category code
          pattern: '[0-9]{4}'
        merchantId:
          type: string
          description: The assigned merchant identifier. Also known as card acceptor id
          minLength: 15
          maxLength: 15
        merchantName:
          $ref: '#/components/schemas/MerchantName'
      description: Merchant related data. Must be included if available
    MerchantName:
      type: object
      required:
        - city
        - country
        - name
        - region
      properties:
        name:
          type: string
          description: The merchant or trading as name associated with the merchant
          minLength: 0
          maxLength: 23
        city:
          type: string
          description: The city where the merchant is located
          minLength: 0
          maxLength: 13
        region:
          type: string
          description: The state or region where the merchant is located
          minLength: 0
          maxLength: 2
        country:
          type: string
          description: The country where the merchant is located
          minLength: 0
          maxLength: 2
      description: A container object representing the Merchant Name and Location
    Originator:
      type: object
      required:
        - institution
        - merchant
        - terminalId
      properties:
        institution:
          $ref: '#/components/schemas/Institution'
        terminalId:
          type: string
          description: >-
            The ID that uniquely identifies each device or system in an
            originator's institution capable of sending requests. Required for
            transactions initiated from physical card entry or point-of-sale
            devices
          minLength: 8
          maxLength: 8
        merchant:
          $ref: '#/components/schemas/Merchant'
        operatorId:
          type: string
          description: >-
            The ID that uniquely identifies the person operating the terminal
            specified by the terminalId field.
          minLength: 0
          maxLength: 30
        channelId:
          type: string
          description: >-
            The ID that uniquely identifies the originator's channel that this
            transaction was received through.
          minLength: 0
          maxLength: 50
      description: >-
        The Originator object encapsulates data relating to the originator of
        the transaction
    PaymentMethod:
      type: object
      required:
        - type
      discriminator:
        propertyName: type
      properties:
        type:
          type: string
          description: The general method of payment used
          enum:
            - AN_32_TOKEN
            - LOYALTY_CARD
            - CARD
            - ACCOUNT
            - REWARD
            - WALLET
            - QR
        name:
          type: string
          description: The specific method of payment used
        amount:
          $ref: '#/components/schemas/LedgerAmount'
        issuer:
          $ref: '#/components/schemas/Institution'
        pin:
          $ref: '#/components/schemas/Pin'
        proxy:
          type: string
          description: >-
            An alternative identifier for the customer's source of funds. Acts
            as a stand in for the customer identifier. E.g. a customer's MSISDN
            or email address.
          minLength: 0
          maxLength: 40
        proxyType:
          type: string
          description: An enumerated value describing the type of value used as the proxy.
          enum:
            - MSISDN
            - EMAIL
            - UNKNOWN
      description: Base model for all payment types
    PaymentRequest:
      type: object
      required:
        - accountRef
        - amounts
        - client
        - id
        - originator
        - thirdPartyIdentifiers
        - time
      properties:
        transactionLabels:
          type: array
          description: >-
            A list containing labels that can be used to discover this
            transaction or group it with other transactions sharing labels with
            the same label name and value. Transaction labels should never be
            used to make transaction processing decisions.
          items:
            $ref: '#/components/schemas/TransactionLabel'
        selectedCategory:
          $ref: '#/components/schemas/Category'
        id:
          type: string
          description: >-
            The randomly generated UUID identifying this transaction, as defined
            for a variant 4 UUID in [RFC
            4122](https://tools.ietf.org/html/rfc4122)
        time:
          type: string
          format: date-time
          description: >-
            The date and time of the message as recorded by the sender. The
            format shall be as defined for date-time in [RFC 3339 section
            5.6](https://tools.ietf.org/html/rfc3339#section-5.6). It is
            recommended that the optional time-secfrac be included up to
            millisecond precision
        originator:
          $ref: '#/components/schemas/Originator'
        client:
          $ref: '#/components/schemas/Institution'
        settlementEntity:
          $ref: '#/components/schemas/Institution'
        receiver:
          $ref: '#/components/schemas/Institution'
        thirdPartyIdentifiers:
          type: array
          description: >-
            An array of identifiers which each identify the transaction within
            each entity's system.
          items:
            $ref: '#/components/schemas/ThirdPartyIdentifier'
        slipData:
          $ref: '#/components/schemas/SlipData'
        basketRef:
          type: string
          description: >-
            Used to group multiple transactions which would otherwise be
            considered independent.
        tranType:
          type: string
          description: >-
            Data relating to the type of transaction taking place (i.e. cash
            withdrawal, goods and services etc.).
          enum:
            - GOODS_AND_SERVICES
            - CASH_WITHDRAWAL
            - DEBIT_ADJUSTMENT
            - GOODS_AND_SERVICES_WITH_CASH_BACK
            - NON_CASH
            - RETURNS
            - DEPOSIT
            - CREDIT_ADJUSTMENT
            - GENERAL_CREDIT
            - AVAILABLE_FUNDS_INQUIRY
            - BALANCE_INQUIRY
            - GENERAL_INQUIRY
            - CARD_VERIFICATION_INQUIRY
            - CARDHOLDER_ACCOUNTS_TRANSFER
            - GENERAL_TRANSFER
            - PAYMENT_FROM_ACCOUNT
            - GENERAL_PAYMENT
            - PAYMENT_TO_ACCOUNT
            - PAYMENT_FROM_ACCOUNT_TO_ACCOUNT
            - PLACE_HOLD_ON_CARD
            - GENERAL_ADMIN
            - CHANGE_PIN
            - CARD_HOLDER_INQUIRY
            - POINTS_INQUIRY
        srcAccType:
          type: string
          description: >-
            This specifies the type of source account being used in the
            transaction (i.e. cheque, savings).
          enum:
            - DEFAULT
            - SAVINGS
            - CHEQUE
            - CREDIT
            - UNIVERSAL
            - ELECTRONIC_PURSE
            - GIFT_CARD
            - STORED_VALUE
        destAccType:
          type: string
          description: >-
            This specifies the type of destination account being used in the
            transaction (i.e. cheque, savings).
          enum:
            - DEFAULT
            - SAVINGS
            - CHEQUE
            - CREDIT
            - UNIVERSAL
            - ELECTRONIC_PURSE
            - GIFT_CARD
            - STORED_VALUE
        stan:
          type: string
          description: >-
            The System Trace Audit Number can be used to locate transactions
            across different systems.
        rrn:
          type: string
          description: This is a reference set by the original source of the transaction.
        customer:
          $ref: '#/components/schemas/Customer'
        accountRef:
          type: string
          description: >-
            A reference number identifying the bill payments processor, bill
            issuer, and customer
          minLength: 6
          maxLength: 40
        amounts:
          $ref: '#/components/schemas/BillpayAmounts'
        tenders:
          type: array
          description: Contains the tenders for the payment request if available
          items:
            $ref: '#/components/schemas/Tender'
        paymentMethods:
          type: array
          description: Contains the payment method for the payment request if available
          items:
            $ref: '#/components/schemas/PaymentMethod'
        lookupId:
          type: string
          description: The UUID identifying the lookup that this request relates to
      description: Represents a request to perform a payment
    PaymentResponse:
      type: object
      required:
        - account
        - amounts
        - client
        - id
        - originator
        - slipData
        - thirdPartyIdentifiers
        - time
      properties:
        transactionLabels:
          type: array
          description: >-
            A list containing labels that can be used to discover this
            transaction or group it with other transactions sharing labels with
            the same label name and value. Transaction labels should never be
            used to make transaction processing decisions.
          items:
            $ref: '#/components/schemas/TransactionLabel'
        id:
          type: string
          description: >-
            The randomly generated UUID identifying this transaction, as defined
            for a variant 4 UUID in [RFC
            4122](https://tools.ietf.org/html/rfc4122)
        time:
          type: string
          format: date-time
          description: >-
            The date and time of the message as recorded by the sender. The
            format shall be as defined for date-time in [RFC 3339 section
            5.6](https://tools.ietf.org/html/rfc3339#section-5.6). It is
            recommended that the optional time-secfrac be included up to
            millisecond precision
        originator:
          $ref: '#/components/schemas/Originator'
        client:
          $ref: '#/components/schemas/Institution'
        settlementEntity:
          $ref: '#/components/schemas/Institution'
        receiver:
          $ref: '#/components/schemas/Institution'
        thirdPartyIdentifiers:
          type: array
          description: >-
            An array of identifiers which each identify the transaction within
            each entity's system.
          items:
            $ref: '#/components/schemas/ThirdPartyIdentifier'
        slipData:
          $ref: '#/components/schemas/BillSlipData'
        basketRef:
          type: string
          description: >-
            Used to group multiple transactions which would otherwise be
            considered independent.
        tranType:
          type: string
          description: >-
            Data relating to the type of transaction taking place (i.e. cash
            withdrawal, goods and services etc.).
          enum:
            - GOODS_AND_SERVICES
            - CASH_WITHDRAWAL
            - DEBIT_ADJUSTMENT
            - GOODS_AND_SERVICES_WITH_CASH_BACK
            - NON_CASH
            - RETURNS
            - DEPOSIT
            - CREDIT_ADJUSTMENT
            - GENERAL_CREDIT
            - AVAILABLE_FUNDS_INQUIRY
            - BALANCE_INQUIRY
            - GENERAL_INQUIRY
            - CARD_VERIFICATION_INQUIRY
            - CARDHOLDER_ACCOUNTS_TRANSFER
            - GENERAL_TRANSFER
            - PAYMENT_FROM_ACCOUNT
            - GENERAL_PAYMENT
            - PAYMENT_TO_ACCOUNT
            - PAYMENT_FROM_ACCOUNT_TO_ACCOUNT
            - PLACE_HOLD_ON_CARD
            - GENERAL_ADMIN
            - CHANGE_PIN
            - CARD_HOLDER_INQUIRY
            - POINTS_INQUIRY
        srcAccType:
          type: string
          description: >-
            This specifies the type of source account being used in the
            transaction (i.e. cheque, savings).
          enum:
            - DEFAULT
            - SAVINGS
            - CHEQUE
            - CREDIT
            - UNIVERSAL
            - ELECTRONIC_PURSE
            - GIFT_CARD
            - STORED_VALUE
        destAccType:
          type: string
          description: >-
            This specifies the type of destination account being used in the
            transaction (i.e. cheque, savings).
          enum:
            - DEFAULT
            - SAVINGS
            - CHEQUE
            - CREDIT
            - UNIVERSAL
            - ELECTRONIC_PURSE
            - GIFT_CARD
            - STORED_VALUE
        stan:
          type: string
          description: >-
            The System Trace Audit Number can be used to locate transactions
            across different systems.
        rrn:
          type: string
          description: This is a reference set by the original source of the transaction.
        customer:
          $ref: '#/components/schemas/Customer'
        amounts:
          $ref: '#/components/schemas/BillpayAmounts'
        partPaymentAllowed:
          type: boolean
          description: >-
            Indicates whether a payment amount may be less than the amount due.
            Defaults to true.
          default: false
        overPaymentAllowed:
          type: boolean
          description: >-
            Indicates whether a payment amount may be more than the amount due.
            Defaults to true.
          default: false
        account:
          $ref: '#/components/schemas/Account'
        tenders:
          type: array
          description: Contains the tenders for the payment response if available
          items:
            $ref: '#/components/schemas/Tender'
        paymentMethods:
          type: array
          description: Contains the payment method for the payment response if available
          items:
            $ref: '#/components/schemas/PaymentMethod'
      description: Represents a response to a payment request
    Pin:
      type: object
      required:
        - type
      discriminator:
        propertyName: type
      properties:
        type:
          type: string
          description: Whether the PIN is communicated in the clear or encrypted.
          enum:
            - CLEAR_PIN
            - ENCRYPTED_PIN
            - HASHED_PIN
      description: Base model for capturing either a clear PIN or encrypted PIN
    PinClear:
      allOf:
        - $ref: '#/components/schemas/Pin'
        - type: object
          required:
            - pin
          properties:
            pin:
              type: string
              description: A clear PIN
              pattern: .{0,20}
          description: A clear PIN required to authorise a transaction.
    PinEncrypted:
      allOf:
        - $ref: '#/components/schemas/Pin'
        - type: object
          required:
            - pinBlock
          properties:
            pinBlock:
              type: string
              description: Hexadecimal string representing the encrypted PIN to be used.
              pattern: '[a-fA-F0-9]{16}|[a-fA-F0-9]{32}'
            encryptionParameters:
              $ref: '#/components/schemas/EncryptionParameters'
          description: >-
            A PIN required to authorise a transaction. EncryptionParameters
            should be provided where the service will be performing operations
            on the encrypted PIN, such as PIN translation. Only the PIN block
            need be provided where the service is expected to forward it to a
            third party, where the calling client and said third party have
            agreed upon encryption parameters beforehand.
    PinHashed:
      allOf:
        - $ref: '#/components/schemas/Pin'
        - type: object
          required:
            - hash
          properties:
            hash:
              type: string
              description: A hashed PIN expressed as an ASCII string of hexadecimal values.
              pattern: '[0-9,A-F]{1,512}'
            hashedPinParameters:
              $ref: '#/components/schemas/HashedPinParameters'
          description: >-
            A PIN, required to authorise a transaction, which has been hashed
            according to some hashing algorithm.
    Policy:
      type: object
      required:
        - policyNumber
      properties:
        policyNumber:
          type: string
          description: A reference number identifying the policy to the processor.
          minLength: 6
          maxLength: 40
        dueDate:
          type: string
          format: date
          description: >-
            The date by which the next policy payment must be made in the format
            yyyy-MM-dd.
      description: >-
        Represents the status of a customer policy. Replaced by a general Bill
        object in v4.14.0.
    PolicyLookupRequest:
      type: object
      required:
        - client
        - id
        - originator
        - policyNumber
        - thirdPartyIdentifiers
        - time
      properties:
        transactionLabels:
          type: array
          description: >-
            A list containing labels that can be used to discover this
            transaction or group it with other transactions sharing labels with
            the same label name and value. Transaction labels should never be
            used to make transaction processing decisions.
          items:
            $ref: '#/components/schemas/TransactionLabel'
        selectedCategory:
          $ref: '#/components/schemas/Category'
        id:
          type: string
          description: >-
            The randomly generated UUID identifying this transaction, as defined
            for a variant 4 UUID in [RFC
            4122](https://tools.ietf.org/html/rfc4122)
        time:
          type: string
          format: date-time
          description: >-
            The date and time of the message as recorded by the sender. The
            format shall be as defined for date-time in [RFC 3339 section
            5.6](https://tools.ietf.org/html/rfc3339#section-5.6). It is
            recommended that the optional time-secfrac be included up to
            millisecond precision
        originator:
          $ref: '#/components/schemas/Originator'
        client:
          $ref: '#/components/schemas/Institution'
        settlementEntity:
          $ref: '#/components/schemas/Institution'
        receiver:
          $ref: '#/components/schemas/Institution'
        thirdPartyIdentifiers:
          type: array
          description: >-
            An array of identifiers which each identify the transaction within
            each entity's system.
          items:
            $ref: '#/components/schemas/ThirdPartyIdentifier'
        slipData:
          $ref: '#/components/schemas/SlipData'
        basketRef:
          type: string
          description: >-
            Used to group multiple transactions which would otherwise be
            considered independent.
        tranType:
          type: string
          description: >-
            Data relating to the type of transaction taking place (i.e. cash
            withdrawal, goods and services etc.).
          enum:
            - GOODS_AND_SERVICES
            - CASH_WITHDRAWAL
            - DEBIT_ADJUSTMENT
            - GOODS_AND_SERVICES_WITH_CASH_BACK
            - NON_CASH
            - RETURNS
            - DEPOSIT
            - CREDIT_ADJUSTMENT
            - GENERAL_CREDIT
            - AVAILABLE_FUNDS_INQUIRY
            - BALANCE_INQUIRY
            - GENERAL_INQUIRY
            - CARD_VERIFICATION_INQUIRY
            - CARDHOLDER_ACCOUNTS_TRANSFER
            - GENERAL_TRANSFER
            - PAYMENT_FROM_ACCOUNT
            - GENERAL_PAYMENT
            - PAYMENT_TO_ACCOUNT
            - PAYMENT_FROM_ACCOUNT_TO_ACCOUNT
            - PLACE_HOLD_ON_CARD
            - GENERAL_ADMIN
            - CHANGE_PIN
            - CARD_HOLDER_INQUIRY
            - POINTS_INQUIRY
        srcAccType:
          type: string
          description: >-
            This specifies the type of source account being used in the
            transaction (i.e. cheque, savings).
          enum:
            - DEFAULT
            - SAVINGS
            - CHEQUE
            - CREDIT
            - UNIVERSAL
            - ELECTRONIC_PURSE
            - GIFT_CARD
            - STORED_VALUE
        destAccType:
          type: string
          description: >-
            This specifies the type of destination account being used in the
            transaction (i.e. cheque, savings).
          enum:
            - DEFAULT
            - SAVINGS
            - CHEQUE
            - CREDIT
            - UNIVERSAL
            - ELECTRONIC_PURSE
            - GIFT_CARD
            - STORED_VALUE
        stan:
          type: string
          description: >-
            The System Trace Audit Number can be used to locate transactions
            across different systems.
        rrn:
          type: string
          description: This is a reference set by the original source of the transaction.
        customer:
          $ref: '#/components/schemas/Customer'
        policyNumber:
          type: string
          description: A reference number identifying the policy to the service provider.
          minLength: 6
          maxLength: 40
      description: >-
        The data required to request policy info. Replaced by new API call
        getBillInfo in v4.14.0.
    PolicyLookupResponse:
      type: object
      required:
        - amounts
        - client
        - id
        - originator
        - policy
        - slipData
        - thirdPartyIdentifiers
        - time
      properties:
        transactionLabels:
          type: array
          description: >-
            A list containing labels that can be used to discover this
            transaction or group it with other transactions sharing labels with
            the same label name and value. Transaction labels should never be
            used to make transaction processing decisions.
          items:
            $ref: '#/components/schemas/TransactionLabel'
        id:
          type: string
          description: >-
            The randomly generated UUID identifying this transaction, as defined
            for a variant 4 UUID in [RFC
            4122](https://tools.ietf.org/html/rfc4122)
        time:
          type: string
          format: date-time
          description: >-
            The date and time of the message as recorded by the sender. The
            format shall be as defined for date-time in [RFC 3339 section
            5.6](https://tools.ietf.org/html/rfc3339#section-5.6). It is
            recommended that the optional time-secfrac be included up to
            millisecond precision
        originator:
          $ref: '#/components/schemas/Originator'
        client:
          $ref: '#/components/schemas/Institution'
        settlementEntity:
          $ref: '#/components/schemas/Institution'
        receiver:
          $ref: '#/components/schemas/Institution'
        thirdPartyIdentifiers:
          type: array
          description: >-
            An array of identifiers which each identify the transaction within
            each entity's system.
          items:
            $ref: '#/components/schemas/ThirdPartyIdentifier'
        slipData:
          $ref: '#/components/schemas/BillSlipData'
        basketRef:
          type: string
          description: >-
            Used to group multiple transactions which would otherwise be
            considered independent.
        tranType:
          type: string
          description: >-
            Data relating to the type of transaction taking place (i.e. cash
            withdrawal, goods and services etc.).
          enum:
            - GOODS_AND_SERVICES
            - CASH_WITHDRAWAL
            - DEBIT_ADJUSTMENT
            - GOODS_AND_SERVICES_WITH_CASH_BACK
            - NON_CASH
            - RETURNS
            - DEPOSIT
            - CREDIT_ADJUSTMENT
            - GENERAL_CREDIT
            - AVAILABLE_FUNDS_INQUIRY
            - BALANCE_INQUIRY
            - GENERAL_INQUIRY
            - CARD_VERIFICATION_INQUIRY
            - CARDHOLDER_ACCOUNTS_TRANSFER
            - GENERAL_TRANSFER
            - PAYMENT_FROM_ACCOUNT
            - GENERAL_PAYMENT
            - PAYMENT_TO_ACCOUNT
            - PAYMENT_FROM_ACCOUNT_TO_ACCOUNT
            - PLACE_HOLD_ON_CARD
            - GENERAL_ADMIN
            - CHANGE_PIN
            - CARD_HOLDER_INQUIRY
            - POINTS_INQUIRY
        srcAccType:
          type: string
          description: >-
            This specifies the type of source account being used in the
            transaction (i.e. cheque, savings).
          enum:
            - DEFAULT
            - SAVINGS
            - CHEQUE
            - CREDIT
            - UNIVERSAL
            - ELECTRONIC_PURSE
            - GIFT_CARD
            - STORED_VALUE
        destAccType:
          type: string
          description: >-
            This specifies the type of destination account being used in the
            transaction (i.e. cheque, savings).
          enum:
            - DEFAULT
            - SAVINGS
            - CHEQUE
            - CREDIT
            - UNIVERSAL
            - ELECTRONIC_PURSE
            - GIFT_CARD
            - STORED_VALUE
        stan:
          type: string
          description: >-
            The System Trace Audit Number can be used to locate transactions
            across different systems.
        rrn:
          type: string
          description: This is a reference set by the original source of the transaction.
        customer:
          $ref: '#/components/schemas/Customer'
        amounts:
          $ref: '#/components/schemas/BillpayAmounts'
        partPaymentAllowed:
          type: boolean
          description: >-
            Indicates whether a payment amount may be less than the amount due.
            Defaults to true.
          default: false
        overPaymentAllowed:
          type: boolean
          description: >-
            Indicates whether a payment amount may be more than the amount due.
            Defaults to true.
          default: false
        policy:
          $ref: '#/components/schemas/Policy'
      description: >-
        The data resulting from a policy lookup request. Replaced by a general
        BillLookupResponse in v4.14.0.
    PolicyPaymentRequest:
      type: object
      required:
        - amounts
        - client
        - id
        - originator
        - policyNumber
        - thirdPartyIdentifiers
        - time
      properties:
        transactionLabels:
          type: array
          description: >-
            A list containing labels that can be used to discover this
            transaction or group it with other transactions sharing labels with
            the same label name and value. Transaction labels should never be
            used to make transaction processing decisions.
          items:
            $ref: '#/components/schemas/TransactionLabel'
        selectedCategory:
          $ref: '#/components/schemas/Category'
        id:
          type: string
          description: >-
            The randomly generated UUID identifying this transaction, as defined
            for a variant 4 UUID in [RFC
            4122](https://tools.ietf.org/html/rfc4122)
        time:
          type: string
          format: date-time
          description: >-
            The date and time of the message as recorded by the sender. The
            format shall be as defined for date-time in [RFC 3339 section
            5.6](https://tools.ietf.org/html/rfc3339#section-5.6). It is
            recommended that the optional time-secfrac be included up to
            millisecond precision
        originator:
          $ref: '#/components/schemas/Originator'
        client:
          $ref: '#/components/schemas/Institution'
        settlementEntity:
          $ref: '#/components/schemas/Institution'
        receiver:
          $ref: '#/components/schemas/Institution'
        thirdPartyIdentifiers:
          type: array
          description: >-
            An array of identifiers which each identify the transaction within
            each entity's system.
          items:
            $ref: '#/components/schemas/ThirdPartyIdentifier'
        slipData:
          $ref: '#/components/schemas/SlipData'
        basketRef:
          type: string
          description: >-
            Used to group multiple transactions which would otherwise be
            considered independent.
        tranType:
          type: string
          description: >-
            Data relating to the type of transaction taking place (i.e. cash
            withdrawal, goods and services etc.).
          enum:
            - GOODS_AND_SERVICES
            - CASH_WITHDRAWAL
            - DEBIT_ADJUSTMENT
            - GOODS_AND_SERVICES_WITH_CASH_BACK
            - NON_CASH
            - RETURNS
            - DEPOSIT
            - CREDIT_ADJUSTMENT
            - GENERAL_CREDIT
            - AVAILABLE_FUNDS_INQUIRY
            - BALANCE_INQUIRY
            - GENERAL_INQUIRY
            - CARD_VERIFICATION_INQUIRY
            - CARDHOLDER_ACCOUNTS_TRANSFER
            - GENERAL_TRANSFER
            - PAYMENT_FROM_ACCOUNT
            - GENERAL_PAYMENT
            - PAYMENT_TO_ACCOUNT
            - PAYMENT_FROM_ACCOUNT_TO_ACCOUNT
            - PLACE_HOLD_ON_CARD
            - GENERAL_ADMIN
            - CHANGE_PIN
            - CARD_HOLDER_INQUIRY
            - POINTS_INQUIRY
        srcAccType:
          type: string
          description: >-
            This specifies the type of source account being used in the
            transaction (i.e. cheque, savings).
          enum:
            - DEFAULT
            - SAVINGS
            - CHEQUE
            - CREDIT
            - UNIVERSAL
            - ELECTRONIC_PURSE
            - GIFT_CARD
            - STORED_VALUE
        destAccType:
          type: string
          description: >-
            This specifies the type of destination account being used in the
            transaction (i.e. cheque, savings).
          enum:
            - DEFAULT
            - SAVINGS
            - CHEQUE
            - CREDIT
            - UNIVERSAL
            - ELECTRONIC_PURSE
            - GIFT_CARD
            - STORED_VALUE
        stan:
          type: string
          description: >-
            The System Trace Audit Number can be used to locate transactions
            across different systems.
        rrn:
          type: string
          description: This is a reference set by the original source of the transaction.
        customer:
          $ref: '#/components/schemas/Customer'
        policyNumber:
          type: string
          description: A reference number identifying the policy to the service provider.
          minLength: 6
          maxLength: 40
        amounts:
          $ref: '#/components/schemas/BillpayAmounts'
        tenders:
          type: array
          description: Contains the tenders for the payment request if available
          items:
            $ref: '#/components/schemas/Tender'
        paymentMethods:
          type: array
          description: Contains the payment method for the payment request if available
          items:
            $ref: '#/components/schemas/PaymentMethod'
        lookupId:
          type: string
          description: The UUID identifying the lookup that this request relates to
      description: Represents a request to perform a payment of a traffic fine.
    PolicyPaymentResponse:
      type: object
      required:
        - amounts
        - client
        - id
        - originator
        - policy
        - slipData
        - thirdPartyIdentifiers
        - time
      properties:
        transactionLabels:
          type: array
          description: >-
            A list containing labels that can be used to discover this
            transaction or group it with other transactions sharing labels with
            the same label name and value. Transaction labels should never be
            used to make transaction processing decisions.
          items:
            $ref: '#/components/schemas/TransactionLabel'
        id:
          type: string
          description: >-
            The randomly generated UUID identifying this transaction, as defined
            for a variant 4 UUID in [RFC
            4122](https://tools.ietf.org/html/rfc4122)
        time:
          type: string
          format: date-time
          description: >-
            The date and time of the message as recorded by the sender. The
            format shall be as defined for date-time in [RFC 3339 section
            5.6](https://tools.ietf.org/html/rfc3339#section-5.6). It is
            recommended that the optional time-secfrac be included up to
            millisecond precision
        originator:
          $ref: '#/components/schemas/Originator'
        client:
          $ref: '#/components/schemas/Institution'
        settlementEntity:
          $ref: '#/components/schemas/Institution'
        receiver:
          $ref: '#/components/schemas/Institution'
        thirdPartyIdentifiers:
          type: array
          description: >-
            An array of identifiers which each identify the transaction within
            each entity's system.
          items:
            $ref: '#/components/schemas/ThirdPartyIdentifier'
        slipData:
          $ref: '#/components/schemas/BillSlipData'
        basketRef:
          type: string
          description: >-
            Used to group multiple transactions which would otherwise be
            considered independent.
        tranType:
          type: string
          description: >-
            Data relating to the type of transaction taking place (i.e. cash
            withdrawal, goods and services etc.).
          enum:
            - GOODS_AND_SERVICES
            - CASH_WITHDRAWAL
            - DEBIT_ADJUSTMENT
            - GOODS_AND_SERVICES_WITH_CASH_BACK
            - NON_CASH
            - RETURNS
            - DEPOSIT
            - CREDIT_ADJUSTMENT
            - GENERAL_CREDIT
            - AVAILABLE_FUNDS_INQUIRY
            - BALANCE_INQUIRY
            - GENERAL_INQUIRY
            - CARD_VERIFICATION_INQUIRY
            - CARDHOLDER_ACCOUNTS_TRANSFER
            - GENERAL_TRANSFER
            - PAYMENT_FROM_ACCOUNT
            - GENERAL_PAYMENT
            - PAYMENT_TO_ACCOUNT
            - PAYMENT_FROM_ACCOUNT_TO_ACCOUNT
            - PLACE_HOLD_ON_CARD
            - GENERAL_ADMIN
            - CHANGE_PIN
            - CARD_HOLDER_INQUIRY
            - POINTS_INQUIRY
        srcAccType:
          type: string
          description: >-
            This specifies the type of source account being used in the
            transaction (i.e. cheque, savings).
          enum:
            - DEFAULT
            - SAVINGS
            - CHEQUE
            - CREDIT
            - UNIVERSAL
            - ELECTRONIC_PURSE
            - GIFT_CARD
            - STORED_VALUE
        destAccType:
          type: string
          description: >-
            This specifies the type of destination account being used in the
            transaction (i.e. cheque, savings).
          enum:
            - DEFAULT
            - SAVINGS
            - CHEQUE
            - CREDIT
            - UNIVERSAL
            - ELECTRONIC_PURSE
            - GIFT_CARD
            - STORED_VALUE
        stan:
          type: string
          description: >-
            The System Trace Audit Number can be used to locate transactions
            across different systems.
        rrn:
          type: string
          description: This is a reference set by the original source of the transaction.
        customer:
          $ref: '#/components/schemas/Customer'
        amounts:
          $ref: '#/components/schemas/BillpayAmounts'
        partPaymentAllowed:
          type: boolean
          description: >-
            Indicates whether a payment amount may be less than the amount due.
            Defaults to true.
          default: false
        overPaymentAllowed:
          type: boolean
          description: >-
            Indicates whether a payment amount may be more than the amount due.
            Defaults to true.
          default: false
        policy:
          $ref: '#/components/schemas/Policy'
      description: Represents a response to a policy payment request
    PosEntryMode:
      type: object
      required:
        - panEntryMode
        - pinEntryCapability
      properties:
        panEntryMode:
          type: string
          description: Describes the method by which the PAN was captured.
          enum:
            - UNKNOWN
            - MANUAL
            - MAGSTRIPE_NO_CVV
            - BARCODE
            - OCR
            - ICC_CVV
            - CONTACTLESS_ICC
            - MAGSTRIPE_CVV
            - CONTACTLESS_MAGSTRIPE
            - ICC_NO_CVV
            - ORIG_MODE
            - FALLBACK
        pinEntryCapability:
          type: string
          description: Describes whether the PIN can be entered.
          enum:
            - UNKNOWN
            - CAN_ACCEPT
            - CANNOT_ACCEPT
      description: Describes how the PAN and PIN were captured by the POS.
    PosInfo:
      type: object
      properties:
        entryMode:
          $ref: '#/components/schemas/PosEntryMode'
        posConditionCode:
          type: string
          description: Describes the circumstances of the transaciton at the POS.
          enum:
            - NORMAL_PRESENTMENT
            - CUSTOMER_NOT_PRESENT
            - CUSTOMER_PRESENT_AND_CARD_NOT_PRESENT
            - CUSTOMER_IDENTITY_VERIFIED
            - PUBLIC_UTILITY_TERMINAL
            - CUSTOMER_TERMINAL
            - MANUAL_REVERSAL
            - UNATTENDED_TERMINAL_AND_CARD_CAN_BE_RETAINED
            - UNATTENDED_TERMINAL_AND_CARD_CANNOT_BE_RETAINED
      description: POS related data.
    QrPayment:
      allOf:
        - $ref: '#/components/schemas/PaymentMethod'
        - type: object
          required:
            - tranId
          properties:
            tranId:
              type: string
              description: >-
                The unique transaction identifier related to this transaction.
                In QRs styled on the EMVCo specification, the tranId is embedded
                in sub-Tag 00 of the Electrum MAIT.
            partnerPaymentToken:
              type: string
              description: A payment token received from the Partner.
          description: >-
            Model for QR-based payments. This payment method should be used when
            a QR code is presented for payment.
    RefundRequest:
      type: object
      required:
        - client
        - id
        - issuerReference
        - originator
        - refundReason
        - thirdPartyIdentifiers
        - time
      properties:
        transactionLabels:
          type: array
          description: >-
            A list containing labels that can be used to discover this
            transaction or group it with other transactions sharing labels with
            the same label name and value. Transaction labels should never be
            used to make transaction processing decisions.
          items:
            $ref: '#/components/schemas/TransactionLabel'
        selectedCategory:
          $ref: '#/components/schemas/Category'
        id:
          type: string
          description: >-
            The randomly generated UUID identifying this transaction, as defined
            for a variant 4 UUID in [RFC
            4122](https://tools.ietf.org/html/rfc4122)
        time:
          type: string
          format: date-time
          description: >-
            The date and time of the message as recorded by the sender. The
            format shall be as defined for date-time in [RFC 3339 section
            5.6](https://tools.ietf.org/html/rfc3339#section-5.6). It is
            recommended that the optional time-secfrac be included up to
            millisecond precision
        originator:
          $ref: '#/components/schemas/Originator'
        client:
          $ref: '#/components/schemas/Institution'
        settlementEntity:
          $ref: '#/components/schemas/Institution'
        receiver:
          $ref: '#/components/schemas/Institution'
        thirdPartyIdentifiers:
          type: array
          description: >-
            An array of identifiers which each identify the transaction within
            each entity's system.
          items:
            $ref: '#/components/schemas/ThirdPartyIdentifier'
        slipData:
          $ref: '#/components/schemas/SlipData'
        basketRef:
          type: string
          description: >-
            Used to group multiple transactions which would otherwise be
            considered independent.
        tranType:
          type: string
          description: >-
            Data relating to the type of transaction taking place (i.e. cash
            withdrawal, goods and services etc.).
          enum:
            - GOODS_AND_SERVICES
            - CASH_WITHDRAWAL
            - DEBIT_ADJUSTMENT
            - GOODS_AND_SERVICES_WITH_CASH_BACK
            - NON_CASH
            - RETURNS
            - DEPOSIT
            - CREDIT_ADJUSTMENT
            - GENERAL_CREDIT
            - AVAILABLE_FUNDS_INQUIRY
            - BALANCE_INQUIRY
            - GENERAL_INQUIRY
            - CARD_VERIFICATION_INQUIRY
            - CARDHOLDER_ACCOUNTS_TRANSFER
            - GENERAL_TRANSFER
            - PAYMENT_FROM_ACCOUNT
            - GENERAL_PAYMENT
            - PAYMENT_TO_ACCOUNT
            - PAYMENT_FROM_ACCOUNT_TO_ACCOUNT
            - PLACE_HOLD_ON_CARD
            - GENERAL_ADMIN
            - CHANGE_PIN
            - CARD_HOLDER_INQUIRY
            - POINTS_INQUIRY
        srcAccType:
          type: string
          description: >-
            This specifies the type of source account being used in the
            transaction (i.e. cheque, savings).
          enum:
            - DEFAULT
            - SAVINGS
            - CHEQUE
            - CREDIT
            - UNIVERSAL
            - ELECTRONIC_PURSE
            - GIFT_CARD
            - STORED_VALUE
        destAccType:
          type: string
          description: >-
            This specifies the type of destination account being used in the
            transaction (i.e. cheque, savings).
          enum:
            - DEFAULT
            - SAVINGS
            - CHEQUE
            - CREDIT
            - UNIVERSAL
            - ELECTRONIC_PURSE
            - GIFT_CARD
            - STORED_VALUE
        stan:
          type: string
          description: >-
            The System Trace Audit Number can be used to locate transactions
            across different systems.
        rrn:
          type: string
          description: This is a reference set by the original source of the transaction.
        customer:
          $ref: '#/components/schemas/Customer'
        issuerReference:
          type: string
          description: >-
            An identifier that is printed on the customer slip and uniquely
            identifies the payment on the bill issuer's system. This value is
            used by the customer to request a refund when the service supports
            this function. It is thus important that this number is unique.
          pattern: '[A-Z0-9]{1,20}'
        refundReason:
          type: string
          description: The reason for the refund as given by the customer
          minLength: 0
          maxLength: 20
      description: Represents a request to refund a payment
    RefundResponse:
      type: object
      required:
        - amounts
        - client
        - id
        - originator
        - slipData
        - thirdPartyIdentifiers
        - time
      properties:
        transactionLabels:
          type: array
          description: >-
            A list containing labels that can be used to discover this
            transaction or group it with other transactions sharing labels with
            the same label name and value. Transaction labels should never be
            used to make transaction processing decisions.
          items:
            $ref: '#/components/schemas/TransactionLabel'
        id:
          type: string
          description: >-
            The randomly generated UUID identifying this transaction, as defined
            for a variant 4 UUID in [RFC
            4122](https://tools.ietf.org/html/rfc4122)
        time:
          type: string
          format: date-time
          description: >-
            The date and time of the message as recorded by the sender. The
            format shall be as defined for date-time in [RFC 3339 section
            5.6](https://tools.ietf.org/html/rfc3339#section-5.6). It is
            recommended that the optional time-secfrac be included up to
            millisecond precision
        originator:
          $ref: '#/components/schemas/Originator'
        client:
          $ref: '#/components/schemas/Institution'
        settlementEntity:
          $ref: '#/components/schemas/Institution'
        receiver:
          $ref: '#/components/schemas/Institution'
        thirdPartyIdentifiers:
          type: array
          description: >-
            An array of identifiers which each identify the transaction within
            each entity's system.
          items:
            $ref: '#/components/schemas/ThirdPartyIdentifier'
        slipData:
          $ref: '#/components/schemas/BillSlipData'
        basketRef:
          type: string
          description: >-
            Used to group multiple transactions which would otherwise be
            considered independent.
        tranType:
          type: string
          description: >-
            Data relating to the type of transaction taking place (i.e. cash
            withdrawal, goods and services etc.).
          enum:
            - GOODS_AND_SERVICES
            - CASH_WITHDRAWAL
            - DEBIT_ADJUSTMENT
            - GOODS_AND_SERVICES_WITH_CASH_BACK
            - NON_CASH
            - RETURNS
            - DEPOSIT
            - CREDIT_ADJUSTMENT
            - GENERAL_CREDIT
            - AVAILABLE_FUNDS_INQUIRY
            - BALANCE_INQUIRY
            - GENERAL_INQUIRY
            - CARD_VERIFICATION_INQUIRY
            - CARDHOLDER_ACCOUNTS_TRANSFER
            - GENERAL_TRANSFER
            - PAYMENT_FROM_ACCOUNT
            - GENERAL_PAYMENT
            - PAYMENT_TO_ACCOUNT
            - PAYMENT_FROM_ACCOUNT_TO_ACCOUNT
            - PLACE_HOLD_ON_CARD
            - GENERAL_ADMIN
            - CHANGE_PIN
            - CARD_HOLDER_INQUIRY
            - POINTS_INQUIRY
        srcAccType:
          type: string
          description: >-
            This specifies the type of source account being used in the
            transaction (i.e. cheque, savings).
          enum:
            - DEFAULT
            - SAVINGS
            - CHEQUE
            - CREDIT
            - UNIVERSAL
            - ELECTRONIC_PURSE
            - GIFT_CARD
            - STORED_VALUE
        destAccType:
          type: string
          description: >-
            This specifies the type of destination account being used in the
            transaction (i.e. cheque, savings).
          enum:
            - DEFAULT
            - SAVINGS
            - CHEQUE
            - CREDIT
            - UNIVERSAL
            - ELECTRONIC_PURSE
            - GIFT_CARD
            - STORED_VALUE
        stan:
          type: string
          description: >-
            The System Trace Audit Number can be used to locate transactions
            across different systems.
        rrn:
          type: string
          description: This is a reference set by the original source of the transaction.
        customer:
          $ref: '#/components/schemas/Customer'
        amounts:
          $ref: '#/components/schemas/BillpayAmounts'
        partPaymentAllowed:
          type: boolean
          description: >-
            Indicates whether a payment amount may be less than the amount due.
            Defaults to true.
          default: false
        overPaymentAllowed:
          type: boolean
          description: >-
            Indicates whether a payment amount may be more than the amount due.
            Defaults to true.
          default: false
        account:
          $ref: '#/components/schemas/Account'
        trafficFine:
          $ref: '#/components/schemas/TrafficFine'
        policy:
          $ref: '#/components/schemas/Policy'
      description: Represents a response to a refund request
    RewardPayment:
      allOf:
        - $ref: '#/components/schemas/PaymentMethod'
        - type: object
          required:
            - rewardCode
          properties:
            rewardCode:
              type: string
              description: A code used to recognise the reward programme
              minLength: 0
              maxLength: 40
          description: >-
            Model for reward-based payments. This payment method should be used
            when the payment is offset using a reward programme
    SlipData:
      type: object
      properties:
        messageLines:
          type: array
          description: >-
            An array of text lines and optional formatting to be printed on the
            customer slip.
          items:
            $ref: '#/components/schemas/SlipLine'
        slipWidth:
          type: integer
          format: int32
          description: The width of the slip in normal (unformatted) characters.
        issuerReference:
          type: string
          description: >-
            An identifier that is printed on the customer slip and uniquely
            identifies the payment on the service provider's system. This value
            is used by the customer to request a refund when the service
            supports this function, and it is thus important that this number is
            unique.
          pattern: '[A-Z0-9]{1,40}'
      description: Data that may be printed on the customer slip for information purposes
    SlipLine:
      type: object
      required:
        - text
      properties:
        barcode:
          $ref: '#/components/schemas/Barcode'
        text:
          type: string
          description: Text contained on the line
        fontWidthScaleFactor:
          type: number
          format: double
          description: >-
            Scale factor for font width. Assume 1.0 (i.e. normal size) if not
            present.
        fontHeightScaleFactor:
          type: number
          format: double
          description: >-
            Scale factor for font height. Assume 1.0 (i.e. normal size) if not
            present.
        line:
          type: boolean
          description: Denotes a solid line on the slip. Assume false if not present.
          default: false
        cut:
          type: boolean
          description: >-
            Indicates the slip should be cut at this line. Assume false if not
            present.
          default: false
      description: A line of text to be printed on the till slip
    Tender:
      type: object
      required:
        - amount
        - tenderType
      properties:
        accountType:
          type: string
          description: The type of account
          enum:
            - DEFAULT
            - SAVINGS
            - CHEQUE
            - CREDIT
            - UNIVERSAL
            - ELECTRONIC_PURSE
            - STORED_VALUE
        amount:
          $ref: '#/components/schemas/LedgerAmount'
        cardNumber:
          type: string
          description: >-
            A PCI compliant masked card number, with at least the first 6 digits
            in the clear. Only applicable to card based transactions
          pattern: '[0-9]{6}[0-9*]{0,13}'
        reference:
          type: string
          description: A free text reference
          minLength: 0
          maxLength: 40
        tenderType:
          type: string
          description: The type of tender used
          enum:
            - CASH
            - CHEQUE
            - CREDIT_CARD
            - DEBIT_CARD
            - WALLET
            - ROUNDING
            - GIFT_CARD
            - LOYALTY_CARD
            - OTHER
            - REWARD
      description: Details of the Tender used by a customer towards a payment
    TenderAdvice:
      type: object
      required:
        - id
        - requestId
        - tenders
        - thirdPartyIdentifiers
        - time
      properties:
        id:
          type: string
          description: >-
            The randomly generated UUID identifying this advice, as defined for
            a variant 4 UUID in [RFC 4122](https://tools.ietf.org/html/rfc4122)
        requestId:
          type: string
          description: The UUID identifying the request that this advice relates to
        time:
          type: string
          format: date-time
          description: >-
            The date and time of the message as recorded by the sender. The
            format shall be as defined for date-time in [RFC 3339 section
            5.6](https://tools.ietf.org/html/rfc3339#section-5.6). It is
            recommended that the optional time-secfrac be included up to
            millisecond precision
        thirdPartyIdentifiers:
          type: array
          description: >-
            The unaltered thirdPartyIdentifiers array as supplied in the related
            BasicResponse message. Required if thirdPartyIdentifiers field was
            present in the BasicResponse. If no thirdPartyIdentifiers was
            received in the BasicResponse or no BasicResponse was received then
            this should be set to the thirdPartyIdentifiers sent in the original
            request.
          items:
            $ref: '#/components/schemas/ThirdPartyIdentifier'
        stan:
          type: string
          description: >-
            The System Trace Audit Number can be used to locate transactions
            across different systems.
        rrn:
          type: string
          description: This is a reference set by the original source of the transaction.
        amounts:
          $ref: '#/components/schemas/Amounts'
        tenders:
          type: array
          description: An array of tenders used to pay for the transaction
          items:
            $ref: '#/components/schemas/Tender'
      description: An advice that notifies of the successful completion of a transaction.
    ThirdPartyIdentifier:
      type: object
      required:
        - institutionId
        - transactionIdentifier
      properties:
        institutionId:
          type: string
          description: The entity's institution ID.
        transactionIdentifier:
          type: string
          description: >-
            The identifier assigned to this transaction by the institution
            represented in institutionId. This value should be unique within the
            institution's system.
      description: >-
        An identifier assigned by an entity which process the message.
        Identifiers are keyed by institution ID thereby enabling any institution
        to recall a transaction within the entity's own system using the
        entity's own identifier. Entities must not alter the identifier set by
        another entity. Once an identifier has been set by an entity, all other
        entities must send that identifier in subsequent messages.
    ThreeDSecureData:
      type: object
      required:
        - version
      discriminator:
        propertyName: version
      properties:
        authenticationValue:
          type: string
          description: >-
            A 20-byte value that has been Base64 encoded. This value is provided
            by the Access Control Server as a proof of authentication.
        cardHolderAuthVerificationResult:
          type: string
          description: Authentication outcome set by the Access Control Server or Issuer.
          enum:
            - CAVV_VALIDATION_PASSED
            - CAVV_VALIDATION_FAILED_ISSUER_SYSTEM_ERROR
            - CAVV_VALIDATION_FAILED_ISSUER_ATTEMPT_INCOMPLETE
            - CAVV_NOT_VALIDATED
            - CAVV_NOT_VALIDATED_INVALID_DATA
            - CAVV_VALIDATION_FAILED
        version:
          type: string
          description: >-
            The version of the 3-D Secure protocol that was used for cardholder
            authentication. Note that the version determines the format of the
            transaction identifier
          enum:
            - V1
            - V2
        eci:
          type: string
          description: >-
            Electronic Commerce Indicator. This is Payment System-specific value
            provided by the Access Control Server to indicate the results of the
            attempt to authenticate the Cardholder.
          enum:
            - AUTHENTICATION_NOT_ATTEMPTED_OR_UNSUCCESSFUL_00
            - AUTHENTICATION_NOT_ENABLED_01
            - AUTHENTICATION_SUCCESSFUL_02
            - AUTHENTICATION_SUCCESSFUL_05
            - AUTHENTICATION_NOT_ENABLED_06
            - AUTHENTICATION_NOT_ATTEMPTED_OR_UNSUCCESSFUL_07
        transactionStatus:
          type: string
          description: >-
            Indicates whether a transaction qualifies as an authenticated
            transaction or account verification. The values and their meanings
            are as follows: 

            Y = Authentication Verification Successful.
             N = Not Authenticated /Account Not Verified; Transaction denied.
             U = Authentication/ Account Verification Could Not Be Performed; Technical or other problem.
             A = Attempts Processing Performed; Not Authenticated/ Verified, but a proof of attempted authentication/verification is provided.
             C = Challenge Required; Additional authentication is required using the CReq/CRes 
             D = Challenge Required; Decoupled Authentication confirmed. 
             R = Authentication/ Account Verification Rejected; Issuer is rejecting authentication/verification and request that authorisation not be attempted.
             I = Informational Only; 3DS Requestor challenge preference acknowledged.
             S = Challenge using SPC 
             
          enum:
            - 'Y'
            - 'N'
            - U
            - A
            - C
            - D
            - R
            - I
            - S
      description: >-
        Data used to facilitate and communicate the result of 3-D Secure
        cardholder authentication.
    ThreeDSecureDataV1:
      allOf:
        - $ref: '#/components/schemas/ThreeDSecureData'
        - type: object
          properties:
            transactionId:
              type: string
              description: >-
                A 20-byte base 64 encoded string assigned by the 3DS Server to
                identify a single transaction. This ID can be used to prevent
                transaction replay.
          description: >-
            3-D Secure data in which the transaction identifier takes the format
            of a byte string.
    ThreeDSecureDataV2:
      allOf:
        - $ref: '#/components/schemas/ThreeDSecureData'
        - type: object
          properties:
            transactionId:
              type: string
              format: uuid
              description: >-
                A UUID assigned by the 3DS Server to identify a single
                transaction. This ID can be used to prevent transaction replay.
                This is based on version 2 the EMVCo 3-D Secure specification.
          description: >-
            3-D Secure data in which the transaction identifier takes the format
            of a UUID.
    TrafficFine:
      type: object
      required:
        - noticeNumber
      properties:
        noticeNumber:
          type: string
          description: >-
            A reference number identifying the traffic fine to the processor's
            system.
          minLength: 6
          maxLength: 40
        dueDate:
          type: string
          format: date
          description: >-
            The date by which the traffic fine should be paid in the format
            yyyy-MM-dd.
      description: Represents the status of a traffic fine.
    TrafficFineLookupRequest:
      type: object
      required:
        - client
        - id
        - noticeNumber
        - originator
        - thirdPartyIdentifiers
        - time
      properties:
        transactionLabels:
          type: array
          description: >-
            A list containing labels that can be used to discover this
            transaction or group it with other transactions sharing labels with
            the same label name and value. Transaction labels should never be
            used to make transaction processing decisions.
          items:
            $ref: '#/components/schemas/TransactionLabel'
        selectedCategory:
          $ref: '#/components/schemas/Category'
        id:
          type: string
          description: >-
            The randomly generated UUID identifying this transaction, as defined
            for a variant 4 UUID in [RFC
            4122](https://tools.ietf.org/html/rfc4122)
        time:
          type: string
          format: date-time
          description: >-
            The date and time of the message as recorded by the sender. The
            format shall be as defined for date-time in [RFC 3339 section
            5.6](https://tools.ietf.org/html/rfc3339#section-5.6). It is
            recommended that the optional time-secfrac be included up to
            millisecond precision
        originator:
          $ref: '#/components/schemas/Originator'
        client:
          $ref: '#/components/schemas/Institution'
        settlementEntity:
          $ref: '#/components/schemas/Institution'
        receiver:
          $ref: '#/components/schemas/Institution'
        thirdPartyIdentifiers:
          type: array
          description: >-
            An array of identifiers which each identify the transaction within
            each entity's system.
          items:
            $ref: '#/components/schemas/ThirdPartyIdentifier'
        slipData:
          $ref: '#/components/schemas/SlipData'
        basketRef:
          type: string
          description: >-
            Used to group multiple transactions which would otherwise be
            considered independent.
        tranType:
          type: string
          description: >-
            Data relating to the type of transaction taking place (i.e. cash
            withdrawal, goods and services etc.).
          enum:
            - GOODS_AND_SERVICES
            - CASH_WITHDRAWAL
            - DEBIT_ADJUSTMENT
            - GOODS_AND_SERVICES_WITH_CASH_BACK
            - NON_CASH
            - RETURNS
            - DEPOSIT
            - CREDIT_ADJUSTMENT
            - GENERAL_CREDIT
            - AVAILABLE_FUNDS_INQUIRY
            - BALANCE_INQUIRY
            - GENERAL_INQUIRY
            - CARD_VERIFICATION_INQUIRY
            - CARDHOLDER_ACCOUNTS_TRANSFER
            - GENERAL_TRANSFER
            - PAYMENT_FROM_ACCOUNT
            - GENERAL_PAYMENT
            - PAYMENT_TO_ACCOUNT
            - PAYMENT_FROM_ACCOUNT_TO_ACCOUNT
            - PLACE_HOLD_ON_CARD
            - GENERAL_ADMIN
            - CHANGE_PIN
            - CARD_HOLDER_INQUIRY
            - POINTS_INQUIRY
        srcAccType:
          type: string
          description: >-
            This specifies the type of source account being used in the
            transaction (i.e. cheque, savings).
          enum:
            - DEFAULT
            - SAVINGS
            - CHEQUE
            - CREDIT
            - UNIVERSAL
            - ELECTRONIC_PURSE
            - GIFT_CARD
            - STORED_VALUE
        destAccType:
          type: string
          description: >-
            This specifies the type of destination account being used in the
            transaction (i.e. cheque, savings).
          enum:
            - DEFAULT
            - SAVINGS
            - CHEQUE
            - CREDIT
            - UNIVERSAL
            - ELECTRONIC_PURSE
            - GIFT_CARD
            - STORED_VALUE
        stan:
          type: string
          description: >-
            The System Trace Audit Number can be used to locate transactions
            across different systems.
        rrn:
          type: string
          description: This is a reference set by the original source of the transaction.
        customer:
          $ref: '#/components/schemas/Customer'
        noticeNumber:
          type: string
          description: >-
            A reference number identifying the traffic fine to the service
            provider.
          minLength: 6
          maxLength: 40
      description: >-
        The data required to request traffic fine info. Replaced by new API call
        getBillInfo in v4.14.0.
    TrafficFineLookupResponse:
      type: object
      required:
        - amounts
        - client
        - id
        - originator
        - slipData
        - thirdPartyIdentifiers
        - time
        - trafficFine
      properties:
        transactionLabels:
          type: array
          description: >-
            A list containing labels that can be used to discover this
            transaction or group it with other transactions sharing labels with
            the same label name and value. Transaction labels should never be
            used to make transaction processing decisions.
          items:
            $ref: '#/components/schemas/TransactionLabel'
        id:
          type: string
          description: >-
            The randomly generated UUID identifying this transaction, as defined
            for a variant 4 UUID in [RFC
            4122](https://tools.ietf.org/html/rfc4122)
        time:
          type: string
          format: date-time
          description: >-
            The date and time of the message as recorded by the sender. The
            format shall be as defined for date-time in [RFC 3339 section
            5.6](https://tools.ietf.org/html/rfc3339#section-5.6). It is
            recommended that the optional time-secfrac be included up to
            millisecond precision
        originator:
          $ref: '#/components/schemas/Originator'
        client:
          $ref: '#/components/schemas/Institution'
        settlementEntity:
          $ref: '#/components/schemas/Institution'
        receiver:
          $ref: '#/components/schemas/Institution'
        thirdPartyIdentifiers:
          type: array
          description: >-
            An array of identifiers which each identify the transaction within
            each entity's system.
          items:
            $ref: '#/components/schemas/ThirdPartyIdentifier'
        slipData:
          $ref: '#/components/schemas/BillSlipData'
        basketRef:
          type: string
          description: >-
            Used to group multiple transactions which would otherwise be
            considered independent.
        tranType:
          type: string
          description: >-
            Data relating to the type of transaction taking place (i.e. cash
            withdrawal, goods and services etc.).
          enum:
            - GOODS_AND_SERVICES
            - CASH_WITHDRAWAL
            - DEBIT_ADJUSTMENT
            - GOODS_AND_SERVICES_WITH_CASH_BACK
            - NON_CASH
            - RETURNS
            - DEPOSIT
            - CREDIT_ADJUSTMENT
            - GENERAL_CREDIT
            - AVAILABLE_FUNDS_INQUIRY
            - BALANCE_INQUIRY
            - GENERAL_INQUIRY
            - CARD_VERIFICATION_INQUIRY
            - CARDHOLDER_ACCOUNTS_TRANSFER
            - GENERAL_TRANSFER
            - PAYMENT_FROM_ACCOUNT
            - GENERAL_PAYMENT
            - PAYMENT_TO_ACCOUNT
            - PAYMENT_FROM_ACCOUNT_TO_ACCOUNT
            - PLACE_HOLD_ON_CARD
            - GENERAL_ADMIN
            - CHANGE_PIN
            - CARD_HOLDER_INQUIRY
            - POINTS_INQUIRY
        srcAccType:
          type: string
          description: >-
            This specifies the type of source account being used in the
            transaction (i.e. cheque, savings).
          enum:
            - DEFAULT
            - SAVINGS
            - CHEQUE
            - CREDIT
            - UNIVERSAL
            - ELECTRONIC_PURSE
            - GIFT_CARD
            - STORED_VALUE
        destAccType:
          type: string
          description: >-
            This specifies the type of destination account being used in the
            transaction (i.e. cheque, savings).
          enum:
            - DEFAULT
            - SAVINGS
            - CHEQUE
            - CREDIT
            - UNIVERSAL
            - ELECTRONIC_PURSE
            - GIFT_CARD
            - STORED_VALUE
        stan:
          type: string
          description: >-
            The System Trace Audit Number can be used to locate transactions
            across different systems.
        rrn:
          type: string
          description: This is a reference set by the original source of the transaction.
        customer:
          $ref: '#/components/schemas/Customer'
        amounts:
          $ref: '#/components/schemas/BillpayAmounts'
        partPaymentAllowed:
          type: boolean
          description: >-
            Indicates whether a payment amount may be less than the amount due.
            Defaults to true.
          default: false
        overPaymentAllowed:
          type: boolean
          description: >-
            Indicates whether a payment amount may be more than the amount due.
            Defaults to true.
          default: false
        trafficFine:
          $ref: '#/components/schemas/TrafficFine'
      description: >-
        The data resulting from a traffic fine lookup request. Replaced by a
        general BillLookupResponse in v4.14.0.
    TrafficFinePaymentRequest:
      type: object
      required:
        - amounts
        - client
        - id
        - noticeNumber
        - originator
        - thirdPartyIdentifiers
        - time
      properties:
        transactionLabels:
          type: array
          description: >-
            A list containing labels that can be used to discover this
            transaction or group it with other transactions sharing labels with
            the same label name and value. Transaction labels should never be
            used to make transaction processing decisions.
          items:
            $ref: '#/components/schemas/TransactionLabel'
        selectedCategory:
          $ref: '#/components/schemas/Category'
        id:
          type: string
          description: >-
            The randomly generated UUID identifying this transaction, as defined
            for a variant 4 UUID in [RFC
            4122](https://tools.ietf.org/html/rfc4122)
        time:
          type: string
          format: date-time
          description: >-
            The date and time of the message as recorded by the sender. The
            format shall be as defined for date-time in [RFC 3339 section
            5.6](https://tools.ietf.org/html/rfc3339#section-5.6). It is
            recommended that the optional time-secfrac be included up to
            millisecond precision
        originator:
          $ref: '#/components/schemas/Originator'
        client:
          $ref: '#/components/schemas/Institution'
        settlementEntity:
          $ref: '#/components/schemas/Institution'
        receiver:
          $ref: '#/components/schemas/Institution'
        thirdPartyIdentifiers:
          type: array
          description: >-
            An array of identifiers which each identify the transaction within
            each entity's system.
          items:
            $ref: '#/components/schemas/ThirdPartyIdentifier'
        slipData:
          $ref: '#/components/schemas/SlipData'
        basketRef:
          type: string
          description: >-
            Used to group multiple transactions which would otherwise be
            considered independent.
        tranType:
          type: string
          description: >-
            Data relating to the type of transaction taking place (i.e. cash
            withdrawal, goods and services etc.).
          enum:
            - GOODS_AND_SERVICES
            - CASH_WITHDRAWAL
            - DEBIT_ADJUSTMENT
            - GOODS_AND_SERVICES_WITH_CASH_BACK
            - NON_CASH
            - RETURNS
            - DEPOSIT
            - CREDIT_ADJUSTMENT
            - GENERAL_CREDIT
            - AVAILABLE_FUNDS_INQUIRY
            - BALANCE_INQUIRY
            - GENERAL_INQUIRY
            - CARD_VERIFICATION_INQUIRY
            - CARDHOLDER_ACCOUNTS_TRANSFER
            - GENERAL_TRANSFER
            - PAYMENT_FROM_ACCOUNT
            - GENERAL_PAYMENT
            - PAYMENT_TO_ACCOUNT
            - PAYMENT_FROM_ACCOUNT_TO_ACCOUNT
            - PLACE_HOLD_ON_CARD
            - GENERAL_ADMIN
            - CHANGE_PIN
            - CARD_HOLDER_INQUIRY
            - POINTS_INQUIRY
        srcAccType:
          type: string
          description: >-
            This specifies the type of source account being used in the
            transaction (i.e. cheque, savings).
          enum:
            - DEFAULT
            - SAVINGS
            - CHEQUE
            - CREDIT
            - UNIVERSAL
            - ELECTRONIC_PURSE
            - GIFT_CARD
            - STORED_VALUE
        destAccType:
          type: string
          description: >-
            This specifies the type of destination account being used in the
            transaction (i.e. cheque, savings).
          enum:
            - DEFAULT
            - SAVINGS
            - CHEQUE
            - CREDIT
            - UNIVERSAL
            - ELECTRONIC_PURSE
            - GIFT_CARD
            - STORED_VALUE
        stan:
          type: string
          description: >-
            The System Trace Audit Number can be used to locate transactions
            across different systems.
        rrn:
          type: string
          description: This is a reference set by the original source of the transaction.
        customer:
          $ref: '#/components/schemas/Customer'
        noticeNumber:
          type: string
          description: >-
            A reference number identifying the traffic fine to the service
            provider.
          minLength: 6
          maxLength: 40
        amounts:
          $ref: '#/components/schemas/BillpayAmounts'
        tenders:
          type: array
          description: Contains the tenders for the payment request if available
          items:
            $ref: '#/components/schemas/Tender'
        paymentMethods:
          type: array
          description: Contains the payment method for the payment request if available
          items:
            $ref: '#/components/schemas/PaymentMethod'
        lookupId:
          type: string
          description: The UUID identifying the lookup that this request relates to
      description: Represents a request to perform a payment of a traffic fine.
    TrafficFinePaymentResponse:
      type: object
      required:
        - amounts
        - client
        - id
        - originator
        - slipData
        - thirdPartyIdentifiers
        - time
        - trafficFine
      properties:
        transactionLabels:
          type: array
          description: >-
            A list containing labels that can be used to discover this
            transaction or group it with other transactions sharing labels with
            the same label name and value. Transaction labels should never be
            used to make transaction processing decisions.
          items:
            $ref: '#/components/schemas/TransactionLabel'
        id:
          type: string
          description: >-
            The randomly generated UUID identifying this transaction, as defined
            for a variant 4 UUID in [RFC
            4122](https://tools.ietf.org/html/rfc4122)
        time:
          type: string
          format: date-time
          description: >-
            The date and time of the message as recorded by the sender. The
            format shall be as defined for date-time in [RFC 3339 section
            5.6](https://tools.ietf.org/html/rfc3339#section-5.6). It is
            recommended that the optional time-secfrac be included up to
            millisecond precision
        originator:
          $ref: '#/components/schemas/Originator'
        client:
          $ref: '#/components/schemas/Institution'
        settlementEntity:
          $ref: '#/components/schemas/Institution'
        receiver:
          $ref: '#/components/schemas/Institution'
        thirdPartyIdentifiers:
          type: array
          description: >-
            An array of identifiers which each identify the transaction within
            each entity's system.
          items:
            $ref: '#/components/schemas/ThirdPartyIdentifier'
        slipData:
          $ref: '#/components/schemas/BillSlipData'
        basketRef:
          type: string
          description: >-
            Used to group multiple transactions which would otherwise be
            considered independent.
        tranType:
          type: string
          description: >-
            Data relating to the type of transaction taking place (i.e. cash
            withdrawal, goods and services etc.).
          enum:
            - GOODS_AND_SERVICES
            - CASH_WITHDRAWAL
            - DEBIT_ADJUSTMENT
            - GOODS_AND_SERVICES_WITH_CASH_BACK
            - NON_CASH
            - RETURNS
            - DEPOSIT
            - CREDIT_ADJUSTMENT
            - GENERAL_CREDIT
            - AVAILABLE_FUNDS_INQUIRY
            - BALANCE_INQUIRY
            - GENERAL_INQUIRY
            - CARD_VERIFICATION_INQUIRY
            - CARDHOLDER_ACCOUNTS_TRANSFER
            - GENERAL_TRANSFER
            - PAYMENT_FROM_ACCOUNT
            - GENERAL_PAYMENT
            - PAYMENT_TO_ACCOUNT
            - PAYMENT_FROM_ACCOUNT_TO_ACCOUNT
            - PLACE_HOLD_ON_CARD
            - GENERAL_ADMIN
            - CHANGE_PIN
            - CARD_HOLDER_INQUIRY
            - POINTS_INQUIRY
        srcAccType:
          type: string
          description: >-
            This specifies the type of source account being used in the
            transaction (i.e. cheque, savings).
          enum:
            - DEFAULT
            - SAVINGS
            - CHEQUE
            - CREDIT
            - UNIVERSAL
            - ELECTRONIC_PURSE
            - GIFT_CARD
            - STORED_VALUE
        destAccType:
          type: string
          description: >-
            This specifies the type of destination account being used in the
            transaction (i.e. cheque, savings).
          enum:
            - DEFAULT
            - SAVINGS
            - CHEQUE
            - CREDIT
            - UNIVERSAL
            - ELECTRONIC_PURSE
            - GIFT_CARD
            - STORED_VALUE
        stan:
          type: string
          description: >-
            The System Trace Audit Number can be used to locate transactions
            across different systems.
        rrn:
          type: string
          description: This is a reference set by the original source of the transaction.
        customer:
          $ref: '#/components/schemas/Customer'
        amounts:
          $ref: '#/components/schemas/BillpayAmounts'
        partPaymentAllowed:
          type: boolean
          description: >-
            Indicates whether a payment amount may be less than the amount due.
            Defaults to true.
          default: false
        overPaymentAllowed:
          type: boolean
          description: >-
            Indicates whether a payment amount may be more than the amount due.
            Defaults to true.
          default: false
        trafficFine:
          $ref: '#/components/schemas/TrafficFine'
      description: Represents a response to a payment request
    TransactionLabel:
      type: object
      required:
        - name
        - value
      properties:
        name:
          type: string
          description: >-
            Label name that indicates the type and intended use of the
            transaction label. The meaning of label names must be agreed upon by
            the parties involved in transaction processing.
          pattern: ^[a-zA-Z0-9_]{1,100}$
        value:
          type: string
          description: The value assigned to the transaction label.
          pattern: ^[a-zA-Z.-9 _-]{1,100}$
      description: >-
        A label assigned to a transaction by the entity processing the
        transaction. Labels are used for grouping or discovering transactions
        after transaction processing. Note that no transaction processing
        decision is made based on transaction labels.
    WalletPayment:
      allOf:
        - $ref: '#/components/schemas/PaymentMethod'
        - type: object
          required:
            - walletId
          properties:
            walletId:
              type: string
              description: The unique identifier of the wallet account making the payment.
              readOnly: true
            walletPocket:
              $ref: '#/components/schemas/WalletPocket'
          description: Model for mobile wallet payments
    WalletPocket:
      type: object
      required:
        - pocketName
      properties:
        pocketName:
          type: string
          description: The name given to this wallet pocket.
        pocketId:
          type: string
          description: >-
            A programmatic ID that can be used to identify this pocket when the
            name is not enough
