Client Accounts & Multi-Tenancy
Every resource in the Snapbooks API — journal entries, documents, bank transactions, business partners — belongs to exactly one client account: one company’s books. Understanding how requests are scoped to a client account is the first thing an integration needs to get right.
The client_account_id parameter
Almost every endpoint requires a client account:
- List and read endpoints take a
client_account_idquery parameter:
GET /v2/journal-entries?client_account_id=42
Authorization: Bearer {access_token}
- Create endpoints take
client_account_idin the request body:
{
"client_account_id": 42,
"entry_date": "2026-08-01",
...
}
The client account must be one of the accounts the authenticated user can
access — otherwise the API responds with 403 Forbidden. A resource’s
client account cannot be changed after creation.
Which accounts can a token access?
A user’s eligible accounts are:
- Client accounts the user is a member of directly (with a role such as owner or accountant), and
- Client accounts accessible through service contracts — the model used by accounting firms, where the firm’s own account is the service provider for its clients’ accounts.
An OAuth token acts as a user, and can reach everything that user can:
- Authorization code flow — the token acts as the user who approved the consent screen. If they can access ten companies, so can the token.
- Client credentials flow — the token acts as the user who registered the OAuth client. This grant is only available to clients registered by an authenticated user (not to self-registered clients).
There is currently no way to restrict a token to a single client account —
scopes limit what a token may do (read vs
write), not which accounts it applies to. Always pass the explicit
client_account_id you intend to operate on, and prefer the read scope
for integrations that don’t need to make changes.
Discovering accessible accounts
List the accounts available to the token’s user:
GET /v2/client-accounts
Authorization: Bearer {access_token}
Use the returned id values as client_account_id in subsequent requests.
See Client Accounts for the full resource
documentation.
Currency
Every client account has an accounting_currency, and every monetary field
in the API carries an explicit currency_code. Don’t assume NOK — read the
currency from the response.
Related Resources
- Authentication — OAuth2 flows and scopes
- Client Accounts — manage company accounts
- Client Account Users — membership and roles
- Contracts — accounting-firm access to client accounts