The Revio sandbox environment provides a mock-bank infrastructure for comprehensive testing.
The sandbox allows you to:
Contact Precium at support@precium.com to request sandbox credentials:
client_id (username)client_secret (password)
| Resource | Location |
|---|---|
| Postman Collection | Download |
| Swagger Documentation | https://dev.api.revio.co.za/swagger/index.html |
| Sandbox API | https://dev.api.revio.co.za/ |
| Production API | https://api.revio.co.za/ — do not test against this |
Use this pre-configured profile for sandbox testing:
| Field | Value |
|---|---|
id | 24 |
profileCode | TEST1 |
abbreviatedName | TESTMERCH1 |
accountNumber | 12345678 |
branchCode | 051001 |
name | TEST MERCHANT 1 |
instruments | EFTONEDAY, EFTTWODAY, EFTSAMEDAY, DEBICHECK |
currency | ZAR |
entryClass | 21 |
createdByClient | 109 |
The mock bank simulates real bank processing, including:
| Instrument | Available Tests |
|---|---|
| EFT Debit Order | Create mandate, amend mandate, create collection |
| DebiCheck | Create mandate (TT1/TT2), amend mandate, cancel/suspend, create collection |
| EFT Payments | Create payment, delete payment |
Use specific account numbers to simulate different outcomes:
| Account Number | Scenario | Description |
|---|---|---|
910000001 | Full reject | Receive full rejection response |
910000002 | Batch rejection | Receive batch rejection response |
210000001 | Dispute | Dispute file 40 seconds after response |
110000001 | Accepted | Accepted file 40 seconds after pending |
110000002 | Unpaid | Unpaid file 40 seconds after pending |
110000003 | Accepted (3 days) | Accepted with settlement 3 days out |
110000004 | Unpaid (3 days) | Unpaid with settlement 3 days out |
110000005 | Accepted (5 days) | Accepted with settlement 5 days out |
110000006 | Unpaid (5 days) | Unpaid with settlement 5 days out |
| Any other | Success | Accepted response |
BASH
curl -X POST https://dev.api.revio.co.za/v2/mandate/eft/ \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"debtor": {
"accountNumber": "110000002",
...
},
...
}'
Use specific contract references to simulate authentication outcomes:
| Contract Reference | Scenario | Description |
|---|---|---|
NORESPONSE | No response | Customer doesn't respond within 120 seconds |
FAILINIT | Init failure | Unexpected bank error during authentication |
REJECT | Rejected | Customer rejects the mandate |
TIMEOUT | Timeout | Authentication times out waiting for bank |
| Any other | Success | Mandate authenticated successfully |
BASH
curl -X POST https://dev.api.revio.co.za/v2/mandate/debicheck/ \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"contractReference": "REJECT",
"authenticationType": "REALTIME",
...
}'
BASH
curl -X POST https://dev.api.revio.co.za/v2/mandate/debicheck/ \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"contractReference": "NORESPONSE",
"authenticationType": "REALTIME",
"fallbackAuthenticationType": "DELAYED_WITHOUT_AUTH",
...
}'
Test callback handling by simulating status changes:
BASH
curl -X POST https://dev.api.revio.co.za/v2/callback/test/collection/eft/{collectionId}/ \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"collectionStatus": "UNPAID",
"callbackVersion": "V2"
}
Send callbacks to a test endpoint:
BASH
curl -X POST https://dev.api.revio.co.za/v2/callback/test/collection/eft/{collectionId}/ \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"overrideUrl": "https://webhook.site/your-test-id",
"collectionStatus": "COMPLETED",
"callbackVersion": "V2"
}'
When implementing DebiCheck, consider:
Ensure each mandate has a unique contract reference (max 14 characters). This appears on customer bank statements alongside your abbreviated name.
Plan for authentication outside business hours:
realtimeAuthRetriesfallbackAuthenticationType for automatic failover
| Consideration | Guidance |
|---|---|
| Value Type | Choose FIXED, VARIABLE, or USAGEBASED based on billing model |
| Amount Adjustments | Use adjustmentRate OR adjustmentAmountCents, not both |
| Max Amount | Set maxAmountCents to accommodate your maximum expected collection |
| Collection Day | Present collections for the authenticated day only |
| Tracking | Allocate enough tracking days (max 10) for your retry strategy |
allowDateAdjustment)
Consider creating new mandates rather than amending existing ones to avoid complexity in re-authentication scenarios.
Use a valid South African ID number format:
000101000000685010158000890001010000089
Use format +27-XXXXXXXXX:
+27-123456789+27-615333440+27-987654321
| Bank | Branch Code |
|---|---|
| ABSA | 632005, 632500 |
| Standard Bank | 051001 |
| FNB | 250655 |
| Nedbank | 198765 |
| Capitec | 470010 |
Once testing is complete:
Important: Never use production credentials in sandbox or vice versa.