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:

  1. Customer Requests Payout: A customer on your website initiates a request to withdraw funds to their bank account.
  2. 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

FieldData TypeDescription
accountNumberString

Required.This is the recipient’s bank account number where the funds will be transferred.

amount

Number >=1

Required. This specifies the amount to be paid out. It must be a number greater than or equal to 5.

bankCodeString

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 NGN USD EUR GBP KES TZS GHS RWF XAF XOF ZAR UGX AUD CAD ETB EGP MAD MWK ZMW SLL MUR

Required. This is the currency of the transfer.

narrationString

Required. This is a description of the transfer, which will appear on the recipient’s bank statement.

accountNameStringThe name of the recipient’s bank account
bankNameStringThe name of the destination bank.
metaObject

This is where you can store additional information about the transfer.

referenceString

Unique reference code to identify a bank account.

saveBeneficiary

boolean: Default false

This determines if the recipient’s information should be saved for future transfers. Defaults to false.

saveBeneficiaryTagString

If saveBeneficiary is true, this allows you to assign a name to the saved beneficiary

AccountTypeENUM

For USD transfer, it can be CHECKING | SAVINGS
For AUD transfer, it is BSB, can be added to the meta object

BeneficiaryTypeENUMThis 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": {}
}