Skip to content

Update Account Endpoint

PATCH
/api/v1/accounts/{account_id}
curl --request PATCH \
--url https://example.com/api/v1/accounts/1 \
--header 'Content-Type: application/json' \
--data '{ "name": "example", "short_name": "example", "account_type": "checking", "currency": "example", "institution": "example", "institution_id": 1, "notes": "example", "is_liability": true, "on_budget": true, "exclude_from_net_worth": true, "liquidity_horizon": "immediate", "opened_at": "2026-04-15", "loan_interest_rate": 1, "loan_monthly_payment": 1, "linked_account_id": 1, "ofx_account_id": "example" }'

Update an account’s allowed fields.

account_id
required
Account Id
integer
Media typeapplication/json
AccountUpdate

Schema for partial account updates — mass assignment prevention.

Excludes id, user_id, deleted_at, created_at, updated_at. Currency IS updatable, but a change is rejected at the service layer (account_service.update_account, AccountCurrencyLockedError) once the account has any snapshot, active or soft-deleted.

object
name
Any of:
string
>= 1 characters <= 100 characters
short_name
Any of:
string
<= 30 characters
account_type
Any of:
AccountType

Account type enum — descriptive only in v1.

Does not change aggregation behavior.

string
Allowed values: checking savings investment retirement cash real_estate vehicle collectible other
currency
Any of:
string
/^[A-Z]{3}$/
institution
Any of:
string
<= 200 characters
institution_id
Any of:
integer
notes
Any of:
string
<= 500 characters
is_liability
Any of:
boolean
on_budget
Any of:
boolean
exclude_from_net_worth
Any of:
boolean
liquidity_horizon
Any of:
LiquidityHorizon

Liquidity classification for accounts — availability of funds.

Used for liquidity analysis and emergency fund calculations. Defaults to ‘semi_liquid’ as a safe middle ground.

string
Allowed values: immediate semi_liquid blocked long_term
opened_at
Any of:
string format: date
loan_interest_rate
Any of:
number
<= 100
loan_monthly_payment
Any of:
number
> 0
linked_account_id
Any of:
integer
>= 1
ofx_account_id
Any of:
string
>= 1 characters <= 100 characters

Successful Response

Media typeapplication/json
AccountOut

Schema for account response — ORM serialization via from_attributes.

object
id
required
Id
integer
user_id
required
User Id
integer
name
required
Name
string
short_name
required
Any of:
string
account_type
required
AccountType

Account type enum — descriptive only in v1.

Does not change aggregation behavior.

string
Allowed values: checking savings investment retirement cash real_estate vehicle collectible other
currency
required
Currency
string
institution
required
Any of:
string
institution_id
required
Any of:
integer
notes
required
Any of:
string
color
required
Any of:
string
is_liability
required
Is Liability
boolean
on_budget
required
On Budget
boolean
exclude_from_net_worth
required
Exclude From Net Worth
boolean
liquidity_horizon
required
LiquidityHorizon

Liquidity classification for accounts — availability of funds.

Used for liquidity analysis and emergency fund calculations. Defaults to ‘semi_liquid’ as a safe middle ground.

string
Allowed values: immediate semi_liquid blocked long_term
opened_at
required
Any of:
string format: date
loan_interest_rate
Any of:
string
loan_monthly_payment
Any of:
string
linked_account_id
Any of:
integer
ofx_account_id
required
Any of:
string
archived_at
required
Any of:
string format: date-time
sort_order
required
Sort Order
integer
deleted_at
required
Any of:
string format: date-time
created_at
required
Created At
string format: date-time
updated_at
required
Updated At
string format: date-time
csv_import_mapping
Any of:
CsvImportMapping

How to read a CSV file; every column is optional until the mapping is complete.

object
delimiter
Any of:
string
Allowed values: , ; |
encoding
Any of:
string
Allowed values: utf-8 cp1252
skip_rows
Skip Rows
integer
0 <= 100
has_header
Has Header
boolean
default: true
date_column
Any of:
ColumnRef

A mapped column: its position and, when the file has a header row, its title.

The header lets a later import find the column again if the bank reorders them.

object
index
required
Index
integer
<= 999
header
Any of:
string
<= 200 characters
date_format
Date Format
string
default: DD/MM/YYYY
Allowed values: DD/MM/YYYY MM/DD/YYYY YYYY-MM-DD MM.DD.YYYY DD.MM.YYYY DD-MM-YYYY DD/MM/YY MM/DD/YY YYYY/MM/DD
amount_mode
Amount Mode
string
default: signed
Allowed values: signed split
amount_column
Any of:
ColumnRef

A mapped column: its position and, when the file has a header row, its title.

The header lets a later import find the column again if the bank reorders them.

object
index
required
Index
integer
<= 999
header
Any of:
string
<= 200 characters
inflow_column
Any of:
ColumnRef

A mapped column: its position and, when the file has a header row, its title.

The header lets a later import find the column again if the bank reorders them.

object
index
required
Index
integer
<= 999
header
Any of:
string
<= 200 characters
outflow_column
Any of:
ColumnRef

A mapped column: its position and, when the file has a header row, its title.

The header lets a later import find the column again if the bank reorders them.

object
index
required
Index
integer
<= 999
header
Any of:
string
<= 200 characters
number_format
Number Format
string
default: 1,234.56
Allowed values: 1,234.56 1.234,56 1 234,56 1234.56 1234,56
flip_sign
Flip Sign
boolean
description_column
Any of:
ColumnRef

A mapped column: its position and, when the file has a header row, its title.

The header lets a later import find the column again if the bank reorders them.

object
index
required
Index
integer
<= 999
header
Any of:
string
<= 200 characters
memo_column
Any of:
ColumnRef

A mapped column: its position and, when the file has a header row, its title.

The header lets a later import find the column again if the bank reorders them.

object
index
required
Index
integer
<= 999
header
Any of:
string
<= 200 characters
reference_column
Any of:
ColumnRef

A mapped column: its position and, when the file has a header row, its title.

The header lets a later import find the column again if the bank reorders them.

object
index
required
Index
integer
<= 999
header
Any of:
string
<= 200 characters

Example

{
"account_type": "checking",
"liquidity_horizon": "immediate",
"csv_import_mapping": {
"delimiter": ",",
"encoding": "utf-8",
"skip_rows": 0,
"has_header": true,
"date_format": "DD/MM/YYYY",
"amount_mode": "signed",
"number_format": "1,234.56",
"flip_sign": false
}
}

Validation Error

Media typeapplication/json
HTTPValidationError
object
detail
Detail
Array<object>
ValidationError
object
loc
required
Location
Array
msg
required
Message
string
type
required
Error Type
string
input
Input
ctx
Context
object

Example generated

{
"detail": [
{
"loc": [
"example"
],
"msg": "example",
"type": "example",
"input": "example",
"ctx": {}
}
]
}