---
title: "Update a company"
method: PATCH
path: "/v1/companies/{id}"
tags: ["Company"]
---

# Update a company

`PATCH /v1/companies/{id}`

Updates a company. The set of writable attributes depends on the caller's
role and the company's `verification_status`:

- Company owners/admins can update `name`, `address`, `interests`, referral
  fields, and (while KYC is `pending`/`rejected`/unset) the KYC document and
  profile fields (`fantasy_name`, `commercial_business`, `contact_phone`,
  `contact_email`, `commercial_type`, `constitution_date`, `legal_address`,
  `economic_activities`, and the KYC file fields).
- Once `verification_status` is `approved`, only the signed-contract flags
  (`plh_contract_file_signed`, `plh_kyc_file_signed`,
  `plh_alliance_file_signed`) remain writable by company users.
- Members can also submit nested `company_memberships` updates (role, legal
  representative, powers, partner, participation rate).
- A large set of commercial/financial attributes is writable **only by
  Cardda staff** and is intentionally omitted here.

Non-privileged callers receive an empty permitted set (no-op update).

## Path parameters

- `id` string, required

## Parameters

- `#/paths/~1v1~1users/get/parameters/0` — unresolved $ref

## Request body

- object
  - `name` string
  - `address` string
  - `fantasy_name` string
  - `commercial_business` string
  - `contact_phone` string
  - `contact_email` string
  - `commercial_type` integer
  - `constitution_date` string, date-time
  - `purpose_to_use_cards` string
  - `interests` string[]
  - `economic_activities` object[]
  - `legal_address` object
    - `street` string
    - `number` string
    - `municipality_id` string
    - `complement` string
    - `city` string
  - `referral_approved` boolean
  - `referrer_id` string, uuid
  - `plh_contract_file_signed` boolean — Writable only when `verification_status` is `approved`.
  - `plh_kyc_file_signed` boolean — Writable only when `verification_status` is `approved`.
  - `plh_alliance_file_signed` boolean — Writable only when `verification_status` is `approved`.
  - `company_memberships` object[] — Nested membership updates.
    - `id` string, uuid
    - `role` string
    - `user_id` string
    - `legal_representative` boolean
    - `has_powers_to_act` boolean
    - `partner` boolean
    - `is_indirect_participation_corporate` boolean
    - `participation_rate` number

## Response `200`

The updated company.

- Company — A company (tenant / organization). Companies are Single-Table-Inheritance subclasses of `Person`, so the payload carries generic Person columns plus company-specific attributes. Internal financial and commission columns (`balance_cents`, `wallets`, `credit`, `commission*`, `amount_per_*`, `max_amount_commission_*`, `balance_threshold`, `cost_center`, `stp_name`, ...) and computed methods such as `balance` / `total_allocated_funds` are **not part of the documented public contract** and are intentionally omitted here. The fields documented below are the supported company shape.
  - `id` string, uuid, required
  - `type` string — STI subclass. Always `Company` for this resource.
  - `identifier` string, required — Tax id (RUT in Chile) of the company. Digits plus verification digit.
  - `name` string, nullable
  - `fantasy_name` string, nullable
  - `country` string, nullable
  - `commercial_business` string, nullable
  - `commercial_type` integer, nullable
  - `address` string, nullable
  - `contact_phone` string, nullable
  - `contact_email` string, nullable
  - `constitution_date` string, date-time, nullable
  - `purpose_to_use_cards` string, nullable
  - `legal_address` object, nullable — Structured legal address (`street`, `number`, `municipality_id`, `complement`, `city`).
  - `economic_activities` object[], nullable
  - `interests` string[]
  - `notification_emails` string[]
  - `ruts` object, nullable — Additional RUTs associated with the company.
  - `referral_code` string
  - `referrer_id` string, uuid, nullable
  - `referral_approved` boolean, nullable
  - `collector_account_id` string, uuid, nullable
  - `preferred_currency` string
  - `verification_status` 'pending' | 'awaiting_review' | 'approved' | 'rejected' — KYC verification status.
  - `kyc_completed` boolean
  - `plh_enabled` boolean — Whether the company is enrolled in the PLH card program.
  - `contracts_verified` boolean
  - `activated` boolean
  - `active` boolean
  - `can_delegate_payables` boolean
  - `n_users` integer — Number of member users (computed method).
  - `n_cards` integer — Number of cards (computed method).
  - `n_virtual_cards` integer — Number of virtual cards (computed method).
  - `owner_id` string, uuid, nullable — User id of the owner membership (present on the index listing).
  - `created_at` string, date-time
  - `updated_at` string, date-time

## Other responses

- `401` — Unauthorized
- `404` — Company not found
- `422` — Validation failed

---

[API](https://skmtc.dev/cardda/apis/banking-api.md) · [All operations](https://skmtc.dev/cardda/apis/banking-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/cardda/banking-api/revisions/ff1aeb3fda8b/schema)
