---
title: "Create a company"
method: POST
path: "/v1/partner/companies"
tags: ["Companies"]
---

# Create a company

`POST /v1/partner/companies`

Starts a company formation for one of your customers. Set `entityType` to `LLC` (the default) or `CCorp`: an LLC takes `members`, while a CCorp takes `executiveMembers` and `ccorpValuation`. Idempotent on the `Idempotency-Key` header: a successful create is replayed for the same key, so retries never start a duplicate formation. If a create fails before it commits, the key is released — fix the request and retry with the same key.

## Headers

- `Idempotency-Key` string, required

## Request body

- CreateCompanyRequest — Request body to create (form) a company for one of your customers.
  - `doolaCustomerId` string, required — doola customer ID (KSUID) that will own the company.
  - `entityType` 'LLC' | 'CCorp' — Entity type to form. Defaults to LLC when omitted. An LLC takes `members`; a CCorp takes `executiveMembers` and `ccorpValuation`.
  - `state` string, required — US state of formation (two-letter abbreviation).
  - `nameOptions` PartnerCompanyNameOptionDto[], required — Candidate company names, in order of preference. One to three entries.
    - `id` string — Server-assigned ID.
    - `name` string, required — Proposed company name, without the entity ending.
    - `entityTypeEnding` string, required — Entity-type ending appended to the name.
    - `position` integer — Preference order (1 = first choice).
  - `industry` string — Unique NAICS industry label (the `industry` value from GET /v1/partner/references/naics-codes). Preferred over `naicsCode`: Provide either `industry` or `naicsCode`; when both are sent, `industry` wins.
  - `naicsCode` string — NAICS industry code. DEPRECATED — use `industry` instead. When `industry` is also provided it takes precedence and this value is ignored; otherwise it must exist in the reference list. Supported through the 90-day deprecation window for backwards compatibility.
  - `description` string, required — Short description of what the business does.
  - `responsibleParty` PartnerResponsiblePartyDto, required — The person legally responsible for the company (used for tax filings).
    - `id` string — Server-assigned ID.
    - `legalFirstName` string, required — Legal first name.
    - `legalLastName` string, required — Legal last name.
    - `ssn` string — Social Security Number or ITIN. Optional. Format: XXX-XX-XXXX. Handled as sensitive data.
    - `email` string, required — Contact email.
    - `address` PartnerAddressDto — A postal address.
      - `id` string — Server-assigned ID.
      - `line1` string, required — Street address line 1.
      - `line2` string — Street address line 2.
      - `city` string, required — City.
      - `state` string, required — State or province.
      - `postalCode` string, required — Postal or ZIP code.
      - `country` string, required — ISO 3166-1 alpha-3 country code (e.g. USA).
      - `phone` string — Phone number in E.164 format. Required for a person's address (the responsible party, a member, or an executive member); optional for a company `mailing` or `business` address.
  - `addresses` PartnerCompanyAddressDto[], required — Company addresses. Exactly two entries are required: one `mailing` and one `business`. Each entry is either `customer`-provided or handed to doola's Registered Agent (see the `provider` field).
    - `provider` 'customer' | 'registeredAgent', required — Who provides this address. Use `customer` to supply the address yourself in the `address` field. Use `registeredAgent` to have doola fill in its Registered Agent address for the company's state; leave `address` out, as it is not used for a registered-agent entry.
    - `type` 'mailing' | 'business', required — Which address this is. Send exactly one `mailing` entry and one `business` entry.
    - `address` PartnerAddressDto — A postal address.
      - `id` string — Server-assigned ID.
      - `line1` string, required — Street address line 1.
      - `line2` string — Street address line 2.
      - `city` string, required — City.
      - `state` string, required — State or province.
      - `postalCode` string, required — Postal or ZIP code.
      - `country` string, required — ISO 3166-1 alpha-3 country code (e.g. USA).
      - `phone` string — Phone number in E.164 format. Required for a person's address (the responsible party, a member, or an executive member); optional for a company `mailing` or `business` address.
  - `members` PartnerCompanyMemberDto[] — Company members/owners. Required for an LLC (ownership percentages must total 100); omit for a CCorp.
    - `id` string — Server-assigned ID.
    - `legalFirstName` string — Legal first name (natural persons).
    - `legalLastName` string — Legal last name (natural persons).
    - `contactFullName` string — Full contact name (entities or where a single name is used).
    - `isNaturalPerson` boolean, required — True if the member is a person, false if it is another entity.
    - `address` PartnerAddressDto, required — A postal address.
      - `id` string — Server-assigned ID.
      - `line1` string, required — Street address line 1.
      - `line2` string — Street address line 2.
      - `city` string, required — City.
      - `state` string, required — State or province.
      - `postalCode` string, required — Postal or ZIP code.
      - `country` string, required — ISO 3166-1 alpha-3 country code (e.g. USA).
      - `phone` string — Phone number in E.164 format. Required for a person's address (the responsible party, a member, or an executive member); optional for a company `mailing` or `business` address.
    - `ownershipPercent` number, required — Ownership percentage (0–100).
    - `ssn` string — Social Security Number or ITIN. Optional. Format: XXX-XX-XXXX. Handled as sensitive data.
  - `executiveMembers` PartnerCCorpExecMemberDto[] — C-Corp officers and directors. Required for a CCorp; omit for an LLC. Include at least one President, Secretary, Treasurer, and Director; the President, Secretary, and Treasurer may each appear only once.
    - `id` string — Server-assigned ID.
    - `type` 'President' | 'Secretary' | 'Treasurer' | 'Director', required — Executive role. The list must include at least one of each role; President, Secretary, and Treasurer may each appear only once, while Director may repeat.
    - `legalFirstName` string, required — Legal first name.
    - `legalLastName` string, required — Legal last name.
    - `ssn` string — Social Security Number or ITIN. Optional. Format: XXX-XX-XXXX. Handled as sensitive data.
    - `address` PartnerAddressDto, required — A postal address.
      - `id` string — Server-assigned ID.
      - `line1` string, required — Street address line 1.
      - `line2` string — Street address line 2.
      - `city` string, required — City.
      - `state` string, required — State or province.
      - `postalCode` string, required — Postal or ZIP code.
      - `country` string, required — ISO 3166-1 alpha-3 country code (e.g. USA).
      - `phone` string — Phone number in E.164 format. Required for a person's address (the responsible party, a member, or an executive member); optional for a company `mailing` or `business` address.
  - `ccorpValuation` PartnerCcorpValuationDto — C-Corp share structure.
    - `noOfShares` integer, required — Number of authorized shares. Must be greater than 0.
    - `shareValue` number, required — Par value per share, in USD. Must be greater than 0.
  - `requestedServices` RequestedServiceDto[] — Optional per-service variant overrides. Today only the EIN service is configurable: include `{ "service": "EinCreation", "variant": "Expedite" }` to request the expedited EIN (requires the expedited EIN feature and a non-US applicant). Omit for standard processing.
    - `service` 'EinCreation' — Service to configure. Only `EinCreation` is supported today.
    - `variant` 'Standard' | 'Expedite' — Variant for the service. `Expedite` requests the expedited EIN; `Standard` is the default and behaves the same as omitting the entry.

## Response `201`

Created

- ApiResponsePartnerCompanyResponseObject
  - `payload` PartnerCompanyResponse — A company, including formation progress and post-formation details.
    - `doolaCompanyId` string — doola company ID (KSUID).
    - `doolaCustomerId` string — Owning doola customer ID (KSUID).
    - `entityType` 'LLC' | 'CCorp' — Entity type.
    - `state` string — State of formation.
    - `nameOptions` PartnerCompanyNameOptionDto[]
      - `id` string — Server-assigned ID.
      - `name` string, required — Proposed company name, without the entity ending.
      - `entityTypeEnding` string, required — Entity-type ending appended to the name.
      - `position` integer — Preference order (1 = first choice).
    - `naicsCode` string
    - `industry` string — Unique NAICS industry label the company was classified under.
    - `description` string
    - `responsibleParty` PartnerResponsiblePartyDto — The person legally responsible for the company (used for tax filings).
      - `id` string — Server-assigned ID.
      - `legalFirstName` string, required — Legal first name.
      - `legalLastName` string, required — Legal last name.
      - `ssn` string — Social Security Number or ITIN. Optional. Format: XXX-XX-XXXX. Handled as sensitive data.
      - `email` string, required — Contact email.
      - `address` PartnerAddressDto — A postal address.
        - `id` string — Server-assigned ID.
        - `line1` string, required — Street address line 1.
        - `line2` string — Street address line 2.
        - `city` string, required — City.
        - `state` string, required — State or province.
        - `postalCode` string, required — Postal or ZIP code.
        - `country` string, required — ISO 3166-1 alpha-3 country code (e.g. USA).
        - `phone` string — Phone number in E.164 format. Required for a person's address (the responsible party, a member, or an executive member); optional for a company `mailing` or `business` address.
    - `addresses` PartnerCompanyAddressDto[]
      - `provider` 'customer' | 'registeredAgent', required — Who provides this address. Use `customer` to supply the address yourself in the `address` field. Use `registeredAgent` to have doola fill in its Registered Agent address for the company's state; leave `address` out, as it is not used for a registered-agent entry.
      - `type` 'mailing' | 'business', required — Which address this is. Send exactly one `mailing` entry and one `business` entry.
      - `address` PartnerAddressDto — A postal address.
        - `id` string — Server-assigned ID.
        - `line1` string, required — Street address line 1.
        - `line2` string — Street address line 2.
        - `city` string, required — City.
        - `state` string, required — State or province.
        - `postalCode` string, required — Postal or ZIP code.
        - `country` string, required — ISO 3166-1 alpha-3 country code (e.g. USA).
        - `phone` string — Phone number in E.164 format. Required for a person's address (the responsible party, a member, or an executive member); optional for a company `mailing` or `business` address.
    - `members` PartnerCompanyMemberDto[]
      - `id` string — Server-assigned ID.
      - `legalFirstName` string — Legal first name (natural persons).
      - `legalLastName` string — Legal last name (natural persons).
      - `contactFullName` string — Full contact name (entities or where a single name is used).
      - `isNaturalPerson` boolean, required — True if the member is a person, false if it is another entity.
      - `address` PartnerAddressDto, required — A postal address.
        - `id` string — Server-assigned ID.
        - `line1` string, required — Street address line 1.
        - `line2` string — Street address line 2.
        - `city` string, required — City.
        - `state` string, required — State or province.
        - `postalCode` string, required — Postal or ZIP code.
        - `country` string, required — ISO 3166-1 alpha-3 country code (e.g. USA).
        - `phone` string — Phone number in E.164 format. Required for a person's address (the responsible party, a member, or an executive member); optional for a company `mailing` or `business` address.
      - `ownershipPercent` number, required — Ownership percentage (0–100).
      - `ssn` string — Social Security Number or ITIN. Optional. Format: XXX-XX-XXXX. Handled as sensitive data.
    - `adminNotes` PartnerAdminNoteDto[] — Internal notes visible to the partner.
      - `noteId` string — Note ID.
      - `note` string — Note body.
      - `status` 'Unresolved' | 'Resolved' | 'Deleted' — Note status.
      - `createdBy` string — Who created the note.
    - `formationSubmissionStatus` 'PENDING' | 'SUBMITTED' | 'FAILED' — Tracks doola's intake of the formation request only, not whether the company is formed. PENDING: request received and being processed. SUBMITTED: accepted and formation started. FAILED: submission failed (see adminNotes). Never reports completion; track the Formation service in the services list, or the company_formation_completed webhook, for that.
    - `ein` string — Employer Identification Number, once issued.
    - `formationFilingDate` string, date — Date the formation was filed with the state, once filed.
    - `services` PartnerCompanyServiceDto[] — Services attached to the company.
      - `name` string — Service name.
      - `variant` string — Service variant.
      - `status` string — Service status.
      - `subStatus` string — Service sub-status.
    - `executiveMembers` PartnerCCorpExecMemberDto[] — C-Corp officers and directors. Present for a CCorp.
      - `id` string — Server-assigned ID.
      - `type` 'President' | 'Secretary' | 'Treasurer' | 'Director', required — Executive role. The list must include at least one of each role; President, Secretary, and Treasurer may each appear only once, while Director may repeat.
      - `legalFirstName` string, required — Legal first name.
      - `legalLastName` string, required — Legal last name.
      - `ssn` string — Social Security Number or ITIN. Optional. Format: XXX-XX-XXXX. Handled as sensitive data.
      - `address` PartnerAddressDto, required — A postal address.
        - `id` string — Server-assigned ID.
        - `line1` string, required — Street address line 1.
        - `line2` string — Street address line 2.
        - `city` string, required — City.
        - `state` string, required — State or province.
        - `postalCode` string, required — Postal or ZIP code.
        - `country` string, required — ISO 3166-1 alpha-3 country code (e.g. USA).
        - `phone` string — Phone number in E.164 format. Required for a person's address (the responsible party, a member, or an executive member); optional for a company `mailing` or `business` address.
    - `ccorpValuation` PartnerCcorpValuationDto — C-Corp share structure.
      - `noOfShares` integer, required — Number of authorized shares. Must be greater than 0.
      - `shareValue` number, required — Par value per share, in USD. Must be greater than 0.
    - `signatureRequirements` PartnerSignatureRequirementDto[] — Signature steps required for this company, with their current status. A non-US founder — no member, executive member, or responsible party has an SSN or ITIN — has a single SS-4 requirement; a US founder has an empty list. The status is COMPLETED once the SS-4 has been signed, otherwise PENDING. Always present — an empty list means no signature is required, not that the field is absent.
      - `documentType` 'SS4' | 'FORM8821' — Document the signature applies to.
      - `status` 'PENDING' | 'COMPLETED' — Whether the signature step is still outstanding or fulfilled.
  - `error` object

---

[API](https://skmtc.net/doola/apis/doola-partner-api.md) · [All operations](https://skmtc.net/doola/apis/doola-partner-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/doola/doola-partner-api/versions/e0dd4d79ff88/schema)
