Documentation Index
Fetch the complete documentation index at: https://docs.centryos.xyz/llms.txt
Use this file to discover all available pages before exploring further.
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.id for payouts (e.g. Withdraw to Linked Account).
Supported (USD): CARD – Debit card (push-to-card).
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
Authorization header.
- Headers:
Content-Type: application/json required.
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
curl -X POST "{{LIQUIDITY_URL}}/v1/ext/application-token/{{token}}/linked-accounts/USD/link/CARD/1" \
-H "Content-Type: application/json" \
-d '{
"label": "My debit card",
"data": {
"recipientType": "personal",
"firstName": "John",
"lastName": "Smith",
"email": "john.smith@example.com",
"cardNumber": "5555555555554444",
"cardExpirationDate": "2026-04",
"recipientAddress": "789 Oak St",
"recipientCity": "Los Angeles",
"recipientState": "CA",
"recipientPostalCode": "90001",
"nickName": "MayetopsC"
}
}'
Response
Success (200)
{
"success": true,
"message": "Account successfully linked!",
"data": {
"id": "845a276a-3c5a-45ff-9aa9-6b266a77f92a"
}
}
| 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.id when calling the withdrawal endpoint:
POST /v1/ext/linked-accounts/{currency}/{linkedAccountId}/withdrawal
Error (4xx / 5xx)
{
"success": false,
"message": "<error detail or validation messages>",
"fatal": true
}
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;
personal or business.
- 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.id when 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}.