Skip to main content
PATCH
Update Payout Destination

Authorizations

Authorization
string
header
required

Bearer token authentication. Pass your API key as Authorization: Bearer sk_.... See Authentication for keys, scopes, and sandbox vs production.

Path Parameters

destination_id
string
required

Body

application/json

The one update a destination allows. name and is_default alone are safe: a rename touches no routing column, and the default can only ever be one of your own approved destinations. Sending any field below restates the destination in full, the same shape as POST; omitted routing fields fall back to what is already stored. Changing an account number, bank code, wallet, network or phone number this way sends the destination back for review, because the approval it holds was granted for the details it is being asked to leave behind.

name
string | null

The new name for this destination.

Required string length: 1 - 255
Example:

"Treasury NGN Account"

is_default
boolean | null

Make this the destination a payout schedule pays out to for its currency. Setting it demotes the previous default; false clears it. Ignored if this request also changes where money lands and that change sends the destination back for review.

Example:

true

currency
string | null

Currency code this destination accepts (e.g., 'NGN', 'USD', 'USDT_TRC20').

Maximum string length: 10
Example:

null

type
string | null

Type of payout destination: bank_account, mobile_money, or crypto_wallet.

Example:

null

destination_type
string | null

Alias for type. type wins if both are sent.

Example:

null

account_number
string | null

Bank account number.

Maximum string length: 50
Example:

null

account_name
string | null

Account holder name. Unlike registration, an update trusts the name it is given.

Maximum string length: 255
Example:

null

bank_code
string | null

Bank code or routing number.

Maximum string length: 20
Example:

null

bank_name
string | null

Bank name.

Maximum string length: 255
Example:

null

phone_number
string | null

Phone number for the mobile money account.

Maximum string length: 20
Example:

null

mobile_provider
string | null

Mobile money provider (e.g., 'MTN', 'Vodafone').

Maximum string length: 50
Example:

null

wallet_address
string | null

Cryptocurrency wallet address.

Maximum string length: 255
Example:

null

network
string | null

Blockchain network. Optional when the currency already names its network (e.g. USDT_TRC20).

Maximum string length: 50
Example:

null

metadata
object | null

Additional custom metadata to associate with this destination.

Example:

null

Response

Success

Response containing payout destination details (bank account, mobile money, or crypto wallet).

id
string
required

Unique identifier for this payout destination. Use this ID when creating payouts.

Example:

"pd_7Kq2mNv4XbR9dLc0"

name
string
required

User-friendly name for this destination. Helps you identify destinations in your system.

Example:

"My GTBank Savings"

type
enum<string>
required

Type of payout destination: bank_account, mobile_money, or crypto_wallet. Determines which fields are populated.

Available options:
bank_account,
mobile_money,
crypto_wallet
Example:

"bank_account"

currency
string
required

Currency code this destination accepts (e.g., 'NGN', 'USD', 'USDT_TRC20'). Payouts to this destination must use this currency.

Example:

"NGN"

status
enum<string>
required

Review status. pending_review: awaiting review, not usable yet. approved: cleared for payouts. rejected: permanently unusable, register a new destination instead.

Available options:
pending_review,
approved,
rejected
Example:

"approved"

status_reason
string | null

Free-text reason set by review, populated when the destination is rejected. Null while pending or approved.

Example:

null

is_usable
boolean

Whether this destination can be used for a payout right now. True only when status is approved and the destination has not been deactivated.

Example:

true

is_default
boolean

Whether a payout schedule pays out to this destination for its currency. Set it with PATCH /v1/payouts/destinations/{destination_id}.

Example:

false

account_number
string | null

Bank account number. Only populated for bank_account destinations.

Example:

"0123456789"

account_name
string | null

Account holder name as resolved from the bank. Only populated for bank_account destinations.

Example:

"JOHN DOE"

bank_code
string | null

Bank code or routing number. Only populated for bank_account destinations.

Example:

"058"

bank_name
string | null

Full name of the bank. Only populated for bank_account destinations.

Example:

"Guaranty Trust Bank"

phone_number
string | null

Phone number associated with the mobile money account. Only populated for mobile_money destinations.

Example:

null

mobile_provider
string | null

Mobile money provider (e.g., 'MTN', 'Vodafone'). Only populated for mobile_money destinations.

Example:

null

wallet_address
string | null

Cryptocurrency wallet address. Only populated for crypto_wallet destinations.

Example:

null

network
string | null

Blockchain network (e.g., 'TRC20', 'ERC20'). Only populated for crypto_wallet destinations. May be included in currency code (e.g., 'USDT_TRC20').

Example:

null

reviewed_at
string<date-time> | null

ISO 8601 timestamp when this destination was last reviewed by an admin. Null until reviewed.

Example:

null

created_at
string<date-time> | null

ISO 8601 timestamp when this destination was created.

Example:

"2026-01-24T14:30:00.000Z"

updated_at
string<date-time> | null

ISO 8601 timestamp when this destination was last updated.

Example:

"2026-01-24T14:30:00.000Z"