> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.solvimon.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.solvimon.com/_mcp/server.

# write_customer

**Live server:** on `mcp.solvimon.com` only the draft actions are available, see [Access modes](/mcp-server/developing-for-solvimon#access-modes).

Creates and manages customers and their contacts. Types: `ORGANIZATION` (B2B) and `INDIVIDUAL` (B2C). Country drives tax calculation and is set inside the address: `organization.registered_address.country` or `individual.residential_address.country`. One organization can be the parent of several child customers for consolidated billing.

**Actions:** `create`, `update`, `upsert`, `delete`, `activate`, `deprecate`, `archive`. With `resource_type: contacts`: `create`, `update`, `delete`.

**On live:** `create` (always DRAFT) and `update` while the customer is DRAFT.

* **DRAFT by default.** A create without `status` makes a DRAFT customer. You can quote a DRAFT customer, but it must be activated before the quote converts to a subscription.
* **Custom fields merge** on update, so setting one field keeps the others. Pass `custom_fields_mode: replace` to replace the list.
* `type` can be switched if the new sub-object is sent in the same update. `timezone` can change only while the customer has no DRAFT or ACTIVE subscription.
* Changing a customer's parents regroups it and reprocesses its invoices. The result warns you.
* Archive, delete and role changes are checked against the backend's rules before anything is sent, and refused with the reason.
* A contact create asks whether the contact receives invoices by email. Deleting a contact is confirm-first and warns when nobody would be left receiving invoices.

**`Create a customer`**

```json Create a customer
{
  "action": "create",
  "body": {
    "type": "ORGANIZATION",
    "reference": "acme-001",
    "timezone": "Europe/Amsterdam",
    "organization": {
      "legal_name": "Acme Corp",
      "registered_address": {
        "country": "NL",
        "city": "Amsterdam",
        "line1": "Keizersgracht 1",
        "postal_code": "1015CJ"
      }
    }
  }
}
```

> **Note**
>
> A customer has no `billing_entity_id` or `country_code` field. The API rejects both.