Instant EFT lets a customer pay from their bank account through a provider’s hosted page, rather than with a card. Precium supports two providers.
| Provider | payment_method_whitelist value |
|---|---|
| Ozow | ozow |
| OneGate | onegate_eft_redirect |
The flow is identical. OneGate is an alternative to Ozow, not a different integration. Choosing between them is a single string.
The flow
Three steps, the same for both providers.
1. Create the client
POST https://gate.reviopay.com/api/v1/clients/
{
"email": "customer@example.com",
"full_name": "A Customer",
"phone": "+27761234567"
}2. Create the purchase
Set payment_method_whitelist to the provider you want. Restricting it to one
method sends the customer straight to that provider instead of a method picker.
POST https://gate.reviopay.com/api/v1/purchases/
{
"client_id": "{client_id}",
"brand_id": "{brand_id}",
"purchase": {
"currency": "ZAR",
"language": "en",
"products": [ { "name": "Order 1234", "price": 10000 } ]
},
"payment_method_whitelist": ["onegate_eft_redirect"],
"success_redirect": "https://www.example.com/success",
"failure_redirect": "https://www.example.com/failure",
"cancel_redirect": "https://www.example.com/cancel"
}Swap onegate_eft_redirect for ozow to route the same purchase to Ozow.
Amounts are in cents: 10000 is ZAR 100.00.
3. Send the customer to the provider
Direct the customer’s browser to the purchase’s checkout URL. The provider hosts the bank selection and authorisation, then returns the customer to the redirect you supplied.
Confirm the outcome from the webhook rather than from the redirect. A customer can close the browser after paying, and the redirect will not fire.
The one difference
OneGate does not require a mobile number. If you send phone on the client,
OneGate ignores it. Ozow uses it.
Send it anyway if you have it. The same client record works for both providers, and you will not have to branch on which one a merchant is configured for.
Which methods a brand actually has
Rather than hard-coding either identifier, ask:
GET https://gate.reviopay.com/api/v1/payment_methods/?brand_id={brand_id}¤cy=ZARSend that with the same key you will create the purchase with, because the key decides whether the lookup runs against test or live configuration. A brand that is not enabled for a provider will not return it, and whitelisting a method a brand does not have will fail the purchase.