---
title: "Create firm"
method: POST
path: "/firm"
tags: ["Firm"]
---

# Create firm

`POST /firm`

Creates a firm for the current authenticated client and registers an existing user as a staff member and firm owner.

## Request body

- CreateFirmDto
  - `productId` string, nullable — The product/tier the firm is subscribed to. Must be set when creating the firm and is optional when updating the firm. The supported products are listed in order below, the identifier (in brackets) must be used. * Bill (SMK001) * Boost (SMK004) * Grow (SMK002) * Prosper + (SMK003) Possible values: SMK001, SMK004, SMK002, SMK003
  - `addOnIds` string[], nullable — The optional add-ons the firm is subscribed to. Must be specified with an accompanying productId. The supported add-ons are listed below, the identifier (listed in brackets) must be used. * Intake (ADD001) * AutoTime (ADD003) * FamilyPro (ADD004) * Api (ADD005) * Workflows (ADD006) * PowerBI (ADD007) * Archie (ADD008) * SSO (ADD010) Possible values: ADD01, ADD003, ADD004, ADD005, ADD006, ADD007, ADD008, ADD010
  - `name` string, nullable — The name of the firm.
  - `email` string, nullable — The email of the firm. Only supported in AU.
  - `abn` string, nullable — Represents a different field depending on the region. * For AU: Australian Business Number (ABN) of the firm. * For UK: Value-added Tax Number (VAT) of the firm. Only supported in AU and UK.
  - `acn` string, nullable — Represents a different field depending on the region. * For AU: Australian Company Number (ACN) of the firm. * For UK: Company Registration Number (CRN) of the firm. Only supported in AU and UK.
  - `streetAddress` FirmAddressDto
    - `buildingLevel` string, nullable — Building level in address (if applicable).
    - `unitNumber` string, nullable — Unit number in address (if applicable).
    - `unitType` string, nullable — Unit type (e.g. Unit,Flat,Villa,Suite,etc.) in address (if applicable).
    - `streetNumber` string, nullable — Street number in address.
    - `streetName` string, nullable — Street name in address.
    - `streetType` string, nullable — Street type (e.g. Street,Road,Avenue,Lane,etc.) in address.
    - `addressLine1` string, nullable — First line of address.
    - `addressLine2` string, nullable — Second line of address (if applicable).
    - `city` string, nullable — City, district, suburb, town, or village.
    - `state` string, nullable — State, province, or region (if applicable).
    - `zipCode` string, nullable — Zip or post code.
    - `county` string, nullable — County (if applicable).
    - `locality` string, nullable — Locality (if applicable).
    - `country` string, nullable — Country.
    - `careOf` string, nullable — Care of the addressee (if applicable).
    - `poBoxType` string, nullable — PO box type in address (if applicable).
    - `poBoxNumber` string, nullable — PO box Number in address (if applicable).
  - `mailingAddress` FirmAddressDto
    - `buildingLevel` string, nullable — Building level in address (if applicable).
    - `unitNumber` string, nullable — Unit number in address (if applicable).
    - `unitType` string, nullable — Unit type (e.g. Unit,Flat,Villa,Suite,etc.) in address (if applicable).
    - `streetNumber` string, nullable — Street number in address.
    - `streetName` string, nullable — Street name in address.
    - `streetType` string, nullable — Street type (e.g. Street,Road,Avenue,Lane,etc.) in address.
    - `addressLine1` string, nullable — First line of address.
    - `addressLine2` string, nullable — Second line of address (if applicable).
    - `city` string, nullable — City, district, suburb, town, or village.
    - `state` string, nullable — State, province, or region (if applicable).
    - `zipCode` string, nullable — Zip or post code.
    - `county` string, nullable — County (if applicable).
    - `locality` string, nullable — Locality (if applicable).
    - `country` string, nullable — Country.
    - `careOf` string, nullable — Care of the addressee (if applicable).
    - `poBoxType` string, nullable — PO box type in address (if applicable).
    - `poBoxNumber` string, nullable — PO box Number in address (if applicable).
  - `dxAddress` FirmDxAddressDto
    - `number` string, nullable — Direct Exchange number (if applicable).
    - `exchange` string, nullable — Direct Exchange name.
    - `state` string, nullable — State, province, or region.
  - `phone` PhoneNumberDto
    - `areaCode` string, nullable — Phone area code.
    - `number` string, nullable — Phone number (excluding area code).
  - `fax` PhoneNumberDto
    - `areaCode` string, nullable — Phone area code.
    - `number` string, nullable — Phone number (excluding area code).
  - `isInternal` boolean — Whether firm is being created for internal use. Internal firms will not be subscribed for payment processing and will not be charged.
  - `staff` StaffDto
    - `userId` string, nullable — Unique identifier of the associated user. Used to map staff member to the specified user id and ignored if left blank. Use the FirmUsers API to remove a staff/user mapping.
    - `title` string, nullable — Staff member's title.
    - `firstName` string, nullable — Staff member's first name.
    - `middleName` string, nullable — Staff member's middle name (if applicable).
    - `lastName` string, nullable — Staff member's last name.
    - `initials` string, nullable — Staff member's initials.
    - `phone` PhoneNumberDto
      - `areaCode` string, nullable — Phone area code.
      - `number` string, nullable — Phone number (excluding area code).
    - `cell` PhoneNumberDto
      - `areaCode` string, nullable — Phone area code.
      - `number` string, nullable — Phone number (excluding area code).
    - `email` string, nullable — Staff member's email address.
    - `role` string, nullable — Staff member's role.
    - `avatar` string, nullable — Staff member's avatar.
    - `former` boolean, nullable — Whether he/she is a former member. Caution: Setting a staff member to former staff will also deregister them from the firm.
    - `colorFill` string, nullable — Staff member's fill color hex code.
    - `colorStroke` string, nullable — Staff member's stroke color hex code.
  - `subscription` FirmSubscriptionDto — The subscription details for the firm.
    - `productSuite` string, nullable — Optional product suite to use when creating the firm. Use 'SMOKEBALL' to use the new product suite.
    - `promotionId` string, nullable — Optional promotion ID that will be used when the firm is subscribed.
    - `interval` string, nullable — Optional interval to register the account subscription with. Possible values: Monthly, Yearly

## Response `202`

When request is accepted. Returns a hypermedia 'Link' object of the firm to be created.

- Link
  - `id` string, nullable
  - `href` string, nullable
  - `relation` string, nullable
  - `method` string, nullable

## Other responses

- `400` — When staff user does not exist or is already associated with another firm.
- `403` — When an unsupported request is made.

---

[API](https://skmtc.net/smokeball/apis/api.md) · [All operations](https://skmtc.net/smokeball/apis/api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/smokeball/api/revisions/197984da9b42/schema)
