Payout test cases
The mandatory tests for a payout integration, for bulk payouts from the Dashboard and for the Payouts API. You must pass these before going live.
On this page18 sections
- How the process works
- Important notes before testing
- Bulk payout test cases
- Bulk payout test 1: Successful bulk payout submission
- Standard API test cases
- Test 1: Request payout below minimum amount
- Test 2: Request payout above maximum amount
- Test 3: Receive verification request and respond successfully
- Test 4: Receive payout verification success message
- Test 5: Receive payout complete message
- Test 6: Receive payout cancelled message
- Test 7: Receive low float balance message
- Test 8: CDV error, account number validation error
- Test 9: Get payout status
- Mock API test cases
- Mock test 1: Account decryption failed
- Mock test 2: Not verified response
- Mock test 3: Account decryption key missing
Build 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.
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. test cases are mandatory. You must complete all relevant tests below and receive sign-off from Ozow's integration team before your payout integration can go live in production.
This page covers test cases for two integration paths:
- Bulk payouts: no-code payout submission via the Ozow Dashboard
- API payouts: programmatic payout integration via the Payouts API, covering both standard API tests and mock API simulation tests
Complete only the test cases relevant to your integration. If you are integrating both, you must complete the test cases for each separately.
How the process works
- Complete all relevant test cases in the staging environment
- Submit your test evidence via the link provided by your Ozow integration team contact
- Ozow reviews your submission internally
- If approved, Ozow collects your production configuration details and sets up your production environment
- You receive confirmation that your integration is ready for go-live
Postman collection
A Postman collection for the Payouts API is available in the Payouts API reference. Download it to run these test cases directly in Postman.
Important notes before testing
- All tests must be completed in the staging environment, no real funds are required and no real transactions take place in staging
- Your staging floatFloat The balance held with Ozow that payouts and refunds are paid out of. Both draw on it, and neither will process while it is empty. Payins do not need one, so if you only take payments you never meet it. will be set up with test funds by Ozow's integration team as part of the staging environment setup
- 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 payments are not available in staging: set
IsRtctofalsefor all tests
Bulk payout test cases
If you are integrating bulk payouts via the Dashboard, you must complete the following test in the staging environment before bulk payouts can be enabled in production.
Note
Bulk payout testing is separate from API payout testing. If you are integrating both, you must complete the relevant test cases for each.
Bulk payout test 1: Successful bulk payout submission
Verify that you can successfully submit and complete a bulk payout via the Dashboard.
Steps
- Log in to your staging Dashboard at stagingdash.ozow.com
- Navigate to Payouts → Bulk Payouts
- Download the CSV template and the Available Banks file
- Complete the template with at least one valid payout
- Upload the completed template
- Approve the batch using an account with the bulk payout approver role
- Confirm that at least one payout in the batch completes successfully
Evidence required
- Screenshot or URL of the completed batch on the Bulk Payouts page showing at least one successful payout
Standard API test cases
Run these tests against the standard staging endpoint, https://stagingpayoutsapi.ozow.com/v1/requestpayout.
Test 1: Request payout below minimum amount
Verify that your integration correctly handles a payout request below the minimum amount of R1.
Steps
- Submit a payout request for an amount less than R1.00
- Capture the JSON response from the API
Evidence required
- JSON response from the API
Note
This validation does not show on the Ozow Dashboard. The JSON APIJSON:API A convention for the shape of a JSON request and response, including how errors and pagination are represented. One API follows it.jsonapi.org response is the only evidence required for this test.
Test 2: Request payout above maximum amount
Verify that your integration correctly handles a payout request above the maximum amount of R20.
Steps
- Submit a payout request for an amount greater than R20.00
- Capture the JSON response from the API
Evidence required
- JSON response from the API
Note
This validation does not show on the Ozow Dashboard. The JSON API response is the only evidence required for this test.
Test 3: Receive verification request and respond successfully
Verify that your 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. receives the request from Ozow and responds correctly.
Steps
- Submit a valid payout request
- Confirm that your verification webhook receives the verification request from Ozow
- Respond to the verification request correctly with
IsVerified: trueand the decryption key - Confirm that a verification success timestamp appears on the payout details in the Dashboard
Evidence required
- URL of the payout from the Dashboard showing the verification success timestamp
Test 4: Receive payout verification success message
Verify that your notification URL receives the verification success message from Ozow.
Steps
- This test occurs automatically on successful completion of Test 3
- Confirm that your notification URL receives a
verificationSuccessmessage - Confirm this is visible under "Payout responses" on the payout details in the Dashboard
Evidence required
- URL of the payout from the Dashboard showing the
verificationSuccessmessage sent to your notification URL
Test 5: Receive payout complete message
Verify that your integration correctly handles a successfully completed payout.
Steps
- Submit a valid payout request and complete the verification flow
- Confirm that your notification URL receives a payout complete notification
- Confirm the payout shows as successful on the Dashboard
Evidence required
- URL of the payout from the Dashboard showing a successful payout and notification to your notification URL
Test 6: Receive payout cancelled message
Verify that your integration correctly handles a cancelled payout.
Steps
- Submit a payout request that results in a cancellation
- Confirm that your notification URL receives a payout cancelled notification
- Confirm the cancellation is visible on the Dashboard
Evidence required
- URL of the payout from the Dashboard showing the cancellation
Test 7: Receive low float balance message
Verify that your low float balance alert is working correctly.
Steps
- Your low float balance alert is triggered when your float balance reaches R99.00 in staging
- Confirm that the alert email is received by the user configured for float balance alerts
Evidence required
- Screenshot of the low float balance alert email received
Test 8: CDV error, account number validation error
Verify that your integration correctly handles an account number validation error.
Steps
- Submit a payout request using account number
1234567890to trigger a CDV error - Confirm the error is visible on the Dashboard
Evidence required
- URL of the payout from the Dashboard showing the CDV error
Test 9: Get payout status
Verify that you can successfully retrieve payout status via the API.
Steps
- Submit a valid payout request and note the
payoutId - Call the
getPayoutendpoint using thepayoutId - Capture the JSON response from the API
Evidence required
- JSON response from the API
Mock API test cases
Run these tests against the mock staging endpoint, https://stagingpayoutsapi.ozow.com/mock/v1, to
simulate specific failure scenarios.
Note
Payout requests submitted to mock endpoints are not visible on the Dashboard. The JSON API response is the only evidence required for these tests.
For each of the three mock scenarios below, follow these steps:
Step 1: Get current test configuration
GET https://stagingpayoutsapi.ozow.com/mock/v1/gettestconfiguration?siteCode={siteCode}
Step 2: Set test configuration
POST https://stagingpayoutsapi.ozow.com/mock/v1/settestconfiguration
Set only the relevant field to true for the scenario you are testing. All other fields must be false.
Step 3: Verify configuration
Call getTestConfiguration again to confirm the configuration was set correctly before proceeding.
Step 4, Submit mock payout request
Submit a payout request to the mock endpoint to trigger the configured simulation response.
Step 5, Get mock payout status
Call getMockPayout to retrieve the result and capture the JSON response.
Important
Repeat all five steps for each simulation scenario. Set exactly one field to
true at a time. Reset the configuration between each test.
Mock test 1: Account decryption failed
Set IsAccountDecryptionFailed: true in the test configuration and complete the five steps above.
Evidence required
- JSON response from the mock payout request
- JSON response from getMockPayout
Mock test 2: Not verified response
Set IsNotVerifiedResponse: true in the test configuration and complete the five steps above.
Evidence required
- JSON response from the mock payout request
- JSON response from getMockPayout
Mock test 3: Account decryption key missing
Set IsAccountDecryptionKeyMissing: true in the test configuration and complete the five steps above.
Evidence required
- JSON response from the mock payout request
- JSON response from getMockPayout
Last updated