Swagger

The swagger (Open API) definition of the interface specification can be found here, as well as below.

Many tools are available for processing swagger files, and using a code generation tool to create a boilerplate client or server can be an excellent starting point for development. We highly recommend looking at swagger-codegen for a generator in your preferred language when starting out.

Swagger definition

---
swagger: "2.0"
info:
  description: "The Electrum Bill Payments Service describes an interface for performing\
    \ bill payments
                  transactions. These transactions require a\
    \ reference number which uniquely identifies the bill
                  processor,\
    \ bill 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 bill."
  version: "4.12.0"
  title: "Bill Payments Service Interface"
  contact:
    name: "Electrum Support"
    url: "http://io.electrum"
    email: "support@electrum.co.za"
  license:
    name: "Apache 2.0"
    url: "http://www.apache.org/licenses/LICENSE-2.0.html"
host: "billpay-test-server.herokuapp.com"
basePath: "/billpay/v4"
schemes:
- "https"
paths:
  /accountLookups/policy/{requestId}:
    post:
      summary: "Basic policy info request"
      description: "Requests the current status of the policy identified by the supplied\
        \ policy reference. Not all service providers support policy lookups. In the\
        \ case where this function is not supported by the requested service provider,\
        \ a 501 HTTP status code may be returned"
      operationId: "requestPolicyInfo"
      consumes:
      - "application/json"
      produces:
      - "application/json"
      parameters:
      - name: "requestId"
        in: "path"
        description: "The randomly generated UUID of this request"
        required: true
        type: "string"
      - in: "body"
        name: "body"
        description: "A policy lookup request"
        required: true
        schema:
          $ref: "#/definitions/PolicyLookupRequest"
      responses:
        200:
          description: "Success"
          schema:
            $ref: "#/definitions/PolicyLookupResponse"
        400:
          description: "Bad request"
          schema:
            $ref: "#/definitions/ErrorDetail"
        500:
          description: "Internal Server Error"
          schema:
            $ref: "#/definitions/ErrorDetail"
        501:
          description: "Not implemented"
          schema:
            $ref: "#/definitions/ErrorDetail"
        503:
          description: "Service Unavailable"
          schema:
            $ref: "#/definitions/ErrorDetail"
        504:
          description: "Gateway Timeout"
          schema:
            $ref: "#/definitions/ErrorDetail"
      security:
      - httpBasic: []
  /accountLookups/traffic/{requestId}:
    post:
      summary: "Basic traffic fine info request"
      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 relevant service provider, a 501 HTTP status code may be returned"
      operationId: "requestTrafficFineInfo"
      consumes:
      - "application/json"
      produces:
      - "application/json"
      parameters:
      - name: "requestId"
        in: "path"
        description: "The randomly generated UUID of this request"
        required: true
        type: "string"
      - in: "body"
        name: "body"
        description: "A traffic fine lookup request"
        required: true
        schema:
          $ref: "#/definitions/TrafficFineLookupRequest"
      responses:
        200:
          description: "Success"
          schema:
            $ref: "#/definitions/TrafficFineLookupResponse"
        400:
          description: "Bad request"
          schema:
            $ref: "#/definitions/ErrorDetail"
        500:
          description: "Internal Server Error"
          schema:
            $ref: "#/definitions/ErrorDetail"
        501:
          description: "Not implemented"
          schema:
            $ref: "#/definitions/ErrorDetail"
        503:
          description: "Service Unavailable"
          schema:
            $ref: "#/definitions/ErrorDetail"
        504:
          description: "Gateway Timeout"
          schema:
            $ref: "#/definitions/ErrorDetail"
      security:
      - httpBasic: []
  /accountLookups/{requestId}:
    post:
      summary: "Basic account information request"
      description: "Requests the current status of the account identified by the supplied\
        \ account reference. Not all services support account lookups. In the case\
        \ where this function is not supported for the requested service, a 501 HTTP\
        \ status code may be returned"
      operationId: "requestAccountInfo"
      consumes:
      - "application/json"
      produces:
      - "application/json"
      parameters:
      - name: "requestId"
        in: "path"
        description: "The randomly generated UUID of this request"
        required: true
        type: "string"
      - in: "body"
        name: "body"
        description: "An account lookup request"
        required: true
        schema:
          $ref: "#/definitions/AccountLookupRequest"
      responses:
        200:
          description: "Success"
          schema:
            $ref: "#/definitions/AccountLookupResponse"
        400:
          description: "Bad request"
          schema:
            $ref: "#/definitions/ErrorDetail"
        500:
          description: "Internal Server Error"
          schema:
            $ref: "#/definitions/ErrorDetail"
        501:
          description: "Not implemented"
          schema:
            $ref: "#/definitions/ErrorDetail"
        503:
          description: "Service Unavailable"
          schema:
            $ref: "#/definitions/ErrorDetail"
        504:
          description: "Gateway Timeout"
          schema:
            $ref: "#/definitions/ErrorDetail"
      security:
      - httpBasic: []
  /billers:
    get:
      summary: "Request the list of managed billers"
      description: "Request details on managed billers. Not all services support biller\
        \ management. In the case where the function is not supported a 501 (Not implemented)\
        \ HTTP status code will be returned."
      operationId: "listBillers"
      consumes:
      - "application/json"
      produces:
      - "application/json"
      parameters: []
      responses:
        200:
          description: "Success"
          schema:
            type: "array"
            items:
              $ref: "#/definitions/Biller"
        400:
          description: "Bad request"
          schema:
            $ref: "#/definitions/ErrorDetail"
        500:
          description: "Internal Server Error"
          schema:
            $ref: "#/definitions/ErrorDetail"
        501:
          description: "Not implemented"
        503:
          description: "Service Unavailable"
          schema:
            $ref: "#/definitions/ErrorDetail"
        504:
          description: "Gateway Timeout"
          schema:
            $ref: "#/definitions/ErrorDetail"
      security:
      - httpBasic: []
  /payments/policy/{paymentId}:
    post:
      summary: "Initiate a policy payment transaction"
      description: "Requests that a payment be made towards a policy."
      operationId: "createPolicyPayment"
      consumes:
      - "application/json"
      produces:
      - "application/json"
      parameters:
      - name: "paymentId"
        in: "path"
        description: "The randomly generated UUID of this request"
        required: true
        type: "string"
      - in: "body"
        name: "body"
        description: "A policy payment request"
        required: true
        schema:
          $ref: "#/definitions/PolicyPaymentRequest"
      responses:
        201:
          description: "Created"
          schema:
            $ref: "#/definitions/PolicyPaymentResponse"
          headers:
            Location:
              type: "string"
              description: "The location of the created payments resource"
        400:
          description: "Bad request"
          schema:
            $ref: "#/definitions/ErrorDetail"
        500:
          description: "Internal Server Error"
          schema:
            $ref: "#/definitions/ErrorDetail"
        503:
          description: "Service Unavailable"
          schema:
            $ref: "#/definitions/ErrorDetail"
        504:
          description: "Gateway Timeout"
          schema:
            $ref: "#/definitions/ErrorDetail"
      security:
      - httpBasic: []
  /payments/traffic/{paymentId}:
    post:
      summary: "Initiate a traffic fine payment transaction"
      description: "Requests that a payment be made towards a traffic fine."
      operationId: "createTrafficFinePayment"
      consumes:
      - "application/json"
      produces:
      - "application/json"
      parameters:
      - name: "paymentId"
        in: "path"
        description: "The randomly generated UUID of this request"
        required: true
        type: "string"
      - in: "body"
        name: "body"
        description: "A traffic fine payment request"
        required: true
        schema:
          $ref: "#/definitions/TrafficFinePaymentRequest"
      responses:
        201:
          description: "Created"
          schema:
            $ref: "#/definitions/TrafficFinePaymentResponse"
          headers:
            Location:
              type: "string"
              description: "The location of the created payments resource"
        400:
          description: "Bad request"
          schema:
            $ref: "#/definitions/ErrorDetail"
        500:
          description: "Internal Server Error"
          schema:
            $ref: "#/definitions/ErrorDetail"
        503:
          description: "Service Unavailable"
          schema:
            $ref: "#/definitions/ErrorDetail"
        504:
          description: "Gateway Timeout"
          schema:
            $ref: "#/definitions/ErrorDetail"
      security:
      - httpBasic: []
  /payments/{paymentId}:
    post:
      summary: "Initiate a bill payment transaction"
      description: "Requests that a payment be made towards a customer account"
      operationId: "createAccountPayment"
      consumes:
      - "application/json"
      produces:
      - "application/json"
      parameters:
      - name: "paymentId"
        in: "path"
        description: "The randomly generated UUID of this request"
        required: true
        type: "string"
      - in: "body"
        name: "body"
        description: "A payment request"
        required: true
        schema:
          $ref: "#/definitions/PaymentRequest"
      responses:
        201:
          description: "Created"
          schema:
            $ref: "#/definitions/PaymentResponse"
          headers:
            Location:
              type: "string"
              description: "The location of the created payments resource"
        400:
          description: "Bad request"
          schema:
            $ref: "#/definitions/ErrorDetail"
        500:
          description: "Internal Server Error"
          schema:
            $ref: "#/definitions/ErrorDetail"
        503:
          description: "Service Unavailable"
          schema:
            $ref: "#/definitions/ErrorDetail"
        504:
          description: "Gateway Timeout"
          schema:
            $ref: "#/definitions/ErrorDetail"
      security:
      - httpBasic: []
  /payments/{paymentId}/confirmations/{adviceId}:
    post:
      summary: "Confirm an existing bill payment"
      description: "If a createPayment request previously succeeded with a 201 status\
        \ it must be confirmed or cancelled to complete the transaction. confirmPayment\
        \ can only succeed if a payment was created but not cancelled. confirmPayment\
        \ must be repeated until a final HTTP status code is received (not 500 or\
        \ 504). If a status code of either 500 or 504 is received, or no response\
        \ is received, the request must be repeated. confirmPayment may be called\
        \ repeatedly on the same payment resource without negative effect."
      operationId: "confirmPayment"
      consumes:
      - "application/json"
      produces:
      - "application/json"
      parameters:
      - name: "adviceId"
        in: "path"
        description: "The randomly generated UUID of this request"
        required: true
        type: "string"
      - name: "paymentId"
        in: "path"
        description: "The UUID generated for the original createPayment request"
        required: true
        type: "string"
      - in: "body"
        name: "body"
        description: "A payment confirmation"
        required: true
        schema:
          $ref: "#/definitions/TenderAdvice"
      responses:
        202:
          description: "Accepted"
          schema:
            $ref: "#/definitions/BasicAdviceResponse"
        400:
          description: "Bad request"
          schema:
            $ref: "#/definitions/ErrorDetail"
        500:
          description: "Internal Server Error"
          schema:
            $ref: "#/definitions/ErrorDetail"
        503:
          description: "Service Unavailable"
          schema:
            $ref: "#/definitions/ErrorDetail"
        504:
          description: "Gateway Timeout"
          schema:
            $ref: "#/definitions/ErrorDetail"
      security:
      - httpBasic: []
  /payments/{paymentId}/reversals/{adviceId}:
    post:
      summary: "Reverse a payment request that failed or timed out"
      description: "If a createPayment request fails with a 500 or 504 HTTP status\
        \ code, or no response was received within the timeout period, it must be\
        \ reversed to ensure the payment is not reflected on a customer's account.\
        \ reversePayment must be repeated until a final HTTP status code is received\
        \ (not 500 or 504). reversePayment may be called repeatedly on the same payment\
        \ resource without negative effect."
      operationId: "reversePayment"
      consumes:
      - "application/json"
      produces:
      - "application/json"
      parameters:
      - name: "adviceId"
        in: "path"
        description: "The randomly generated UUID of this request"
        required: true
        type: "string"
      - name: "paymentId"
        in: "path"
        description: "The UUID generated for the original createPayment request"
        required: true
        type: "string"
      - in: "body"
        name: "body"
        description: "A payment reversal"
        required: true
        schema:
          $ref: "#/definitions/BasicReversal"
      responses:
        202:
          description: "Accepted"
          schema:
            $ref: "#/definitions/BasicAdviceResponse"
        400:
          description: "Bad request"
          schema:
            $ref: "#/definitions/ErrorDetail"
        500:
          description: "Internal Server Error"
          schema:
            $ref: "#/definitions/ErrorDetail"
        503:
          description: "Service Unavailable"
          schema:
            $ref: "#/definitions/ErrorDetail"
        504:
          description: "Gateway Timeout"
          schema:
            $ref: "#/definitions/ErrorDetail"
      security:
      - httpBasic: []
  /refunds/{refundId}:
    post:
      summary: "Creates a refund of previously confirmed payment"
      description: "If a payment is completed and confirmed successfully, some services\
        \ support that customers may request a refund for a particular payment for\
        \ some time after the payment took place. Not all services support refunds.\
        \ In the case where this function is not supported for the requested service,\
        \ a 501 HTTP status code may be returned"
      operationId: "createRefund"
      consumes:
      - "application/json"
      produces:
      - "application/json"
      parameters:
      - name: "refundId"
        in: "path"
        description: "The randomly generated UUID of this request"
        required: true
        type: "string"
      - in: "body"
        name: "body"
        description: "A refund request"
        required: true
        schema:
          $ref: "#/definitions/RefundRequest"
      responses:
        201:
          description: "Created"
          schema:
            $ref: "#/definitions/RefundResponse"
          headers:
            Location:
              type: "string"
              description: "The location of the created refund resource"
        400:
          description: "Bad request"
          schema:
            $ref: "#/definitions/ErrorDetail"
        500:
          description: "Internal Server Error"
          schema:
            $ref: "#/definitions/ErrorDetail"
        501:
          description: "Not implemented"
          schema:
            $ref: "#/definitions/ErrorDetail"
        503:
          description: "Service Unavailable"
          schema:
            $ref: "#/definitions/ErrorDetail"
        504:
          description: "Gateway Timeout"
          schema:
            $ref: "#/definitions/ErrorDetail"
      security:
      - httpBasic: []
  /refunds/{refundId}/confirmations/{adviceId}:
    post:
      summary: "Confirm an existing bill payment refund"
      description: "If a createRefund request previously succeeded with a 201 status\
        \ it must be confirmed or reversed to complete the transaction. confirmRefund\
        \ can only succeed if a refund was created but not reversed. confirmRefund\
        \ must be repeated until a final HTTP status code is received (not 500 or\
        \ 504). If a status code of either 500 or 504 is received, or no response\
        \ is received, the request must be repeated. confirmRefund may be called repeatedly\
        \ on the same refund resource without negative effect."
      operationId: "confirmRefund"
      consumes:
      - "application/json"
      produces:
      - "application/json"
      parameters:
      - name: "adviceId"
        in: "path"
        description: "The randomly generated UUID of this request"
        required: true
        type: "string"
      - name: "refundId"
        in: "path"
        description: "The UUID generated for the corresponding createRefund request"
        required: true
        type: "string"
      - in: "body"
        name: "body"
        description: "A refund confirmation"
        required: true
        schema:
          $ref: "#/definitions/BasicAdvice"
      responses:
        202:
          description: "Accepted"
          schema:
            $ref: "#/definitions/BasicAdviceResponse"
        400:
          description: "Bad request"
          schema:
            $ref: "#/definitions/ErrorDetail"
        500:
          description: "Internal Server Error"
          schema:
            $ref: "#/definitions/ErrorDetail"
        503:
          description: "Service Unavailable"
          schema:
            $ref: "#/definitions/ErrorDetail"
        504:
          description: "Gateway Timeout"
          schema:
            $ref: "#/definitions/ErrorDetail"
      security:
      - httpBasic: []
  /refunds/{refundId}/reversals/{adviceId}:
    post:
      summary: "Reverse a refund request that failed or timed out"
      description: "If a createRefund request fails with a 500 or 504 HTTP status\
        \ code, or no response was received within the timeout period, it must be\
        \ reversed to ensure the payment is not refelected on a customer's account.\
        \ reverseRefund must be repeated until a final HTTP status code is received\
        \ (not 500 or 504). reverseRefund may be called repeatedly on the same payment\
        \ resource without negative effect."
      operationId: "reverseRefund"
      consumes:
      - "application/json"
      produces:
      - "application/json"
      parameters:
      - name: "adviceId"
        in: "path"
        description: "The randomly generated UUID of this request"
        required: true
        type: "string"
      - name: "refundId"
        in: "path"
        description: "The UUID generated for the corresponding createRefund request"
        required: true
        type: "string"
      - in: "body"
        name: "body"
        description: "A refund reversal"
        required: true
        schema:
          $ref: "#/definitions/BasicReversal"
      responses:
        202:
          description: "Accepted"
          schema:
            $ref: "#/definitions/BasicAdviceResponse"
        400:
          description: "Bad request"
          schema:
            $ref: "#/definitions/ErrorDetail"
        500:
          description: "Internal Server Error"
          schema:
            $ref: "#/definitions/ErrorDetail"
        503:
          description: "Service Unavailable"
          schema:
            $ref: "#/definitions/ErrorDetail"
        504:
          description: "Gateway Timeout"
          schema:
            $ref: "#/definitions/ErrorDetail"
      security:
      - httpBasic: []
securityDefinitions:
  httpBasic:
    description: "All requests require HTTP basic authentication, where user name\
      \ is the value used in
                    Sender.Institution.Id and password\
      \ has been agreed with Electrum."
    type: "basic"
definitions:
  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:
      selectedCategory:
        description: "The getBillers operation includes a list of available categories\
          \ for each biller. This field can be used to associate one of those categories\
          \ with the request transaction."
        $ref: "#/definitions/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:
        description: "Data relating to the originator of the transaction."
        $ref: "#/definitions/Originator"
      client:
        description: "Data relating to the sender of Transaction."
        $ref: "#/definitions/Institution"
      settlementEntity:
        description: "Data relating to the entity with whom the Merchant will settle\
          \ the transaction."
        $ref: "#/definitions/Institution"
      receiver:
        description: "Data relating to the entity which ultimately processes the request."
        $ref: "#/definitions/Institution"
      thirdPartyIdentifiers:
        type: "array"
        description: "An array of identifiers which each identify the transaction\
          \ within each entity's system."
        items:
          $ref: "#/definitions/ThirdPartyIdentifier"
      slipData:
        description: "Text to be printed on the customer receipt."
        $ref: "#/definitions/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:
        description: "Customer detail"
        $ref: "#/definitions/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"
  AccountLookupResponse:
    type: "object"
    required:
    - "account"
    - "amounts"
    - "client"
    - "id"
    - "originator"
    - "slipData"
    - "thirdPartyIdentifiers"
    - "time"
    properties:
      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:
        description: "Data relating to the originator of the transaction."
        $ref: "#/definitions/Originator"
      client:
        description: "Data relating to the sender of Transaction."
        $ref: "#/definitions/Institution"
      settlementEntity:
        description: "Data relating to the entity with whom the Merchant will settle\
          \ the transaction."
        $ref: "#/definitions/Institution"
      receiver:
        description: "Data relating to the entity which ultimately processes the request."
        $ref: "#/definitions/Institution"
      thirdPartyIdentifiers:
        type: "array"
        description: "An array of identifiers which each identify the transaction\
          \ within each entity's system."
        items:
          $ref: "#/definitions/ThirdPartyIdentifier"
      slipData:
        description: "Text to be printed on the customer receipt."
        $ref: "#/definitions/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:
        description: "Customer detail"
        $ref: "#/definitions/Customer"
      amounts:
        description: "The message amount details such as account balance."
        $ref: "#/definitions/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:
        description: "The customer account detail"
        $ref: "#/definitions/Account"
    description: "The data resulting from an account lookup request"
  AccountPayment:
    allOf:
    - $ref: "#/definitions/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:
        description: "The transaction amount requested by the customer to be authorised\
          \ or approved. This is the total amount the customer wishes to pay for a\
          \ service or virtual product."
        $ref: "#/definitions/LedgerAmount"
      approvedAmount:
        description: "The transaction amount which was approved by the upstream entity."
        $ref: "#/definitions/LedgerAmount"
      feeAmount:
        description: "Fees charged by the upstream entity for processing the transaction."
        $ref: "#/definitions/LedgerAmount"
      balanceAmount:
        description: "The remaining balance on the customer's account."
        $ref: "#/definitions/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: "#/definitions/LedgerAmount"
    description: "Amounts which make up the transaction. Absent amounts have zero\
      \ value."
  An32TokenPayment:
    allOf:
    - $ref: "#/definitions/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: "#/definitions/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:
        description: "Communicates the final amount for a transaction in the approvedAmount\
          \ field. If absent from a reversal then a full reversal is implied (i.e.\
          \ a final amount of zero). If absent from a confirmation then a full confirmation\
          \ is implied (i.e. the final amount is the same as the approvedAmount of\
          \ the  authorisation response). The approvedAmount in an advice message\
          \ should be less than or equal to the approvedAmount of the authorisation\
          \ response as stand-in transactions are not currently supported."
        $ref: "#/definitions/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: "#/definitions/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:
        description: "Communicates the final amount for a transaction in the approvedAmount\
          \ field. If absent from a reversal then a full reversal is implied (i.e.\
          \ a final amount of zero). If absent from a confirmation then a full confirmation\
          \ is implied (i.e. the final amount is the same as the approvedAmount of\
          \ the  authorisation response). The approvedAmount in an advice message\
          \ should be less than or equal to the approvedAmount of the authorisation\
          \ response as stand-in transactions are not currently supported."
        $ref: "#/definitions/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: "#/definitions/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:
        description: "Communicates the final amount for a transaction in the approvedAmount\
          \ field. If absent from a reversal then a full reversal is implied (i.e.\
          \ a final amount of zero). If absent from a confirmation then a full confirmation\
          \ is implied (i.e. the final amount is the same as the approvedAmount of\
          \ the  authorisation response). The approvedAmount in an advice message\
          \ should be less than or equal to the approvedAmount of the authorisation\
          \ response as stand-in transactions are not currently supported."
        $ref: "#/definitions/Amounts"
      reversalReason:
        type: "string"
        description: "The reason for the reversal"
        enum:
        - "TIMEOUT"
        - "CANCELLED"
        - "RESPONSE_NOT_FINAL"
    description: "An advice that notifies of the negative completion of a transaction.\
      \ This can be either due to customer cancellation, or as a result of receiving\
      \ a non-final response (or no response) to a request"
  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: "#/definitions/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:
        description: "Institution identifying the biller."
        $ref: "#/definitions/Institution"
      categories:
        type: "array"
        description: "List of Categories to which this biller belongs"
        items:
          $ref: "#/definitions/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"
  BillpayAmounts:
    type: "object"
    properties:
      requestAmount:
        description: "The transaction amount requested by the customer to be authorised\
          \ or approved. This is the total amount the customer wishes to pay for a\
          \ service or virtual product."
        $ref: "#/definitions/LedgerAmount"
      approvedAmount:
        description: "The transaction amount which was approved by the upstream entity."
        $ref: "#/definitions/LedgerAmount"
      feeAmount:
        description: "Fees charged by the upstream entity for processing the transaction."
        $ref: "#/definitions/LedgerAmount"
      balanceAmount:
        description: "The remaining balance on the customer's account."
        $ref: "#/definitions/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: "#/definitions/LedgerAmount"
      maxPayableAmount:
        description: "The maximum amount a customer is allowed to pay towards an account,\
          \ policy or some other payment."
        $ref: "#/definitions/LedgerAmount"
      minPayableAmount:
        description: "The minimum amount a customer is allowed to pay towards an account,\
          \ policy or some other payment."
        $ref: "#/definitions/LedgerAmount"
    description: "Amounts which make up the transaction. Absent amounts have zero\
      \ value."
  CardPayment:
    allOf:
    - $ref: "#/definitions/PaymentMethod"
    - type: "object"
      required:
      - "pan"
      properties:
        posInfo:
          $ref: "#/definitions/PosInfo"
        pin:
          description: "The PIN associated with this card as either a clear PIN or\
            \ an encrypted PIN in HEX format."
          $ref: "#/definitions/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}"
        encryptedPin:
          description: "The encrypted pin number associated with the card in HEX format."
          $ref: "#/definitions/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
      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}"
      encryptionParameters:
        description: "Parameters pertaining to the generation of the pinBlock. Required\
          \ if the service is to perform any operations on the encrypted PIN, such\
          \ as PIN translation."
        $ref: "#/definitions/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."
        enum:
        - "ISO_9564_FORMAT_0"
        - "ISO_9564_FORMAT_1"
        - "ISO_9564_FORMAT_3"
        default: "ISO_9564_FORMAT_0"
      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"
      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"
      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: "#/definitions/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:
        description: "The name of a merchant"
        $ref: "#/definitions/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:
        description: "The institution originating the request, as issued by Electrum"
        $ref: "#/definitions/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:
        description: "Merchant data. Required if available"
        $ref: "#/definitions/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: "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:
        description: "Ledger amount of the payment"
        $ref: "#/definitions/LedgerAmount"
      issuer:
        description: "The institution which is responsible for managing this payment\
          \ method (e.g. the card issuer, the wallet provider, the token provider\
          \ etc.)"
        $ref: "#/definitions/Institution"
      pin:
        description: "The PIN associated with this payment method. Various PIN formats\
          \ are supported (clear, encrypted, hashed etc.)"
        $ref: "#/definitions/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:
      selectedCategory:
        description: "The getBillers operation includes a list of available categories\
          \ for each biller. This field can be used to associate one of those categories\
          \ with the request transaction."
        $ref: "#/definitions/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:
        description: "Data relating to the originator of the transaction."
        $ref: "#/definitions/Originator"
      client:
        description: "Data relating to the sender of Transaction."
        $ref: "#/definitions/Institution"
      settlementEntity:
        description: "Data relating to the entity with whom the Merchant will settle\
          \ the transaction."
        $ref: "#/definitions/Institution"
      receiver:
        description: "Data relating to the entity which ultimately processes the request."
        $ref: "#/definitions/Institution"
      thirdPartyIdentifiers:
        type: "array"
        description: "An array of identifiers which each identify the transaction\
          \ within each entity's system."
        items:
          $ref: "#/definitions/ThirdPartyIdentifier"
      slipData:
        description: "Text to be printed on the customer receipt."
        $ref: "#/definitions/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:
        description: "Customer detail"
        $ref: "#/definitions/Customer"
      accountRef:
        type: "string"
        description: "A reference number identifying the bill payments processor,\
          \ bill issuer, and customer"
        minLength: 6
        maxLength: 40
      amounts:
        description: "Contains the payment amount."
        $ref: "#/definitions/BillpayAmounts"
      tenders:
        type: "array"
        description: "Contains the tenders for the payment request if available"
        items:
          $ref: "#/definitions/Tender"
      paymentMethods:
        type: "array"
        description: "Contains the payment method for the payment request if available"
        items:
          $ref: "#/definitions/PaymentMethod"
    description: "Represents a request to perform a payment"
  PaymentResponse:
    type: "object"
    required:
    - "account"
    - "amounts"
    - "client"
    - "id"
    - "originator"
    - "slipData"
    - "thirdPartyIdentifiers"
    - "time"
    properties:
      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:
        description: "Data relating to the originator of the transaction."
        $ref: "#/definitions/Originator"
      client:
        description: "Data relating to the sender of Transaction."
        $ref: "#/definitions/Institution"
      settlementEntity:
        description: "Data relating to the entity with whom the Merchant will settle\
          \ the transaction."
        $ref: "#/definitions/Institution"
      receiver:
        description: "Data relating to the entity which ultimately processes the request."
        $ref: "#/definitions/Institution"
      thirdPartyIdentifiers:
        type: "array"
        description: "An array of identifiers which each identify the transaction\
          \ within each entity's system."
        items:
          $ref: "#/definitions/ThirdPartyIdentifier"
      slipData:
        description: "Text to be printed on the customer receipt."
        $ref: "#/definitions/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:
        description: "Customer detail"
        $ref: "#/definitions/Customer"
      amounts:
        description: "The message amount details such as account balance."
        $ref: "#/definitions/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:
        description: "The customer account detail"
        $ref: "#/definitions/Account"
      tenders:
        type: "array"
        description: "Contains the tenders for the payment response if available"
        items:
          $ref: "#/definitions/Tender"
      paymentMethods:
        type: "array"
        description: "Contains the payment method for the payment response if available"
        items:
          $ref: "#/definitions/PaymentMethod"
    description: "Represents a response to a payment request"
  Pin:
    type: "object"
    required:
    - "type"
    discriminator: "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: "#/definitions/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: "#/definitions/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}"
        encryptionParameters:
          description: "Parameters pertaining to the generation of the pinBlock. Required\
            \ if the service is to perform any operations on the encrypted PIN, such\
            \ as PIN translation."
          $ref: "#/definitions/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: "#/definitions/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:
          description: "Parameters that describe the hashing algorithm used to hash\
            \ the PIN."
          $ref: "#/definitions/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"
  PolicyLookupRequest:
    type: "object"
    required:
    - "client"
    - "id"
    - "originator"
    - "policyNumber"
    - "thirdPartyIdentifiers"
    - "time"
    properties:
      selectedCategory:
        description: "The getBillers operation includes a list of available categories\
          \ for each biller. This field can be used to associate one of those categories\
          \ with the request transaction."
        $ref: "#/definitions/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:
        description: "Data relating to the originator of the transaction."
        $ref: "#/definitions/Originator"
      client:
        description: "Data relating to the sender of Transaction."
        $ref: "#/definitions/Institution"
      settlementEntity:
        description: "Data relating to the entity with whom the Merchant will settle\
          \ the transaction."
        $ref: "#/definitions/Institution"
      receiver:
        description: "Data relating to the entity which ultimately processes the request."
        $ref: "#/definitions/Institution"
      thirdPartyIdentifiers:
        type: "array"
        description: "An array of identifiers which each identify the transaction\
          \ within each entity's system."
        items:
          $ref: "#/definitions/ThirdPartyIdentifier"
      slipData:
        description: "Text to be printed on the customer receipt."
        $ref: "#/definitions/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:
        description: "Customer detail"
        $ref: "#/definitions/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"
  PolicyLookupResponse:
    type: "object"
    required:
    - "amounts"
    - "client"
    - "id"
    - "originator"
    - "policy"
    - "slipData"
    - "thirdPartyIdentifiers"
    - "time"
    properties:
      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:
        description: "Data relating to the originator of the transaction."
        $ref: "#/definitions/Originator"
      client:
        description: "Data relating to the sender of Transaction."
        $ref: "#/definitions/Institution"
      settlementEntity:
        description: "Data relating to the entity with whom the Merchant will settle\
          \ the transaction."
        $ref: "#/definitions/Institution"
      receiver:
        description: "Data relating to the entity which ultimately processes the request."
        $ref: "#/definitions/Institution"
      thirdPartyIdentifiers:
        type: "array"
        description: "An array of identifiers which each identify the transaction\
          \ within each entity's system."
        items:
          $ref: "#/definitions/ThirdPartyIdentifier"
      slipData:
        description: "Text to be printed on the customer receipt."
        $ref: "#/definitions/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:
        description: "Customer detail"
        $ref: "#/definitions/Customer"
      amounts:
        description: "The message amount details such as account balance."
        $ref: "#/definitions/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:
        description: "The customer policy detail"
        $ref: "#/definitions/Policy"
    description: "The data resulting from a policy lookup request"
  PolicyPaymentRequest:
    type: "object"
    required:
    - "amounts"
    - "client"
    - "id"
    - "originator"
    - "policyNumber"
    - "thirdPartyIdentifiers"
    - "time"
    properties:
      selectedCategory:
        description: "The getBillers operation includes a list of available categories\
          \ for each biller. This field can be used to associate one of those categories\
          \ with the request transaction."
        $ref: "#/definitions/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:
        description: "Data relating to the originator of the transaction."
        $ref: "#/definitions/Originator"
      client:
        description: "Data relating to the sender of Transaction."
        $ref: "#/definitions/Institution"
      settlementEntity:
        description: "Data relating to the entity with whom the Merchant will settle\
          \ the transaction."
        $ref: "#/definitions/Institution"
      receiver:
        description: "Data relating to the entity which ultimately processes the request."
        $ref: "#/definitions/Institution"
      thirdPartyIdentifiers:
        type: "array"
        description: "An array of identifiers which each identify the transaction\
          \ within each entity's system."
        items:
          $ref: "#/definitions/ThirdPartyIdentifier"
      slipData:
        description: "Text to be printed on the customer receipt."
        $ref: "#/definitions/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:
        description: "Customer detail"
        $ref: "#/definitions/Customer"
      policyNumber:
        type: "string"
        description: "A reference number identifying the policy to the service provider."
        minLength: 6
        maxLength: 40
      amounts:
        description: "Contains the payment amount."
        $ref: "#/definitions/BillpayAmounts"
      tenders:
        type: "array"
        description: "Contains the tenders for the payment request if available"
        items:
          $ref: "#/definitions/Tender"
      paymentMethods:
        type: "array"
        description: "Contains the payment method for the payment request if available"
        items:
          $ref: "#/definitions/PaymentMethod"
    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:
      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:
        description: "Data relating to the originator of the transaction."
        $ref: "#/definitions/Originator"
      client:
        description: "Data relating to the sender of Transaction."
        $ref: "#/definitions/Institution"
      settlementEntity:
        description: "Data relating to the entity with whom the Merchant will settle\
          \ the transaction."
        $ref: "#/definitions/Institution"
      receiver:
        description: "Data relating to the entity which ultimately processes the request."
        $ref: "#/definitions/Institution"
      thirdPartyIdentifiers:
        type: "array"
        description: "An array of identifiers which each identify the transaction\
          \ within each entity's system."
        items:
          $ref: "#/definitions/ThirdPartyIdentifier"
      slipData:
        description: "Text to be printed on the customer receipt."
        $ref: "#/definitions/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:
        description: "Customer detail"
        $ref: "#/definitions/Customer"
      amounts:
        description: "The message amount details such as account balance."
        $ref: "#/definitions/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:
        description: "The customer policy detail"
        $ref: "#/definitions/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:
        description: "Describes the manner in which the POS captured card and PIN\
          \ data."
        $ref: "#/definitions/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: "#/definitions/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:
      selectedCategory:
        description: "The getBillers operation includes a list of available categories\
          \ for each biller. This field can be used to associate one of those categories\
          \ with the request transaction."
        $ref: "#/definitions/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:
        description: "Data relating to the originator of the transaction."
        $ref: "#/definitions/Originator"
      client:
        description: "Data relating to the sender of Transaction."
        $ref: "#/definitions/Institution"
      settlementEntity:
        description: "Data relating to the entity with whom the Merchant will settle\
          \ the transaction."
        $ref: "#/definitions/Institution"
      receiver:
        description: "Data relating to the entity which ultimately processes the request."
        $ref: "#/definitions/Institution"
      thirdPartyIdentifiers:
        type: "array"
        description: "An array of identifiers which each identify the transaction\
          \ within each entity's system."
        items:
          $ref: "#/definitions/ThirdPartyIdentifier"
      slipData:
        description: "Text to be printed on the customer receipt."
        $ref: "#/definitions/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:
        description: "Customer detail"
        $ref: "#/definitions/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,\
          \ and 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:
      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:
        description: "Data relating to the originator of the transaction."
        $ref: "#/definitions/Originator"
      client:
        description: "Data relating to the sender of Transaction."
        $ref: "#/definitions/Institution"
      settlementEntity:
        description: "Data relating to the entity with whom the Merchant will settle\
          \ the transaction."
        $ref: "#/definitions/Institution"
      receiver:
        description: "Data relating to the entity which ultimately processes the request."
        $ref: "#/definitions/Institution"
      thirdPartyIdentifiers:
        type: "array"
        description: "An array of identifiers which each identify the transaction\
          \ within each entity's system."
        items:
          $ref: "#/definitions/ThirdPartyIdentifier"
      slipData:
        description: "Text to be printed on the customer receipt."
        $ref: "#/definitions/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:
        description: "Customer detail"
        $ref: "#/definitions/Customer"
      amounts:
        description: "The message amount details such as account balance."
        $ref: "#/definitions/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:
        description: "The customer account detail"
        $ref: "#/definitions/Account"
      trafficFine:
        description: "The customer trafficFine detail"
        $ref: "#/definitions/TrafficFine"
      policy:
        description: "The customer policy detail"
        $ref: "#/definitions/Policy"
    description: "Represents a response to a refund request"
  RewardPayment:
    allOf:
    - $ref: "#/definitions/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: "#/definitions/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:
        description: "Barcode information for this line"
        $ref: "#/definitions/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:
        description: "The tendered amount"
        $ref: "#/definitions/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"
    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: "#/definitions/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:
        description: "Communicates the final amount for a transaction in the approvedAmount\
          \ field. If absent from a reversal then a full reversal is implied (i.e.\
          \ a final amount of zero). If absent from a confirmation then a full confirmation\
          \ is implied (i.e. the final amount is the same as the approvedAmount of\
          \ the  authorisation response). The approvedAmount in an advice message\
          \ should be less than or equal to the approvedAmount of the authorisation\
          \ response as stand-in transactions are not currently supported."
        $ref: "#/definitions/Amounts"
      tenders:
        type: "array"
        description: "An array of tenders used to pay for the transaction"
        items:
          $ref: "#/definitions/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. Entity's\
      \ must not alter the identifier set by another entity. Once an identifier has\
      \ been set by an entity, all other entity's must send that identifier in subsequent\
      \ messages."
  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:
      selectedCategory:
        description: "The getBillers operation includes a list of available categories\
          \ for each biller. This field can be used to associate one of those categories\
          \ with the request transaction."
        $ref: "#/definitions/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:
        description: "Data relating to the originator of the transaction."
        $ref: "#/definitions/Originator"
      client:
        description: "Data relating to the sender of Transaction."
        $ref: "#/definitions/Institution"
      settlementEntity:
        description: "Data relating to the entity with whom the Merchant will settle\
          \ the transaction."
        $ref: "#/definitions/Institution"
      receiver:
        description: "Data relating to the entity which ultimately processes the request."
        $ref: "#/definitions/Institution"
      thirdPartyIdentifiers:
        type: "array"
        description: "An array of identifiers which each identify the transaction\
          \ within each entity's system."
        items:
          $ref: "#/definitions/ThirdPartyIdentifier"
      slipData:
        description: "Text to be printed on the customer receipt."
        $ref: "#/definitions/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:
        description: "Customer detail"
        $ref: "#/definitions/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"
  TrafficFineLookupResponse:
    type: "object"
    required:
    - "amounts"
    - "client"
    - "id"
    - "originator"
    - "slipData"
    - "thirdPartyIdentifiers"
    - "time"
    - "trafficFine"
    properties:
      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:
        description: "Data relating to the originator of the transaction."
        $ref: "#/definitions/Originator"
      client:
        description: "Data relating to the sender of Transaction."
        $ref: "#/definitions/Institution"
      settlementEntity:
        description: "Data relating to the entity with whom the Merchant will settle\
          \ the transaction."
        $ref: "#/definitions/Institution"
      receiver:
        description: "Data relating to the entity which ultimately processes the request."
        $ref: "#/definitions/Institution"
      thirdPartyIdentifiers:
        type: "array"
        description: "An array of identifiers which each identify the transaction\
          \ within each entity's system."
        items:
          $ref: "#/definitions/ThirdPartyIdentifier"
      slipData:
        description: "Text to be printed on the customer receipt."
        $ref: "#/definitions/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:
        description: "Customer detail"
        $ref: "#/definitions/Customer"
      amounts:
        description: "The message amount details such as account balance."
        $ref: "#/definitions/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:
        description: "The traffic fine detail"
        $ref: "#/definitions/TrafficFine"
    description: "The data resulting from a traffic fine lookup request"
  TrafficFinePaymentRequest:
    type: "object"
    required:
    - "amounts"
    - "client"
    - "id"
    - "noticeNumber"
    - "originator"
    - "thirdPartyIdentifiers"
    - "time"
    properties:
      selectedCategory:
        description: "The getBillers operation includes a list of available categories\
          \ for each biller. This field can be used to associate one of those categories\
          \ with the request transaction."
        $ref: "#/definitions/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:
        description: "Data relating to the originator of the transaction."
        $ref: "#/definitions/Originator"
      client:
        description: "Data relating to the sender of Transaction."
        $ref: "#/definitions/Institution"
      settlementEntity:
        description: "Data relating to the entity with whom the Merchant will settle\
          \ the transaction."
        $ref: "#/definitions/Institution"
      receiver:
        description: "Data relating to the entity which ultimately processes the request."
        $ref: "#/definitions/Institution"
      thirdPartyIdentifiers:
        type: "array"
        description: "An array of identifiers which each identify the transaction\
          \ within each entity's system."
        items:
          $ref: "#/definitions/ThirdPartyIdentifier"
      slipData:
        description: "Text to be printed on the customer receipt."
        $ref: "#/definitions/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:
        description: "Customer detail"
        $ref: "#/definitions/Customer"
      noticeNumber:
        type: "string"
        description: "A reference number identifying the traffic fine to the service\
          \ provider."
        minLength: 6
        maxLength: 40
      amounts:
        description: "Contains the payment amount."
        $ref: "#/definitions/BillpayAmounts"
      tenders:
        type: "array"
        description: "Contains the tenders for the payment request if available"
        items:
          $ref: "#/definitions/Tender"
      paymentMethods:
        type: "array"
        description: "Contains the payment method for the payment request if available"
        items:
          $ref: "#/definitions/PaymentMethod"
    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:
      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:
        description: "Data relating to the originator of the transaction."
        $ref: "#/definitions/Originator"
      client:
        description: "Data relating to the sender of Transaction."
        $ref: "#/definitions/Institution"
      settlementEntity:
        description: "Data relating to the entity with whom the Merchant will settle\
          \ the transaction."
        $ref: "#/definitions/Institution"
      receiver:
        description: "Data relating to the entity which ultimately processes the request."
        $ref: "#/definitions/Institution"
      thirdPartyIdentifiers:
        type: "array"
        description: "An array of identifiers which each identify the transaction\
          \ within each entity's system."
        items:
          $ref: "#/definitions/ThirdPartyIdentifier"
      slipData:
        description: "Text to be printed on the customer receipt."
        $ref: "#/definitions/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:
        description: "Customer detail"
        $ref: "#/definitions/Customer"
      amounts:
        description: "The message amount details such as account balance."
        $ref: "#/definitions/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:
        description: "The customer account detail"
        $ref: "#/definitions/TrafficFine"
    description: "Represents a response to a payment request"
  WalletPayment:
    allOf:
    - $ref: "#/definitions/PaymentMethod"
    - type: "object"
      required:
      - "walletId"
      properties:
        walletId:
          type: "string"
          description: "The unique identifier of the wallet account making the payment."
          readOnly: true
        walletPocket:
          description: "The pocket associated with this wallet from which the payment\
            \ is to be made. Used to determine where to make a payment from when a\
            \ wallet is split into different sections. When not provided, payment\
            \ will be directly from the wallet and not a subsection of the wallet."
          $ref: "#/definitions/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"