Ozow Hub
On this page5 sections

Deprecated integration

This page covers the deprecated Payments API. For new integrations, use Customer identity verification on OneAPI.

Only mandatory for high-risk merchants.

Ozow tells you during onboarding if your business is classified as high-risk. If it isn't, you don't need to implement this. For who must comply and when, see Customer identity verification requirements.

Customer identity verificationCustomer Identity Verification Checking that the payment instrument belongs to the natural person making the payment. Ozow requires it for merchants it has classified as high-risk, on Pay by Bank, Absa Pay, Capitec Pay, Nedbank Direct EFT, FNB Payment Requests and PayShap Request, and can disable those methods where it is not implemented correctly. confirms that the payment instrument belongs to the person making the payment. You verify your customer when they sign up on your platform, then pass their verified South African ID number or foreign passport number to Ozow with every payment request. Ozow uses it to decide which payment methods and banks to show that customer.

How it works

  • Verify the customer at signup: verify your customer's identity when they create an account on your platform, using any third-party KYC provider.
  • Store the verified number: save the verified SA ID or foreign passport number against the customer's account. Customers must not be able to edit it without prompting re-KYC.
  • Pass it with every payment: send the number in customerIdentifier on every payment request, and include it in the hash.
  • Ozow filters the payment methods: Ozow shows only the payment methods and banks linked to that identity number.

What the customer sees

These payment methods use the identity number: Pay by BankPay by Bank The payer authorises the payment inside their own banking app or online banking, and the funds move from their bank account. No card is involved and no card details are entered. (all banks), Absa PayAbsa Pay Absa's own payment method, which the customer authorises in their Absa banking app. It gets its own button at checkout rather than sitting inside the bank list, and it requires Customer Identity Verification.Absa, Capitec PayCapitec Pay Capitec's own payment method. The payer gives a cellphone, account or ID number rather than card details, and approves the payment in the Capitec app, so no card number and no banking login is ever entered at checkout. It gets its own button rather than sitting inside the bank list, and it requires Customer Identity Verification.Capitec, Nedbank Direct EFTNedbank Direct EFT Nedbank's own payment method. Like the other bank APIs it gets its own button at checkout rather than sitting inside the bank list, and it requires Customer Identity Verification.Nedbank, FNB Payment Requests and PayShap RequestPayShap Request The request side of PayShap. Rather than the payer pushing money, the payee asks for it: the payer receives a request and approves it in their own banking app, and the funds move once they do. Enabled by Ozow on request rather than by default.payshap.co.za.

What you send What the customer sees
A verified ID linked to an account at the bank The bank or method is shown
A verified ID with no linked account at the bank That bank or method isn't shown
No ID Every payment method that needs an ID is hidden

For example, a customer with accounts at FNB and Standard Bank sees Pay by Bank for those two banks. Capitec Pay and Absa Pay aren't shown.

Important

If you leave out customerIdentifier, the customer can't select any of the methods above. Send it on every payment request, not only the first one.

Integration guide

Add customerIdentifier to your payment request.

Post the request to https://api.ozow.com/postpaymentrequest (staging: https://stagingapi.ozow.com/postpaymentrequest).

{
  "siteCode": "YOUR_SITE_CODE",
  "countryCode": "ZA",
  "currencyCode": "ZAR",
  "amount": "100.00",
  "transactionReference": "ORDER-001",
  "bankReference": "ABC123",
  "cancelUrl": "https://yourstore.com/cancel",
  "errorUrl": "https://yourstore.com/error",
  "successUrl": "https://yourstore.com/success",
  "notifyUrl": "https://yourstore.com/notify",
  "isTest": false,
  "customerIdentifier": "0000000000000",
  "hashCheck": "YOUR_GENERATED_HASH"
}
Field Type Description
customerIdentifier string The customer's verified South African ID number (13 digits) or foreign passport number

Include it in the hash

customerIdentifier is field 27 in the hash concatenation order. It comes after variableAmountMax (field 26) and before customerCellphoneNumber (field 28).

Only fields with a value go into the hash. If you don't send any of the fields between isTest and customerIdentifier, skip them and add customerIdentifier straight after the last field you do send. If it's missing from the hash or in the wrong position, the hash check fails.

Next steps

Last updated