Fund Transfer APIa

  • Home
  • Fund Transfer APIa


UfitPay Fund Transfer API is designed for developers to easily integrate instant bank transfer functionality on any application using any software programing technology or development platform

Access to this API is available to all registered UfitPay customers and agents (wallet accounts). You will likely need access to a web developer or programmer (if you’re not one) to get the most use out of UfitPay API.

Obtaining Wallet API credentials

In order to interact with UfitPay Fund Transfer APIs, you need to enable API access on your account as well as Banking API access. To do this, go to Account Settings on the UfitPay Mobile App then click the Generate API Keys link. We will generate and send new API credentials to your registered email address;

Once generated, you will be able to retrieve your API credentials at any time by the View API keys link.

For added security, we recommend you restrict access to your API credentials to only white-listed IP addresses. You can do this by clicking the Restrict API Access link under Account Settings on UfitPay Mobile App.


All requests to this API require HTTP Header Authentication over TLS (HTTPS).

To authenticate your request, you need to pass the following parameters as part of your HTTP request headers;

Api-Key: Your wallet API key
API-Token: Your wallet API token

Test API Credentials

The following API Credentials can be used for development and test purpose only. Transactions done using these credentials are not treated as live

Test Wallet API Key: TSVLWCB5TO5RfJFCNkwSX8z0F8ZwD91
Test Wallet API Token: TS66uEwtekJEcWiwzC1gDdiDzKcJFk1

Integration Work-Flow

Below is a typical implementation of UfitPay Fund Transfer API

  • Step 1: Store the customer's transaction in your database for future reference
  • Step 2: Call the "Bank Transfer" API using the beneficiaries account details to initiate the transfer, taking not of the transaction reference
  • Step 3: If the data.transaction_status is processing or completed, debit the customer's account, else, treat the transaction as failed
  • Step 4: Set a backgroud service to call the "Transaction Query" API to after 60-120 secods to get the actual progress of the transfer
  • Step 5: If the returned status from step 4 above is "completed", treat the transfer as finished, if "faild", treat the transaction as failed, any other status will require human intervention for proper reconciliation

Available APIs

Bank List API GET » /banks

This API allows you to fetch available banks for a given country This endpoint is accessed by making an HTTP GET request to

Request Body Parameters
country (string) (optional) This is the Country Code you want to fetch available bank for. Default value is NG

Sample success response (json)
{ "resource": "banks", "status":"success", "data": [{ "bank_code": "057", "bank_name": "Zenith Bank" }, { "bank_code": "058", "bank_name": "Guaranty Trust Bank" }] }

Response parameters
bank_code (string) This is the unique NUBAN bank code for the bank
bank_name (string) This is the bank name

Bank Account Validation API POST » /bank_validate

This API allows you to verify the account name of a bank account number. This endpoint is accessed by making an HTTP POST request to

Request Body Parameters
account_number (string) (required) This is the bank account number to validate
bank_code (string) (required) This is NUBAN bank code of the bank you want to validate the account information for

Sample success response (json)
{ "resource": "bank_validate", "status":"success", "data":{ "account_name": "John Doe", "account_number": "0000000000", "bank": "Zenith Bank" } }

Response parameters
account_name (string) This is the owner's account name returned by the bank
account_number (string) This is the account number you validated
bank (string) This is the name of the bank validated

Bank Transfer API POST » /bank_transfer

This API allows you to securely transfer funds from your UfitPay wallet to any local bank account. This endpoint is accessed by making an HTTP POST request to

Request Body Parameters
account_number (string) (required) This is the recipient's bank account number
bank_code (string) (required) This is bank code of the recipient's bank (Refer to Bank List API)
amount (int) (required) This is the exact amount you wish to transfer to the recipient (in Naira). Minimum value is 1000 naira
narration (string) (required) This is the transaction narration or description you want appeared in the recipient's bank statement for the transfer
request_ref (string) (optional) This is Your Own Unique transaction reference. If supplied, this can also be used to query status of this transfer.

Sample success response (json)
{ "resource": "bank_transfer", "status":"success", "data":{ "transaction_status": "processing", "reference": "5638GDKGF9GDKGE769O", "amount": "1000", "bank": "Zenith Bank", "account_number": "0000000001", "account_name": "John Doe" } }

Response parameters
transaction_status (string) This is the current status the transaction, which can be either processing, waiting-approval or completed. (Please do not confuse this with the API request status)
reference (string) This is the UfitPay unique reference for the transaction
amount (string) This is the amount transfered
bank (string) This is the name of the recipient's bank
account_number (string) This is the recipient's account number
account_name (string) This is the name on the recipient's account

Please note that if your wallet is a Mult-signatory account, all signatories need to approve your transfer before it is processed. The returned transaction_status will be "waiting-approval" in this case.

Best Practice:
Always call the Transaction Query API after a few minutes, using the transaction reference to get the updated status of the transaction.