Skip to main content
A payout destination stores the payment details for a recipient so you can reuse them across multiple withdrawals. Destinations are scoped to your organization and environment.

Destination types

TypeRequired fields
bank_accountaccount_number, account_name, bank_code
mobile_moneyphone_number, mobile_provider
crypto_walletwallet_address

List destinations

Retrieve all active payout destinations for your organization.
GET /api/v1/payouts/destinations
Response
{
  "destinations": [
    {
      "id": "dest_01abc...",
      "organization_id": "org_01xyz...",
      "env": "live",
      "destination_type": "bank_account",
      "currency": "NGN",
      "label": "Jane Doe",
      "account_number": "0123456789",
      "account_name": "JANE DOE",
      "bank_code": "044",
      "bank_name": "Access Bank",
      "is_active": true,
      "created_at": "2026-03-01T10:00:00Z",
      "updated_at": "2026-03-01T10:00:00Z"
    }
  ],
  "total": 1
}

Create a destination

POST /api/v1/payouts/destinations
The required fields differ by destination_type. See the examples below.
{
  "destination_type": "bank_account",
  "currency": "NGN",
  "label": "Jane Doe - Access Bank",
  "account_number": "0123456789",
  "account_name": "JANE DOE",
  "bank_code": "044",
  "bank_name": "Access Bank"
}
The label field is optional for crypto wallets. If you omit it, Syncgram Pay generates a label from the currency and network (e.g., USDT (TRC20)).
Response
{
  "id": "dest_01abc...",
  "organization_id": "org_01xyz...",
  "env": "live",
  "destination_type": "bank_account",
  "currency": "NGN",
  "label": "Jane Doe - Access Bank",
  "account_number": "0123456789",
  "account_name": "JANE DOE",
  "bank_code": "044",
  "bank_name": "Access Bank",
  "is_active": true,
  "created_at": "2026-03-15T09:00:00Z",
  "updated_at": "2026-03-15T09:00:00Z"
}

Bank account fields

destination_type
string
required
Must be bank_account.
currency
string
required
Currency code for this destination, e.g. NGN.
account_number
string
required
The recipient’s bank account number.
account_name
string
required
The account holder’s name as it appears on the bank account.
bank_code
string
required
The bank’s routing code. Use the list banks endpoint to look up valid codes.
bank_name
string
The bank’s display name. Optional — stored for reference only.
label
string
A friendly name for this destination. Defaults to the account name if not provided.

Mobile money fields

destination_type
string
required
Must be mobile_money.
currency
string
required
Currency code for this destination, e.g. GHS.
phone_number
string
required
The recipient’s mobile number in international format.
mobile_provider
string
required
The mobile network operator, e.g. MTN, Vodafone, Airtel.
label
string
A friendly name for this destination.

Crypto wallet fields

destination_type
string
required
Must be crypto_wallet.
currency
string
required
Currency and network combined, e.g. USDT_TRC20. When the network is encoded in the currency, the network field is optional.
wallet_address
string
required
The recipient’s on-chain wallet address.
network
string
The blockchain network, e.g. TRC20, ERC20. Required if the network is not encoded in currency.
label
string
A friendly name for this destination.

Update a destination

Replace all fields on an existing destination.
PUT /api/v1/payouts/destinations/{id}
Pass the same body as Create a destination. All fields are overwritten.

Delete a destination

Soft-deletes a destination. The record is deactivated (is_active: false) and no longer returned in list responses. Existing withdrawals that reference this destination are not affected.
DELETE /api/v1/payouts/destinations/{id}
Response
{
  "success": true,
  "message": "Payout destination deleted"
}

Verify a bank account

Before adding a bank account destination, you can verify the account number and retrieve the account holder’s name.
POST /api/v1/payouts/resolve-account
Request
{
  "bank_code": "044",
  "account_number": "0123456789"
}
Response
{
  "status": true,
  "message": "Account resolved successfully",
  "data": {
    "account_name": "JANE DOE",
    "account_number": "0123456789"
  }
}
Always resolve a bank account before saving it as a destination. This confirms the account is active and prevents failed payouts due to incorrect details.

List banks

Retrieve the list of supported banks for a country. Use the returned code values as bank_code when creating bank account destinations.
GET /api/v1/payouts/banks?country_code=NG
Response
{
  "status": true,
  "message": "Banks retrieved",
  "data": [
    {
      "name": "Access Bank",
      "slug": "access-bank",
      "code": "044",
      "nibss_bank_code": "000014",
      "country": "NG"
    },
    {
      "name": "First Bank of Nigeria",
      "slug": "first-bank-of-nigeria",
      "code": "011",
      "nibss_bank_code": "000016",
      "country": "NG"
    }
  ]
}
The country_code parameter defaults to NG (Nigeria) if not provided.