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 Money Transfer Retailer Interface describes an interface\
    \ for money transfers
                  initiated at a retailer."
  version: "2.14.0"
  title: "Money Transfer Retailer 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: "sandbox.electrum.io"
basePath: "/moneytransfer/v2"
schemes:
- "https"
paths:
  /admin/customers:
    get:
      summary: "getCustomerInfo"
      description: "Returns information of the customer's profile as registered on\
        \ the service provider's system."
      operationId: "getCustomerInfo"
      produces:
      - "application/json"
      parameters:
      - name: "idNumber"
        in: "query"
        description: "Customer's identification number as per presented identification\
          \ document."
        required: true
        type: "string"
      - name: "idType"
        in: "query"
        description: "Type of presented identification document."
        required: false
        type: "string"
        enum:
        - "NATIONAL_ID"
        - "PASSPORT"
        - "DRIVERS_LICENCE"
        - "ASYLUM_DOCUMENT"
        - "UNKNOWN"
      - name: "idCountryCode"
        in: "query"
        description: "Country of issue of presented identification document, expressed\
          \ as an ISO 3166-1 Alpha-2 country code."
        required: false
        type: "string"
      - name: "merchantId"
        in: "query"
        description: "The assigned merchant identifier. Also known as card acceptor\
          \ id."
        required: false
        type: "string"
      - name: "originatorInstId"
        in: "query"
        description: "Identifies the institution from which the transaction originates.\
          \ Value to be assigned by Electrum."
        required: false
        type: "string"
      - name: "receiverId"
        in: "query"
        description: "Identifies the service provider to whom this request must be\
          \ directed."
        required: true
        type: "string"
      responses:
        200:
          description: "OK"
          schema:
            $ref: "#/definitions/MoneyTransferAdminMessage"
        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: []
    post:
      summary: "createOrUpdateCustomer"
      description: "Request to create a new or update an existing customer profile\
        \ on the service provider's system."
      operationId: "createOrUpdateCustomer"
      consumes:
      - "application/json"
      produces:
      - "application/json"
      parameters:
      - in: "body"
        name: "body"
        description: "A message containing the data required to carry out the admin\
          \ request, as well as information about the point-of-sale from which the\
          \ transaction originates."
        required: true
        schema:
          $ref: "#/definitions/MoneyTransferAdminMessage"
      responses:
        200:
          description: "successful operation"
          schema:
            $ref: "#/definitions/MoneyTransferAdminMessage"
        201:
          description: "Created"
          schema:
            $ref: "#/definitions/MoneyTransferAdminMessage"
        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: []
  /admin/exchangerate:
    get:
      summary: "getExchangeRate"
      description: "Returns an exchange rate between two currencies."
      operationId: "getExchangeRate"
      produces:
      - "application/json"
      parameters:
      - name: "fromCurrency"
        in: "query"
        description: "The currency which amounts are converted from. One unit of this\
          \ currency multiplied by the rate returned by this operation is equal to\
          \ one unit of the toCurrency. This currency is expressed as a three digit\
          \ number as specified in ISO 4217, e.g. South African Rand is encoded as\
          \ 710."
        required: true
        type: "string"
      - name: "toCurrency"
        in: "query"
        description: "The currency which amounts are converted to. One unit of this\
          \ currency multiplied by the rate returned by this operation is equal to\
          \ one unit of the fromCurrency. This currency is expressed as a three digit\
          \ number as specified in ISO 4217, e.g. South African Rand is encoded as\
          \ 710."
        required: true
        type: "string"
      - name: "receiverId"
        in: "query"
        description: "The ID of the receiver who would process such a currency exchange.\
          \ If this is supplied then a specific institution's exchange rate may be\
          \ returned. If this parameter is not supplied then the exchange rate may\
          \ simply be the market exchange rate."
        required: false
        type: "string"
      responses:
        200:
          description: "OK"
          schema:
            $ref: "#/definitions/ExchangeRate"
        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: []
      deprecated: true
  /admin/fees:
    get:
      summary: "getFeeQuote"
      description: "Returns the fee that will be charged to the customer for the transfer."
      operationId: "getFeeQuote"
      produces:
      - "application/json"
      parameters:
      - name: "amount"
        in: "query"
        description: "The amount the customer wishes to transfer."
        required: true
        type: "integer"
        format: "int64"
      - name: "amountIncludesFee"
        in: "query"
        description: "Whether or not the amount is inclusive of the fee."
        required: true
        type: "boolean"
      - name: "idNumber"
        in: "query"
        description: "National identity number of the customer."
        required: false
        type: "string"
      - name: "merchantId"
        in: "query"
        description: "The assigned merchant identifier. Also known as card acceptor\
          \ ID."
        required: false
        type: "string"
      - name: "originatorInstId"
        in: "query"
        description: "Identifies the institution from which the transaction originates.\
          \ Value to be assigned by Electrum."
        required: true
        type: "string"
      - name: "receiverId"
        in: "query"
        description: "Identifies the service provider to whom this request must be\
          \ directed."
        required: true
        type: "string"
      - name: "senderCell"
        in: "query"
        description: "The cellphone number of the sender of the funds. This field\
          \ is required by some providers. This must conform to the ITU E.164 numbering\
          \ plan (https://www.itu.int/rec/T-REC-E.164/en) e.g. 27821234567 for a South\
          \ Africa number."
        required: false
        type: "string"
      - name: "recipientCell"
        in: "query"
        description: "The cellphone number of the recipient of the funds. This field\
          \ is required by some providers. This must conform to the ITU E.164 numbering\
          \ plan (https://www.itu.int/rec/T-REC-E.164/en) e.g. 27821234567 for a South\
          \ Africa number."
        required: false
        type: "string"
      responses:
        200:
          description: "OK"
          schema:
            $ref: "#/definitions/MoneyTransferFeeQuote"
        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: []
    post:
      summary: "getFeeQuote"
      description: "Returns the fee that will be charged to the customer for the transfer."
      operationId: "getFeeQuote"
      consumes:
      - "application/json"
      produces:
      - "application/json"
      parameters:
      - in: "body"
        name: "body"
        description: "Details necessary to provide a quote."
        required: false
        schema:
          $ref: "#/definitions/MoneyTransferQuoteRequest"
      responses:
        200:
          description: "OK"
          schema:
            $ref: "#/definitions/MoneyTransferFeeQuote"
        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: []
  /orders:
    get:
      summary: "lookupOrder"
      description: "Queries the details of an existing money transfer order."
      operationId: "lookupOrder"
      produces:
      - "application/json"
      parameters:
      - name: "orderRedeemRef"
        in: "query"
        description: "Reference used by the recipient to redeem the order. If both\
          \ this value and remittanceRef are supplied then this takes precedence."
        required: false
        type: "string"
      - name: "merchantId"
        in: "query"
        description: "The assigned merchant identifier. Also known as card acceptor\
          \ id."
        required: false
        type: "string"
      - name: "originatorInstId"
        in: "query"
        description: "Identifies the institution from which the transaction originates.\
          \ Value to be assigned by Electrum."
        required: false
        type: "string"
      - name: "receiverId"
        in: "query"
        description: "Identifies the service provider to whom this request must be\
          \ directed."
        required: true
        type: "string"
      - name: "settlementEntityId"
        in: "query"
        description: "Identifies the entity with whom the Merchant will settle the\
          \ transaction."
        required: false
        type: "string"
      - name: "remittanceRef"
        in: "query"
        description: "Reference used by the recipient to refer to the order when no\
          \ redemption is to occur (e.g. direct account deposits). If both this value\
          \ and orderRedeemRef are supplied then orderRedeemRef takes precedence."
        required: false
        type: "string"
      responses:
        200:
          description: "OK"
          schema:
            $ref: "#/definitions/MoneyTransferLookupResponse"
        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: []
    post:
      summary: "createOrder"
      description: "Requests that an order be created for the specified payment amount.\
        \ The request is treated as an online financial authorization message. If\
        \ the client calling this resource does not receive a response, then a `reversePayment`\
        \ call must be made to the `/orders/reversals` resource to ensure the transaction\
        \ is cancelled with no financial impact."
      operationId: "createOrder"
      consumes:
      - "application/json"
      produces:
      - "application/json"
      parameters:
      - in: "body"
        name: "body"
        description: "A message containing the data required to carry out the payment\
          \ order, as well as information about the point-of-sale from which the transaction\
          \ originates."
        required: true
        schema:
          $ref: "#/definitions/MoneyTransferAuthRequest"
      responses:
        200:
          description: "successful operation"
          schema:
            $ref: "#/definitions/MoneyTransferAuthResponse"
        201:
          description: "Created"
          schema:
            $ref: "#/definitions/MoneyTransferAuthResponse"
        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: []
  /orders/cancel:
    post:
      summary: "cancelOrder"
      description: "Requests that an order be cancelled and that a sender be refunded.\
        \ This requested is treated as an online message. If no response is received,\
        \ the cancellation will be reversed."
      operationId: "cancelOrder"
      consumes:
      - "application/json"
      produces:
      - "application/json"
      parameters:
      - in: "body"
        name: "body"
        description: "A message containing the data required to cancel a payment order,\
          \ as well as information about the point-of-sale from which the transaction\
          \ originates."
        required: true
        schema:
          $ref: "#/definitions/MoneyTransferOrderCancelRequest"
      responses:
        200:
          description: "Ok"
          schema:
            $ref: "#/definitions/MoneyTransferOrderCancelResponse"
        400:
          description: "Bad request"
          schema:
            $ref: "#/definitions/ErrorDetail"
        404:
          description: "Not Found"
          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: []
  /orders/cancel/reversals:
    post:
      summary: "cancelOrderReversal"
      description: "Requests that a cancellation be reversed. This is treated as a\
        \ store-and-forward transaction. Upon receipt, it's recommended that implementors\
        \ respond immediately to acknowledge receipt and place the message on a queue\
        \ for guaranteed delivery to the service provider."
      operationId: "cancelOrderReversal"
      consumes:
      - "application/json"
      produces:
      - "application/json"
      parameters:
      - in: "body"
        name: "body"
        description: "A message containing the data required to reverse an order cancellation."
        required: true
        schema:
          $ref: "#/definitions/MoneyTransferCancelOrderReversal"
      responses:
        200:
          description: "OK"
          schema:
            $ref: "#/definitions/MoneyTransferCancelOrderReversal"
        202:
          description: "Accepted"
          schema:
            $ref: "#/definitions/MoneyTransferCancelOrderReversal"
        400:
          description: "Bad request"
          schema:
            $ref: "#/definitions/ErrorDetail"
        404:
          description: "Not Found"
          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: []
  /orders/confirmations:
    post:
      summary: "confirmPayment"
      description: "Advises that a money transfer payment has been made successfully.\
        \ This is treated as a store-and-forward transaction. Upon receipt, the Electrum\
        \ service will respond immediately to acknowledge receipt and place the message\
        \ on a queue for guaranteed delivery to the service provider. If the service\
        \ provider does not support positive advice messages, then this is simply\
        \ stored for reporting purposes."
      operationId: "confirmPayment"
      consumes:
      - "application/json"
      produces:
      - "application/json"
      parameters:
      - in: "body"
        name: "body"
        description: "A payment confirmation."
        required: true
        schema:
          $ref: "#/definitions/MoneyTransferConfirmation"
      responses:
        200:
          description: "successful operation"
          schema:
            $ref: "#/definitions/MoneyTransferConfirmation"
        202:
          description: "Accepted"
          schema:
            $ref: "#/definitions/MoneyTransferConfirmation"
        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: []
  /orders/redemptions:
    post:
      summary: "redeemOrder"
      description: "Requests that an existing order be paid out to the recipient.\
        \ The request is treated as an online financial authorization message. If\
        \ the client calling this resource does not receive a response, then a `reverseRedeem`\
        \ call must be made to the `/orders/redemptions/reversals` resource to ensure\
        \ the transaction is cancelled with no financial impact."
      operationId: "redeemOrder"
      consumes:
      - "application/json"
      produces:
      - "application/json"
      parameters:
      - in: "body"
        name: "body"
        description: "A message containing the data required to redeem the order,\
          \ as well as information about the point-of-sale from which the transaction\
          \ originates."
        required: true
        schema:
          $ref: "#/definitions/MoneyTransferRedeemRequest"
      responses:
        200:
          description: "successful operation"
          schema:
            $ref: "#/definitions/MoneyTransferRedeemResponse"
        201:
          description: "OK"
          schema:
            $ref: "#/definitions/MoneyTransferRedeemResponse"
        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: []
  /orders/redemptions/confirmations:
    post:
      summary: "confirmRedeem"
      description: "Advises that a money transfer order has been successfully redeemed.\
        \ This is treated as a store-and-forward transaction. Upon receipt, the Electrum\
        \ service will respond immediately to acknowledge receipt and place the message\
        \ on a queue for guaranteed delivery to the service provider. If the service\
        \ provider does not support positive advice messages, then this is simply\
        \ stored for reporting purposes."
      operationId: "confirmRedeem"
      consumes:
      - "application/json"
      produces:
      - "application/json"
      parameters:
      - in: "body"
        name: "body"
        description: "A redemption confirmation."
        required: true
        schema:
          $ref: "#/definitions/MoneyTransferConfirmation"
      responses:
        200:
          description: "successful operation"
          schema:
            $ref: "#/definitions/MoneyTransferConfirmation"
        202:
          description: "Accepted"
          schema:
            $ref: "#/definitions/MoneyTransferConfirmation"
        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: []
  /orders/redemptions/reversals:
    post:
      summary: "reverseRedeem"
      description: "Requests that a money transfer redemption be reversed. This is\
        \ treated as a store-and-forward transaction. Upon receipt, the Electrum service\
        \ will respond immediately to acknowledge receipt and place the message on\
        \ a queue for guaranteed delivery to the service provider."
      operationId: "reverseRedeem"
      consumes:
      - "application/json"
      produces:
      - "application/json"
      parameters:
      - in: "body"
        name: "body"
        description: "A redemption reversal."
        required: true
        schema:
          $ref: "#/definitions/MoneyTransferReversal"
      responses:
        200:
          description: "successful operation"
          schema:
            $ref: "#/definitions/MoneyTransferReversal"
        202:
          description: "Accepted"
          schema:
            $ref: "#/definitions/MoneyTransferReversal"
        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: []
  /orders/reversals:
    post:
      summary: "reversePayment"
      description: "Requests that a money transfer payment be reversed. This is treated\
        \ as a store-and-forward transaction. Upon receipt, the Electrum service will\
        \ respond immediately to acknowledge receipt and place the message on a queue\
        \ for guaranteed delivery to the service provider."
      operationId: "reversePayment"
      consumes:
      - "application/json"
      produces:
      - "application/json"
      parameters:
      - in: "body"
        name: "body"
        description: "A payment reversal."
        required: true
        schema:
          $ref: "#/definitions/MoneyTransferReversal"
      responses:
        200:
          description: "successful operation"
          schema:
            $ref: "#/definitions/MoneyTransferReversal"
        202:
          description: "Accepted"
          schema:
            $ref: "#/definitions/MoneyTransferReversal"
        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: []
  /orders/status:
    put:
      summary: "orderStatus"
      description: "Advises of a change in an order's status."
      operationId: "updateOrderStatus"
      consumes:
      - "application/json"
      parameters:
      - in: "body"
        name: "body"
        description: "The new status of the order."
        required: true
        schema:
          $ref: "#/definitions/MoneyTransferOrderStatusUpdateRequest"
      responses:
        204:
          description: "No Content"
        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: []
securityDefinitions:
  httpBasic:
    description: "All requests require HTTP basic authentication, where user name\
      \ equals the value used in
                    client.id and password has been\
      \ agreed with Electrum."
    type: "basic"
definitions:
  Account:
    type: "object"
    required:
    - "accountId"
    - "type"
    discriminator: "type"
    properties:
      accountId:
        type: "string"
        description: "The ID of this account e.g. service provider's customer's account\
          \ number, a bank account number, an IBAN number or a mobile wallet's MSISDN."
      type:
        type: "string"
        description: "The specific type of account. By default this is simply ACCOUNT\
          \ which only carries an account number."
        enum:
        - "ACCOUNT"
        - "BANK"
        - "IBAN"
        - "SWIFT"
        - "IFSC"
        - "MOBILE_WALLET"
        - "CASH_PICKUP"
    description: "Base model for all account types"
  Address:
    type: "object"
    properties:
      addressLine1:
        type: "string"
        description: "First line of street address."
      addressLine2:
        type: "string"
        description: "Second line of street address (if required)."
      city:
        type: "string"
      province:
        type: "string"
      country:
        type: "string"
        description: "Country expressed as an ISO 3166-1 Alpha-2 code"
        minLength: 2
        maxLength: 2
      postCode:
        type: "string"
    description: "Details of a customer's address"
  BankAccount:
    allOf:
    - $ref: "#/definitions/Account"
    - type: "object"
      properties:
        routingCode:
          type: "string"
          description: "The routing code for the particular bank account."
      description: "A model to describe bank accounts"
  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."
  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"
    properties:
      errorType:
        type: "string"
        description: "The type of error that occurred"
        enum:
        - "TRANSACTION_NOT_ALLOWED_FOR_MERCHANT"
        - "ALREADY_REDEEMED"
        - "PIN_RETRIES_EXCEEDED"
        - "INCORRECT_PIN"
        - "UNABLE_TO_REDEEM"
        - "INVALID_REDEEM_REF"
        - "DAILY_LIMIT_EXCEEDED"
        - "MONTHLY_LIMIT_EXCEEDED"
        - "PROVIDER_SYSTEM_ERROR"
        - "CUSTOMER_CHECK_FAILED"
        - "DUPLICATE_RECORD"
        - "FORMAT_ERROR"
        - "SYSTEM_ERROR"
        - "TRANSACTION_DECLINED"
        - "INVALID_AMOUNT"
        - "ROUTING_ERROR"
        - "TRANSACTION_NOT_SUPPORTED"
        - "UNABLE_TO_LOCATE_RECORD"
        - "UPSTREAM_UNAVAILABLE"
        - "AUTHENTICATION_ERROR"
        - "INVALID_MERCHANT"
        - "TRANSACTION_LIMIT_EXCEEDED"
      errorMessage:
        type: "string"
        description: "A description of the error"
        minLength: 0
        maxLength: 80
      id:
        type: "string"
        description: "The UUID of the message for which the 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."
      providerErrorCode:
        type: "string"
        description: "The error code returned by the service provider. Note that this\
          \ should be used for informational purposes only. Messages displayed on\
          \ the POS should make use of errorType and errorMessage to ensure a consistent\
          \ set of responses."
      providerErrorMessage:
        type: "string"
        description: "The error message returned by the service provider. Note that\
          \ this should be used for informational purposes only. Messages displayed\
          \ on the POS should make use of errorType and errorMessage to ensure a consistent\
          \ set of responses."
    description: "Represents the outcome of an unsuccessful transaction."
  ExchangeRate:
    type: "object"
    required:
    - "fromCurrency"
    - "rate"
    - "toCurrency"
    properties:
      rate:
        type: "number"
        description: "The exchange rate expressed as the ratio of fromCurrency : toCurrency."
      fromCurrency:
        type: "string"
        description: "The currency which amounts are converted from. One unit of this\
          \ currency multiplied by the rate is equal to one unit of the toCurrency.\
          \ This currency is expressed as a three digit number as specified in ISO\
          \ 4217, e.g. South African Rand is encoded as 710."
        pattern: "[0-9]{3}"
      toCurrency:
        type: "string"
        description: "The currency which amounts are converted to. One unit of this\
          \ currency multiplied by the rate is equal to one unit of the fromCurrency.\
          \ This currency is expressed as a three digit number as specified in ISO\
          \ 4217, e.g. South African Rand is encoded as 710."
        pattern: "[0-9]{3}"
    description: "An object describing the exchange rate from one currency to another."
  FeeQuote:
    type: "object"
    required:
    - "feeAmount"
    - "totalAmount"
    - "transferAmount"
    properties:
      feeAmount:
        description: "The fee to be charged for the transaction."
        $ref: "#/definitions/LedgerAmount"
      transferAmount:
        description: "The amount to be transferred to the recipient."
        $ref: "#/definitions/LedgerAmount"
      totalAmount:
        description: "Total amount payable by the sender, including fee."
        $ref: "#/definitions/LedgerAmount"
  IbanAccount:
    allOf:
    - $ref: "#/definitions/Account"
    - type: "object"
      properties: {}
      description: "A model to describe IBAN accounts. Such accounts consist of just\
        \ an account number."
  IfscAccount:
    allOf:
    - $ref: "#/definitions/Account"
    - type: "object"
      properties:
        ifscCode:
          type: "string"
          description: "The IFSC code for the particular bank account."
      description: "A model to describe IFSC (Indian Financial System Code) accounts"
  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"
  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"
  MobileWalletAccount:
    allOf:
    - $ref: "#/definitions/Account"
    - type: "object"
      properties: {}
      description: "A model to describe mobile wallet accounts. Such accounts consist\
        \ of just an account number. This account number is typically the customer's\
        \ MSISDN."
  MoneyTransferAdminMessage:
    type: "object"
    required:
    - "originator"
    - "receiver"
    properties:
      originator:
        $ref: "#/definitions/Originator"
      receiver:
        $ref: "#/definitions/Institution"
      customerDetails:
        $ref: "#/definitions/PersonalDetails"
      customerProfileId:
        type: "string"
        description: "Uniquely identifies customer's profile on the upstream entity's\
          \ system."
    description: "Used to transfer data in calls to the /admin/customers resource."
  MoneyTransferAuthRequest:
    type: "object"
    required:
    - "amount"
    - "client"
    - "id"
    - "originator"
    - "senderDetails"
    - "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/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."
      amount:
        description: "The amount to be transferred."
        $ref: "#/definitions/LedgerAmount"
      senderDetails:
        description: "Personal details of a customer."
        $ref: "#/definitions/PersonalDetails"
      recipientDetails:
        description: "Personal details of the intended recipient. Conditionally optional\
          \ - please confirm with your integration partner whether this is required."
        $ref: "#/definitions/PersonalDetails"
      pin:
        description: "The encrypted PIN to be used by the recipient to redeem the\
          \ order."
        $ref: "#/definitions/EncryptedPin"
      customerProfileId:
        type: "string"
        description: "Uniquely identifies customer's profile on the upstream entity's\
          \ system."
      newCustomer:
        type: "boolean"
        description: "An optional flag indicating whether the customer placing the\
          \ order is already registered on the provider's system."
        default: false
      fee:
        description: "The fee that will be charged on this transaction, as accepted\
          \ by the sender."
        $ref: "#/definitions/LedgerAmount"
      quoteId:
        type: "string"
        description: "The value returned in a previous MoneyTransferFeeQuoteResponse\
          \ object. This allows a specific money transfer order to be linked to a\
          \ specific quote."
      purposeOfRemittance:
        type: "string"
        description: "The reason the sender is performing a money transfer. This may\
          \ be tracked for compliance/reporting purposes."
        enum:
        - "FAMILY_SUPPORT"
        - "EDUCATION"
        - "GIFT_AND_DONATION"
        - "MEDICAL_TREATMENT"
        - "MAINTENANCE_EXPENSES"
        - "TRAVEL"
        - "OTHER"
      recipientRelationship:
        type: "string"
        description: "The recipientRelationship between the sender and recipient of\
          \ the money transfer. This may be tracked for compliance/reporting purposes."
        enum:
        - "PARENT"
        - "CHILD"
        - "SPOUSE"
        - "IN_LAWS"
        - "RELATIVE"
        - "FRIEND_FAMILY"
        - "EMPLOYEE_FAMILY"
        - "FRIEND"
        - "EMPLOYEE"
        - "SUPPLIER"
        - "SERVICE_PROVIDER"
        - "DONOR_RECEIVER_OF_CHARITABLE_FUNDS"
        - "TRADE_BUSINESS_PARTNER"
    description: "Used to submit data in a call to the createOrder operation."
  MoneyTransferAuthResponse:
    type: "object"
    required:
    - "amount"
    - "client"
    - "id"
    - "originator"
    - "senderDetails"
    - "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/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."
      amount:
        $ref: "#/definitions/LedgerAmount"
      senderDetails:
        $ref: "#/definitions/PersonalDetails"
      orderRedeemRef:
        type: "string"
        description: "Reference used by the recipient to redeem the order. This must\
          \ be printed on the receipt."
      orderRedeemRefAlt:
        type: "string"
        description: "An alternate reference used by the recipient to redeem the order.\
          \ This must be printed on the receipt."
      orderId:
        type: "string"
        description: "Reference used by the service provider to uniquely identify\
          \ the money transfer order on their system. This field can be used if the\
          \ provider supplies a supplementary reference for the order in addition\
          \ to the orderRedeemRef. Note that any reference issued by the provider\
          \ that is specific to a particular leg of the order process should be set\
          \ as a ThirdPartyIdentifier (i.e. the authorization and redeem legs of the\
          \ order should each have its own reference)."
      customerProfileId:
        type: "string"
        description: "Uniquely identifies customer's profile on the upstream entity's\
          \ system."
    description: "Contains the data returned by a call to the createOrder operation."
  MoneyTransferCancelOrderReversal:
    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."
      reversalReason:
        type: "string"
        description: "The reason for the reversal"
        enum:
        - "TIMEOUT"
        - "CANCELLED"
        - "RESPONSE_NOT_FINAL"
    description: "An advice that notifies that the outcome of an authorisation transaction\
      \ be reversed. This can be either due to cashier cancellation, or upstream timeout."
  MoneyTransferConfirmation:
    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."
    description: "An advice that notifies of the positive completion of a transaction."
  MoneyTransferFeeQuote:
    type: "object"
    required:
    - "originator"
    - "receiver"
    properties:
      originator:
        $ref: "#/definitions/Originator"
      receiver:
        $ref: "#/definitions/Institution"
      settlementEntity:
        description: "Data relating to the entity with whom the Merchant will settle\
          \ the transaction."
        $ref: "#/definitions/Institution"
      feeQuote:
        description: "Contains details of the fee that will be charged for the transfer."
        $ref: "#/definitions/FeeQuote"
      senderDetails:
        description: "Contains details of the sender of the money transfer funds."
        $ref: "#/definitions/PersonalDetails"
      recipientDetails:
        description: "Contains details of the recipient of the money transfer funds."
        $ref: "#/definitions/PersonalDetails"
      quoteId:
        type: "string"
        description: "A reference to this quote. This maybe provided when an order\
          \ is created to link an order to a specific quote."
      expiryDateTime:
        type: "string"
        format: "date-time"
        description: "The date and time when the quote expires."
  MoneyTransferLookupResponse:
    type: "object"
    required:
    - "amount"
    - "originator"
    - "receiver"
    properties:
      amount:
        $ref: "#/definitions/LedgerAmount"
      status:
        type: "string"
        description: "The status of the order"
        enum:
        - "UNREDEEMED"
        - "REDEEMED"
        - "CANCELLED"
        - "EXPIRED"
        - "ON_HOLD"
        - "UNCONFIRMED"
      statusDescription:
        type: "string"
        description: "The detailed description of the status of an order"
      originator:
        $ref: "#/definitions/Originator"
      receiver:
        $ref: "#/definitions/Institution"
      orderRedeemRef:
        type: "string"
        description: "Reference used by the recipient to redeem the order. This must\
          \ be printed on the receipt."
      orderRedeemRefAlt:
        type: "string"
        description: "An alternate reference used by the recipient to redeem the order.\
          \ This must be printed on the receipt."
      orderId:
        type: "string"
        description: "Reference used by the service provider to uniquely identify\
          \ the money transfer order on their system. This field can be used if the\
          \ provider supplies a supplementary reference for the order in addition\
          \ to the orderRedeemRef. Note that any reference issued by the provider\
          \ that is specific to a particular leg of the order process should be set\
          \ as a ThirdPartyIdentifier (i.e. the authorization and redeem legs of the\
          \ order should each have its own reference)."
    description: "Contains the data returned by a call to the lookupOrder operation."
  MoneyTransferOrderCancelRequest:
    type: "object"
    required:
    - "client"
    - "id"
    - "orderRedeemRef"
    - "orderRedeemRefAlt"
    - "originator"
    - "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/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."
      orderRedeemRef:
        type: "string"
        description: "The reference used to identify the order which should be cancelled."
      orderRedeemRefAlt:
        type: "string"
        description: "An alternate reference used to identify the order which should\
          \ be cancelled."
      pin:
        description: "If required, the same pin which would have been used to redeem\
          \ the order, should be supplied to cancel the order."
        $ref: "#/definitions/EncryptedPin"
      idNumber:
        type: "string"
        description: "The ID Number of the sender. This is the same ID Number used\
          \ when creating the order."
    description: "Used to submit data in a call to the cancelOrder operation."
  MoneyTransferOrderCancelResponse:
    type: "object"
    required:
    - "amount"
    - "client"
    - "id"
    - "orderId"
    - "orderRedeemRef"
    - "orderRedeemRefAlt"
    - "originator"
    - "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/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."
      amount:
        $ref: "#/definitions/LedgerAmount"
      orderRedeemRef:
        type: "string"
        description: "The reference used to identify the order which should be cancelled."
      orderRedeemRefAlt:
        type: "string"
        description: "An alternate reference used to identify the order which should\
          \ be cancelled."
      orderId:
        type: "string"
        description: "Reference used by the service provider to uniquely identify\
          \ the money transfer order on their system. This field can be used if the\
          \ provider supplies a supplementary reference for the order in addition\
          \ to the orderRedeemRef. Note that any reference issued by the provider\
          \ that is specific to a particular leg of the order process should be set\
          \ as a ThirdPartyIdentifier (i.e. the authorization and redeem legs of the\
          \ order should each have its own reference)."
    description: "Used to submit data in a response to the cancelOrder operation."
  MoneyTransferOrderStatusUpdateRequest:
    type: "object"
    required:
    - "status"
    - "updateTime"
    properties:
      updateTime:
        type: "string"
        format: "date-time"
        description: "The date and time at which the order was updated on the money\
          \ transfer service provider's system. This is relevant so that if multiple\
          \ status updates were sent, but delivered out of order, the receiving system\
          \ can ignore any older status updates. The format shall be as defined for\
          \ date-time in RFC 3339 section 5.6. It is recommended that the optional\
          \ time-secfrac be included up to millisecond precision."
      orderRedeemRef:
        type: "string"
        description: "Reference used by the recipient to redeem the order. (this is\
          \ the same as the query param in the lookupOrder operation). Should be supplied\
          \ if remittanceRef is not supplied."
      remittanceRef:
        type: "string"
        description: "Reference for a remittance transaction. Should be supplied if\
          \ orderRedeemRef is not supplied."
      status:
        type: "string"
        description: "The new status of the order."
        enum:
        - "UNREDEEMED"
        - "REDEEMED"
        - "CANCELLED"
        - "EXPIRED"
        - "ON_HOLD"
        - "UNCONFIRMED"
      statusDescription:
        type: "string"
        description: "The new detailed description of the status of an order."
      originator:
        description: "Data relating to the originator of the transaction."
        $ref: "#/definitions/Originator"
      client:
        description: "Data relating to the sender of MoneyTransferOrderStatusUpdateRequest."
        $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"
      amount:
        description: "The order amount."
        $ref: "#/definitions/LedgerAmount"
      senderDetails:
        $ref: "#/definitions/PersonalDetails"
      orderRedeemRefAlt:
        type: "string"
        description: "An alternate reference used by the recipient to redeem the order.\
          \ This must be printed on the receipt."
      orderId:
        type: "string"
        description: "Reference used by the service provider to uniquely identify\
          \ the money transfer order on their system. This field can be used if the\
          \ provider supplies a supplementary reference for the order in addition\
          \ to the orderRedeemRef. Note that any reference issued by the provider\
          \ that is specific to a particular leg of the order process should be set\
          \ as a ThirdPartyIdentifier (i.e. the authorization and redeem legs of the\
          \ order should each have its own reference)."
      customerProfileId:
        type: "string"
        description: "Uniquely identifies customer's profile on the upstream entity's\
          \ system."
    description: "Used to describe a change to the status of an order."
  MoneyTransferQuoteRequest:
    type: "object"
    required:
    - "amount"
    - "amountIncludesFees"
    - "originator"
    - "receiver"
    properties:
      originator:
        description: "The location where the money transfer is being initiated."
        $ref: "#/definitions/Originator"
      receiver:
        description: "The service provider who is to effect the money transfer."
        $ref: "#/definitions/Institution"
      settlementEntity:
        description: "Data relating to the entity with whom the Merchant will settle\
          \ the transaction."
        $ref: "#/definitions/Institution"
      senderDetails:
        description: "Contains details of the sender of the money transfer funds."
        $ref: "#/definitions/PersonalDetails"
      recipientDetails:
        description: "Contains details of the recipient of the money transfer funds."
        $ref: "#/definitions/PersonalDetails"
      amount:
        description: "The amount to be transferred. Whether this is the amount the\
          \ sender pays or the amount the recipient is to receive is determined by\
          \ the amountIncludesFees flag."
        $ref: "#/definitions/LedgerAmount"
      amountIncludesFees:
        type: "boolean"
        description: "Indicates whether the amount in this MoneyTransferQuoteRequest\
          \ is the amount the sender is willing to pay (false) or the amount the recipient\
          \ is to receive (true)."
        default: false
  MoneyTransferRedeemRequest:
    type: "object"
    required:
    - "client"
    - "id"
    - "orderRedeemRef"
    - "originator"
    - "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/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."
      amount:
        $ref: "#/definitions/LedgerAmount"
      pin:
        description: "The encrypted PIN to be used by the recipient to redeem the\
          \ order."
        $ref: "#/definitions/EncryptedPin"
      orderRedeemRef:
        type: "string"
        description: "Reference used by the recipient to redeem the order."
      recipientDetails:
        description: "Personal details of the intended recipient. Conditionally optional\
          \ - please confirm with your integration partner whether this is required."
        $ref: "#/definitions/PersonalDetails"
      customerProfileId:
        type: "string"
        description: "Uniquely identifies customer's profile on the upstream entity's\
          \ system."
      cashierComment:
        type: "string"
        description: "This field may be used by the cashier to comment on any suspicious\
          \ behaviour observed during the redemption."
        minLength: 0
        maxLength: 256
    description: "Used to submit data in a call to the redeemOrder operation."
  MoneyTransferRedeemResponse:
    type: "object"
    required:
    - "amount"
    - "client"
    - "id"
    - "orderId"
    - "originator"
    - "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/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."
      amount:
        $ref: "#/definitions/LedgerAmount"
      orderId:
        type: "string"
        description: "Reference used by the service provider to uniquely identify\
          \ the money transfer order on their system. This field can be used if the\
          \ provider supplies a supplementary reference for the order in addition\
          \ to the orderRedeemRef. Note that any reference issued by the provider\
          \ that is specific to a particular leg of the order process should be set\
          \ as a ThirdPartyIdentifier (i.e. the authorization and redeem legs of the\
          \ order should each have its own reference)."
      customerProfileId:
        type: "string"
        description: "Uniquely identifies customer's profile on the upstream entity's\
          \ system."
    description: "Contains the data returned by a call to the redeemOrder operation."
  MoneyTransferReversal:
    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."
      reversalReason:
        type: "string"
        description: "The reason for the reversal"
        enum:
        - "TIMEOUT"
        - "CANCELLED"
        - "RESPONSE_NOT_FINAL"
    description: "An advice that notifies that the outcome of an authorisation transaction\
      \ be reversed. This can be either due to cashier cancellation, or upstream timeout."
  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"
    description: "The Originator object encapsulates data relating to the originator\
      \ of the transaction"
  PersonalDetails:
    type: "object"
    properties:
      firstName:
        type: "string"
        description: "The person's first name(s)"
      lastName:
        type: "string"
        description: "The person's last name"
      address:
        $ref: "#/definitions/Address"
      idNumber:
        type: "string"
        description: "Individual's identification number as per presented identification\
          \ document"
      idType:
        type: "string"
        description: "Type of presented identification document"
        enum:
        - "NATIONAL_ID"
        - "PASSPORT"
        - "DRIVERS_LICENCE"
        - "ASYLUM_DOCUMENT"
        - "UNKNOWN"
      idCountryCode:
        type: "string"
        description: "Country of issue of presented identification document, expressed\
          \ as an ISO 3166-1 Alpha-2 country code"
        minLength: 2
        maxLength: 2
      nationality:
        type: "string"
        description: "Nationality expressed as an ISO 3166-1 Alpha-2 country code"
        minLength: 2
        maxLength: 2
      dateOfBirth:
        type: "string"
        description: "Date of birth"
      contactNumber:
        type: "string"
        description: "Mobile phone number of the customer to which the outcome of\
          \ a transaction can be communicated. This must conform to the ITU E.164\
          \ numbering plan (https://www.itu.int/rec/T-REC-E.164/en)."
        pattern: "^\+?[1-9]\d{1,14}"
      altContactWork:
        type: "string"
        description: "An alternative work contact number. This must conform to the\
          \ ITU E.164 numbering plan (https://www.itu.int/rec/T-REC-E.164/en)."
        pattern: "^\+?[1-9]\d{1,14}"
      altContactHome:
        type: "string"
        description: "An alternative home contact number. This must conform to the\
          \ ITU E.164 numbering plan (https://www.itu.int/rec/T-REC-E.164/en)."
        pattern: "^\+?[1-9]\d{1,14}"
      email:
        type: "string"
        description: "The person's email address"
      accountDetails:
        description: "The person's account details."
        $ref: "#/definitions/Account"
      idIssuedDate:
        type: "string"
        format: "date-time"
        description: "The date and time when the person's form of ID was issued."
      idExpiryDate:
        type: "string"
        format: "date-time"
        description: "The date and time when the person's form of ID expires."
      culturalName:
        type: "string"
        description: "The person's full name in their native alphabet."
      sourceOfIncome:
        type: "string"
        description: "The source of the funds used for the money transfer."
        enum:
        - "SALARIED"
        - "PERSONAL_INCOME"
        - "LOAN"
        - "BUSINESS"
        - "SAVINGS"
        - "OTHER"
      occupation:
        type: "string"
        description: "The person's occupation."
        enum:
        - "BUSINESSMAN"
        - "PROFESSIONAL"
        - "HOUSE_WIFE"
        - "GENERAL_WORKER"
        - "OTHER"
    description: "Pesonal details of a customer."
  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"
  SwiftAccount:
    allOf:
    - $ref: "#/definitions/Account"
    - type: "object"
      properties:
        swiftCode:
          type: "string"
          description: "The swift code for the particular bank account."
      description: "A model to describe SWIFT accounts"
  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."