---
title: "Create Client"
method: POST
path: "/api/v1/admin/clients"
tags: ["Admin APIs", "clients"]
---

# Create Client

`POST /api/v1/admin/clients`

Create a new client with audit field. Whenever a client is created,
a default wallet is also created. This is done based on logic in models/events/account.py.
This also assigns provider access to the client based on logic in models/events/provider.py,
which depends on the client compliance managed status and provider properties.

Address validation is performed via stripe.tax.Calculation.create() before the client is
persisted. This creates a lightweight Calculation record in the Stripe dashboard on every
attempt (Stripe has no dry-run mode for this API). The records carry no financial impact and
are not tied to a customer, but will be visible in the Stripe audit trail.

Args:
    client: ClientCreate
    user_email: str

## Request body

- ClientCreate
  - `client_info` ClientInfoCreate, required
    - `name` string, required
    - `transaction_limit` number, nullable
    - `client_type_id` string, uuid4, nullable
    - `sector` string, nullable
    - `is_compliance_managed` boolean, nullable
    - `is_distributor` boolean, nullable
    - `account_manager_email` string, email, nullable
    - `entity_ids` string[]
    - `industry_ids` string[]
    - `block_compliance` 'managed' | 'notified' | 'disabled', nullable
    - `bill_to_email` string, email, nullable
    - `bill_to_name` string, nullable
    - `payment_method` 'card' | 'ach' | 'invoice', nullable
    - `address_line_1` string, nullable
    - `address_line_2` string, nullable
    - `city` string, nullable
    - `state` string, nullable
    - `zip` string, nullable
    - `country` string, nullable
    - `extra_info` object, nullable
    - `meta_data` object, nullable
  - `skip_stripe_validation` boolean

## Response `200`

Successful Response

- ClientRead
  - `key` string, required
  - `name` string, required
  - `id` string, uuid4, required
  - `client_id` string, required
  - `extra_info` object, nullable, required
  - `is_active` boolean, required
  - `tag_ids` string[], required
  - `client_type_id` string, uuid4, nullable
  - `sector` string, nullable
  - `is_compliance_managed` boolean, nullable
  - `is_distributor` boolean, nullable
  - `account_manager_email` string, email, nullable
  - `entity_ids` string[]
  - `industry_ids` string[]
  - `block_compliance` 'managed' | 'notified' | 'disabled', nullable
  - `plan_tier` string, required
  - `transaction_limit` number, nullable
  - `group_ids` string[], nullable
  - `bill_to_email` string, email, nullable
  - `bill_to_name` string, nullable
  - `payment_method` 'card' | 'ach' | 'invoice', nullable
  - `stripe_customer_id` string, nullable
  - `current_consumption` number, nullable
  - `address_line_1` string, nullable
  - `address_line_2` string, nullable
  - `city` string, nullable
  - `state` string, nullable
  - `zip` string, nullable
  - `country` string, nullable
  - `data_collection_consent_restricted` boolean
  - `mcp_provider_access_follows_api` boolean
  - `block_sample_access_follows_live` boolean
  - `exchange_enabled` boolean
  - `subscription_status` string, nullable
  - `deleted_at` string, date-time, nullable
  - `deletion_reason` string, nullable
  - `created_at` string, date-time, required
  - `plan_type` string, nullable
  - `distributor_client_id` string, uuid4, nullable
  - `distributor_name` string, nullable

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.net/carbonarc/apis/carbon-arc-client-admin-api.md) · [All operations](https://skmtc.net/carbonarc/apis/carbon-arc-client-admin-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/carbonarc/carbon-arc-client-admin-api/revisions/a8ca30023371/schema)
