---
title: "Create an Account"
method: POST
path: "/mgmt/accounts"
tags: ["accounts"]
---

# Create an Account

`POST /mgmt/accounts`

## Request

- Base URL: `https://api.v3.taxcloud.com`
- URL: `https://api.v3.taxcloud.com/mgmt/accounts`
- Auth: HTTP bearer

Creates a TaxCloud account and its first contact. Requires a service credential with the `create:accounts` scope. The new account's identifier is returned in the response.

## Contact

Every account starts with one contact. By default it uses the account email; supply the optional `contact` object to name a different person. The contact's status is `invited` until they accept the terms of service, then `active`.

**Note:** Creation is not idempotent and has no replay protection. The contact email must be unique across all TaxCloud contacts, so a repeated call with the same email returns `409` rather than a second account; a repeated call with a different email creates a second account. Do not retry this call automatically.

## Request body

- MANAGEMENTAPICreateAccountRequest
  - `$schema` string, uri: A URL to the JSON Schema for this object.
  - `contact` MANAGEMENTAPICreateAccountContactRequest
    - `email` string, email: Contact email. Must be a bare address with no display name. Defaults to the account email when omitted. Must not already belong to a contact on any account; a repeat is rejected with 409.
    - `firstName` string: Contact first name. Maximum 50 characters.
    - `lastName` string: Contact last name. Maximum 50 characters.
    - `phone` string: Contact phone number.
  - `ein` string: Optional Employer Identification Number. Maximum 12 characters.
  - `email` string, email, required: Primary email for the account. Must be a bare address with no display name. On create, also used for the account's first contact unless a contact object overrides it.
  - `name` string, required: Legal or trading name of the account. Maximum 50 characters.
  - `phone` string: Optional account phone number. Maximum 16 characters.
  - `stateIncorporated` string: Optional two-letter state code where the business is incorporated.

## Response `201`

Created

- MANAGEMENTAPIAccountResponse
  - `$schema` string, uri: A URL to the JSON Schema for this object.
  - `accountId` integer, required: Identifier of the account.
  - `contact` MANAGEMENTAPIAccountContactResponse
    - `contactId` integer, required: Identifier of the contact.
    - `email` string, required: Contact email.
    - `firstName` string: Contact first name, when one was supplied.
    - `lastName` string: Contact last name, when one was supplied.
    - `phone` string: Contact phone number, when one was supplied.
    - `status` 'invited' | 'active', required: invited until the contact accepts terms of service through the login flow, then active.
  - `createdAt` string, date-time, required: When the account was created. Stored to the minute.
  - `ein` string: Employer Identification Number, when one was supplied.
  - `email` string, required: Primary email for the account.
  - `name` string, required: Name of the account.
  - `phone` string: Account phone number, when one was supplied.
  - `stateIncorporated` string: State of incorporation, when one was supplied.

## Other responses

- `400`: Bad Request
- `401`: Unauthorized
- `403`: Forbidden
- `404`: Not Found
- `422`: Unprocessable Entity
- `429`: Too Many Requests
- `500`: Internal Server Error

---

[API](https://skmtc.dev/taxcloud/apis/taxcloud-2.md) - [All operations](https://skmtc.dev/taxcloud/apis/taxcloud-2/llms.txt) - [OpenAPI document](https://skmtc.dev/taxcloud/apis/taxcloud-2/revisions/e0cd5a77728e?raw)
