# Create an account

`POST /accounts`

API version: `v2026.10.00`. Send `X-Moov-Version: v2026.10.00` to get the behavior described here.

> AI agents: search and read all Moov docs with the docs MCP server at https://docs.moov.io/mcp (no API key). Setup: https://docs.moov.io/guides/developer-tools/mcp-ai/docs-mcp/index.md

You can create business or individual accounts for your users (i.e., customers, merchants) by passing the required information to Moov. Requirements differ per account type and requested [capabilities](https://docs.moov.io/guides/accounts/capabilities/reference/).

The `transfers` capability is automatically requested for every account. If you request any capability beyond `transfers` (for example, `send-funds.ach`, `collect-funds.card-payments`), you'll need to:
  + Send Moov the user's [platform terms of service agreement](https://docs.moov.io/guides/accounts/requirements/platform-agreement/) acceptance. This can be done at account creation, or by [patching](https://docs.moov.io/api/moov-accounts/accounts/patch/) the account using the `termsOfService` field.
  + Fulfill the [verification and underwriting requirements](https://docs.moov.io/guides/accounts/requirements/) for each requested capability. A capability isn't enabled until its requirements pass — check the capability's status to see what's still outstanding.

If you're creating a business account, depending on the business type, you'll also need to:
  + Provide [business representatives](https://docs.moov.io/api/moov-accounts/representatives/) after creating the account.
  + [Patch](https://docs.moov.io/api/moov-accounts/accounts/patch/) the account to indicate that business representative ownership information is complete.

Visit our documentation to read more about [creating accounts](https://docs.moov.io/guides/accounts/create-accounts/) and [verification requirements](https://docs.moov.io/guides/accounts/requirements/identity-verification/). Note that the `mode` field (for production or sandbox) is only required when creating a Partner account. All other account requests will ignore the mode field and be set to the calling Partner account's mode.

To access this endpoint using an [access token](https://docs.moov.io/api/authentication/access-tokens/) you'll need to specify the `/accounts.write` scope.

## Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `X-Moov-Version` | header | string |  | Set this header to v2026.10.00 to use the API described in this specification. When omitted, the server defaults to v2024.01.00, the earliest supported version, which may not match the behavior documented here. An unrecognized well-formed version uses the latest supported version that is not newer than the requested version, when one exists. For example, `v2026.08.00` uses `v2026.07.00`. A malformed value, such as `2022`, returns a `404` response. Values: `v2026.10.00`. |

## Request body

Content type: `application/json`

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `accountType` | string | Yes | Values: `individual`, `business`. |
| `profile` | object | Yes |  |
| `profile.individual` | object |  |  |
| `profile.individual.name` | object | Yes |  |
| `profile.individual.name.firstName` | string | Yes | The individual's first given name. |
| `profile.individual.name.middleName` | string |  | The individual's second given name, if any. |
| `profile.individual.name.lastName` | string | Yes | The individual's family name. |
| `profile.individual.name.suffix` | string |  | Suffix of a given name. |
| `profile.individual.phone` | object |  |  |
| `profile.individual.phone.number` | string |  |  |
| `profile.individual.phone.countryCode` | string |  |  |
| `profile.individual.email` | string (email) |  |  |
| `profile.individual.address` | object |  |  |
| `profile.individual.address.addressLine1` | string | Yes |  |
| `profile.individual.address.addressLine2` | string |  |  |
| `profile.individual.address.city` | string | Yes |  |
| `profile.individual.address.stateOrProvince` | string | Yes |  |
| `profile.individual.address.postalCode` | string | Yes |  |
| `profile.individual.address.country` | string | Yes |  |
| `profile.individual.birthDate` | object |  |  |
| `profile.individual.birthDate.day` | integer | Yes |  |
| `profile.individual.birthDate.month` | integer | Yes |  |
| `profile.individual.birthDate.year` | integer | Yes |  |
| `profile.individual.governmentID` | object |  |  |
| `profile.individual.governmentID.ssn` | object |  |  |
| `profile.individual.governmentID.ssn.full` | string |  |  |
| `profile.individual.governmentID.ssn.lastFour` | string |  |  |
| `profile.individual.governmentID.itin` | object |  |  |
| `profile.individual.governmentID.itin.full` | string |  |  |
| `profile.individual.governmentID.itin.lastFour` | string |  |  |
| `profile.business` | object |  |  |
| `profile.business.legalBusinessName` | string | Yes | The legal name under which the entity is registered. |
| `profile.business.doingBusinessAs` | string |  | A registered trade name under which the business operates, if different from its legal name. |
| `profile.business.businessType` | string |  | The type of entity represented by this business. Values: `soleProprietorship`, `unincorporatedAssociation`, `trust`, `publicCorporation`, `privateCorporation`, `llc`, `partnership`, `unincorporatedNonProfit`, `incorporatedNonProfit`, `governmentEntity`. |
| `profile.business.address` | object |  |  |
| `profile.business.address.addressLine1` | string | Yes |  |
| `profile.business.address.addressLine2` | string |  |  |
| `profile.business.address.city` | string | Yes |  |
| `profile.business.address.stateOrProvince` | string | Yes |  |
| `profile.business.address.postalCode` | string | Yes |  |
| `profile.business.address.country` | string | Yes |  |
| `profile.business.phone` | object |  |  |
| `profile.business.phone.number` | string |  |  |
| `profile.business.phone.countryCode` | string |  |  |
| `profile.business.email` | string (email) |  |  |
| `profile.business.website` | string (uri) |  |  |
| `profile.business.description` | string |  |  |
| `profile.business.taxID` | object |  | An EIN (employer identification number) for the business. For sole proprietors, an SSN can be used as the EIN. |
| `profile.business.taxID.ein` | object | Yes |  |
| `profile.business.taxID.ein.number` | string | Yes |  |
| `profile.business.industryCodes` | object |  |  |
| `profile.business.industryCodes.naics` | string |  |  |
| `profile.business.industryCodes.sic` | string |  |  |
| `profile.business.industryCodes.mcc` | string |  |  |
| `profile.business.industry` | string |  | Classification identifier for the industry. Use the [GET industries](https://docs.moov.io/api/enrichment/form-shortening/industries/get/) endpoint to retrieve an array of valid industry details for a merchant, inducing all industry field values. |
| `profile.business.primaryRegulator` | string |  | If the business is a financial institution, this field describes its primary regulator. Values: `OCC`, `FDIC`, `NCUA`, `FRB`, `state-cu-regulator`. |
| `metadata` | object |  | Free-form key-value pair list. Useful for storing information that is not captured elsewhere. |
| `termsOfService` | object |  |  |
| `termsOfService.token` | string |  |  |
| `termsOfService.manual` | object |  | Describes the acceptance of the Terms of Service. All data is required, and must be from the user. |
| `termsOfService.manual.acceptedDate` | string (date-time) | Yes | The date and time the terms of service were accepted. |
| `termsOfService.manual.acceptedIP` | string | Yes | The IP address (IPv4 or IPv6) from which the terms of service were accepted. |
| `termsOfService.manual.acceptedUserAgent` | string | Yes | The user-agent of the user making the request. |
| `termsOfService.manual.acceptedDomain` | string (uri) | Yes |  |
| `foreignID` | string |  | Optional alias from a foreign/external system which can be used to reference this resource. |
| `customerSupport` | object |  | User-provided information that can be displayed on credit card transactions for customers to use when contacting a customer support team. This data is only allowed on a business account. |
| `customerSupport.phone` | object |  |  |
| `customerSupport.phone.number` | string |  |  |
| `customerSupport.phone.countryCode` | string |  |  |
| `customerSupport.email` | string (email) |  |  |
| `customerSupport.address` | object |  |  |
| `customerSupport.address.addressLine1` | string | Yes |  |
| `customerSupport.address.addressLine2` | string |  |  |
| `customerSupport.address.city` | string | Yes |  |
| `customerSupport.address.stateOrProvince` | string | Yes |  |
| `customerSupport.address.postalCode` | string | Yes |  |
| `customerSupport.address.country` | string | Yes |  |
| `customerSupport.website` | string (uri) |  |  |
| `settings` | object |  | User provided settings to manage an account. |
| `settings.cardPayment` | object |  | User provided settings to manage card payments. This data is only allowed on a business account. |
| `settings.cardPayment.statementDescriptor` | string |  | The description that shows up on credit card transactions. This will default to the accounts display name on account creation. |
| `settings.achPayment` | object |  |  |
| `settings.achPayment.companyName` | string | Yes | The description that shows up on ACH transactions. This will default to the account's display name on account creation. |
| `capabilities` | array of string |  | Capabilities to request when the account is created. Request granular capability IDs that match your use case. Read our [capabilities reference](https://docs.moov.io/guides/accounts/capabilities/reference/) to choose the right capabilities for your integration. The `send-funds`, `collect-funds`, and `wallet` capability IDs are deprecated. Use granular values such as `send-funds.ach`, `collect-funds.card-payments`, or `wallet.balance` instead. Values: `transfers`, `send-funds`, `send-funds.push-to-card`, `money-transfer.push-to-card`, `send-funds.ach`, `send-funds.rtp`, `send-funds.instant-bank`, `send-funds.wire`, `collect-funds`, `collect-funds.card-payments`, `money-transfer.pull-from-card`, `collect-funds.ach`, `wallet`, `wallet.balance`, `card-issuing`, `issuing.cardholder`, `production-app`, `platform.production-app`, `platform.wallet-transfers`, `platform.moov-money`. |
| `mode` | string |  | The operating mode for an account. Values: `sandbox`, `production`. |

Example:

```json
{
  "accountType": "business",
  "profile": {
    "business": {
      "legalBusinessName": "Whole Body Fitness LLC"
    }
  }
}
```

## Response 200

The request completed successfully.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `accountID` | string | Yes | Unique identifier for this account. |
| `mode` | string | Yes | The operating mode for an account. Values: `sandbox`, `production`. |
| `accountType` | string | Yes | The type of entity represented by this account. Values: `individual`, `business`, `guest`. |
| `displayName` | string | Yes |  |
| `profile` | object | Yes | Describes a Moov account profile. A profile will have a business, individual, or guest depending on the account's type. |
| `profile.individual` | object |  | Describes an individual. |
| `profile.business` | object |  | Describes a business. |
| `profile.guest` | object |  | Describes a guest account profile. |
| `metadata` | object |  | Free-form key-value pair list. Useful for storing information that is not captured elsewhere. |
| `termsOfService` | object |  | Describes the acceptance of the Terms of Service. |
| `termsOfService.acceptedDate` | string (date-time) | Yes | The date and time the terms of service were accepted. |
| `termsOfService.acceptedIP` | string | Yes | The IP address (IPv4 or IPv6) from which the terms of service were accepted. |
| `capabilities` | array of object |  |  |
| `capabilities[].capability` | string | Yes |  |
| `capabilities[].status` | string | Yes |  |
| `verification` | object | Yes | Describes identity verification status and relevant identity verification documents. |
| `verification.verificationStatus` | string |  | Possible states an account verification can be in. Values: `unverified`, `pending`, `resubmit`, `review`, `verified`, `failed`. |
| `verification.status` | string | Yes | Possible states an account verification can be in. Values: `unverified`, `pending`, `verified`, `errored`. |
| `verification.details` | string |  | Additional detail for a verification status. Values: `failedAutoVerify`, `docDobMismatch`, `docNameMismatch`, `docAddressMismatch`, `docNumberMismatch`, `docIncomplete`, `docFailedRisk`, `potentialAccountSanctionsMatch`, `potentialRepresentativeSanctionsMatch`, `failedOther`. |
| `verification.documents` | array of object |  |  |
| `foreignID` | string |  | Optional alias from a foreign/external system which can be used to reference this resource. |
| `customerSupport` | object |  | User-provided information that can be displayed on credit card transactions for customers to use when contacting a customer support team. This data is only allowed on a business account. |
| `customerSupport.phone` | object |  |  |
| `customerSupport.email` | string (email) |  |  |
| `customerSupport.address` | object |  |  |
| `customerSupport.website` | string (uri) |  |  |
| `settings` | object |  | User provided settings to manage an account. |
| `settings.cardPayment` | object |  | User provided settings to manage card payments. This data is only allowed on a business account. |
| `settings.achPayment` | object |  |  |
| `createdOn` | string (date-time) | Yes |  |
| `updatedOn` | string (date-time) | Yes |  |
| `disconnectedOn` | string (date-time) |  |  |

## Errors

| Status | Meaning |
| --- | --- |
| 400 | The server could not understand the request due to invalid syntax. |
| 401 | The request contained missing or expired authentication. |
| 403 | The user is not authorized to make the request. |
| 404 | The requested resource was not found. |
| 409 | The request conflicted with the current state of the target resource. |
| 422 | The request was well-formed, but the contents failed validation. Check the request for missing or invalid fields. |
| 429 | Request was refused due to rate limiting. |
| 500 | The request failed due to an unexpected error. |
| 504 | The request failed because a downstream service failed to respond. |

## Examples

### cURL

```bash
curl -X POST "https://api.moov.io/accounts" \
  -H "Authorization: Bearer {token}" \
  -H "X-Moov-Version: v2026.10.00" \
  -d '{
  "accountType": "business",
  "profile": {
    "business": {
      "businessType": "llc",
      "legalBusinessName": "Whole Body Fitness LLC",
      "website": "wbfllc.com"
    }
  }
}'
```

### Typescript (SDK)

```typescript
import { Moov } from "@moovio/sdk";

const moov = new Moov({
  security: {
    username: "",
    password: "",
  },
});

async function run() {
  const result = await moov.accounts.create({
    accountType: "business",
    profile: {
      business: {
        legalBusinessName: "Whole Body Fitness LLC",
      },
    },
  });

  console.log(result);
}

run();
```

Full reference with SDK examples in every language: https://docs.moov.io/api/v2026.10.00/moov-accounts/accounts/create/
