Overview
Link a payout destination (debit card) for an entity using an application token. The token is passed in the URL; no Bearer auth is required for this endpoint. Typical flow:- Obtain an application token (e.g. account-widget token).
- Call this endpoint with the token, currency, option
CARD, step (e.g.1), and the required body. - On success, use the returned
data.idfor payouts (e.g. Withdraw to Linked Account).
Endpoint
- POST
{{LIQUIDITY_URL}}/v1/ext/application-token/:token/linked-accounts/:currency/link/:option/:step - Auth: None (token is in the URL). Do not send
Authorizationheader. - Headers:
Content-Type: application/jsonrequired.
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
token | string | Yes | Application token (e.g. account-widget token). |
currency | string | Yes | Currency. For this doc: USD. |
option | string | Yes | Link type: CARD. |
step | string | Yes | Step in the flow; typically 1. |
Request Body
Every request must include:| Field | Type | Required | Description |
|---|---|---|---|
label | string | Yes | Nickname for this linked account (e.g. “My debit card”). |
data | object | Yes | Payload for CARD; see below. |
CARD – data fields
| Field | Type | Required | Description |
|---|---|---|---|
name | string | Yes if business | Business name. |
firstName | string | Yes if personal | Cardholder first name. |
lastName | string | Yes if personal | Cardholder last name. |
email | string | Yes | Valid email. |
cardNumber | string | Yes | 16-digit card number. |
cardExpirationDate | string | Yes | Expiry in YYYY-MM (e.g. 2026-04). |
recipientAddress | string | Yes | Street address. |
recipientCity | string | Yes | City. |
recipientState | string | Yes | 2-letter state code. |
recipientPostalCode | string | Yes | US ZIP. |
nickName | string | No | Nickname for this linked account (e.g. “MayetopsC”). If omitted, top-level label is used. |
Request Example
Personal card
Response
Success (200)
| Field | Type | Description |
|---|---|---|
success | bool | true on success |
message | string | "Account successfully linked!" |
data.id | string | Linked account ID — use this for withdrawal requests |
- Use
data.idwhen calling the withdrawal endpoint:
POST /v1/ext/linked-accounts/{currency}/{linkedAccountId}/withdrawal
Error (4xx / 5xx)
Typical Error Cases
| Situation | HTTP | Notes |
|---|---|---|
| Invalid/expired token | 400 | ”Invalid or expired application token”. |
| Wrong token type | 400 | Token must be account-widget type. |
| Validation error | 400 | Missing/invalid fields. |
| Personal account | 400 | firstName and lastName required when recipientType is personal. |
| Business account | 400 | name required when recipientType is business. |
| card number | 400 | Exactly 16 digits. |
| expiration | 400 | Format YYYY-MM. |
| Duplicate nickname | 400 | ”Nickname already exists, please choose a different nickname”. |
| No platform account | 400 | No wallet found for entity/currency. |
| Processing error | 500 | Message may reflect processing or server error. |
Validation Summary
- label – Required, any non-empty string.
- option – Required,
CARD(must match path). - data – Required; structure as above.
- recipientType – Required;
personalorbusiness. - cardNumber – Exactly 16 digits.
- cardExpirationDate –
YYYY-MM.
Notes for Integrators
- Obtain a valid application token (account-widget type) before calling this endpoint.
- Use the returned
data.idwhen calling the external withdrawal API. - For CARD, payouts are push-to-card regardless of routing.
- Do not send card number in logs or client-side storage; treat as sensitive.
- Same endpoint is used for non-external path with token in URL; external path is
POST /v1/ext/application-token/{token}/linked-accounts/{currency}/link/{option}/{step}.