Non Card Payments
Interswitch integrates with various payment providers to offer customers flexible ways to complete their transactions.
These payment options are available by default on the gateway and can be turned on or off at any time in the settings menu on your Quickteller Business Dashboard. They are also available via API for customization.
Payment options can be used in two ways:
- Dynamic/Transactional: A USSD code, QR image, or transfer account number is generated for a specific transaction, tied to the exact amount and transaction reference. It can only be used once for a successful payment. This is the mode available on the web gateway.
- Static/Permanent: A USSD code, QR image, or transfer account number is generated for an entity without any amount tied to it. The paying customer decides the amount to pay. Once the transaction is successful, you are notified via email, SMS, and webhooks (if integrated). This is popular for funding wallets or physical stores where the codes are printed and placed in an environment where customers can find them and quickly complete payment.
Payment channels
In addition to cards, Interswitch offers the following payment channels:
- USSD: USSD allows you to perform a transaction using a uniquely generated code.
- Transfer: Interswitch supports both dynamic and static transfers.
a. Dynamic transfer: A transfer tied to a specific transaction can only be used once for a successful payment.
b. Static transfer: A transfer generated for an entity can be used multiple times for payments. Static transfers are popular for funding wallets and physical stores. - QR Code: USSD allows you to perform a transaction using a uniquely generated code.
- Wallet: Wallet allows you to perform a transaction using supported wallet providers like OPAY, MOMO, PalmPay, Pocket, etc.
Getting started
To start with Interswitch payment options, create an account on the Quickteller Business Dashboard. Once your account is approved, you can enable the payment options you want to use.
You can also integrate with the Interswitch API to customize the payment flow and experience.
1. USSD
With USSD, you can perform a transaction using a uniquely generated code.
Process Flow for USSD
- Send a POST request to Get USSD Banks. to get lists of bank codes for a USSD transaction.
- Send a POST request to Pay with USSD, provide the required bank code generated in Step 1.
2. Transfer
a. Process Flow for Dynamic(Transactional) Transfer
- Send a POST request to Pay With Transfer.
- [optional] Send a POST request to Confirm Transaction Status to confirm the state of your transaction.
b. Process Flow for Static (e.g, funding wallets) Transfer
- Generate a permanent account number, then save the details on your system against the customer's records.
curl https://qa.interswitchng.com/paymentgateway/api/v1/payable/virtualaccount \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"accountName": "Test Account",
"merchantCode": "MX1111"
}'
-X POST
Sample Response
{
"id": 106071,
"merchantCode": "MX6072",
"payableCode": "VIRTUAL_ACCOUNTMX60721641976776840",
"enabled": true,
"dateCreated": 1641976778480,
"accountName": "Test Account",
"accountNumber": "7120241111",
"bankName": "Wema Bank",
"bankCode": "WEMA"
}
- Integrate to [Webhooks] (doc:webhooks) so we notify you instantly any payment is made into the account
You'll only get TRANSACTION.COMPLETED webhook events on this account.
Here's a sample webhook response of a successful transfer and the important fields to look out for: - Response Sample
{
"event": "TRANSACTION.COMPLETED",
"uuid": "000016220112100534000059168755",
"timestamp": 1641978358245,
"data": {
"paymentId": 721304386,
"remittanceAmount": 4925,
"amount": 5000,
"responseCode": "00",
"responseDescription": "Approved by Financial Institution",
"merchantReference": "000016220112100534000059168755",
"paymentReference": "000016220112100534000059168755",
"retrievalReferenceNumber": "7120241111",
"transactionDate": 1641978358245,
"bankCode": "011",
"currencyCode": "566",
"channel": "TRANSFER",
"merchantCustomerId": "MUSA OLU UGO",
"merchantCustomerName": "MUSA OLU UGO",
"nonCardProviderId": "VIRTUAL|DIRECT|7120241111",
"payableCode": "6265663"
}
}
Response Description
Field | Description |
---|---|
event | Event Type. Always going to be TRANSACTION.COMPLETED |
uuid | Unique Transaction reference. You should implement a duplicate check on your system for this so you don't give value more than once for the same transaction. |
amount | Transaction amount customer paid for in minor (kobo) |
remittanceAmount | Amount we'll settle you, after removing our transaction fees |
merchantReference | Unique transaction reference on our system |
channel | TRANSFER. |
retrievalReferenceNumber | This contains the account number tht was paid into, Meaning the account number you generated from Step 1 and stored on your system. This is what you'll uise to identify which customer on your end to credit. |
merchantCustomerName | The name of the person that made the transfer |
bankCode | The CBN bank code of the sender's bank |
3. QR Code
To perform a transaction using a QR code, make a call to the Generate QR endpoint.
4. WALLET
With WALLET. you can perform a transaction using supported wallet providers.
Process Flow for wallet
- Send a POST request to Initialize Transaction. to initiate the transaction.
- Send a POST request to Get Status of transaction, to query the status of the initiated transaction in Step 1.
INITIALIZE
curl --location 'https://qa.interswitchng.com/collections/api/v1/wallet-pay/initialize' \
--header 'Authorization: bearer eyJhbGciOiJSUzI1NiJ9.eyJtZXJjaGFudF9jb2RlIjoiTVg2MDcyIiwicmVxdWVzdG9yX2lkIjoiMTIzODA4NTk1MDMiLCJpbmNvZ25pdG9fcmVxdWVzdG9yX2lkIjoiMTIzODA4NTk1MDMiLCJwYXlhYmxlX2lkIjoiMzM1OTciLCJjbGllbnRfZGVzY3JpcHRpb24iOm51bGwsImNsaWVudF9pZCI6IklLSUFCMjNBNEUyNzU2NjA1QzFBQkMzM0NFM0MyODdFMjcyNjdGNjYwRDYxIiwiYXVkIjpbImFwaS1nYXRld2F5IiwiYXJiaXRlciIsImNhZXNhciIsImhpbXMtcG9ydGxldCIsImluY29nbml0byIsImlzdy1jb2xsZWN0aW9ucyIsImlzdy1jb3JlIiwiaXN3LWluc3RpdHV0aW9uIiwiaXN3LWxlbmRpbmctc2VydmljZSIsImlzdy1wYXBlIiwiaXN3LXBhcHJzIiwiaXN3LXBhcHNzIiwiaXN3LXBheW1lbnRnYXRld2F5IiwiaXN3LXBvc3Qtb2ZmaWNlIiwia3ljLXNlcnZpY2UiLCJwYXNzcG9ydCIsInBvc3RpbGlvbi1hcGkiLCJwcm9qZWN0LXgtY29uc3VtZXIiLCJwcm9qZWN0LXgtbWVyY2hhbnQiLCJxdC1zZXJ2aWNlIiwicXVpY2t0ZWxsZXItZXRsci1yZXF1ZXJ5IiwicmVjdXJyZW50LWJpbGxpbmctYXBpIiwidHJhbnNmZXItc2VydmljZS1hZG1pbiIsInRyYW5zZmVyLXNlcnZpY2UtY29yZSIsInZhdWx0Iiwidm91Y2hlci1hcGkiLCJ3YWxsZXQiLCJ3ZWJwYXktcG9ydGxldCJdLCJjbGllbnRfYXV0aG9yaXphdGlvbl9kb21haW4iOiJNWDYwNzIiLCJzY29wZSI6WyJwcm9maWxlIl0sImFwaV9yZXNvdXJjZXMiOlsicmlkLVBPU1QvYXBpL3YxL3B1cmNoYXNlcyIsInJpZC1QT1NUL2FwaS92MS9wdXJjaGFzZXMvKioiLCJyaWQtUFVUL2FwaS92MS9wdXJjaGFzZXMiLCJyaWQtUFVUL2FwaS92MS9wdXJjaGFzZXMvKioiLCJyaWQtR0VUL2FwaS92MS9wdXJjaGFzZXMiLCJyaWQtR0VUL2FwaS92MS9wdXJjaGFzZXMvKioiLCJyaWQtREVMRVRFL2FwaS92MS9wdXJjaGFzZXMiLCJyaWQtREVMRVRFL2FwaS92MS9wdXJjaGFzZXMvKioiLCJyaWQtUE9TVC9hcGkvdjIvcHVyY2hhc2VzIiwicmlkLVBPU1QvYXBpL3YyL3B1cmNoYXNlcy8qKiIsInJpZC1QVVQvYXBpL3YyL3B1cmNoYXNlcyIsInJpZC1QVVQvYXBpL3YyL3B1cmNoYXNlcy8qKiIsInJpZC1HRVQvYXBpL3YyL3B1cmNoYXNlcyIsInJpZC1HRVQvYXBpL3YyL3B1cmNoYXNlcy8qKiIsInJpZC1ERUxFVEUvYXBpL3YyL3B1cmNoYXNlcyIsInJpZC1ERUxFVEUvYXBpL3YyL3B1cmNoYXNlcy8qKiIsInJpZC1QT1NUL2FwaS92My9wdXJjaGFzZXMiLCJyaWQtUE9TVC9hcGkvdjMvcHVyY2hhc2VzLyoqIiwicmlkLVBVVC9hcGkvdjMvcHVyY2hhc2VzIiwicmlkLVBVVC9hcGkvdjMvcHVyY2hhc2VzLyoqIiwicmlkLUdFVC9hcGkvdjMvcHVyY2hhc2VzIiwicmlkLUdFVC9hcGkvdjMvcHVyY2hhc2VzLyoqIiwicmlkLURFTEVURS9hcGkvdjMvcHVyY2hhc2VzIiwicmlkLURFTEVURS9hcGkvdjMvcHVyY2hhc2VzLyoqIl0sImV4cCI6MTcyMDEzMzcxMywiY2xpZW50X25hbWUiOiJSN2pKaHJFZ3lMIiwiY2xpZW50X2xvZ28iOm51bGwsImp0aSI6ImExZTUzYTFhLWE2ZWMtNGU1Mi1iMmRmLTZjOTI5NWVhMzNmYSJ9.jNHALG7xpA8ceSkgC90OveMqDKBLM2tifhWv3gwf_Aq6IqiHLFy4MM7l1Ho8kBoywPZAaP9BLjA7MjgYQXf52t16Mabkp7RsyGJAeDZCjJllOEVsEkxnhS5RO7-TS5u6xRqtY04YeT-xMXpC3UUEk12mcmz5aO0sqd4SdR5Ulthy7qt44kheLxLEHCM_L7XBASd0g7kYgaRpLh3hjreF7T617_5I4Rei3oOBkbH4BMrW_TvT-R7pPqizShm7D9N5W_P9agw22i9SqImYh6WnGbyAZu_JzNndLJmYNK-sPXeeIO9fYqKPujpDLzBO093RuV7pP1euOfIL3x-efv9uog' \
--header 'Content-Type: application/json' \
--data '{
"currencyCode": "566",
"provider": "OPAY",
"amount": 30000,
"transactionReference": "isw_walletpayM111m002_112",
"splitSettlementInformation": [
{
"alias": "Yusuf Test",
"amount": "15000",
"isPrimary": true
},
{
"alias": "right",
"amount": "15000",
"isPrimary": false
}
]
}'
-X POST
Sample Request to initiate transaction
{
"currencyCode": "566",
"provider": "MOMO",
"amount": 30000,
"transactionReference": "isw_walletpayM111m002_112",
"partyId": "08135379848",
"splitSettlementInformation": [
{
"alias": "Yusuf Test",
"amount": "15000",
"isPrimary": true
},
{
"alias": "right",
"amount": "15000",
"isPrimary": false
}
]
}
Sample Response
{
"responseCode": "00",
"transactionReference": "isw_walmletd1Qf1Mam1631",
"authenticationType": "PUSH"
}
Field Description
Field | Description |
---|---|
currencyCode | The country currency code of the originating transaction. |
provider | The wallet provider. |
amount | Transaction amount customer paid for in minor (kobo) |
transactionReference | Unique transaction reference |
splitSettlementInformation (optional) | The information of the split settlement instruction, if the transaction is a split transaction. |
responseCode | Response code for the transaction, if pending, successful or failed. |
partyId (optional) | The phone number associated to the MOMO account. This is unique to MOMO alone |
authenticationType | The authentication type for the wallet provider used. |
STATUS
curl --location 'https://qa.interswitchng.com/collections/api/v1/wallet-pay/status' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer eyJhbGciOiJSUzI1NiJ9.eyJtZXJjaGFudF9jb2RlIjoiTVg2MDcyIiwicmVxdWVzdG9yX2lkIjoiMTIzODA4NTk1MDMiLCJpbmNvZ25pdG9fcmVxdWVzdG9yX2lkIjoiMTIzODA4NTk1MDMiLCJwYXlhYmxlX2lkIjoiMzM1OTciLCJjbGllbnRfZGVzY3JpcHRpb24iOm51bGwsImNsaWVudF9pZCI6IklLSUFCMjNBNEUyNzU2NjA1QzFBQkMzM0NFM0MyODdFMjcyNjdGNjYwRDYxIiwiYXVkIjpbImFwaS1nYXRld2F5IiwiYXJiaXRlciIsImNhZXNhciIsImhpbXMtcG9ydGxldCIsImluY29nbml0byIsImlzdy1jb2xsZWN0aW9ucyIsImlzdy1jb3JlIiwiaXN3LWluc3RpdHV0aW9uIiwiaXN3LWxlbmRpbmctc2VydmljZSIsImlzdy1wYXBlIiwiaXN3LXBhcHJzIiwiaXN3LXBhcHNzIiwiaXN3LXBheW1lbnRnYXRld2F5IiwiaXN3LXBvc3Qtb2ZmaWNlIiwia3ljLXNlcnZpY2UiLCJwYXNzcG9ydCIsInBvc3RpbGlvbi1hcGkiLCJwcm9qZWN0LXgtY29uc3VtZXIiLCJwcm9qZWN0LXgtbWVyY2hhbnQiLCJxdC1zZXJ2aWNlIiwicXVpY2t0ZWxsZXItZXRsci1yZXF1ZXJ5IiwicmVjdXJyZW50LWJpbGxpbmctYXBpIiwidHJhbnNmZXItc2VydmljZS1hZG1pbiIsInRyYW5zZmVyLXNlcnZpY2UtY29yZSIsInZhdWx0Iiwidm91Y2hlci1hcGkiLCJ3YWxsZXQiLCJ3ZWJwYXktcG9ydGxldCJdLCJjbGllbnRfYXV0aG9yaXphdGlvbl9kb21haW4iOiJNWDYwNzIiLCJzY29wZSI6WyJwcm9maWxlIl0sImFwaV9yZXNvdXJjZXMiOlsicmlkLVBPU1QvYXBpL3YxL3B1cmNoYXNlcyIsInJpZC1QT1NUL2FwaS92MS9wdXJjaGFzZXMvKioiLCJyaWQtUFVUL2FwaS92MS9wdXJjaGFzZXMiLCJyaWQtUFVUL2FwaS92MS9wdXJjaGFzZXMvKioiLCJyaWQtR0VUL2FwaS92MS9wdXJjaGFzZXMiLCJyaWQtR0VUL2FwaS92MS9wdXJjaGFzZXMvKioiLCJyaWQtREVMRVRFL2FwaS92MS9wdXJjaGFzZXMiLCJyaWQtREVMRVRFL2FwaS92MS9wdXJjaGFzZXMvKioiLCJyaWQtUE9TVC9hcGkvdjIvcHVyY2hhc2VzIiwicmlkLVBPU1QvYXBpL3YyL3B1cmNoYXNlcy8qKiIsInJpZC1QVVQvYXBpL3YyL3B1cmNoYXNlcyIsInJpZC1QVVQvYXBpL3YyL3B1cmNoYXNlcy8qKiIsInJpZC1HRVQvYXBpL3YyL3B1cmNoYXNlcyIsInJpZC1HRVQvYXBpL3YyL3B1cmNoYXNlcy8qKiIsInJpZC1ERUxFVEUvYXBpL3YyL3B1cmNoYXNlcyIsInJpZC1ERUxFVEUvYXBpL3YyL3B1cmNoYXNlcy8qKiIsInJpZC1QT1NUL2FwaS92My9wdXJjaGFzZXMiLCJyaWQtUE9TVC9hcGkvdjMvcHVyY2hhc2VzLyoqIiwicmlkLVBVVC9hcGkvdjMvcHVyY2hhc2VzIiwicmlkLVBVVC9hcGkvdjMvcHVyY2hhc2VzLyoqIiwicmlkLUdFVC9hcGkvdjMvcHVyY2hhc2VzIiwicmlkLUdFVC9hcGkvdjMvcHVyY2hhc2VzLyoqIiwicmlkLURFTEVURS9hcGkvdjMvcHVyY2hhc2VzIiwicmlkLURFTEVURS9hcGkvdjMvcHVyY2hhc2VzLyoqIl0sImV4cCI6MTcyMDEzNjA5MCwiY2xpZW50X25hbWUiOiJSN2pKaHJFZ3lMIiwiY2xpZW50X2xvZ28iOm51bGwsImp0aSI6IjU4NTViY2QxLWY5ZTUtNGMwMi1hY2ZjLTU5YjMxYWZkMmM0YyJ9.NJs6VXjDvd8kx_e0axqsbWLLosrJLKpAseAB_W0lMhI6kAOzqZIwsrDxXdIZi8JSWgjRsAeLM5Txpnx9-7xc1bvo40HkjyRKjRjwdNKCVQ96_53_kXgC-ySagyfHIu8evwX7V6o2I0sGUffpD8klhOZboivW56Wa6h9x2fBqABfHuuIawWXfmo7ggvxijbUdVtS6GvbIynvBWwmMdF0TfWgTqbS32OX2Cjk8yRp0WGoOz6TzJjxbWgIPVLUKolqxt5iI5jvtPUQGKQRQbAycSXzkEtWvFwIJfNbm3J651Tvd1qjALypU3r5CwV8CQUY01gpL_vECB3DZ1ZbSXCaF4w' \
--data '{
"transactionReference": "isw_walmletd1Qf1Mam1631_8891"
}'
-X POST
Sample Request
{
"transactionReference": "isw_walmletd1Qf1Mam1631_8891"
}
Sample Response
{
"responseCode": "00",
"transactionReference": "isw_walmletd1Qf1Mam1631"
}
Field Description
Field | Description |
---|---|
responseCode | Response code for the transaction, if pending, successful or failed. |
transactionReference | Unique transaction reference. |
Updated 5 months ago