> ## Documentation Index
> Fetch the complete documentation index at: https://docs.thredfi.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Menu Configuration

> Control tab visibility for each business

## Configurable Tabs

7 main tabs available:

* `insights` - Dashboard with KPIs
* `tasks` - Bookkeeping task queue
* `bank_transactions` - Bank activity
* `general_ledger` - Chart of accounts, journal entries
* `reports` - Financial statements
* `accounts_receivable` - AR invoices and aging
* `accounts_payable` - AP bills and aging

## API Endpoints

**Get configuration:**

```
GET /v1/platform/businesses/{business_id}/menu-config/
```

**Update configuration:**

```
PUT /v1/platform/businesses/{business_id}/menu-config/
```

**Reset to partner default:**

```
DELETE /v1/platform/businesses/{business_id}/menu-config/
```

## Configuration Structure

```json theme={null}
{
  "menu": {
    "insights": true,
    "tasks": true,
    "bank_transactions": false,
    "general_ledger": true,
    "reports": true,
    "accounts_receivable": true,
    "accounts_payable": false
  },
  "sub_menu_tabs": {
    "reports.cashflow_statement": true,
    "reports.balance_sheet": true
  }
}
```

**`menu`** (required) - Boolean flags for each main tab

**`sub_menu_tabs`** (optional) - Fine-grained control over sub-tabs using `"parent.child"` format

## Example: Hide AP Tab

For invoice-only platforms:

```python theme={null}
config = {
    "menu": {
        "accounts_payable": False
    }
}

response = requests.put(
    f"https://sandbox.thredfi.com/v1/platform/businesses/{business_id}/menu-config/",
    headers={"Authorization": f"Bearer {business_token}"},
    json=config
)
```

Only specify items you want to change. Unspecified items keep their default values.

## Example: Show Only Reports Sub-tabs

```python theme={null}
config = {
    "menu": {
        "reports": True
    },
    "sub_menu_tabs": {
        "reports.cashflow_statement": True,
        "reports.balance_sheet": True
    }
}
```

**Validation rule**: Parent menu must be enabled if sub-menu is enabled.

## Common Configurations

**Minimal** (reporting only):

```json theme={null}
{
  "menu": {
    "insights": true,
    "reports": true,
    "general_ledger": false,
    "tasks": false,
    "bank_transactions": false,
    "accounts_receivable": false,
    "accounts_payable": false
  }
}
```

**AR-focused** (invoice platforms):

```json theme={null}
{
  "menu": {
    "insights": true,
    "reports": true,
    "accounts_receivable": true,
    "general_ledger": true,
    "tasks": true,
    "accounts_payable": false
  }
}
```

**Full accounting**:
All tabs enabled by default. No config needed.

## Inheritance

**Partner-level default** → Applied to all businesses by default

**Business-level override** → Overrides partner default for specific business

To reset business to partner default: `DELETE /menu-config/`

## Response Format

```json theme={null}
{
  "data": {
    "menu": { /* config */ },
    "sub_menu_tabs": { /* config */ },
    "source": "business" // or "partner"
  }
}
```

`source` indicates if config is business-specific or inherited from partner.

***

**Implementation guide complete!** All sections documented.
