Skip to main content

Overview

There are two endpoints for listing linked accounts depending on the caller context:
EndpointAuthUse case
GET /v1/business/:businessId/linked-accounts/:currencyAccess tokenDashboard / merchant portal — full detail, rich filters
GET /v1/ext/linked-accounts/:currencyAccess tokenExternal API — account details with masked sensitive numbers
Both endpoints authenticate using the access token from Generate Access Token.

Business Endpoint

Returns all linked accounts for a business with enriched account details and support for multiple filters.

Endpoint

GET {{LIQUIDITY_URL}}/v1/business/:businessId/linked-accounts/:currency

Auth

Authorization: Bearer {{accessToken}}

Path Parameters

ParameterTypeRequiredDescription
businessIdstringYesUUID of the business
currencystringYesCurrency code (e.g. USD)

Query Parameters

ParameterTypeRequiredDefaultDescription
accountTypestringNoFilter by account type. See accepted values below. Alias for optionType
optionTypestringNoLegacy alias for accountType — both work
emailstringNoPartial case-insensitive match on counterparty email
searchstringNoPartial case-insensitive match on counterparty name
last4stringNoExact last-4 digits of card or bank account number (1–4 digits)
bankstringNoPartial case-insensitive match on bank name (e.g. Chase)
externalIdstringNoFilter by external identifier
pageintegerNo1Page number
limitintegerNo50Results per page
sortBystringNocreatedAtField to sort by
sortDirectionstringNoASCSort direction: ASC or DESC

accountType accepted values

ValueDescription
bankLocal bank account (ACH / RTP)
cardDebit or credit card
international_bankInternational wire / SWIFT
prepaid_cardPrepaid card

Request Examples

Filter by account type:
curl -X GET "{{LIQUIDITY_URL}}/v1/business/3e857814-91b1-4312-bb65-5e585227b6de/linked-accounts/USD?accountType=bank" \
  -H "Authorization: Bearer {{accessToken}}"
Cards ending in 4242:
curl -X GET "{{LIQUIDITY_URL}}/v1/business/3e857814-91b1-4312-bb65-5e585227b6de/linked-accounts/USD?accountType=card&last4=4242" \
  -H "Authorization: Bearer {{accessToken}}"
Filter by bank name:
curl -X GET "{{LIQUIDITY_URL}}/v1/business/3e857814-91b1-4312-bb65-5e585227b6de/linked-accounts/USD?bank=Chase" \
  -H "Authorization: Bearer {{accessToken}}"
Filter by counterparty email:
curl -X GET "{{LIQUIDITY_URL}}/v1/business/3e857814-91b1-4312-bb65-5e585227b6de/linked-accounts/USD?email=john@example.com" \
  -H "Authorization: Bearer {{accessToken}}"
International banks, sorted newest first:
curl -X GET "{{LIQUIDITY_URL}}/v1/business/3e857814-91b1-4312-bb65-5e585227b6de/linked-accounts/USD?accountType=international_bank&sortDirection=DESC&page=1&limit=20" \
  -H "Authorization: Bearer {{accessToken}}"

Response (200)

{
  "success": true,
  "data": [
    {
      "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
      "currency": "USD",
      "optionType": "bank",
      "counterPartyName": "John Doe",
      "counterPartyEmail": "john@example.com",
      "counterPublicPartyEmail": null,
      "nickName": "My Chase Account",
      "createdAt": "2024-01-15T10:30:00.000Z",
      "updatedAt": "2024-06-01T08:00:00.000Z",
      "account": {
        "label": "Checking account",
        "lastFourDigits": "0042",
        "routing": "021000021",
        "bankName": "Chase",
        "accountType": "CHECKING",
        "routingType": "ACH"
      },
      "recipientData": {
        "id": "7a70ab64-1d4a-4eb8-87fb-439efbbfa1dd",
        "type": "bank",
        "instrumentId": "I5XCcwNxmverGJQfhZUpmwJXaSuIpy",
        "nickName": "John Doe",
        "firstName": "John",
        "lastName": "Doe",
        "name": "John Doe",
        "email": "john@example.com",
        "bankName": "Chase",
        "accountNumber": "123456789042",
        "routingNumber": "021000021",
        "routingType": "ACH",
        "recipientAddress": "1, Texas",
        "recipientCity": "Austin",
        "recipientState": "TX",
        "recipientPostalCode": "73301"
      },
      "wallet": {
        "id": "w1b2c3d4-e5f6-7890-abcd-ef1234567890",
        "balance": "5000.00",
        "disabled": false
      },
      "entity": {
        "id": "3e857814-91b1-4312-bb65-5e585227b6de",
        "email": "owner@business.com",
        "externalIdentifier": "ext-123",
        "entityType": "BUSINESS"
      },
      "application": null
    }
  ],
  "meta": {
    "page": 1,
    "pageSize": 50,
    "pageCount": 1,
    "total": 3
  }
}

account field — shape by optionType

The account field is a parsed summary of the linked account. Its shape varies by type:
{
  "label": "Checking account",
  "lastFourDigits": "0042",
  "routing": "021000021",
  "bankName": "Chase",
  "accountType": "CHECKING",
  "routingType": "ACH"
}
{
  "label": "HSBC",
  "lastFourDigits": "1234",
  "bankName": "HSBC",
  "swiftOrBic": "HSBCGB2L",
  "country": "GB",
  "routingNumber": null
}
{
  "label": "Visa ending 4242",
  "lastFourDigits": "4242",
  "cardBrand": "visa",
  "cardType": "credit"
}

Response Fields

FieldTypeDescription
data[].idstringLinked account UUID
data[].currencystringCurrency code
data[].optionTypestringAccount type: bank, card, international_bank, prepaid_card
data[].counterPartyNamestringCounterparty display name
data[].counterPartyEmailstringCounterparty email address
data[].counterPublicPartyEmailstring | nullPublic-facing email, if set
data[].nickNamestring | nullUser-defined nickname
data[].createdAtstringISO 8601 creation timestamp
data[].updatedAtstringISO 8601 last-updated timestamp
data[].accountobject | nullParsed account summary (shape varies by optionType)
data[].recipientDataobject | nullFull raw metadata stored for this account
data[].walletobjectAssociated wallet { id, balance, disabled }
data[].entityobjectOwning entity { id, email, externalIdentifier, entityType }
data[].applicationobject | nullApplication token details if linked via token
meta.pageintegerCurrent page
meta.pageSizeintegerResults per page
meta.pageCountintegerTotal pages
meta.totalintegerTotal matching records

Error Responses

StatusBodyCause
401{ "message": "Unauthorized", "success": false }Missing or malformed Authorization header
400{ "message": "...", "success": false }Business metadata lookup failed or invalid request

External Endpoint

Returns linked accounts for an end-user with masked sensitive numbers and stripped internal fields.

Endpoint

GET {{LIQUIDITY_URL}}/v1/ext/linked-accounts/:currency

Auth

Authorization: Bearer {{accessToken}}

Path Parameters

ParameterTypeRequiredDescription
currencystringYesCurrency code (e.g. USD)

Query Parameters

ParameterTypeRequiredDefaultDescription
limitintegerNo10Results per page
pageintegerNo1Page number
externalIdstringNoFilter by external entity ID
accountTypestringNoFilter by account type: bank, card, international_bank, prepaid_card. Alias: optionType
optionTypestringNoLegacy alias for accountType
emailstringNoPartial case-insensitive match on counterparty email
last4stringNoExact last-4 digits of card or bank account number (1–4 digits)
bankstringNoPartial case-insensitive match on bank name (e.g. Chase)

Request

curl -X GET "{{LIQUIDITY_URL}}/v1/ext/linked-accounts/USD?limit=10&page=1" \
  -H "Authorization: Bearer {{accessToken}}"

Response (200)

{
  "success": true,
  "data": [
    {
      "id": "ffdda9bc-a142-4b39-b546-52b15c91d94c",
      "currency": "USD",
      "optionType": "bank",
      "counterPartyName": "Johnny Walker",
      "counterPartyEmail": "johnny@example.com",
      "counterPublicPartyEmail": null,
      "nickName": "Johnny Walker",
      "createdAt": "2026-03-13T15:08:59.717Z",
      "account": {
        "routing": "****0021",
        "bankName": "JPMORGAN CHASE",
        "accountType": null,
        "routingType": "ACH"
      },
      "recipientData": {
        "id": "7a70ab64-1d4a-4eb8-87fb-439efbbfa1dd",
        "type": "bank",
        "instrumentId": "I5XCcwNxmverGJQfhZUpmwJXaSuIpy",
        "nickName": "Johnny Walker",
        "firstName": "Johnny",
        "lastName": "Walker",
        "name": "Johnny Walker",
        "email": "johnny@example.com",
        "bankName": "JPMORGAN CHASE",
        "accountNumber": "****3591",
        "routingNumber": "****0021",
        "routingType": "ACH",
        "recipientAddress": "1, Texas",
        "recipientCity": "Austin",
        "recipientState": "TX",
        "recipientPostalCode": "73301"
      }
    }
  ],
  "meta": {
    "page": 1,
    "pageSize": 10,
    "pageCount": 2,
    "total": 17
  }
}

Response Fields

FieldTypeDescription
data[].idstringLinked account UUID — use this for withdrawal requests
data[].currencystringCurrency code
data[].optionTypestringAccount type: bank, card, international_bank, prepaid_card
data[].counterPartyNamestringRecipient display name
data[].counterPartyEmailstringCounterparty email address
data[].counterPublicPartyEmailstring | nullPublic-facing email, if set
data[].nickNamestringUser-defined nickname (may be empty)
data[].createdAtstringISO 8601 creation timestamp
data[].accountobject | nullParsed account summary. routing masked to last 4 digits (****XXXX)
data[].recipientDataobject | nullAccount metadata — accountNumber and routingNumber masked to last 4 digits; provider, identityId, encryptedCardNumber, cardExpirationDate stripped
meta.pageintegerCurrent page
meta.pageSizeintegerResults per page
meta.pageCountintegerTotal pages
meta.totalintegerTotal linked accounts

Notes

  • Use data[].id from either endpoint as the linkedAccountId when creating a withdrawal
  • last4 filter matches digits stored in metadata.account or metadata.cardNumber — it will not match accounts where neither field is populated
  • bank filter searches metadata.bankName; populated for bank and international_bank types