SaukiPayDocs
IntegrationsAPI Integration

Payouts

Send money from your Saukipay wallet to any bank account.

Sending a payout takes four steps:

  1. List banks to get the recipient's bankCode.
  2. Verify the account name so you know the money is going to the right person.
  3. Add the payout recipient. Saukipay returns a recipientCode.
  4. Initiate the payout to that recipientCode.

You only need to add a recipient once. Store the recipientCode and reuse it for later payouts to the same account.

Payouts must be signed

Payout requests must carry an HMAC-SHA512 signature of the payload, in addition to your bearer token. See Authentication.

List banks

GET /config/bank-list

Returns every bank you can pay out to, with the bankCode you need for the other payout calls.

{
  "status": "success",
  "message": "Bank list retrieved",
  "data": {
    "statusCode": "00",
    "currency": "NGN",
    "banks": [
      {
        "bankName": "Access bank",
        "bankCode": "044",
        "logo": "https://cdn-icons-png.freepik.com/256/2830/2830155.png"
      },
      {
        "bankName": "PAYCOM (OPAY)",
        "bankCode": "305",
        "logo": "https://cdn-icons-png.freepik.com/256/2830/2830155.png"
      }
    ]
  }
}

Verify an account name

POST /config/account-name-verify

Looks up the name on a bank account. Show it to your user to confirm before you add them as a recipient.

FieldTypeRequiredDescription
accountNumberstringYesThe bank account number.
bankCodestringYesFrom List banks.
currencystringYesFor example NGN.
Request
{
  "accountNumber": "0123456789",
  "bankCode": "058",
  "currency": "NGN"
}
Response
{
  "status": "success",
  "message": "Account name retrieved.",
  "data": {
    "statusCode": "00",
    "banks": "JOHN DOE"
  }
}

The account name is returned in data.banks.

Add a payout recipient

POST /transaction/add-payout-recipient
FieldTypeRequiredDescription
typestringYesAccount type. Use nuban for Nigerian bank accounts.
namestringYesThe account holder's name.
accountNumberstringYesThe bank account number.
bankCodestringYesFrom List banks.
bankNamestringYesFrom List banks.
currencystringYesNGN, USD or GBP. Defaults to your integration currency.
Request
{
  "type": "nuban",
  "name": "John Doe",
  "accountNumber": "0123456789",
  "bankCode": "305",
  "bankName": "PAYCOM (OPAY)",
  "currency": "NGN"
}
Response
{
  "status": "success",
  "message": "Invoice created successfully",
  "data": {
    "statusCode": "00",
    "data": {
      "recipientCode": "SW-JTEQBHESCV-RECIPIENT"
    }
  }
}

Save the recipientCode. You need it to initiate a payout.

Initiate a payout

POST /transaction/init-payout
FieldTypeRequiredDescription
sourcestringYesWhere the funds come from. Use wallet.
recipientCodestringYesFrom Add a payout recipient.
reasonstringYesA description of the payout.
amountnumberYesAmount to send.
referencestringYesYour unique reference for this payout.
currencystringYesNGN, USD or GBP. Defaults to your integration currency.
Request
{
  "source": "wallet",
  "recipientCode": "SW-JTEQBHESCV-RECIPIENT",
  "reason": "Vendor withdrawal",
  "amount": 500,
  "reference": "PAYOUT-20045",
  "currency": "NGN"
}
Response
{
  "status": "success",
  "message": "Transfer successfully logged and Processing",
  "data": {
    "statusCode": "00"
  }
}

A successful response means the payout was accepted for processing, not that it has arrived. Listen for the transfer.success and transfer.failed webhooks to learn the final result.

Use a unique reference

Every payout needs its own reference. Reusing one is rejected as a duplicate, which protects you from paying out twice on a retry.

On this page