curl -H "Authorization: Bearer lid_live_XXXXXXXXXXXXXXXX" \
https://api.liddie.io/api/v1/merchant-wallets
// Works with a secret API key (wallets:read) or a dashboard JWT (wallets:view)
const res = await fetch('https://api.liddie.io/api/v1/merchant-wallets', {
headers: { Authorization: 'Bearer lid_live_XXXXXXXXXXXXXXXX' },
})
const wallets = await res.json()
[
{
"id": "6a55827498fc23f8b245cf3f",
"currency": "AVAX",
"settlementAddress": "0x000000000000000000000000000000000000dead",
"isActive": true,
"createdAt": "2026-07-14T00:27:32.928Z"
}
]
Currencies & wallets
List merchant wallets
List your Liddie merchant wallets, at most one active wallet per currency, with each crypto settlement address. Returns safe fields only, never xpubs.
GET
/
api
/
v1
/
merchant-wallets
curl -H "Authorization: Bearer lid_live_XXXXXXXXXXXXXXXX" \
https://api.liddie.io/api/v1/merchant-wallets
// Works with a secret API key (wallets:read) or a dashboard JWT (wallets:view)
const res = await fetch('https://api.liddie.io/api/v1/merchant-wallets', {
headers: { Authorization: 'Bearer lid_live_XXXXXXXXXXXXXXXX' },
})
const wallets = await res.json()
[
{
"id": "6a55827498fc23f8b245cf3f",
"currency": "AVAX",
"settlementAddress": "0x000000000000000000000000000000000000dead",
"isActive": true,
"createdAt": "2026-07-14T00:27:32.928Z"
}
]
See the wallets behind your account, with the settlement address your funds move to. There is at most one active wallet per currency, but this endpoint also returns deactivated wallets (
isActive: false) — deactivating a wallet keeps its row — so a currency you deactivated and re-added appears more than once. Filter on isActive before keying a map by currency. The response returns safe fields only: never xpubs, seeds, or derivation data.
This endpoint takes no parameters — it always lists the wallets of the merchant your credential belongs to.
Authorization
Secret API-key scopewallets:read, or dashboard JWT with team permission wallets:view. Subject to the global rate limit (60 requests/minute — see the Overview). See the Authentication guide.
curl -H "Authorization: Bearer lid_live_XXXXXXXXXXXXXXXX" \
https://api.liddie.io/api/v1/merchant-wallets
// Works with a secret API key (wallets:read) or a dashboard JWT (wallets:view)
const res = await fetch('https://api.liddie.io/api/v1/merchant-wallets', {
headers: { Authorization: 'Bearer lid_live_XXXXXXXXXXXXXXXX' },
})
const wallets = await res.json()
[
{
"id": "6a55827498fc23f8b245cf3f",
"currency": "AVAX",
"settlementAddress": "0x000000000000000000000000000000000000dead",
"isActive": true,
"createdAt": "2026-07-14T00:27:32.928Z"
}
]
Response fields
string
Wallet id.
string
Currency ticker of the wallet.
string
The address your settled funds are sent to. Settlement is the automatic movement of received funds to storage — payments show as “Processing” in the dashboard while it runs.
boolean
Whether the wallet is active. Deactivated wallets (
isActive: false) are still returned by this endpoint, so a currency can appear on more than one row — key by currency only after filtering to isActive: true.string
ISO 8601 creation timestamp.
Wallet mutations are dashboard-only.
POST /api/v1/merchant-wallets (add), PATCH /api/v1/merchant-wallets/{walletId}/settlement (re-point the settlement address), and DELETE /api/v1/merchant-wallets/{walletId} (deactivate) require a dashboard JWT with wallets:manage plus a step-up factor on every call — a passkey, a 6-digit TOTP code, or a code from POST /api/v1/merchant-wallets/send-email-code (the emailed code is bound to the wallet_change action and cannot be reused from another flow). The gate is fail-closed: a call with no factor is refused even when the user has no 2FA enrolled, answering 400 {"ok":false,"error":{"code":"VERIFICATION_FAILED","message":"Verification required: provide email code, OTP, or passkey"}}. With an API key these calls answer 401 {"error":"Invalid or expired token"} — the JWT guard runs first and a key is not a session token.See also
- List currencies: the
hasWalletflag on each currency your credential can charge in. - Get balances: the credited money sitting behind these wallets, per currency.
- Route Map: where the dashboard-only wallet mutation routes live in the full endpoint inventory.
- Authentication: API-key scopes vs dashboard JWT team permissions.