Virtual Accounts
List liquidation addresses
List every liquidation address configured on a virtual account. The response is a bare JSON array (no envelope, no pagination); an empty array is returned when none exist.
Each element has the same shape as the create response (id prefixed liq_, address, recipient with masked account number, wallet, optional markup) plus an updated_at timestamp.
Errors: 404 if the virtual account does not exist or is not yours.
Example response (200):
[
{
"id": "liq_550e8400-e29b-41d4-a716-446655440000",
"virtual_account_id": "6ba7b810-9dad-11d1-80b4-00c04fd430c8",
"status": "active",
"network": "polygon",
"token": "USDC",
"address": "0x742d35Cc6634C0532925a3b844Bc454e4438f44e",
"recipient": {
"id": "rec_3f2504e0-4f89-41d3-9a0c-0305e82c3301",
"type": "individual",
"name": "Jane Doe",
"account_type": "ACH",
"bank_name": "Example Bank",
"account_number_last4": "7890"
},
"wallet": {
"id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
"address": "0x742d35Cc6634C0532925a3b844Bc454e4438f44e",
"network": "polygon"
},
"markup": {
"fixed": "1.50"
},
"created_at": "2026-06-25T12:00:00.000Z",
"updated_at": "2026-06-25T12:00:00.000Z"
}
]
GET
List liquidation addresses
Authorizations
Access token from POST /auth (the data.access_token value).
API key issued by Kira. Required on every request, including /auth.
Headers
Example:
"2026-04-14"
Path Parameters
Virtual account UUID.
Response
Success.
Previous
Create a liquidation addressCreate a **liquidation address** on a virtual account: a per-account crypto deposit address that automatically converts incoming stablecoin deposits (USDC/USDT) to USD and pays them out to a configured bank recipient (an off-ramp). Supported only for `US_BANK` virtual accounts in `active` status.
**Required header:** `Idempotency-Key` (a UUID). Replaying the same key returns the original result instead of creating a duplicate.
**Request body**
- `network` — `solana`, `polygon`, or `tron`; `token` — `USDC` or `USDT`. Only these combinations are allowed: USDC on Solana or Polygon, USDT on Polygon or Tron. USDT on Solana is rejected.
- `recipient` — a discriminated union on `type` (`individual` requires `first_name`/`last_name`; `business` requires `company_name`), each containing an `account` object keyed by `account_type` (`ACH`, `WIRE`, or `SWIFT`). For `SWIFT`, `recipient.email` is required.
- `markup` (optional) — your added margin `{ fixed?, percentage?, fx? }` as decimal strings (up to 4 decimals).
The response (`201`) returns the address `id` (prefixed `liq_`), the on-chain deposit `address`, the resolved `recipient` (with the account number masked to the last 4 digits), the `wallet`, and any `markup`.
**Errors:** `400` for an unsupported network/token combination or a non-eligible virtual account; `409` if a liquidation address already exists for that bank account on the virtual account.
**Example response (201):**
```json
{
"id": "liq_550e8400-e29b-41d4-a716-446655440000",
"virtual_account_id": "6ba7b810-9dad-11d1-80b4-00c04fd430c8",
"status": "active",
"network": "polygon",
"token": "USDC",
"address": "0x742d35Cc6634C0532925a3b844Bc454e4438f44e",
"recipient": {
"id": "rec_3f2504e0-4f89-41d3-9a0c-0305e82c3301",
"type": "individual",
"name": "Jane Doe",
"account_type": "ACH",
"bank_name": "Example Bank",
"account_number_last4": "7890"
},
"wallet": {
"id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
"address": "0x742d35Cc6634C0532925a3b844Bc454e4438f44e",
"network": "polygon"
},
"markup": {
"fixed": "1.50",
"percentage": "0.25",
"fx": "0.10"
},
"created_at": "2026-06-25T12:00:00.000Z"
}
```
Next
List liquidation addresses