---
title: "List bank accounts connected by family members and where each one goes"
method: GET
path: "/families/{id}/accounts"
tags: ["Families"]
---

# List bank accounts connected by family members and where each one goes

`GET /families/{id}/accounts`

## Request

- Base URL: `https://ledgerhq.pro/api/v1`
- URL: `https://ledgerhq.pro/api/v1/families/{id}/accounts`
- Auth: one of:
  - HTTP bearer and API key in header `x-organization-id`
  - HTTP bearer and API key in header `x-organization-id`

Firm-side family relationships only. Select the firm with x-organization-id. Owners, Admins and Staff Admins access all firm families; Staff Members need independent family assignment. Company access does not grant family access. OAuth requires the broad mcp grant, not a narrow banking scope; API keys retain ordinary agent permission scopes. No accounting organizations, portal grants, bank changes, invitations or charges are created. Writes require ordinary firm write entitlement. Cross-firm and inaccessible IDs return 404. Lists accounts from bank logins owned by family members, plus accounts already routed to this family's personal side. Read-only.

## Path parameters

- `id` string, uuid, required

## Response `200`

Success

- object
  - `accounts` object[]
    - `id` string, uuid
    - `name` string
    - `mask` string, nullable
    - `type` string, nullable
    - `subtype` string, nullable
    - `currentBalanceCents` integer, nullable
    - `availableBalanceCents` integer, nullable
    - `institutionName` string, nullable
    - `connectionStatus` 'connected' | 'needs_attention' | 'disconnected'
    - `routedTo` 'company' | 'personal' | 'unused' | 'other_family' | 'null', nullable: null means no destination chosen yet
    - `companyId` string, uuid, nullable
    - `companyName` string, nullable
    - `bankAccountId` string, uuid, nullable
    - `bankAccountName` string, nullable
    - `receivedThroughCompanyId` string, uuid, nullable
    - `receivedThroughCompanyName` string, nullable
    - `historyRowCount` integer: Unposted bank rows this account already brought into the company it came through, including rows whose posting was undone; they can move with the account
    - `historyKeptRowCount` integer: Posted or reconciled rows, and rows tied to that company's client questions, checks or payments; they stay in that company when the account moves
    - `plaidItemId` string, uuid
    - `providerItemId` string: Bank login; accounts sharing it are one login across companies
    - `importEnabled` boolean: false means paused (not importing)
    - `disconnectScheduledAt` string, date-time, nullable: When the bank login will be removed because no account on it is active
    - `ownerPersonId` string, uuid, nullable
    - `ownerName` string, nullable
    - `viewOnly` boolean: true when the account feeds a linked company through a bank login owned outside this family; it is listed but changed from that company
  - `unrouted` integer: Accounts with no destination yet
  - `companies` object[]
    - `id` string, uuid
    - `name` string
  - `people` object[]: Family people who can own a new bank login
    - `personId` string, uuid
    - `name` string

## Other responses

- `403`: Firm staff or required permission missing
- `404`: Record not found or not accessible
- `409`: Archived family, last-member removal, identity conflict, already-linked member, explicit owner selection required, or redundant administrator assignment

## Changes

- **2026-10-19** `2656fa5edbae`: 1 info
  - added the optional property `accounts/items/viewOnly` to the response with the `200` status

[Operation history](https://skmtc.dev/ledgerhq-pro/apis/ledgerhq-bookkeeping-api/changes/families/:id/accounts/get.md)

---

[API](https://skmtc.dev/ledgerhq-pro/apis/ledgerhq-bookkeeping-api.md) · [All operations](https://skmtc.dev/ledgerhq-pro/apis/ledgerhq-bookkeeping-api/llms.txt) · [OpenAPI document](https://skmtc.dev/ledgerhq-pro/apis/ledgerhq-bookkeeping-api/revisions/9a8269f0a586?raw)
