Request Payout
Try it
Parameters
Bodyapplication/json
Request sample
curl -X POST 'https://payoutsapi.ozow.com/v1/requestpayout' \
-H 'ApiKey: YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-H 'SiteCode: string' \
-d '{
"siteCode": "string",
"amount": 50.2,
"merchantReference": "string",
"customerBankReference": "string",
"isRtc": true,
"notifyUrl": "https://example.com/",
"bankingDetails": {
"bankGroupId": "00000000-0000-0000-0000-000000000000",
"accountNumber": "string",
"branchCode": "string"
},
"hashCheck": "string"
}'Response example
Built from the response schema. Values are placeholders, not real data.
https://payoutsapi.ozow.com/v1/requestpayoutProductionBuild with AI 1 package
A build package is every page for one task, with the API operations they use. Copy the prompt into a coding assistant, or hand it the package itself: slim links to each page, full inlines all of them in one document.
- Send a payoutEverything needed to pay money out to a customer's bank account or voucher with the Payouts API, including how to exercise the failure paths before going live.
Request a payoutPayout Money sent from a merchant to a bank account. Unlike a refund, a payout is not tied to a payment anyone made you, so you can pay anyone with a bank account. Payouts draw on your float rather than on your incoming payments, and they are not self-service: they need approval from Ozow and testing in staging first. of the specified amount to the destination.
Authentication
- API key in the ApiKey header
Header parameters
SiteCodestring requiredA unique code for the site currently in use. A site codeSite code The unique code for a site registered under a merchant. A site is a place to transact: a website, or a branch of a store. A merchant can have several, and each transaction names the one it belongs to, so sending the wrong code files the payment against the wrong place. is generated when adding a site in the Ozow merchant admin section. [Please contact support for SiteCode - support@ozow.com]
max length50
Request body
siteCodestring requiredA unique code for the site currently in use. A site codeSite code The unique code for a site registered under a merchant. A site is a place to transact: a website, or a branch of a store. A merchant can have several, and each transaction names the one it belongs to, so sending the wrong code files the payment against the wrong place. is generated when adding a site in the Ozow merchant admin section. [Please contact support for SiteCode - support@ozow.com]
max length50amountnumber double requiredThe payoutPayout Money sent from a merchant to a bank account. Unlike a refund, a payout is not tied to a payment anyone made you, so you can pay anyone with a bank account. Payouts draw on your float rather than on your incoming payments, and they are not self-service: they need approval from Ozow and testing in staging first. amount in ZARZAR The ISO 4217 code for the South African rand, and the currency every amount on this site is in unless a page says otherwise. Amounts are decimal rand rather than cents, so
100.00is one hundred rand..merchantReferencestring requiredThe merchant's reference for the transaction.
max length20customerBankReferencestring requiredThe reference that will appear on the customer’s bank statement.
Only alphanumeric characters, spaces and dashes are allowed.
max length20pattern^[A-Za-z0-9 -]+isRtcboolean requiredWhether the payoutPayout Money sent from a merchant to a bank account. Unlike a refund, a payout is not tied to a payment anyone made you, so you can pay anyone with a bank account. Payouts draw on your float rather than on your incoming payments, and they are not self-service: they need approval from Ozow and testing in staging first. should be processed as an RTCReal-Time Clearing Payments that clear immediately rather than waiting for a batch. A batch run settles at set times through the day; a Real-Time Clearing payment moves the funds between the two bank accounts as it is made, so the recipient can rely on them straight away.PayInc payout. RTC is not available in the staging environment so should always be set to false when testing in this environment
notifyUrlstring uriThe URL that we should use to post all payoutPayout Money sent from a merchant to a bank account. Unlike a refund, a payout is not tied to a payment anyone made you, so you can pay anyone with a bank account. Payouts draw on your float rather than on your incoming payments, and they are not self-service: they need approval from Ozow and testing in staging first. notifications.
max length150PayoutPayout Money sent from a merchant to a bank account. Unlike a refund, a payout is not tied to a payment anyone made you, so you can pay anyone with a bank account. Payouts draw on your float rather than on your incoming payments, and they are not self-service: they need approval from Ozow and testing in staging first. destination banking details.
Fields of
BankDetailsbankGroupIdstring uuid requiredThe unique bank identifier.
accountNumberstring requiredThe bank account number the payment should be made to. The account number should be encrypted by the encryption method detailed above.
max length21branchCodestring requiredThe destination bank branch codeBranch code The six-digit number identifying a South African bank branch, the equivalent of a sort code or a routing number elsewhere. Each bank publishes one universal branch code that works for every account it holds, which is the one to use unless you have been given another..
max length10
hashCheckstring requiredSHA512SHA-512 A hashing algorithm. Ozow uses it to sign the values in a request or a notification so you can tell that they arrived unaltered and came from us. Hashing is one-way: the hash cannot be turned back into what produced it.Wikipedia hash used to ensure that certain fields in the message have not been altered after the hash was generated. Check the generate hash section in the documentation for more details on how to generate the hash.
Responses
payoutIdstring uuid requiredA unique identifier that should be used to identify the payoutPayout Money sent from a merchant to a bank account. Unlike a refund, a payout is not tied to a payment anyone made you, so you can pay anyone with a bank account. Payouts draw on your float rather than on your incoming payments, and they are not self-service: they need approval from Ozow and testing in staging first..
PayoutPayout Money sent from a merchant to a bank account. Unlike a refund, a payout is not tied to a payment anyone made you, so you can pay anyone with a bank account. Payouts draw on your float rather than on your incoming payments, and they are not self-service: they need approval from Ozow and testing in staging first. status.
Fields of
PayoutStatusstatusinteger int32 requiredThe payoutPayout Money sent from a merchant to a bank account. Unlike a refund, a payout is not tied to a payment anyone made you, so you can pay anyone with a bank account. Payouts draw on your float rather than on your incoming payments, and they are not self-service: they need approval from Ozow and testing in staging first. status.
1: Payout Received. The payout has been received.
2: Verification. The payout is being verified.
3: Payout Submitted For Processing. The payout is being processed.
4: Payout Processing Error. There was an error with the payout.
5: Payout Completed. The payout has been completed.
6: Payout Pending Investigation. The payout is being investigated.
7: Payout Pending Cancellation. Cancellation has been requested and is not yet settled.
90: Payout Returned. The payout could not be paid into the recipient account.
99: Payout Cancelled. The payout was cancelled.
values12345679099min0subStatusinteger requiredThe payoutPayout Money sent from a merchant to a bank account. Unlike a refund, a payout is not tied to a payment anyone made you, so you can pay anyone with a bank account. Payouts draw on your float rather than on your incoming payments, and they are not self-service: they need approval from Ozow and testing in staging first. sub status. Possible values are:
100: Payout_Unclassified – No sub status.
101: Payout_ValidationFailed – Request validation failed and error description will be in the ErrorMessage field.
201: Verification_Pending – Awaiting webook verification.
202: Verification_Failed – The verification webhookWebhook A URL of yours that Ozow calls when something happens, rather than you polling to find out. The call carries no credential of yours and arrives at a public URL, so authenticate it before acting on it: a hash field on the Payments API, a Svix signature on One API. returned a failed.
203: Verification_Success – Successful payout verification via webhook.
204: Verification_Error – Unable to reach the verification webhook.
205: Verification_AccountNumberDecryptionFailed – Decryption of the account number failed using the key received via webhook.
301: SubmittedForProcessing_PayoutAddedToBatch – The payout has been added to the payout batch.
302: SubmittedForProcessing_PayoutSubmittedToBank – The payout batch has been processed and submitted to the bank.
303: SubmittedForProcessing_PayoutSubmittedToPpi – Payout submitted for processing.
401: PayoutProcessingError_PayoutRejected – The payout has been rejected by the bank.
402: PayoutProcessingError_PayoutCancelled – The payout has been cancelled.
403: PayoutProcessingError_Insufficient_Balance – Insufficient balance.
404: PayoutProcessingError_PayoutInternalError.
405: PayoutProcessingError_InvalidAccountNumber – The payout has an invalid account number.
601: PayoutPendingInvestigation_AmountMismatch – The payout failed due to mismatch in amounts.
9001: PayoutReturned_Unpaid – Rejected by destination bank.
9901: Cancellation_AddedToBatch – Cancellation request added to batch for processing.
9902: Cancellation_SubmittedToBank – Cancellation request has been submitted to the bank.
9903: Cancellation_RejectedByBank – Cancellation request has been rejected by the bank.
9904 - Cancellation_AccountNumberValidationFailed – CDV account number validation failed.
min0errorMessagestringError message generated when validating the request.
max length250
messagestringWhat was wrong with the request.
messagestringWhat was wrong with the request.
messagestringWhat was wrong with the request.