Introduction
Quickteller SVA gives you access to airtime vending, over 3000 billers, instant transfers to all bank acounts in Nigeria, several banks and mobile wallets in Africa.
Sample Requests
Quickteller SVA APIs are HTTP based RESTful APIs therefore API request and response format are in JSON. We have provided sample request and responses next to each endpoint in this documentation. All you need to do is replace the dummy parameters with yours. You can also download our postman collection and environment variables to test the Quickteller SVA API.
BASE URL (Test)
BASE URL (Production)
Sample Code
We created a sample code implemented in C#. Feel free to alter the look and feel based on your taste and requirement(s). Don't forget to alter the links and paths appropriately before uploading to a web server.
Response Code
Please refer to the standard HTTP response codes. Where anything starting with 2XX
signifies approved, 4XX means client error and 5XX
indicates server error. When the response codes start with 4XX
or 5XX
, an error object will be returned to explain further the reason for this failure. Find common response code and its description below:
Code | Description |
---|---|
E10 | The service field tag has not been populated. |
E11 | This requests expects a transactionType field to be set and it is not. |
E12 | SecurityToken header is missing. |
E13 | Username or password is wrong. |
E14 | Missing content type header. |
E15 | The transaction you are trying to do is not supported. |
E16 | The service you have specified is not available. |
E17 | The service provider you have specified has not been set up on the platform. |
E18 | The service is unreachable at the moment. |
E19 | A bad response was received from service provider. |
E20 | Your request has timed out. |
E21 | An unknown error has occurred. |
E22 | Access key has not been supplied. Ensure the Authorization header has been set appropriately. |
E23 | Nonce has not been supplied. Ensure the Nonce header has been set appropriately. |
E24 | Please synchronize your time with the server and ensure your time is not outside of 30mins of the Server local time.The standard time zone used is GMT |
E25 | Nonce has already been used |
E26 | Signature failed for this request. Contact Interswitch. |
E27 | An unknown error occured during Authentication. Contact Interswitch |
E28 | Your credentials do not have access to this resource |
E29 | Timestamp is missing in your header. |
E30 | SecurityToken header is bad. |
E31 | XML data is badly formatted |
E32 | JSON data is badly formatted |
E33 | Keystore is not accessible. Contact Interswitch. |
E34 | The system is busy at the moment, please try again later. |
E35 | Bad request to service provider. Contact Interswitch. |
E36 | Bad request to service processor. Contact Interswitch. |
E37 | Bad request from client. Kindly check your message. |
E38 | Bad response from service provider. Contact Interswitch. |
E39 | Bad response from service processor. Contact Interswitch. |
E40 | Bad response to client. Contact Interswitch. |
E41 | Bad request from client. Kindly check your message. |
Services and Methods
The table below contains all the services and methods that you can access vai Quickteller SVA
Bill Payment/Recharge | Recharge Only | Do Transfer |
---|---|---|
GetBillers (Mandatory) | GetBillerPaymentItems (Mandatory) | Name Enquiry (Mandatory) |
GetBillerPaymentItems (Mandatory) | GetBillerPaymentItems (Mandatory) | GetBanksCode (Optional) |
SendBillPaymentAdvice (Mandatory) | SendBillPaymentAdvice (Mandatory) | FundTransfer (Mandatory) |
CustomerValidation (Mandatory) | QueryTransaction (Mandatory) | QueryTransaction (Mandatory) |
GetBillerCategories (Optional) | ||
QueryTransaction (Mandatory) |
Authentication
Authenticate your API calls by including your access token in the Authorization header of every request you make. Interswitch utilizes OAuth 2 to facilitate authorization and grants access to an application either on behalf of a user or on behalf of the application itself.
Application Authorization
To get an access token, create a project on the Interswitch Developer Console and obtain the Client ID
and Secret Key
of the project and encode the them using this format client_id:secret_key
using base64encode.
Copy the encoded value of your Client ID
and Secret Key
and make a call to the endpoint below with the Authorization header that contains the word Basic
followed by a space and the base64-encoded value. Ensure that you use the Content-Type:application/x-www-form-urlencoded
header and finally pass the grant_type=client_credentials
in the body of the request.
Endpoint
POST
/passport/oauth/tokenSample Request
import requests
url = "https://sandbox.interswitchng.com/passport/oauth/token"
body = {"grant_type":"client_credentials"}
headers = {
'authorization': "Basic SUtJQTFCNzU5M0M0NDAyQkM1RTAwQzQ2QUM4QjFDMUNDMEI4NUVFQkIwODg6c2VjcmV0",
'content-type': "application/x-www-form-urlencoded"}
response = requests.request("POST", url, data=body, headers=headers)
print(response.text)
REQUEST PARAMETERS | |||
---|---|---|---|
Parameters | Required | Type | Description |
ClientId | Yes | String | Application key. Navigate to `https://developer.interswitchgroup.com` for your application key |
SecretKey | Yes | String | Application secret. Navigate to `https://developer.interswitchgroup.com` for your application secret. |
grant_type | Yes | String | This must be set to client_credentials |
Sample Response (Success)
{
"access_token": "{Your access token}",
"token_type": "bearer",
"expires_in": 43199,
"scope": "profile",
"merchant_code": "MX10003",
"requestor_id": "123588975884",
"client_name": "kL79ov",
"payable_id": "359854",
"jti": "19800d56-3ac6-44c2-b318-8f2ece419840"
}
Sample Response (Failure)
{
"code": "Unauthorized",
"description": "Bad credentials",
"errors": null
}
RESPONSE PARAMETERS | |
---|---|
Parameters | Description |
access_token | A new access token that is used to authenticate against resources that belong to the app itself. |
token_type | Always bearer |
expires_in | The lifetime of the access token, in seconds |
Authorization headers should be in the following format: Authorization: Bearer Encoded(clientId:secreteKey)
Process Flows
Find below the basic flow for making calls to Quickteller SVA:
- To get all billers, make an API call to GetBillers.
- To gets the items attached to a particular biller, make an API call to GetBillerPaymentItems.
- To get send request to ISW for processing, make an API call to SendBillPaymentAdvice.
- To find items that requires validation e.g. Disco, LCC etc, make an API call to CustomerValidation.
- To get the status of a specific transaction, make an API call to QueryTransaction.
Airtime Purchase
- External system maintains a list of all organization it plans to support. This can be obtained by a mix of the following calls: GetBillers, GetBillerPaymentItems, GetBillerCategories.
- External system debits user’s VA or accepts mode of payment.
- External system sends a SendBillPaymentAdvice message to Interswitch containing all relevant information to complete the bill payment.
- Interswitch credits organization and performs settlement against external system’s sponsor bank.
- In the case of any error, Interswitch will respond appropriately and this would go all the way to the external system to do reversals internally
- External system can always use a QueryTransaction call to Interswitch to verify any transaction status.
Bill Payment
- External system maintains a list of all organization it plans to support. This can be obtained by a mix of the following calls: GetBillers, GetBillerPaymentItems, GetBillerCategories.
- External system debits user’s account or accepts mode of payment
- External system sends a SendBillPaymentAdvice message to Interswitch containing all relevant information to complete the bill payment Interswitch credits organization and performs settlement against external system’s sponsor bank.
- In the case of any error, Interswitch will respond appropriately and this would go all the way to the external system to do reversals internally
- External system can always use a QueryTransaction call to Interswitchto verify any transaction status
Transfer to Account
- External system debits user’s virtual account or accepts a mode of payment
- External system sends a DoTransfer message to Interswitch
- Interswitch application uses the preconfigured float card of the VA for a debit and credits the beneficiary bank
- External system can always use a QueryTransaction call to Interswitch to verify any transaction status
Transfer to Prepaid Card
- External system debits user’s virtual account or accepts a mode of payment
- External system sends a DoTransfer message to Interswitch
- Interswitch application uses the preconfigured float card of the VA for a debit and credits the Prepaid Card
- External system can always use a QueryTransaction call to Interswitch to verify any transaction status
Test Credentials
If you want to quickly test the Quickteller SVA API, use the test details below to make an API call.
Test Details | ||||
---|---|---|---|---|
Terminal ID | Request Reference/Transfer Code Prefix | Initiating Entity Code | ||
3DMO0001 | 1453 | DMO |
Test SVA Card | ||
---|---|---|
Card Number | Expiry Date | Pin |
6280511000000095 | Dec 2026 | 0000 |
Name Enquiry/Transfer/Query | ||
---|---|---|
Account number | Bank code | Bank name |
0014261063 | 058 | GTB |
9999999999 | 011 | First Bank |
Bill Payment (Non PIN Based) | ||||
---|---|---|---|---|
DSTV Valid customerId | Amount | paymentCode | Billerid | category |
0000000001 | 1460000 | 10401 | 104 | 2 |
Bill Payment (PIN Based) | |||
---|---|---|---|
paymentCode | Valid customerId (meter number) | PHCN billerid | Category |
90501 | 0434556574 | 905 | 1 |
Recharge (Airtime) | |||
---|---|---|---|
paymentCode | customerId/customerMobile | billerid | Category |
90101 | 2348056731573 | 901 | 4 |
Get Billers
This method retrieves billers based on the supplied search criteria.
Endpoint
GET
/v2/quickteller/billersRequest Parameters | ||||
---|---|---|---|---|
Field Name | Required | Length | Format | Description |
Terminal ID | True | 8 | Alphanumeric | Terminal ID (This is usually provided by Interswitch but you can use the Terminal ID provided in this documentation to test) |
Sample Response (Success)
{ “billers”: [ {
“categoryid”: “3”,
“categoryname”: “State Payments”,
“categorydescription”: “Pay state taxes”,
“billerid”: “303”,
“billername”: “Abia State Infrastructural Development Agency”,
“customerfield1”: “Customer No”,
“customerfield2”: “”,
“supportemail”: “quickteller@interswitchng.com”,
“paydirectProductId”: “3332”,
“paydirectInstitutionId”: “0”,
“narration”: “Pay”,
“shortName”: “ASIDA”,
“surcharge”: “10000”,
“currencyCode”: “566”,
“quickTellerSiteUrlName”: “asida”,
“amountType”: “0”,
“currencySymbol”: “NGN”,
“customSectionUrl”: “”,
“logoUrl”: “q.jpg”,
“type”: “”, “url”: “” }]}
GetBillers Response Parameters | |
---|---|
Code | Description |
categoryid | Category Id |
categoryname | Biller Category |
categorydescription | Description of Category |
billerid | Biller’s Unique identifier |
billername | Name of biller |
customerfield1 | Customer Id Field 1 |
customerfield2 | Customer Id Feld 2 |
currencySymbol | The symbol of the currency |
logoUrl | Base URL is https://quickteller.sandbox.interswitchng.com/Content/Images/Downloaded/ |
The response parameters above are returned per biller.
Get Biller Categories
This method retrieves all the biller category types
Endpoint
GET
/api/v2/quickteller/categorysRequest Parameters | ||||
---|---|---|---|---|
Field Name | Required | Length | Format | Description |
Terminal ID | True | 8 | Alphanumeric | Terminal ID (This is usually provided by Interswitch but you can use the Terminal ID provided in this documentation to test) |
Sample Response (Success)
{“categorys”:
[{“categoryid”: “1”,
“categoryname”: “Utility Bills”,
“categorydescription”: “Pay your utility bills here”},
{“categoryid”: “2”,
“categoryname”: “Cable TV Bills”,
“categorydescription”: “Pay for your cable TV subscriptionshere”}]}
GetBillerCategories Response Parameters | ||||
---|---|---|---|---|
Code | Description | |||
categoryid | Category Id | |||
categoryname | Biller Category | |||
categorydescription | Description of Category |
Get Billers By Category
This method retrieves billers based on the supplied search criteria.
Endpoint
GET
/api/v2/quickteller/categorys/{id}/billerRequest Parameters | ||||
---|---|---|---|---|
Field Name | Required | Length | Format | Description |
Terminal ID | True | 8 | Alphanumeric | Terminal ID (This is usually provided by Interswitch but you can use the Terminal ID provided in this documentation to test) |
id | True | Alphanumeric | An ID of the category to be returned. Please use a valid value returned from Get Categories API |
Sample Response (Success)
{ “billers”:
[ { “categoryid”: “3”,
“categoryname”: “State Payments”,
“categorydescription”: “Pay state taxes”,
“billerid”: “303”,
“billername”: “Abia State Infrastructural Development Agency”,
“customerfield1”: “Customer No”,
“customerfield2”: “”,
“supportemail”: “quickteller@interswitchng.com”,
“paydirectProductId”: “3332”,
“paydirectInstitutionId”: “0”,
“narration”: “Pay”,
“shortName”: “ASIDA”,
“surcharge”: “10000”,
“currencyCode”: “566”,
“quickTellerSiteUrlName”: “asida”,
“amountType”: “0”,
“currencySymbol”: “NGN”,
“customSectionUrl”: “”,
“logoUrl”: “q.jpg”,
“type”: “”, “url”: “” }]}
Response Parameters | |
---|---|
Code | Description |
categoryid | Category Id |
categoryname | Biller Category |
categorydescription | Description of Category |
billerid | Biller’s Unique identifier |
billername | Name of biller |
customerfield1 | Customer Id Field 1 |
customerfield2 | Customer Id Feld 2 |
currencySymbol | The symbol of the currency |
logoUrl | Base URL is https://quickteller.sandbox.interswitchng.com/Content/Images/Downloaded/ |
The response parameters above are returned per biller.
Get Biller Payment Items
This method retrieves billers based on the supplied search criteria.
Endpoint
GET
/api/v2/quickteller/billers/{billerId}/paymentitemsRequest Parameters | ||||
---|---|---|---|---|
Field Name | Required | Length | Format | Description |
Terminal ID | True | 8 | Alphanumeric | Terminal ID (This is usually provided by Interswitch but you can use the Terminal ID provided in this documentation to test) |
BillerId | True | >2 | Numeric | Unique per biller. Returned in GetBillers response |
Sample Response (Success)
"paymentitems": [
{
"categoryid": "1",
"billerid": "905",
"isAmountFixed": false,
"paymentitemid": "01",
"paymentitemname": "Meter Token",
"amount": "0",
"billerType": "PH",
"code": "01",
"currencyCode": "566",
"currencySymbol": "NGN",
"itemCurrencySymbol": "",
"sortOrder": "0",
"pictureId": "0",
"paymentCode": "90501",
"itemFee": "10000"
}
]
}
GetBillerPaymentItems Response Parameters | |
---|---|
Code | Description |
categoryid | Category Id |
billerid | Id of Quickteller Biller |
isAmountFixed | False is returned for variable amount, while True is returned for fixed amount. If amount is fixed,it is mandatory to send the exact returned in the GetBillerPaymentItems response in your SendBillpaymentAdvice request. |
paymentitemid | Item Id |
paymentitemname | Payment Item name |
amount | Item Amount |
code | Item code |
currencyCode | Currency code |
currencySymbol | Symbol of the Currency. Example NGN for Niara |
itemCurrencySymbol | Currency code |
paymentcode | Unique Payment item identifier |
A HTTP response code 200 is sent back for a success. The parameters above are returned per biller.
Customer Validation
This method is used to notify the biller of the payment
Endpoint
POST
/api/v2/quickteller/customers/validationsRequest Parameters | |||
---|---|---|---|
Parameter | Required | Length | Description |
Customers | True | Contains the array for customer to be validated | |
PaymentCode | True | <=20 | Unique payment code for a biller |
CustomerId | True | <=50 | Customer’s Unique Identifier |
Response Parameters | ||
---|---|---|
Parameter | Length | Description |
Customers | Contains the array for customer to be validated | |
PaymentCode | <=20 | Unique payment code for a biller |
CustomerId | <=50 | Customer’s Unique Identifier |
FullName | Customers Name | |
ResponseCode | Response code for the request made |
Sample Response (Success)
{“Customers”: [
{“paymentCode”: “04342512”,
“customerId”: “98325”,
“responseCode”: “90000”,
“fullName”: “IBE EMMANUEL”,
“amount”: “1500000”,
“amountType”: “5”,
“amountTypeDescription”: “Biller requires exact amount: NGN 15,000.00.”}]}
The amountType
is the response data that shows the expected amount to be paid by the customer. on customer validation, you are expected to validate the allowed amount to be paid by the customer.
Amount Types (Example)
“amount”: “1500000”,
“amountType”: “5”
customer is expected to pay exact amount (N1500000) as returned.
“amount”: “1500000”,
“amountType”: “4”
customer can pay any amount below 1500000
Amount Type Description | ||
---|---|---|
Response | Lable | Meaning |
0 | None | Any amount can be paid |
1 | Minimum | If the returned amount is 1000, customer can pay any amount from 1000 |
2 | Greater than minimum | If the returned amount is 1000, customer can pay any amount greater than 1000 |
3 | Maximum | If the amount returned is 1000, customer can pay any amount below or equal to 1000 |
4 | Less than Maximum | If the amount returned is 1000, customer can pay any amount below to 1000 |
5 | Exact | The exact amount returned must be paid |
Send Bill Payment Advice
This method is used to notify the biller of the payment
Endpoint
POST
/api/v2/quickteller/payments/advicesSample Request
{“TerminalId”:”3FTH0001″,
“paymentCode”:”10403″,
“customerId”:”0000000001″,
“customerMobile”:”2348056731576″,
“customerEmail”:”iswtester2@yahoo.com”,
“amount”:”360000″,
“requestReference”:”1194000023″}
Request Parameters | |||
---|---|---|---|
Parameter | Required | Length | Description |
TerminalId | True | Terminal ID assigned by Interswitch | |
PaymentCode | True | <=20 | Unique payment code retrieved from GetBillerPaymentItems call |
CustomerId | True | <=50 | Customer’s Unique Identifier |
CustomerMobile | False | <=13 | Customer’s Mobile Number. |
CustomerEmail | False | <=50 | Customer’s Email Number. |
Amount | True | <=50 | Paid by customer. Amount should be sent in lower denomination |
CustomerEmail | False | <=50 | Customer’s Email Address |
requestReference | True | <=12 | Unique requestReference generated on Client’s system and sent in DoTransfer request. 4 digit requestreference prefix will be provided by Interswitch |
Response Parameters | |
---|---|
Code | Response |
TransactionReference (A billPayment transaction) | Unique Transaction reference generated by Interswitch |
MiscData (Only returned if a billpayment is PIN based) | Biller’s Token |
PIN(Only returned if a billpayment is PIN based) | Biller’s Token |
ResponseCodeGrouping | A response of status is returned (SUCCESS, FAILED, or PENDING) |
Western Union
Headers
Click here to learn how to compute the required headers for authentication.
Request Parameters
Field | Length | Description |
---|---|---|
TerminalId Mandatory |
Terminal ID assigned by Interswitch | |
PaymentCode Mandatory |
<=20 | Unique payment code retrieved from GetBillerPaymentItems call |
CustomerId Mandatory |
<=50 | Customer’s Unique Identifier |
CustomerMobile Optional |
<=13 | Customer’s Mobile Number |
CustomerEmail Optional |
<=50 | Customer’s Email Address |
Amount Mandatory |
<=50 | Amount Paid by customer. Amount should be sent in lower denomination |
CustomerEmail Optional |
<=50 | Customer’s Email Address |
requestReference Mandatory |
<=12 | Unique requestReference generated on Client’s system and sent in DoTransfer request. 4 digit requestreference prefix will be provided by Interswitch. |
CustomerEmail Optional |
<=50 | Customer’s Email Address |
CustReference Mandatory |
10 | MTCN |
PayerCountryCode Mandatory |
||
PayeeAccountNumber Mandatory |
||
PayeeAccountType Mandatory |
||
Amount Mandatory |
||
ExpectedCurrency Mandatory |
||
PayeeFirstname Mandatory |
||
PayeeSurname Mandatory |
||
ReceiverPhoneNumber Mandatory |
||
TestAnswer Mandatory |
||
IdType Optional |
||
IdNumber Optional |
||
CountryOfIssue Optional |
||
DateOfBirth Optional |
||
IdExpirationDate Optional |
||
CountryOfBirth Optional |
Sample Request
{"paymentCode":"50204",
"customerId":"0693621805",
"customerMobile":"2348056731576",
"customerEmail":"iswtester2@yahoo.com",
"pageFlowValues":"CustReference:5381319048|PayerCountryCode:AE|PayeeAccountNumber:0115715470|
PayeeAccountType:20|Amount:100000|
ExpectedCurrency:566|PayeeFirstname:Peace|PayeeSurname:Idaewor|ReceiverPhoneNumber:08056731576|
TestAnswer:ans|IdType:Driver's License|IdNumber:123456|CountryOfIssue:NG|DateOfBirth:20082017|
IdExpirationDate:12122020|CountryOfBirth:NG|","requestReference":"1453100010125","amount":100000}
Response Parameters | |
---|---|
Code | Response |
transactionRef (A billPayment transaction) | Unique Transaction reference generated by Interswitch |
transferCode | |
recipientName | This should be displayed on the receipt |
Sample Response
{
"transactionRef":"WU|GTB|AC|310717153744|CUGFQVHQUU",
"transferCode":"102900048490",
"recipientName": "TEST1 TEST2 TEST3"
}
Query Transaction
This method is used to retrieve the status of a transaction
Endpoint
GET
{{base url}}api/v2/quickteller/transactions?requestreference=requestReferencevalueFind a sample request for querying a transaction (where 119420151169 is a sample requestReference) below:
Sample Request
https://sandbox.interswitchng.com/api/v2/quickteller/transactions?requestreference=119420151169
Request Parameters | ||||
---|---|---|---|---|
Field Name | Required | Length | Format | Description |
RequestReference | True | 20 | Alphanumeric | The request reference passed in the ‘SendBillPaymentAdvice’ method or the transfer code passed in the ‘DoTransfer’ method |
Terminal ID | False | 8 | Alphanumeric | Terminal ID provided by Interswitch |
QueryTransaction Response
{
“recharge”: {
“biller”: “ZainMTU”,
“customerId1”: “08090673520”,
“customerId2”: null,
“paymentTypeName”: “Zain MTU 50”,
“paymentTypeCode”: “01”,
“billerId”: “901”},
“amount”: “32900”,
“currencyCode”: “566”,
“customer”: “”,
“customerEmail”: “iswtester2@yahoo.com”,
“customerMobile”: “2348056731576”,
“paymentDate”: “3/17/2017 1:10:13 PM”,
“requestReference”: “14561489752590”,
“serviceCode”: “01”,
“serviceName”: “Zain MTU 50”,
“serviceProviderId”: “901”,
“status”: “Complete”,
“surcharge”: “0”,
“transactionRef”: “XXT|Web|3XXT0001|ZainMTU|170317131013|00000040”,
“transactionResponseCode”: “90000”,
“transactionSet”: “Recharge”,
“responseCode”: “90000”
}
Response Parameters | |
---|---|
Response | Description |
TransactionResponseCode | TransactionResponseCode confirms the status of the queried transaction |
SVA Cashout
Base Url (Sandbox)
https://sandbox.interswitchng.com
Headers
{
Content-Type: application/json
Authorization: { passport generated bearer token }
}
Pay Inquiry
This method is used to perform Quickteller Payment Inquiry
Endpoint
POST
{base url}/api/v2/quickteller/transactions/inquirysSample Request
{
"paymentCode": "04226901",
"customerId": "3394433",
"customerMobile": "08032269223",
"customerEmail": "customer1@gmail.com"
"pageFlowValues": "BankId:16|DestinationAccountNumber:0221149201|DestinationAccountType:10|Amount:60000|ReciepientName:GBOLAHAN MUSBAU SUBAIR",
"amount": "60000"
}
Request Parameters | ||||
---|---|---|---|---|
Field Name | Required | Length | Format | Description |
paymentCode | True | <=20 | Alphanumeric | The Payment Code that identifies the biller. Please see Get Biller response |
customerId | True | <=50 | Alphanumeric | Customer ID e.g. smart card number, meter number |
customerMobile | False | <=50 | Alphanumeric | Customer mobile number |
customerEmail | False | <=50 | Alphanumeric | Customer email |
amount | False | <=50 | long | Amount |
pageFlowValues | False | Alphanumeric | This is required when you are sending a funds transfer trasaction. Example: BankId:16|Destination|AccountNumber:0221149201|DestinationAccountType:10|Amount:60000|ReciepientName:GBOLAHAN MUSBAU SUBAIR |
Sample Response (Success)
{
"isAmountFixed": 1,
"surcharge": 5250,
"biller": "Transfer to Account",
"amount": 60000,
"paymentItem": "TransferToAccount",
"narration": "Tran/889069242845/0221149201/GBOLAH/LANG",
"customerId": 2348102692068,
"shortTransactionRef": 889069242845,
"transactionRef": "IQT|T|MOB|CA|WEMA|AC|220319101419|P3ED97DH",
"customerName": 221149201,
"responseCode": 90000}
Response Parameters | |
---|---|
Field Name | Description |
customerName | Customer’s name |
TransactionReference | Unique Transaction reference generated by Interswitch |
shortTransactionRef | Transaction reference |
narration | Transaction remark. This will show up in Customer’s bank statement |
surcharge | The transaction fee to be charged by Interswitch |
Send Transaction
This method is used to perform Quickteller Payment Transaction
Endpoint
POST
{base url}/api/v2/quickteller/transactionsSample Request
{
"amount": 250000,
"pinData": "****************",
"secureData": "****************",
"msisdn": 2348030014003,
"transactionRef": "AQT|T|MOB|4AQT0001|KEDP|241016153410|00012392",
"cardBin": 53701002040
}
Request Parameters | ||||
---|---|---|---|---|
Field Name | Required | Length | Format | Description |
amount | True | <=20 | Numeric | Transaction amount in minor denomination |
pinData | True | 16 | Hexadecimal | Encrypted PIN Block |
secureData | True | 512 | Hexadecimal | Other Transaction sensitve data e.g. Card, CVV, Exp Date |
msisdn | False | <=13 | Numeric | Customer Mobile phone |
transactionRef | True | <=60 | Alphanumeric | Transaction reference returned during Bill Payment inquiry call |
cardBin | True | <=11 | Numeric | The first 11 number of the Card Number |
Sample Response (Success)
{
"responseCode": 90000,
"shortTransactionRef": 999969541767,
"responseDescription": "Your transaction has been processed successfully.",
"rechargePin": "Virtual Top Up",
"transactionRef": "UBA|MOB|4AQT0001|MTNV|241016154029|00008356",
"transactionResponseCode": "00",
"transactionResponseDesc": "Your transaction has been processed successfully."
}
Get Bank Id
GetBankCode Method is implemented and used to retrieve banks code.
Endpoint
GET
{base url}/api/v2/quickteller/configuration/fundstransferbanksSample Response
{
"banks": [
{
"id": "31",
"cbnCode": "044",
"bankName": "Access Bank Nigeria Plc",
"bankCode": "ABP"
},
{
"id": "101",
"cbnCode": "056",
"bankName": "Ecobank Nigeria 2",
"bankCode": "ECO2"
},
{
"id": "128",
"cbnCode": "085",
"bankName": "First Inland Bank Plc",
"bankCode": "FIB"
},
{
"id": "10",
"cbnCode": "058",
"bankName": "Guaranty Trust Bank Plc",
"bankCode": "GTB"
},
{
"id": "121",
"cbnCode": "232",
"bankName": "Sterling Bank Plc",
"bankCode": "SBP"
},
{
"id": "117",
"cbnCode": "057",
"bankName": "Zenith Bank International",
"bankCode": "ZIB"}]}
{
"banks": [
{
"id": "31",
"cbnCode": "044",
"bankName": "Access Bank Nigeria Plc",
"bankCode": "ABP"
},
{
"id": "101",
"cbnCode": "056",
"bankName": "Ecobank Nigeria 2",
"bankCode": "ECO2"
},
{
"id": "128",
"cbnCode": "085",
"bankName": "First Inland Bank Plc",
"bankCode": "FIB"
},
{
"id": "10",
"cbnCode": "058",
"bankName": "Guaranty Trust Bank Plc",
"bankCode": "GTB"
},
{
"id": "121",
"cbnCode": "232",
"bankName": "Sterling Bank Plc",
"bankCode": "SBP"
},
{
"id": "117",
"cbnCode": "057",
"bankName": "Zenith Bank International",
"bankCode": "ZIB"}]}
Bank Codes
Bank Entity Codes | |
---|---|
Bank Name | Bank CBN Code |
Access Bank | 044 |
Diamond Bank | 063 |
Ecobank | 050 |
FCMB | 214 |
Fidelity Bank | 070 |
First Bank of Nigeria | 011 |
Guaranty Trust Bank | 058 |
Heritage Bank | 030 |
Jaiz Bank | 301 |
Keystone | 082 |
Providus | 101 |
Polaris (Skye Bank) | 076 |
Stanbic IBTC Bank | 039 |
Standard chartered | 068 |
Sterling Bank | 232 |
Suntrust Bank | 100 |
Union Bank | 032 |
United Bank for Africa | 033 |
Unity Bank | 215 |
Wema Bank | 035 |
Zenith International Bank | 057 |
Payment Channels | |
---|---|
Code | Name |
1 | ATM |
2 | POS |
3 | Web |
4 | Mobile |
5 | Kiosk |
6 | Voice |
7 | Location |
Sample Libraries
This section contains the Quickteller Biller and Fund Transfer API functions and calls bundle together in easy to use Dynamic-link libraries (DLLs), and components you can add into your projects.
Definition of Terms
We've exaplained some important concepts you need to know before delving into the Sample Lbraries:
Biller: A biller is any Organization, Institution or Business that is able to exchange services for a fee. Example: Telecoms provider (Airtel, Glo, MTN), Government Body (Lagos State) etc.
Category: Billers are grouped under categories. For instance, all cable providers(DSTV, GOTV) can e grouped under a
cable
Category.Customer - An individual that has an intent and/or pays for any of the services offered by a Biller.
PaymentItem - A biller (e.g DSTV) can offer different services and hence different prices for them. Each of those services, falls under a payment-item and has a unique payment-item-code. We say that a user has intent to pay for a payment-item offered by a Biller. An example of a payment-item under DSTV is the
DSTV Premium Bouquet
What this SDK provides for you
Get All Billers: Get a list of all billers supported on our platform.
Get All Categorys: Get a list of all categorys and associated billers supported on our platform.
Get All Billers under a Category: Get a list of all biilers under a particular category.
Get Biller Payment Items: Get a list of all payment-items under aparticular Biller.
Validate Customer: Validates a customer-id under a particular biller.
Make payment for a customer: Makes a payment for a payment-item for a particular customer.
Query the status of a transaction: Query the status of a transaction made in the past based on the Request Reference.
C
This SDK helps you get a list of all banks supported on our platform, validates an account number against a particular bank and transfers funds from a senders account to receivers account.
Prerequisites
Sample Codes and Libraries
PHP
This SDK helps you get a list of all banks supported on our platform, validates an account number against a particular bank and transfers funds from a senders account to receivers account.
Prerequisites
- PHP 5+ or PHP 7
- Interswitch PHP Base Library
Sample Codes and Libraries
Quick start
Composer
"interswitch/interswitch": "dev-master"
composer require interswitch/interswitch:dev-master
Java
This SDK helps you get a list of all banks supported on our platform, validates an account number against a particular bank and transfers funds from a senders account to receivers account.
Prerequisites
- Java JDK 6 or higher
- An environment which supports TLS 1.2
- Interswitch Java Base Library
Sample Codes and Libraries
Quickstart
maven
<groupId>com.interswitch</groupId>
<artifactId>interswitch-java</artifactId>
<version>0.0.1</version>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.6.2</version>
</dependency>
Fetch All Banks Request
To get started, try out our simple Fetch All banks request.
Fetch All Banks Request
<span class="pl-k">import</span> <span class="pl-smi">com.interswitch.techquest.auth.Interswitch</span>;
<span class="pl-k">import</span> <span class="pl-smi">com.interswitch.transfer.FundsTransfer</span>;
<span class="pl-k">private</span> <span class="pl-k">static</span> <span class="pl-k">final</span> <span class="pl-smi">String</span> initiatingEntityCode <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">"</span>XXT<span class="pl-pds">"</span></span>;
<span class="pl-k">private</span> <span class="pl-k">final</span> <span class="pl-k">static</span> <span class="pl-smi">String</span> clientId <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">"</span>IKIA6570778A3484D6F33BC7E4165ADCA6CF06B2860A<span class="pl-pds">"</span></span>;
<span class="pl-k">private</span> <span class="pl-k">final</span> <span class="pl-k">static</span> <span class="pl-smi">String</span> clientSecret <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">"</span>DXfUwpuIvMAKN84kv38uspqGOsStgFS0oZMjU7bPwpU=<span class="pl-pds">"</span></span>;
<span class="pl-k">public</span> <span class="pl-k">static</span> <span class="pl-k">void</span> main(<span class="pl-k">String</span>[] args) {
<span class="pl-smi">FundsTransfer</span> transfer <span class="pl-k">=</span> <span class="pl-k">new</span> <span class="pl-smi">FundsTransfer</span>(clientId, clientSecret, <span class="pl-smi">Interswitch</span><span class="pl-c1"><span class="pl-k">.</span>ENV_SANDBOX</span>);
<span class="pl-k">try</span> {
<span class="pl-smi">BankResponse</span> bankResponse <span class="pl-k">=</span> transfer<span class="pl-k">.</span>fetchBanks();
<span class="pl-k">Bank</span>[] bank <span class="pl-k">=</span> bankResponse<span class="pl-k">.</span>getBanks(); <span class="pl-c">// a bank array of all banks</span>
<span class="pl-k">if</span> (bank <span class="pl-k">instanceof</span> <span class="pl-smi">Object</span>) {
<span class="pl-c">// successful</span>
<span class="pl-smi">Bank</span> testBank <span class="pl-k">=</span> bank[<span class="pl-c1">0</span>]; <span class="pl-c">// bank at index 0</span>
<span class="pl-smi">String</span> cbnCode <span class="pl-k">=</span> testBank<span class="pl-k">.</span>getCbnCode(); <span class="pl-c">// Central bank code</span>
<span class="pl-smi">String</span> bankName <span class="pl-k">=</span> testBank<span class="pl-k">.</span>getBankName(); <span class="pl-c">// bank name:</span>
<span class="pl-smi">String</span> bankCode <span class="pl-k">=</span> testBank<span class="pl-k">.</span>getBankCode(); <span class="pl-c">// bankcode in alphabetical form: UBA, GTB, FBN</span>
}
}
<span class="pl-k">catch</span>(<span class="pl-smi">Exception</span> ex) {
<span class="pl-c">//</span>
ex<span class="pl-k">.</span>printStackTrace();}}
Node Js
This SDK helps you get a list of all banks supported on our platform, validates an account number against a particular bank and transfers funds from a senders account to receivers account.
Prerequisites
- Nodejs Runtime.
- An environment which supports TLS 1.2
- Interswitch Base Library
Sample Codes and Libraries
Installation
$ npm install interswitch-funds-transfer
Running sample app
cd B2C-Funds-Transfer-nodejs
node AppDriver.js
FAQs
Error | Possible problem | Resolution |
---|---|---|
E38 | You have not been configured on Quickteller Platform | Contact your Support Engineer. Application Parameter configuration is pending |
E28 | You do not have sufficient right to access this service | Contact your Support Engineer. Resources or Access right need to be enabled. |
E26 | Invalid authentication credentials: signature cannot be authenticated | Faulty signature computation. Confirm hextobase64 encoding is done properly. "Signature"=hexToBase64(Sha1.hash(signatureCipher))) where "signatureCipher" = httpMethod + "&"+ url + "&" +timestamp + "&" + nonce + "&" + clientId + "&" + clientSecret |
E15 | This transaction is not yet supported. Please API documentation for supported transaction type | Check the URL you're using e.g. payment instead of payments |
10002 | Invalid transfer code/Invalid request prefix | You're not using the right request prefix. |