1Voucher
Hello there👋. We recommend reading the overview section first to understand the basics of making a direct charge. This guide assumes you've read that.
1Voucher is a prepaid payment method that allows users to make online purchases and transactions without using a credit or debit card.
It works by providing customers with a unique 16-digit PIN code that can be entered during checkout on supported websites. The payment is deducted from the total value of the voucher, similar to how a gift card or prepaid card works.
1voucher is exclusively used for payments in South Africa🇿🇦.
Pre-requisites
Here are some requirements to have in place before you start your integration:
- Check that your account is live and verified.
- Request to enable this feature on your account.
For assistance with any of your requests, contact our support team via email at hi@flutterwavego.com.
Payment flow
1Voucher payments go through three (3) stages before completion:
- Initiation - The merchant initiates the payment on behalf of the customer with the customer and transaction information.
- PIN Validation - After the transaction is initiated, We charge the voucher PIN for the transaction and issue a new PIN to the customer for future transactions.
- Confirmation - The merchant confirms the transaction status. If successful, they can provide value or reinitiate the payment if unsuccessful.
Step 1: Initiating the charge
To initiate the payment, collect your customer's information - email address
and phone number
. Pass the customer information with the transaction details i.e. reference
, currency
and amount
to the 1Voucher charge endpoint.
Read the 1Voucher API reference for the full list of supported parameters.
{
"tx_ref": "YOUR_PAYMENT_REFERENCE",
"amount": "1",
"currency": "ZAR",
"phone_number": "27xxxxxxxx7",
"email": "user@example.com",
"pin": "1234567890"
}
{
"status": "success",
"message": "Charge successful",
"data": {
"id": 1362136900,
"tx_ref": "YOUR_PAYMENT_REFERENCE",
"flw_ref": "IUYG0857317139626658",
"device_fingerprint": "N/A",
"amount": 1,
"charged_amount": 1,
"app_fee": 0.07,
"merchant_fee": 0,
"processor_response": "Transaction Successful",
"auth_model": "AUTH",
"currency": "ZAR",
"ip": "52.18.161.235",
"narration": "TEST_PAYMENT",
"status": "successful",
"auth_url": "NO-URL",
"payment_type": "1voucher",
"fraud_status": "ok",
"charge_type": "normal",
"created_at": "2024-04-24T12:44:25.000Z",
"account_id": 18428,
"meta_data": {
"change_voucher": {
"amount": 51.86,
"pin": "1234567890123456",
"serial": "20240424144460200153",
"expiry": "2027-04-24T14:44:26+02:00"
}
},
"customer": {
"id": 854597931,
"phone_number": "27xxxxxxxx7",
"name": "Anonymous customer",
"email": "user@example.com",
"created_at": "2024-04-24T12:44:25.000Z"
}
}
}
{
"status": "error",
"message": "Invalid Authorization key",
"data": null
}
Step 2: Retrieving the new Voucher PIN
When the voucher is charged, the current PIN becomes invalid, and a new one is generated. In the charge response, we provide the new PIN as data.meta_data.pin
.
It's considered best practice to display the current balance and expiry of the voucher to the customer. You can achieve this by returning the balance (meta_data.amount
) and expiry(meta_data.expiry
) along with the new PIN.
{
"status": "",
"message": "",
"data": {
"tx_ref": "",
...
"meta_data": {
"change_voucher": {
"amount": 51.86,
"pin": "1896682868182894",
"serial": "20240424144460200153",
"expiry": "2027-04-24T14:44:26+02:00"
}
},
"customer": {
...
}
}
}
Step 3: Verifying your transaction
Once the transaction is completed, you need to determine it's final status. There are two ways to query the transaction's final status.
- Query the verify transaction endpoint.
- Use the final status from your transaction webhook.
It is very important to confirm the customer's name, transaction status and amount before providing value for your transaction.
We discuss these options in more details in the transaction verification and webhook guides. These resources provide comprehensive information to assist you in completing the transaction on your system.
{
"id": 4963659,
"txRef": "YOUR_PAYMENT_REFERENCE",
"flwRef": "FLWTK43726MCK1710339922867",
"orderRef": "URF_1710339922628_1685735",
"paymentPlan": null,
"paymentPage": null,
"createdAt": "2024-03-13T14:25:22.000Z",
"amount": 50,
"charged_amount": 50,
"status": "successful",
"IP": "54.75.161.64",
"currency": "ZAR",
"appfee": 2.25,
"merchantfee": 0,
"merchantbearsfee": 1,
"customer": {
"id": 2371343,
"phone": "8081806271",
"fullName": "Anonymous customer",
"customertoken": null,
"email": "user@example.com",
"createdAt": "2024-03-13T14:21:45.000Z",
"updatedAt": "2024-03-13T14:21:45.000Z",
"deletedAt": null,
"AccountId": 77778
},
"entity": {
"id": "NO-ENTITY"
},
"event.type": "1VOUCHER_TRANSACTION"
}