# PUT /api/v1/ledgers/{ledger_id}

> Update ledger

- **Tag:** ledgers
- **Operation ID:** `update_ledger_api_v1_ledgers__ledger_id__put`

## Description

Update an existing ledger account.

## Authentication

Bearer token in `Authorization` header.
Required header: `x-business-id: <business uuid>`.

## Parameters

- `ledger_id` (path, string, required)

## Request body

Schema: `LedgerUpdateRequest`

- `name` (string) — Ledger name
- `description` (string) — Ledger description
- `status` (string) — Ledger status (active, inactive)
- `debit_credit` (string) — Debit/credit behavior (debit, credit)
- `sort_code` (integer) — Sort code for chart ordering (e.g. 1000 for assets, 4000 for revenue).
- `sub_type` (string) — Ledger sub-type
- `report_cash_flow` (boolean) — Include in cash flow reports
- `cash_flow_section` (CashFlowSectionEnum) — Cash flow statement section: 'operating' (working capital changes), 'investing' (fixed assets, investments), 'financing' (loans, equity), or 'excluded' (not shown in cash flow statement).
- `cfs_class` (CashFlowClassEnum) — Indirect-method cash flow classification (e.g. 'ar', 'ppe', 'lt_debt'). See `CashFlowClassEnum` for full list.
- `editable` (boolean) — Whether journal entries can be manually posted to this account.
- `parent_id` (string) — Parent ledger ID for creating child/sub-ledgers
- `financial_account_type` (string) — Financial account type: bank_account, credit_card, payments, payroll, loan, prepaid_card, accounts_receivable, accounts_payable. Set to designate this ledger as a financial account.

## Responses

### 200 — Successful Response

Schema: `LedgerResponse`

- `id` (string · required) — Ledger UUID.
- `teal_ledger_id` (string) — Linked Teal accounting system ID.
- `name` (string · required) — Account name.
- `currency` (string) — Currency for this account (USD, CAD, AUD, EUR, or GBP).
- `type` (string · required) — Account type: asset, liability, equity, revenue, expense.
- `balance` (integer) — Current balance in cents (may be negative).
- `parent_id` (string) — Parent ledger UUID for sub-accounts.
- `description` (string) — Account description.
- `status` (string) — Status: 'active' or 'inactive'.
- `debit_credit` (string) — Normal balance: 'debit' or 'credit'.
- `sort_code` (string) — Sort code for chart ordering.
- `sub_type` (string) — Sub-classification for reporting.
- `report_cash_flow` (boolean) — Whether included in cash flow statement.
- `cash_flow_section` (CashFlowSectionEnum) — Cash flow statement section: 'operating', 'investing', 'financing', or 'excluded'.
- `cfs_class` (CashFlowClassEnum) — Indirect-method cash flow classification used to populate the Statement of Cash Flows.
- `editable` (boolean) — Whether journal entries can be manually posted to this account.
- `financial_account_type` (string) — Template type if created in Templated Mode.
- `is_required` (boolean) — True for system-required accounts that cannot be deleted.
- `system_key` (string) — Immutable key for system/base ledgers (e.g. 'accounts_receivable'). Null for user-created ledgers.
- `teal_account_link_id` (string) — UUID of the TealAccountLink if this ledger is connected to a bank/Plaid source account. Null for unlinked ledgers.
- `business_id` (string) — Business UUID.
- `created_at` (string · date-time) — Creation timestamp.
- `updated_at` (string · date-time) — Last update timestamp.

### 400 — Bad Request - Invalid input

### 401 — Unauthorized - Authentication required

### 403 — Forbidden - Insufficient permissions

### 404 — Not Found - Resource does not exist

### 422 — Validation Error

Schema: `HTTPValidationError`

- `detail` (array · ValidationError) → `ValidationError`
  - `loc` (array · string | integer · required)
  - `msg` (string · required)
  - `type` (string · required)
  - `input` (object)
  - `ctx` (object)

## Code samples

### cURL

```bash
curl -X PUT 'https://api.ondayzero.com/api/v1/ledgers/{ledger_id}' \
  -H 'Authorization: Bearer dz_your_token' \
  -H 'x-business-id: YOUR_BUSINESS_ID' \
  -H 'Content-Type: application/json' \
  -d '{
  "name": "string",
  "description": "string",
  "status": "string",
  "debit_credit": "string",
  "sort_code": 0,
  "sub_type": "string"
}'
```

### JavaScript

```javascript
const response = await fetch('https://api.ondayzero.com/api/v1/ledgers/{ledger_id}', {
  method: 'PUT',
  headers: {
    Authorization: 'Bearer dz_your_token',
    'x-business-id': 'YOUR_BUSINESS_ID',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
  "name": "string",
  "description": "string",
  "status": "string",
  "debit_credit": "string",
  "sort_code": 0,
  "sub_type": "string"
}),
});
const data = await response.json();
```

### Python

```python
import httpx

headers = {
    "Authorization": "Bearer dz_your_token",
    "x-business-id": "YOUR_BUSINESS_ID",
}

payload = {
  "name": "string",
  "description": "string",
  "status": "string",
  "debit_credit": "string",
  "sort_code": 0,
  "sub_type": "string"
}

response = httpx.put("https://api.ondayzero.com/api/v1/ledgers/{ledger_id}", headers=headers, json=payload)
data = response.json()
```

## See also

- HTML version: https://www.ondayzero.com/docs/reference/ledgers/update-ledger
- OpenAPI slice: https://www.ondayzero.com/docs/reference/ledgers/update-ledger/openapi.json
- Other endpoints in **ledgers**: https://www.ondayzero.com/docs/reference/ledgers
