Table of contents

EFT Payments

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 TypeDescriptionSettlement
SAMEDAYSame-day value (SDV)Same day
ONEDAYOne business dayNext business day
TWODAYTwo business daysTwo 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": "0001010000006",
      "phoneNumber": "+27-123456789"
    }
  }'

‍

Request Fields

FieldTypeRequiredDescription
paymentDatestringYesDate to process payment (ISO 8601)
profileCodestringYesYour merchant profile code
abbreviatedNamestringYesYour PASA-registered name
contractReferencestringYesPayment reference
amountCentsintegerYesPayment amount in cents
serviceTypestringYesSAMEDAY, ONEDAY, or TWODAY
debtorobjectYesSource account (your account)
creditorobjectYesDestination account (recipient)

‍

Debtor Object (Source Account)

FieldTypeRequiredDescription
accountNumberstringYesYour bank account number
branchCodestringYesYour bank branch code
accountTypestringYesAccount type
bankstringYesYour bank name
firstNamestringYesYour merchant name
identification.phoneNumberstringYesYour contact number
identification.emailAddressstringYesYour email address

‍

Creditor Object (Destination Account)

FieldTypeRequiredDescription
accountNumberstringYesRecipient account number
accountTypestringYesAccount type
branchCodestringYesRecipient branch code
namestringYesRecipient name
idNumberstringYesRecipient ID number
phoneNumberstringYesRecipient 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

StatusDescription
PENDINGPayment submitted, awaiting processing
PROCESSINGPayment being processed by bank
COMPLETEDPayment successful
FAILEDPayment failed
CANCELLEDPayment cancelled

‍

Cut-off Times

Service TypeWeekday Cut-offWeekend Cut-off
Same-day (SSVS)08:00 - 16:2008:00 - 09:45
Two-day08: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

ErrorCauseResolution
400 Bad RequestInvalid request dataVerify all required fields
exceeds industry imposed limitsAmount ≥ R5mUse real-time line for large transactions
Invalid accountInvalid creditor detailsVerify account number and branch code

‍

Failed Payments

If a payment fails, check:

  1. Creditor account details are correct
  2. Your account has sufficient funds
  3. Payment was submitted before the cut-off

‍

Best Practices

  1. Verify recipient details: Confirm account numbers before processing
  2. Use appropriate service type: Choose based on urgency and cost
  3. Submit early: Process payments well before cut-off times
  4. Track payments: Monitor status and handle failures promptly
  5. 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.