# company.update

Update company metadata and tax settings with the current revision and an idempotency key. Corporate annual returns remain distinct from tax periods.

`POST /api/v1/accounting/company.update`

Permissions: `accounting:read`, `accounting:write`, `accounting:admin` · Roles: admin · Idempotency key required · Send `expectedRevision`

MCP tool: `accounting_company_update`

## Fields

| Field | Type | Required | Notes |
| --- | --- | --- | --- |
| `expectedRevision` | integer | Yes | The record's current revision, from the last time you read it. If someone changed the record since, the request is refused with a conflict so you can reload and check before trying again. 0 to 9007199254740991. |
| `idempotencyKey` | string | Yes | Any unique text you generate once per intended change, so a retried request only happens once. Send it as the Idempotency-Key header instead if you prefer; if you send both they must match. 8–200 characters. |
| `profile` | object | Yes | No other fields. |
| `profile.legalName` | string or null |  | Default `null`. |
| `profile.tradingName` | string or null |  | Default `null`. |
| `profile.businessNumber` | string or null |  | Default `null`. |
| `profile.gstHstAccount` | string or null |  | Default `null`. |
| `profile.corporationNumber` | string or null |  | Default `null`. |
| `profile.provincialCorporationNumber` | string or null |  | Default `null`. |
| `profile.incorporationDate` | string or null |  | Default `null`. |
| `profile.jurisdiction` | string or null |  | Default `null`. |
| `profile.entity` | object |  | No other fields. Default `{"country":null,"formationJurisdiction":null,"otherJurisdictionName":null,"legalForm":null,"usFederalTaxClassification":null,"taxResidenceCountry":null,"operatingJurisdictions":[],"registrations":[]}`. |
| `profile.entity.country` | enum or null |  | One of: `CA`, `US`, `OTHER`. Default `null`. |
| `profile.entity.formationJurisdiction` | string or null |  | Default `null`. |
| `profile.entity.otherJurisdictionName` | string or null |  | Default `null`. |
| `profile.entity.legalForm` | enum or null |  | One of: `corporation`, `llc`, `partnership`, `sole_proprietorship`, `nonprofit`, `cooperative`, `other`, `not_sure`. Default `null`. |
| `profile.entity.usFederalTaxClassification` | enum or null |  | One of: `c_corporation`, `s_corporation`, `partnership`, `disregarded_entity`, `tax_exempt`, `other`, `not_sure`. Default `null`. |
| `profile.entity.taxResidenceCountry` | string or null |  | Default `null`. |
| `profile.entity.operatingJurisdictions` | array of objects |  | at most 100 items. Default `[]`. |
| `profile.entity.operatingJurisdictions[].jurisdictionCode` | string | Yes | 2–20 characters. |
| `profile.entity.operatingJurisdictions[].activities` | array of enum values | Yes | One of: `registered_office`, `employees`, `contractors`, `sales`, `property`, `other`. 1–6 items. |
| `profile.entity.operatingJurisdictions[].status` | enum | Yes | Only include records with this status. One of: `registered`, `assessing`, `not_registered`. |
| `profile.entity.registrations` | array of objects |  | at most 200 items. Default `[]`. |
| `profile.entity.registrations[].id` | string (ID) | Yes | The record's ID. |
| `profile.entity.registrations[].jurisdictionCode` | string | Yes | 2–20 characters. |
| `profile.entity.registrations[].program` | enum | Yes | One of: `business_registration`, `foreign_qualification`, `tax_identification`, `corporate_income_tax`, `sales_tax`, `payroll`, `information_returns`, `annual_report`, `other`. |
| `profile.entity.registrations[].status` | enum | Yes | Only include records with this status. One of: `registered`, `not_registered`, `review_needed`. |
| `profile.entity.registrations[].registrationNumber` | string or null |  | Default `null`. |
| `profile.entity.registrations[].effectiveDate` | string or null |  | Default `null`. |
| `profile.entity.registrations[].filingFrequency` | enum or null |  | One of: `annual`, `quarterly`, `monthly`. Default `null`. |
| `profile.entity.registrations[].nextDueDate` | string or null |  | Default `null`. |
| `profile.entity.registrations[].sourceDocumentId` | string (ID) or null |  | Default `null`. |
| `profile.address` | object or null |  | Default `null`. |
| `profile.address.line1` | string | Yes | at most 500 characters. |
| `profile.address.line2` | string |  | at most 500 characters. Default `""`. |
| `profile.address.city` | string | Yes | at most 500 characters. |
| `profile.address.province` | string | Yes | at most 500 characters. |
| `profile.address.postalCode` | string | Yes | at most 500 characters. |
| `profile.address.country` | string |  | Two-letter country or province code. Default `"CA"`. |
| `profile.corporateAnnualReturnMonthDay` | string or null |  | Default `null`. |
| `profile.fiscalYearEnd` | string or null |  | Default `null`. |
| `profile.bankHistoryStart` | string or null |  | Default `null`. |
| `profile.gstHst` | object |  | No other fields. Default `{"registered":null,"effectiveDate":null,"frequency":null,"yearEnd":null,"method":null}`. |
| `profile.gstHst.registered` | boolean or null |  | Default `null`. |
| `profile.gstHst.effectiveDate` | string or null |  | Default `null`. |
| `profile.gstHst.frequency` | enum or null |  | One of: `annual`, `quarterly`, `monthly`. Default `null`. |
| `profile.gstHst.yearEnd` | string or null |  | Default `null`. |
| `profile.gstHst.method` | enum or null |  | One of: `regular`, `quick`, `special`. Default `null`. |
| `profile.t2PaymentMonths` | 2 or 3 or null |  | Default `null`. |
| `profile.t2ThreeMonthEligibilitySource` | string or null |  | Default `null`. |
| `profile.metadata` | map |  | Default `{}`. |
| `profile.sources` | map |  | Default `{}`. |

## Example request

```bash
curl https://app.getoatmilk.com/api/v1/accounting/company.update \
  -H "Authorization: Bearer $OATMILK_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
  "expectedRevision": 3,
  "profile": {}
}'
```

Reference page: https://app.getoatmilk.com/docs/api/company.update
