EFT Payments (EFT Credits) enable merchants to send outbound payments to bank accounts.
Overview
The EFT Credit service handles financial transactions, including:
- Salary disbursements
- Account payments
- Refunds
- Supplier payments
Service Types
|Service Type|Description|Settlement|
|---|---|---|
|`SAMEDAY`|Same-day value (SDV)|Same day|
|`ONEDAY`|One business day|Next business day|
|`TWODAY`|Two business days|Two business days|
Service Limitations
- Maximum transaction: R5,000,000 (5 million ZAR)
- Transactions ≥ R5m will be returned with "exceeds industry imposed limits"
- High-value transactions should use real-time line processing
Supported Account Types
- Current accounts
- Savings accounts
- Transmission accounts
Create EFT Payment
Endpoint
POST /v2/payment/eft
Request (Same-day)
BASH
curl -X POST https://dev.api.revio.co.za/v2/payment/eft \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"paymentDate": "2024-01-15T08:00:00.000Z",
"profileCode": "TEST1",
"abbreviatedName": "TESTMERCH1",
"contractReference": "PAY001",
"amountCents": 50000,
"serviceType": "SAMEDAY",
"debtor": {
"accountNumber": "12345678",
"branchCode": "051001",
"accountType": "CURRENT",
"bank": "STANDARDBANK",
"firstName": "TEST MERCHANT 1",
"identification": {
"phoneNumber": "+27-615333440",
"emailAddress": "merchant@test.com"
}
},
"creditor": {
"accountNumber": "010553922",
"accountType": "CURRENT",
"branchCode": "632005",
"name": "John Smith",
"idNumber": "2001014800086",
"phoneNumber": "+27-123456789"
}
}'
Request Fields
|Field|Type|Required|Description|
|---|---|---|---|
|`paymentDate`|string|Yes|Date to process payment (ISO 8601)|
|`profileCode`|string|Yes|Your merchant profile code|
|`abbreviatedName`|string|Yes|Your PASA-registered name|
|`contractReference`|string|Yes|Payment reference|
|`amountCents`|integer|Yes|Payment amount in cents|
|`serviceType`|string|Yes|`SAMEDAY`, `ONEDAY`, or `TWODAY`|
|`debtor`|object|Yes|Source account (your account)|
|`creditor`|object|Yes|Destination account (recipient)|
Debtor Object (Source Account)
|Field|Type|Required|Description|
|---|---|---|---|
|`accountNumber`|string|Yes|Your bank account number|
|`branchCode`|string|Yes|Your bank branch code|
|`accountType`|string|Yes|Account type|
|`bank`|string|Yes|Your bank name|
|`firstName`|string|Yes|Your merchant name|
|`identification.phoneNumber`|string|Yes|Your contact number|
|`identification.emailAddress`|string|Yes|Your email address|
Creditor Object (Destination Account)
|Field|Type|Required|Description|
|---|---|---|---|
|`accountNumber`|string|Yes|Recipient account number|
|`accountType`|string|Yes|Account type|
|`branchCode`|string|Yes|Recipient branch code|
|`name`|string|Yes|Recipient name|
|`idNumber`|string|Yes|Recipient ID number|
|`phoneNumber`|string|Yes|Recipient phone number|
Response
JSON
{
"id": "pay-123-456-789",
"status": "PENDING",
"paymentDate": "2024-01-15T08:00:00.000Z",
"amountCents": 50000,
"serviceType": "SAMEDAY",
"contractReference": "PAY001"
}
Payment Examples
One-day Payment
BASH
curl -X POST https://dev.api.revio.co.za/v2/payment/eft \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"paymentDate": "2024-01-15T08:00:00.000Z",
"profileCode": "TEST1",
"abbreviatedName": "TESTMERCH1",
"contractReference": "PAY002",
"amountCents": 100000,
"serviceType": "ONEDAY",
"debtor": {
"accountNumber": "12345678",
"branchCode": "051001",
"accountType": "CURRENT",
"bank": "STANDARDBANK",
"firstName": "TEST MERCHANT 1",
"identification": {
"phoneNumber": "+27-615333440",
"emailAddress": "merchant@test.com"
}
},
"creditor": {
"accountNumber": "987654321",
"accountType": "SAVINGS",
"branchCode": "250655",
"name": "Jane Doe",
"idNumber": "8501015800089",
"phoneNumber": "+27-987654321"
}
}'
Two-day Payment
JSON
{
"serviceType": "TWODAY",
...
}
Get Payment Status
Endpoint
GET /v2/payment/eft/{paymentId}/status
Request
BASH
curl -X GET https://dev.api.revio.co.za/v2/payment/eft/pay-123-456-789/status \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"
Response
JSON
{
"id": "pay-123-456-789",
"status": "COMPLETED"
}
Payment Statuses
|Status|Description|
|---|---|
|`PENDING`|Payment submitted, awaiting processing|
|`PROCESSING`|Payment being processed by bank|
|`COMPLETED`|Payment successful|
|`FAILED`|Payment failed|
|`CANCELLED`|Payment cancelled|
Cut-off Times
|Service Type|Weekday Cut-off|Weekend Cut-off|
|---|---|---|
|Same-day (SSVS)|08:00 - 16:20|08:00 - 09:45|
|Two-day|08:00 - 14:30 (2 days before)|08:00 - 09:00|
Important: Submit payments before cut-off times to ensure same-day processing. Payments submitted after cut-off will automatically be processed in the next available processing day
Error Handling
Common Errors
|Error|Cause|Resolution|
|---|---|---|
|`400 Bad Request`|Invalid request data|Verify all required fields|
|`exceeds industry imposed limits`|Amount ≥ R5m|Use real-time line for large transactions|
|`Invalid account`|Invalid creditor details|Verify account number and branch code|
Failed Payments
If a payment fails, check:
- Creditor account details are correct
- Your account has sufficient funds
- Payment was submitted before the cut-off
Best Practices
- Verify recipient details: Confirm account numbers before processing
- Use appropriate service type: Choose based on urgency and cost
- Submit early: Process payments well before cut-off times
- Track payments: Monitor status and handle failures promptly
- Keep records: Store payment IDs and references for reconciliation
Bulk Payments
For processing multiple payments, submit separate requests for each. Consider implementing:
- Batching logic in your application
- Rate limiting to avoid overwhelming the API
- Error handling for partial batch failures
Contact Precium support for high-volume payment requirements.