Download OpenAPI specification:Download
Charles Odili just joined a fintech startup, EffesEYE, and was asked to lead the development of an urgent project on the table, a simple billing application.
In order to have a view on the practicality of this new product, the Board asked that he develop and present an MVP of this product to them at the next Management meeting.
Odili was required to build an MVP on the FSI Sandbox, integrated into the APIs of the available Banks and services of the Sandbox. This application can buy telephone credit, pay electricity bills and Pay TV bills (DSTV, Startimes, etc).
Odili adopted an API-first approach, and this is the documentation convering the API that drives the services and features the EffesEYE billing (MVP) platform provides to customers.
The API is deployed at https://effeseye-api.herokuapp.com, is managed by a secure admin application at https://effeseye-admin.netlify.app, and is available for customers via an installable Progressive Web App at https://effeseye-admin.netlify.app
Buy airtime credit, pay for electricity or TV subscription with this endpoint
version required | string 7 characters ^\d{4}-\d{2}$ Example: 2020-10 The API version |
service required | string [ 2 .. 11 ] characters Enum: "airtime" "electricity" "tv" The service you want to pay for |
HTTP request payload for the payment service
amount required | integer The amount to pay for the service |
currency required | string 3 characters Enum: "NGN" "USD" The ISO 4217 currency code the |
provider required | string The provider whose service is being purchased:
|
sendTo required | string The corresponding phone number, meter number, or TV subscription Id to credit this recharge to |
accountToDebit required | string 10 characters The verified (NUBAN) bank account to debit for this payment |
{- "amount": 1000,
- "currency": "NGN",
- "provider": "Airtel",
- "sendTo": "+2348138145472",
- "accountToDebit": "0037514056"
}
{- "message": "string",
- "paymentId": "string",
- "status": "PENDING",
- "details": { }
}
Query the status of a payment transaction
paymentId required | string The request id of a previous airtime recharge request |
version required | string 7 characters ^\d{4}-\d{2}$ Example: 2020-10 The API version |
{- "message": "payment status",
- "paymentId": "45934508043-583",
- "status": "SUCCEEDED"
}
Creates a new user account on the EffesEYE platform
version required | string 7 characters ^\d{4}-\d{2}$ Example: 2020-10 The API version |
The HTTP request payload of data needed to create the new account
bvn required | string 11 characters The unique Bank Verification Number (BVN) of the new user |
pswd required | string <password> >= 6 characters The user's password |
email required | string <email> >= 8 characters The user's email address |
{- "bvn": "12345678901",
- "pswd": "pa$$word",
- "email": "user@example.com"
}
{- "message": "Account created",
- "accountId": "5645f-5dw4358-hgf-34545345345"
}
Creates a new user account on the EffesEYE platform
version required | string 7 characters ^\d{4}-\d{2}$ Example: 2020-10 The API version |
The HTTP request payload of data needed to create the new account
bvn required | string 11 characters The unique Bank Verification Number (BVN) of the new user |
pswd required | string <password> >= 6 characters The user's password |
email required | string <email> >= 8 characters The user's email address |
{- "bvn": "12345678901",
- "pswd": "pa$$word",
- "email": "user@example.com"
}
{- "message": "Account created",
- "accountId": "5645f-5dw4358-hgf-34545345345"
}
The endpoint for authenticating users and granting access into the client application
version required | string 7 characters ^\d{4}-\d{2}$ Example: 2020-10 The API version |
The HTTP request payload of data for user authentication
pswd required | string >= 6 characters The user account password |
email required | string <email> The user account email |
{- "pswd": "pa55W0rd",
- "email": "user@example.com"
}
{- "message": "login successful",
- "authToken": "567459867405764509769457694"
}
The endpoint for authenticating administrators and granting access into the admin application
version required | string 7 characters ^\d{4}-\d{2}$ Example: 2020-10 The API version |
The HTTP request payload of data for admin authentication
pswd required | string >= 6 characters The user account password |
email required | string <email> The user account email |
{- "pswd": "pa55W0rd",
- "email": "user@example.com"
}
{- "message": "successful login",
- "authToken": "56745967457640597645967405492-348-239-42"
}
Creates a new user account on the EffesEYE platform
version required | string 7 characters ^\d{4}-\d{2}$ Example: 2020-10 The API version |
The HTTP request payload of data needed to create the new account
bvn required | string 11 characters The unique Bank Verification Number (BVN) of the new user |
pswd required | string <password> >= 6 characters The user's password |
email required | string <email> >= 8 characters The user's email address |
{- "bvn": "12345678901",
- "pswd": "pa$$word",
- "email": "user@example.com"
}
{- "message": "Account created",
- "accountId": "5645f-5dw4358-hgf-34545345345"
}
Creates a new user account on the EffesEYE platform
version required | string 7 characters ^\d{4}-\d{2}$ Example: 2020-10 The API version |
The HTTP request payload of data needed to create the new account
bvn required | string 11 characters The unique Bank Verification Number (BVN) of the new user |
pswd required | string <password> >= 6 characters The user's password |
email required | string <email> >= 8 characters The user's email address |
{- "bvn": "12345678901",
- "pswd": "pa$$word",
- "email": "user@example.com"
}
{- "message": "Account created",
- "accountId": "5645f-5dw4358-hgf-34545345345"
}
The endpoint for authenticating users and granting access into the client application
version required | string 7 characters ^\d{4}-\d{2}$ Example: 2020-10 The API version |
The HTTP request payload of data for user authentication
pswd required | string >= 6 characters The user account password |
email required | string <email> The user account email |
{- "pswd": "pa55W0rd",
- "email": "user@example.com"
}
{- "message": "login successful",
- "authToken": "567459867405764509769457694"
}
The endpoint for authenticating administrators and granting access into the admin application
version required | string 7 characters ^\d{4}-\d{2}$ Example: 2020-10 The API version |
The HTTP request payload of data for admin authentication
pswd required | string >= 6 characters The user account password |
email required | string <email> The user account email |
{- "pswd": "pa55W0rd",
- "email": "user@example.com"
}
{- "message": "successful login",
- "authToken": "56745967457640597645967405492-348-239-42"
}
Checks the validity and expiry of a token, and only returns true for tokens that have a valid cryptographic signature and have not expired
version required | string 7 characters ^\d{4}-\d{2}$ Example: 2020-10 The API version |
token required | string The token to verify |
{- "token": "67760385-30483gdlfkglkdfgtu9564967540764674hgdflhglkfhl2309-5403485"
}
{- "verified": true
}
The endpoint for authenticating users and granting access into the client application
version required | string 7 characters ^\d{4}-\d{2}$ Example: 2020-10 The API version |
The HTTP request payload of data for user authentication
pswd required | string >= 6 characters The user account password |
email required | string <email> The user account email |
{- "pswd": "pa55W0rd",
- "email": "user@example.com"
}
{- "message": "login successful",
- "authToken": "567459867405764509769457694"
}
The endpoint for authenticating administrators and granting access into the admin application
version required | string 7 characters ^\d{4}-\d{2}$ Example: 2020-10 The API version |
The HTTP request payload of data for admin authentication
pswd required | string >= 6 characters The user account password |
email required | string <email> The user account email |
{- "pswd": "pa55W0rd",
- "email": "user@example.com"
}
{- "message": "successful login",
- "authToken": "56745967457640597645967405492-348-239-42"
}
Fetch a collection of registered users (accounts) on the platform
version required | string 7 characters ^\d{4}-\d{2}$ Example: 2020-10 The API version |
{- "message": "success",
- "data": [
- {
- "accountid": "45930953573nvvgjout4309u045043",
- "firstname": "Charles",
- "lastname": "Odili",
- "accounttype": "ADMIN",
- "email": "chalu@example.com",
- "lastseen": "2020-10-24T15:38:12.580Z",
- "membersince": "2020-10-24T15:38:12.580Z"
}
]
}
Fetch a collection of payments done on the patform
version required | string 7 characters ^\d{4}-\d{2}$ Example: 2020-10 The API version |
{- "message": "payment successful",
- "data": [
- {
- "id": "rgkdlkfj5695476947694",
- "amount": 1000,
- "currency": "NGN",
- "type": "AIRTIME",
- "status": "SUCCEEDED",
- "when": "2020-10-24T15:35:41.000Z",
- "details": {
- "network": "Airtel"
}
}
]
}
Fetch a collection of registered users (accounts) on the platform
version required | string 7 characters ^\d{4}-\d{2}$ Example: 2020-10 The API version |
{- "message": "success",
- "data": [
- {
- "accountid": "45930953573nvvgjout4309u045043",
- "firstname": "Charles",
- "lastname": "Odili",
- "accounttype": "ADMIN",
- "email": "chalu@example.com",
- "lastseen": "2020-10-24T15:38:12.580Z",
- "membersince": "2020-10-24T15:38:12.580Z"
}
]
}
Buy airtime credit, pay for electricity or TV subscription with this endpoint
version required | string 7 characters ^\d{4}-\d{2}$ Example: 2020-10 The API version |
service required | string [ 2 .. 11 ] characters Enum: "airtime" "electricity" "tv" The service you want to pay for |
HTTP request payload for the payment service
amount required | integer The amount to pay for the service |
currency required | string 3 characters Enum: "NGN" "USD" The ISO 4217 currency code the |
provider required | string The provider whose service is being purchased:
|
sendTo required | string The corresponding phone number, meter number, or TV subscription Id to credit this recharge to |
accountToDebit required | string 10 characters The verified (NUBAN) bank account to debit for this payment |
{- "amount": 1000,
- "currency": "NGN",
- "provider": "Airtel",
- "sendTo": "+2348138145472",
- "accountToDebit": "0037514056"
}
{- "message": "string",
- "paymentId": "string",
- "status": "PENDING",
- "details": { }
}
Query the status of a payment transaction
paymentId required | string The request id of a previous airtime recharge request |
version required | string 7 characters ^\d{4}-\d{2}$ Example: 2020-10 The API version |
{- "message": "payment status",
- "paymentId": "45934508043-583",
- "status": "SUCCEEDED"
}
Fetch a collection of payments done on the patform
version required | string 7 characters ^\d{4}-\d{2}$ Example: 2020-10 The API version |
{- "message": "payment successful",
- "data": [
- {
- "id": "rgkdlkfj5695476947694",
- "amount": 1000,
- "currency": "NGN",
- "type": "AIRTIME",
- "status": "SUCCEEDED",
- "when": "2020-10-24T15:35:41.000Z",
- "details": {
- "network": "Airtel"
}
}
]
}
Buy airtime credit, pay for electricity or TV subscription with this endpoint
version required | string 7 characters ^\d{4}-\d{2}$ Example: 2020-10 The API version |
service required | string [ 2 .. 11 ] characters Enum: "airtime" "electricity" "tv" The service you want to pay for |
HTTP request payload for the payment service
amount required | integer The amount to pay for the service |
currency required | string 3 characters Enum: "NGN" "USD" The ISO 4217 currency code the |
provider required | string The provider whose service is being purchased:
|
sendTo required | string The corresponding phone number, meter number, or TV subscription Id to credit this recharge to |
accountToDebit required | string 10 characters The verified (NUBAN) bank account to debit for this payment |
{- "amount": 1000,
- "currency": "NGN",
- "provider": "Airtel",
- "sendTo": "+2348138145472",
- "accountToDebit": "0037514056"
}
{- "message": "string",
- "paymentId": "string",
- "status": "PENDING",
- "details": { }
}
Query the status of a payment transaction
paymentId required | string The request id of a previous airtime recharge request |
version required | string 7 characters ^\d{4}-\d{2}$ Example: 2020-10 The API version |
{- "message": "payment status",
- "paymentId": "45934508043-583",
- "status": "SUCCEEDED"
}
Buy airtime credit, pay for electricity or TV subscription with this endpoint
version required | string 7 characters ^\d{4}-\d{2}$ Example: 2020-10 The API version |
service required | string [ 2 .. 11 ] characters Enum: "airtime" "electricity" "tv" The service you want to pay for |
HTTP request payload for the payment service
amount required | integer The amount to pay for the service |
currency required | string 3 characters Enum: "NGN" "USD" The ISO 4217 currency code the |
provider required | string The provider whose service is being purchased:
|
sendTo required | string The corresponding phone number, meter number, or TV subscription Id to credit this recharge to |
accountToDebit required | string 10 characters The verified (NUBAN) bank account to debit for this payment |
{- "amount": 1000,
- "currency": "NGN",
- "provider": "Airtel",
- "sendTo": "+2348138145472",
- "accountToDebit": "0037514056"
}
{- "message": "string",
- "paymentId": "string",
- "status": "PENDING",
- "details": { }
}
Query the status of a payment transaction
paymentId required | string The request id of a previous airtime recharge request |
version required | string 7 characters ^\d{4}-\d{2}$ Example: 2020-10 The API version |
{- "message": "payment status",
- "paymentId": "45934508043-583",
- "status": "SUCCEEDED"
}
Verify and add a NUBAN (bank account) number to a user's EffesEYE account, allowing them initiate payments from the bank accounts
version required | string 7 characters ^\d{4}-\d{2}$ Example: 2020-10 The API version |
HTTP request payload to add a bank account
nuban required | string 10 characters The NUBAN account number |
bankname required | string >= 3 characters The name of the Bank |
{- "nuban": "0037514056",
- "bankname": "UBA"
}
{- "message": "string",
- "status": "FAILED"
}