Ozow Payments API

Create and initiate instant EFT payment requests.

OpenAPI Specification

ozow-payments-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Ozow Banks Payments API
  description: Ozow (formerly i-Pay) is a South African instant EFT / "Pay by Bank" payment gateway. Merchants create a payment request server-side, redirect the customer to the Ozow secure bank-selection flow, and receive a server-to-server notification plus browser redirect on completion. All write requests are authenticated with an ApiKey header and a SHA512 HashCheck computed by concatenating the request fields in documented order, appending the merchant PrivateKey, lower-casing, and hashing. Transactions are ZAR-only (CountryCode ZA, CurrencyCode ZAR).
  termsOfService: https://ozow.com/terms-and-conditions
  contact:
    name: Ozow Support
    email: support@ozow.com
    url: https://hub.ozow.com/docs
  version: '1.0'
servers:
- url: https://api.ozow.com
  description: Production
- url: https://stagingapi.ozow.com
  description: Staging / sandbox (also driven by the IsTest flag)
tags:
- name: Payments
  description: Create and initiate instant EFT payment requests.
paths:
  /postpaymentrequest:
    post:
      operationId: postPaymentRequest
      tags:
      - Payments
      summary: Create a payment request
      description: Creates an instant EFT payment request and returns a redirect URL to the Ozow secure bank-selection page. The HashCheck is computed over SiteCode, CountryCode, CurrencyCode, Amount, TransactionReference, BankReference, Cancel/Error/Success/Notify URLs and IsTest, with the merchant PrivateKey appended.
      security:
      - ApiKey: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PaymentRequest'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/PaymentRequest'
      responses:
        '200':
          description: Payment request created.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentResponse'
        '400':
          description: Invalid request or hash mismatch.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
components:
  schemas:
    PaymentRequest:
      type: object
      required:
      - SiteCode
      - CountryCode
      - CurrencyCode
      - Amount
      - TransactionReference
      - BankReference
      - HashCheck
      properties:
        SiteCode:
          type: string
          description: Merchant site code from the Ozow dashboard.
        CountryCode:
          type: string
          enum:
          - ZA
          description: Two-letter country code. Only ZA (South Africa) is supported.
        CurrencyCode:
          type: string
          enum:
          - ZAR
          description: Three-letter currency code. Only ZAR is supported.
        Amount:
          type: number
          format: double
          description: Transaction amount in ZAR (e.g. 25.01).
        TransactionReference:
          type: string
          description: Unique merchant reference used to match the transaction.
        BankReference:
          type: string
          description: Reference shown on the customer bank statement (max ~20 chars).
        Optional1:
          type: string
        Optional2:
          type: string
        Optional3:
          type: string
        Optional4:
          type: string
        Optional5:
          type: string
        Customer:
          type: string
          description: Optional customer name/identifier.
        CancelUrl:
          type: string
          format: uri
        ErrorUrl:
          type: string
          format: uri
        SuccessUrl:
          type: string
          format: uri
        NotifyUrl:
          type: string
          format: uri
          description: Server-to-server notification (POST) callback URL.
        IsTest:
          type: boolean
          description: When true, routes the request through the Ozow test flow.
        HashCheck:
          type: string
          description: SHA512 hex hash of the concatenated request fields (in documented order) with the merchant PrivateKey appended, lower-cased.
    PaymentResponse:
      type: object
      properties:
        paymentRequestId:
          type: string
          description: Ozow-generated payment request id (GUID).
        url:
          type: string
          format: uri
          description: Redirect URL to the Ozow secure bank-selection page.
        errorMessage:
          type: string
          nullable: true
    ErrorResponse:
      type: object
      properties:
        errorMessage:
          type: string
        errorCode:
          type: string
  securitySchemes:
    ApiKey:
      type: apiKey
      in: header
      name: ApiKey
      description: Merchant API key issued in the Ozow merchant dashboard (dash.ozow.com). Sent alongside a SHA512 HashCheck field computed with the merchant PrivateKey.
    BearerToken:
      type: http
      scheme: bearer
      description: OAuth-style bearer token obtained from the Ozow token endpoint, used by the Refunds and Payouts APIs. Tokens are reusable until expiry.