OTT

OTT are a South African alternative payment method provider. They provide a series of payment options for merchants operating in South Africa, including creating and redeeming vouchers, and bank-to-bank transfers. electronic funds transfers.

You can use OTT as a Payment Method for:

REST APIWebSDKHosted Payment Page
Payments✅ Available⛔️ Unavailable⛔️ Unavailable
Split Auth & Capture⛔️ Unavailable⛔️ Unavailable⛔️ Unavailable
Payouts✅ Available⛔️ Unavailable⛔️ Unavailable
Refunds⛔️ Unavailable⛔️ Unavailable⛔️ Unavailable

Payment

The BR-DGE ottVoucher Payment Instrument is used to redeem OTT vouchers. BR-DGE takes the OTT pin and sends it to OTT to redeem.

The outcome of a voucher redemption is either CAPTURED or REJECTED.

Transaction Status Flow


BR-DGE StatusDescription
CAPTUREDIf the voucher is successfully redeemed, then the BR-DGE payment status will be set to CAPTURED.
REJECTEDIf the voucher could not be redeemed, the BR-DGE payment will be updated with a REJECTED status.

Payment API Examples

OTT Voucher Redemption

When making a payment request with an OTT voucher code, you can set the amount to 0. Doing so will redeem the full value of the voucher. The amount that is redeemed from the voucher, when setting the request amount to 0, will be returned to you in the amount field of the API response.

Any other positive integer value in the amount field will result in that amount, in the given currency, being redeemed from the voucher.

If you redeem an amount less than the voucher's value, the remaining balance will be stored in the customer's OTT Vault. They will be notified of this balance via an SMS, which will include a link they can use to generate a new voucher using the balance in their vault.

Request

To create an OTT payment, you need to send a request similar to the following to the BR-DGE POST /v1/payments endpoint.

The following examples contain only the minimum required to perform a successful payment using OTT. For a full view of all available API request fields, please view the Create a Payment REST API endpoint documentation directly.

{
    "merchantTransactionId": "ff163246-eb94-4763-9a2a-f5d6d48b026e",
    "amount": 0,
    "customerOrderCode": "ff163246-eb94-4763-9a2a-f5d6d48b026e",
    "orderDescription": "Taxi fare",
    "channel": "ios",
    "currencyCode": "ZAR",
    "paymentInstrument": {
        "type": "ottVoucher",
        "pin": "607276415871",
        "mobile": "+27721234567"
    }
}

Response

You should expect to receive a response similar to the one below, indicating whether the voucher redemption was successful.

{
    "code": "1000",
    "message": "Approved",
    "id": "691ca00b78759f29aa82ec4597b2d512",
    "paymentId": "8f48a327-e043-4e91-ab07-e2d645a95c84",
    "amount": 5000,
    "currencyCode": "ZAR",
    "actionRequired": false,
    "psp": {
        "name": "OTT Mobile",
        "transactionId": "1759676"
    },
    "pspId": "OTT",
    "customerOrderCode": "ff163246-eb94-4763-9a2a-f5d6d48b026e",
    "merchantTransactionId": "ff163246-eb94-4763-9a2a-f5d6d48b026e"
}

Payouts

BR-DGE offer 3 different types of OTT payouts:

  • OTT's Cardless service, which allows customers to redeem a code at an ATM to receive their money
  • OTT's Value-Added Services, where customers can receive vouchers with other vendors (such as gift cards or PlayStation Network codes)
  • Bank-to-bank (EFT), for customers who want to get the payout transferred directly to their bank account

The payout method used is defined by the provider name in the Create a Payout REST API endpoint. For a provider to be active, they must first be configured in the OTT Portal for your merchant account.

Cardless Service and Value-Added Services

Cardless Service and Value-Added Services payouts using the ottPayout payment instrument follow a synchronous flow. You send the payout details to BR-DGE, and they are forwarded to OTT for processing. Once a request is successful, OTT returns the voucher details, and you receive these in the REST response.

API Examples

To perform a payout using OTT Payouts, you should send a request to the POST /v1/payouts REST API endpoint using a request body similar to the one below.

The following example is the minimum required to perform a successful payout using OTT Payouts. For a full list of available API request fields, please refer to the Create a Payout documentation.

Request (Cardless service / Value-added services)

{
    "psp": "OTT",
    "amount": 900,
    "currencyCode": "ZAR",
    "reference": "42a1c9e4-7b8f-4d6e-9282-ed27fe9fedby",
    "purpose": "leisure",
    "recipient": {
        "firstName": "John",
        "lastName": "Doe",
        "email": "[email protected]",
        "phoneNumber": "+27721234567",
        "documentType": "RSAID",
        "documentId": "9103215388086",
        "documentIssuer": "ZA"
    },
    "paymentInstrument": {
        "type": "ottPayout",
        "providerName": "OTT Voucher"
    }
}

Response

{
  "code": 1000,
  "message": "Approved",
  "id": "731Ahdfepal24",
  "paymentId": "42a1c9e4-7b8f-4d6e-9282-ed27fe9fedby",
  "status": "APPROVED",
  "psp": {
    "name": "ottPayout",
    "transactionId": "#ottResponse.paymentReference",
    "additionalInfo": {
        "type": "ottPayout",
        "serialNumber": "300003849616",
        "pin": "464828964739"
    }
  }
}

Bank-to-Bank Payouts

Bank-to-Bank payouts using the ottPayout payment instrument follow an asynchronous flow. You send the customers' bank details to BR-DGE, and the details are forwarded to OTT for processing. Once a request is accepted, the payment remains pending until OTT confirms whether the payout has been successful.

Transaction Statuses

OTT Payouts will follow the standard asynchronous transaction status flow. All Payouts initially enter a PENDING status. Following processing of the transaction with OTT, the BR-DGE Payout will be marked as APPROVED or DECLINED based on the result from OTT.

As payout updates are managed asynchronously, OTT will notify BR-DGE of the result once it has completed processing. Upon receipt of the notification from OTT, BR-DGE will then update the transaction status in the system.

📘

If you are subscribed to BR-DGE Notifications, you will also receive an update from us when the transaction status changes.

BR-DGE StatusDescription
PENDINGThe BR-DGE payout is PENDING while OTT processes the payout
APPROVEDOTT successfully completes the payout request, BR-DGE is notified and updates the status to APPROVED
DECLINEDPayout is unsuccessful, BR-DGE is notified and updates the status to DECLINED

API Examples

To perform a payout using OTT Payouts, you should send a request to the POST /v1/payouts endpoint using a request body similar to the one below.

The following example is the minimum required to perform a successful payout using OTT Payouts. For a full view of all available API request fields, please view the Create a Payout endpoint documentation directly.

{
    "psp": "OTT",
    "amount": 900,
    "currencyCode": "ZAR",
    "reference": "42a1c9e4-7b8f-4d6e-9282-ed27fe9fedby",
    "purpose": "leisure",
    "recipient": {
        "firstName": "John",
        "lastName": "Doe",
        "email": "[email protected]",
        "phoneNumber": "+27721234567",
        "documentType": "RSAID",
        "documentId": "9103215388086",
        "documentIssuer": "ZA",
        "gender": "male",
        "dateOfBirth": "1986-01-01"
    },
    "paymentInstrument": {
        "type": "ottPayout",
        "providerName": "Bank EFT",
        "bankDetails": {
            "bankDetailsFormat": "ZA",
            "accountNumber": "1352184990",
            "accountName": "John Doe",
            "branchName": "Main Branch",
            "branchCode": "198765"
        }
    }
}
{
  "code": 2101,
  "message": "Pending Transaction",
  "id": "731Ahdfepal24",
  "paymentId": "42a1c9e4-7b8f-4d6e-9282-ed27fe9fedby",
  "status": "PENDING",
  "psp": {
    "name": "ottPayout",
    "transactionId": "#ottResponse.paymentReference"
  }
}

Onboarding & Support

To enable OTT on your BR-DGE retail channels, please get in contact with support.