Payout
Payout
Payshiga makes sending payouts a breeze, with our well-integrated RESTful APIs. When you initiate a payout, Payshiga automatically transfers the funds from your available balance. Once the transfer is complete, Payshiga will notify your application through an API callback.
You can also easily track your payouts. You have two options:
-
API: Use the Payshiga API to check the status of a specific payout at any time.
-
Dashboard: Monitor the transaction status directly on your Payshiga dashboard. The dashboard also provides detailed payment information with a reference number for each transaction.
Use Case
Payshiga simplifies paying out funds to customers and employees through your company’s eWallet. Here’s a typical scenario:
- Customer Requests Payout: A customer on your website initiates a request to withdraw funds to their bank account.
- Website Calls Payshiga API: Your website’s backend sends a request to Payshiga to process the payout.
This clear flow demonstrates how Payshiga streamlines the payout process.
Make sure to check out Get Started to learn more about API keys and how to use them.
To initiate the payout, you will make a POST request to this endpoint:
{{baseurl}}/transfer
You will also need to add the following parameters to each request. Check required payloads for the necessary transfers
Field | Data Type | Description |
---|---|---|
accountNumber | String | Required.This is the recipient’s bank account number where the funds will be transferred. |
amount | Number | Required. This specifies the amount to be paid out. It must be a number greater than or equal to 5. |
bankCode | String | Required. This is a code associated with the bank. It’s sometimes referred to as a routing number, bank identifier code, or BIC (Bank Identifier Code) |
currency | String: Enum | Required. This is the currency of the transfer. |
narration | String | Required. This is a description of the transfer, which will appear on the recipient’s bank statement. |
accountName | String | The name of the recipient’s bank account |
bankName | String | The name of the destination bank. |
meta | Object | This is where you can store additional information about the transfer. |
reference | String | Unique reference code to identify a bank account. |
saveBeneficiary | boolean: Default | This determines if the recipient’s information should be saved for future transfers. Defaults to false. |
saveBeneficiaryTag | String | If saveBeneficiary is true, this allows you to assign a name to the saved beneficiary |
AccountType | ENUM | For USD transfer, it can be CHECKING | SAVINGS |
BeneficiaryType | ENUM | This can be either INDIVIDUAL | BUSINESS |
When initiating a payout, encountering errors like “502 Bad Gateway” or “500 Internal Server Error” DOES NOT necessarily mean the payout failed. These, along with any unexpected errors, might indicate temporary issues on our end.
Here’s what we recommend:
- Double-check the payout: Before considering it failed, verify if Payshiga processed the payout successfully. This helps avoid accidentally giving out funds twice.
- We recommend verification: By following these steps, you can prevent potential financial losses due to misinterpreting errors.
Verifying the payout before completing the transaction and providing value to the customer is strongly recommended. Please note that Payshiga will not be liable for any loss resulting from these errors.
Here’s what your request should look like for NGN Transfer:
{
"currency": "NGN",
"bankName": "string",
"bankCode": "string",
"accountNumber": "string",
"accountName": "string",
"amount": 1,
"narration": "string",
"meta": {},
"saveBeneficiary": false,
"saveBeneficiaryTag": "string",
"reference": "string"
}
Here’s what your request should look like for AUD Transfer:
{
"type": "BSB",
"currency": "AUD",
"country": "AU",
"accountNumber": "string",
"accountName": "string",
"amount": 10,
"narration": "string",
"meta": {
"accountType": "BSB",
"bsbNumber": "string"
},
"saveBeneficiary": false,
"saveBeneficiaryTag": "string",
"reference": "string"
}
Here’s what your request should look like for USD Transfer:
{
"type": "ACH",
"currency": "USD",
"country": "US",
"accountNumber": "string",
"accountName": "string",
"bankName": "string",
"amount": 10,
"narration": "string",
"meta": {
"routingNumber": "string",
"accountType": "ACH",
"postCode": "string",
"city": "string",
"state": "string",
"line1": "bank address",
"bankAddress": "string",
"beneficiary": {
"type": "INDIVIDUAL",
"country": "beneficiary country",
"state": "beneficiary state",
"city": "beneficiary city",
"postCode": "beneficiary postCode",
"line1": "beneficiary address",
"address": "beneficiary address"
}
},
"saveBeneficiary": false,
"saveBeneficiaryTag": "string",
"reference": "string"
}
Here is what a success response should look like:
{
"success": true,
"statusCode": 200,
"message": "Transfer In Progress",
"data": {}
}