Overview
PATCH /v1/payouts/destinations/{destination_id} is the one update this API has. What it does depends on what you send:
- Send only
nameand/oris_defaultand nothing changes about where money lands. This is the safe edit: it never touches review status. - Send any routing detail (
currency,type, or an account, wallet, or phone field) and the destination is restated in full, the same shape as Create Destination. Fields you omit fall back to what is already stored, so you only need to send what’s changing.
is_default promotes one of your own already-approved destinations and demotes whichever one held the flag for that currency; false clears it, which leaves a payout schedule with nowhere to send that currency and so skips it. Deleting a destination clears the flag too, because an inactive destination cannot receive a scheduled payout.
Why a rename alone cannot move money: a destination’s approval is granted for a specific account or wallet. If you could quietly swap the account number on an already-approved destination without review, the destination would keep an approval that was never actually granted for its new destination. That is why a routing change always resets status, even through this endpoint.
Authentication
Type: API Key (required)Request
Method & Path
Path parameters
View path parameters
View path parameters
string
required
The ID of the destination to update.
Request examples
Request fields
View request fields
View request fields
string
The new name for the destination, 1 to 255 characters.
boolean
Make this the destination a payout schedule pays out to for its currency. Setting it demotes the previous default;
false clears it. The destination must be approved and active. Ignored if a routing change in the same request sends the destination back for review.string
The currency this destination accepts. Only needed when changing it; defaults to the currency already stored.
string
bank_account, mobile_money, or crypto_wallet. destination_type is accepted as a legacy alias. Only needed when changing rail; defaults to the type already stored.string
Bank account number. Required, together with
bank_code, for a bank-rail destination that omits it and has none stored.string
Account holder name. Unlike Create Destination, an update trusts the name it is given rather than resolving it from the bank.
string
Bank code. Required, together with
account_number, for a bank-rail destination that omits it and has none stored. Get valid codes from List Banks.string
Bank name.
string
Phone number, for a mobile-money-rail destination.
string
Mobile money provider, for a mobile-money-rail destination.
string
Destination wallet address, for a crypto-rail destination.
string
Blockchain network. Optional for a currency that names its own network (e.g.
USDT_TRC20).object
Arbitrary key-value data. Merged over what is already stored on the destination; a partial payload never wipes keys you don’t mention.
Response
200 - Success
Returns the updated destination in full. See Create Destination for the field reference.name, is_default, and updated_at change on a safe edit; a routing change can also change status, status_reason, is_usable, reviewed_at, and any of the account/wallet fields you sent.
Error responses
400 · VALIDATION_ERROR
400 · VALIDATION_ERROR
Cause: No fields were sent,
name was empty, or the payload is invalid for the resolved destination type.Resolution: Send at least one field, and use a non-empty name.400 · BAD_REQUEST
400 · BAD_REQUEST
Cause: A routing change left a required field for the resolved rail missing, for example
account_number without bank_code for a bank-rail destination.Resolution: Send the pair of fields together, or omit both to leave the stored routing unchanged.400 · CURRENCY_NOT_SUPPORTED
400 · CURRENCY_NOT_SUPPORTED
Cause: The requested destination type and currency have no configured payout rail. See the withdrawal currency and method table. International bank routing details must match the destination’s currency and scheme.Resolution: Use a supported destination type and currency pair.
400 · PAYOUT_DESTINATION_NOT_APPROVED
400 · PAYOUT_DESTINATION_NOT_APPROVED
Cause:
is_default was true on a destination that has not cleared review, including one this same request just sent back for review.Resolution: Wait for the destination to reach approved, then retry with only is_default.400 · PAYOUT_DESTINATION_INACTIVE
400 · PAYOUT_DESTINATION_INACTIVE
Cause:
is_default was true on a destination that has been deleted.Resolution: Register the account again with Create Destination and promote the new one.404 · DESTINATION_NOT_FOUND
404 · DESTINATION_NOT_FOUND
Cause:
destination_id does not exist, or belongs to another organization.Resolution: Verify the destination ID and retry. You can still update a destination that has been deleted; it stays not-usable regardless.
