Skip to main content
POST
Create Payout Destination
A payout destination is the bank account or blockchain wallet a beneficiary is paid into. Which fields are required depends on the destination type and, for bank accounts, on the identifiers you send. You do not choose payout rails: Hop derives them from the destination details and picks the rail for each payout from its own banking capabilities. Bank accounts are created active and can be paid immediately. Wallet destinations are created pending and must be approved by Hop before any payout can be released to them. Hop sends a payout_destination.updated webhook with the review outcome: status becomes active, or disabled if Hop rejects the wallet. Without a subscription, poll Get Payout Destination until status leaves pending. Requires an API key with write access on the payments scope.

Path Parameters

string
required
The account’s external ID (starts with acct_)
string
required
The beneficiary’s external ID (starts with bene_)

Request Body

Common fields

string
required
Payout country as an ISO 3166-1 alpha-2 code. Hop delivers to every country except those under Rejected countries; one of those is rejected with 422.
string
required
Destination type: bank_account or wallet
string
required
Currency this destination is paid in. The currency and the type must agree: a crypto currency requires type: "wallet", and a fiat currency requires type: "bank_account". A mismatched pair is rejected with 422 INVALID_FIELD_VALUE on currency.
string
Your own label for this destination
string
Receiving bank name (max 255 characters)
object
Receiving bank address: address_line, city and country required, region and postal_code optional
string
Correspondent bank name (max 255 characters)
object
Correspondent bank address, same shape as bank_address
string
Correspondent bank SWIFT/BIC code (max 11 characters)
string
Account holder, when it differs from account_name (max 255 characters)
Whitespace is stripped from account_number, routing_number, iban, swift_code, correspondent_bank_swift, pix_key and wallet_address before they are validated, so grouped digits such as 1234 5678 90 are accepted.

Bank account

Use these fields for any bank account except a PIX-only destination. Send account_number or iban, whichever the destination bank uses; account_type is required only alongside account_number.
string
required
Name on the receiving account (max 35 characters, the SWIFT field limit)
string
Bank account number (max 255 characters). Required when the destination has no IBAN. When country is MX this must be the 18-digit CLABE; there is no separate clabe request field.
string
Account type as free text (max 50 characters), for example checking or savings. Required alongside account_number. Hop does not restrict the value, so send what the receiving rail expects.
string
Bank routing number (max 100 characters)
string
IBAN (max 34 characters)
string
SWIFT/BIC code. Must be exactly 8 or 11 characters.

Bank account, PIX only

A Brazilian destination paid by PIX needs only the two fields below. No account number, account type, or routing details. If you also send an account_number or iban, the bank-account fields above apply as well.
string
required
Name on the receiving account (max 35 characters, the SWIFT field limit)
string
required
PIX key: CPF/CNPJ, email, phone, or random key (max 255 characters)

Wallet

string
required
Blockchain network. Mainnets: ethereum, solana, tron, plasma, bsc, polygon, xlm, avax, base. Testnets, non-production only: ethereum_sepolia, solana_devnet, tron_shasta.Must be a network the payout currency is released on; an unsupported pair returns 422 INVALID_FIELD_VALUE with details.field set to network. The pairs are listed on Create Wallet.
string
required
Destination wallet address on that network (max 255 characters)

Response

string
Payout destination identifier (starts with dest_)
string
Always returns "payout_destination"
string
Parent beneficiary external ID
string
Payout country
array
Payout rails Hop derived from the destination details: crypto for a wallet, pix when a PIX key was sent, spei for a Mexican account, swift for any other bank account. Always carries at least one element.
string
Destination type: bank_account or wallet
string
Destination label, or null
string
Currency
string
Blockchain network for a wallet, null for a bank account
string
Destination status: active, pending, or disabled. A new bank account is active; a new wallet is pending until Hop reviews it, and the outcome (active or disabled) raises payout_destination.updated.
string
Name on the receiving account, or null
string
Account number masked as four asterisks plus the last 4 characters, for example ****7890
string
Account type as supplied at creation. Free text, not a fixed set of values.
string
Bank routing number, or null
string
SWIFT/BIC code, or null
string
IBAN masked as the first 4 characters, four asterisks, and the last 4, for example GB29****6819
string
CLABE masked as **** plus the last 4 digits. For a Mexican destination this and account_number_last4 carry the same digits.
string
PIX key masked as **** plus the last 4 characters
string
Wallet address masked as the first 6 characters, four asterisks, and the last 4, for example 0x742d****0bEb
string
Receiving bank name, or null
object
Receiving bank address (address_line, city, region, postal_code, country), or null
string
Correspondent bank name, or null
object
Correspondent bank address, same shape as bank_address, or null
string
Correspondent bank SWIFT/BIC code, or null
string
Account holder, when it differs from account_name, or null
string
ISO 8601 timestamp when created
string
ISO 8601 timestamp when last updated
string
ID of the API key that created the destination (starts with ak_)
string
Actor that last updated the destination, or null

Errors

Rejected countries

Hop does not deliver payouts to these countries. A country here, or a beneficiary country_code, is rejected with 422 VALIDATION_ERROR. Every other country is accepted.

Request Example

A US bank account:
A crypto wallet:

Response Example