DebiCheck is an authenticated debit order system that requires customers to electronically confirm mandate details before collections can be processed.
DebiCheck provides:
COMPLETED
Customer receives an immediate USSD/push notification and must approve within 120 seconds.
JSON
{
"authenticationType": "REALTIME",
"realtimeAuthRetries": 0
}
Mandate is lodged within 60 seconds, the customer has until 20:00 the same day to approve.
JSON
{
"authenticationType": "DELAYED"
}
Mandate submitted overnight, the customer has until 19:00 the following day to approve.
JSON
{
"authenticationType": "BATCH"
}
POST /v2/mandate/debicheck/
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 '{
"initiationDate": "2024-01-15T10:00:00.000Z",
"valueType": "FIXED",
"debitSequence": "RCUR",
"maxAmountCents": 10000,
"amountCents": 10000,
"allowDateAdjustment": true,
"adjustmentCategory": "NEVER",
"authenticationType": "REALTIME",
"realtimeAuthRetries": 0,
"fallbackAuthenticationType": "DELAYED_WITHOUT_AUTH",
"profileCode": "TEST1",
"abbreviatedName": "TESTMERCH1",
"contractReference": "DC001",
"debtor": {
"accountNumber": "010553922",
"accountType": "CURRENT",
"bank": "ABSA",
"branchCode": "632500",
"firstName": "John",
"lastName": "Smith",
"identification": {
"emailAddress": "john@example.com",
"idNumber": "2001014800086",
"phoneNumber": "+27-123456789",
"passportNumber": ""
}
},
"creditor": {
"accountNumber": "12345678",
"accountType": "CURRENT",
"branchCode": "051001",
"name": "TEST MERCHANT 1",
"bank": "STANDARDBANK",
"phoneNumber": "+27-615333440",
"emailAddress": "merchant@test.com"
},
"releaseDate": "2024-12-31T00:00:00.000Z",
"frequency": "MONTHLY",
"collectionDay": 20,
"currency": "ZAR",
"entryClass": "21",
"verifyAccount": false
}'
Please note that fallback to DELAYED_WITHOUT_AUTH was deprecated in 2025 in line with PASA requirements.
JSON
{
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"status": "PENDING_AUTHENTICATION",
"authenticationType": "REALTIME",
"valueType": "FIXED",
"contractReference": "DC001",
"debtor": { ... },
"creditor": { ... }
}
JSON
{
"valueType": "VARIABLE",
"adjustmentCategory": "QUARTERLY",
"adjustmentRate": "10.0",
"maxAmountCents": 15000,
"amountCents": 10000
}
Note: Use either adjustmentRate (percentage) OR adjustmentAmountCents, not both.
JSON
{
"valueType": "USAGEBASED",
"adjustmentCategory": "NEVER",
"maxAmountCents": 50000,
"amountCents": 10000
}
GET /v2/mandate/debicheck/{mandateId}/status/
BASH
curl -X GET https://dev.api.revio.co.za/v2/mandate/debicheck/a1b2c3d4-e5f6-7890-abcd-ef1234567890/status/ \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"
JSON
{
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"status": "COMPLETED"
}
GET /v2/mandate/debicheck/{mandateId}
JSON
{
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"state": "COMPLETED",
"referenceNumber": "REF123456",
"authenticationReference": "AUTH789",
"lastSuccessfulAuditId": "AUDIT456",
"mandateReferenceNumber": "MRN001",
...
}
Store these values for mandate amendments:
referenceNumberauthenticationReferencelastSuccessfulAuditId
Modify an existing authenticated mandate.
PUT /v2/mandate/debicheck/{mandateId}
BASH
curl -X PUT https://dev.api.revio.co.za/v2/mandate/debicheck/a1b2c3d4-e5f6-7890-abcd-ef1234567890 \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"state": "COMPLETED",
"referenceNumber": "REF123456",
"authenticationReference": "AUTH789",
"lastSuccessfulAuditId": "AUDIT456",
"maxAmountCents": 15000,
...
}'
POST /v2/collection/debicheck/from_mandate
BASH
curl -X POST https://dev.api.revio.co.za/v2/collection/debicheck/from_mandate \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"mandateId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"collectionDate": "2024-02-20T00:00:00.000Z",
"cycleDate": "2024-02-20T00:00:00.000Z",
"debitSequence": "RCUR",
"amountCents": 10000,
"trackingPeriod": 0
}'
Note: Use FRST for first/pro-rata collections, RCUR for recurring.
JSON
{
"id": "coll-123-456-789",
"mandateId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"status": "PENDING",
"collectionDate": "2024-02-20T00:00:00.000Z",
"amountCents": 10000
}
GET /v2/collection/debicheck/{collectionId}/status
Important: DebiCheck mandates can only be obtained between 06:00 and 20:00 on weekdays.
DebiCheck supports account tracking for up to 10 days post-action date:
JSON
{
"trackingPeriod": 10
}
If a collection fails due to insufficient funds, the bank will monitor the account and retry when funds are available.
DELAYED_WITHOUT_AUTHFIXED, VARIABLE, or USAGEBASED based on your use casemaxAmountCents covers your needs
Use these contract references to simulate scenarios:
See Testing for more test scenarios.