Skip to main content
POST
Create a destination from a recipient
This is the short path for a recipient you have already saved: no routing fields, no re-verification of what you sent last time. A recipient with no payment details at all cannot produce a destination — 409 recipient_payment_detail_required. Add a detail first.

Legacy details

A payment detail whose routing values live at the provider rather than with Sakawave is marked providerLocked. Sakawave will try to resolve it; when it cannot, you get 409 payment_detail_provider_locked and the fix is to delete that detail and add it again with its routing fields.

Error codes

Authorizations

Authorization
string
header
required

A secret API key, sent as Authorization: Bearer sk_test_… in sandbox or Bearer sk_live_… in live.

Path Parameters

recipientId
string
required

Saved recipient ULID. A 26-character ULID.

Required string length: 26
Pattern: ^[0-7][0-9A-HJKMNP-TV-Z]{25}$
Example:

"01K2Z3AB4C5D6E7F8G9HJKMNPQ"

Body

application/json
paymentDetailId
string

Which saved detail to use. Defaults to the recipient’s default detail.

Required string length: 26
Pattern: ^[0-7][0-9A-HJKMNP-TV-Z]{25}$
Example:

"01K2Z3AB4C5D6E7F8G9HJKMNPQ"

Response

Successful response.

id
string
required

Send this as destinationId when previewing or creating a transfer.

Required string length: 26
Pattern: ^[0-7][0-9A-HJKMNP-TV-Z]{25}$
Example:

"01K2Z3AB4C5D6E7F8G9HJKMNPQ"

type
enum<string>
required
Available options:
own_account,
sakawave_tag,
external
currency
enum<string>
required
Available options:
NGN,
USD,
GBP,
EUR,
GHS,
ZAR,
UGX,
CAD,
MXN,
AED,
AUD,
SGD,
HKD,
KES,
TZS,
BRL,
CNY,
XAF,
PHP,
USDC
displayName
string
required

The verified account name for an external destination, the account name for your own, or the resolved holder for a tag.

routeId
string | null
required

The payout route, for external destinations.

Required string length: 26
Pattern: ^[0-7][0-9A-HJKMNP-TV-Z]{25}$
Example:

"01K2Z3AB4C5D6E7F8G9HJKMNPQ"

recipientId
string | null
required

The saved recipient this was built from, when it was.

Required string length: 26
Pattern: ^[0-7][0-9A-HJKMNP-TV-Z]{25}$
Example:

"01K2Z3AB4C5D6E7F8G9HJKMNPQ"

institutionName
string | null
required
accountNumberLast4
string | null
required

The only part of the destination account number ever returned.

Required string length: 4
expiresAt
string<date-time>
required
Example:

"2026-08-14T09:00:00.000Z"