---
title: "Update tax settings (upsert). Snapshots prior effective state to history."
method: PUT
path: "/companies/{companyId}/tax-settings"
tags: ["Tax Settings"]
---

# Update tax settings (upsert). Snapshots prior effective state to history.

`PUT /companies/{companyId}/tax-settings`

## Request

- Base URL: `https://api.medianfi.com/api/v1`
- URL: `https://api.medianfi.com/api/v1/companies/{companyId}/tax-settings`
- Auth: HTTP bearer

## Request body

- UpdateTaxSettingsInput
  - `federalTaxId` string, nullable
  - `stateTaxId` string, nullable
  - `filingFrequency` 'monthly' | 'quarterly' | 'annual' | 'null', nullable
  - `fiscalYearEnd` integer, nullable
  - `entityType` string, nullable
  - `accountingMethod` 'cash' | 'accrual' | 'tbd' | 'null', nullable
  - `stateOfIncorporation` string, nullable
  - `notes` string, nullable
  - `changeReason` string, nullable: Optional free-text explanation stored alongside the history entry that captures the pre-update effective state.

## Response `200`

Tax settings updated. Returns the underlying tax_settings row; call GET to see the merged effective view + history.

- UpdateTaxSettingsResponse
  - `success` boolean
  - `data` TaxSettings
    - `id` string
    - `companyId` string, uuid
    - `federalTaxId` string, nullable
    - `stateTaxId` string, nullable
    - `filingFrequency` 'monthly' | 'quarterly' | 'annual' | 'null', nullable
    - `fiscalYearEnd` integer, nullable
    - `entityType` string, nullable
    - `accountingMethod` 'cash' | 'accrual' | 'tbd' | 'null', nullable: Override for the onboarding accounting-method answer. 'tbd' is rendered as "TBD" in the UI and maps from the onboarding 'unsure' choice; null means "fall back to companies.accounting_method".
    - `stateOfIncorporation` string, nullable: Override for the onboarding state-of-incorporation answer. null means "fall back to companies.state".
    - `notes` string, nullable
    - `createdAt` string, date-time
    - `updatedAt` string, date-time

## Other responses

- `401`: Authentication required
- `403`: Insufficient permissions or not a company member
- `422`: Validation error

---

[API](https://skmtc.dev/medianfi/apis/median-api.md) · [All operations](https://skmtc.dev/medianfi/apis/median-api/llms.txt) · [OpenAPI document](https://skmtc.dev/medianfi/apis/median-api/revisions/20090ea32b0d?raw)
