# Update an account

`PATCH /accounts/{accountID}`

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

When **can** profile data be updated:
  + For unverified accounts, all profile data can be edited.
  + During the verification process, missing or incomplete profile data can be edited.
  + Verified accounts can only add missing profile data.

  When **can't** profile data be updated:
  + Verified accounts cannot change any existing profile data.

If you need to update information in a locked state, please contact Moov support.

To access this endpoint using an [access token](https://docs.moov.io/api/authentication/access-tokens/) you'll need
to specify the `/accounts/{accountID}/profile.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`. |
| `accountID` | path | string | Yes |  |

## Request body

Content type: `application/json`

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `profile` | object |  | Describes the fields available when patching a profile. Each object can be patched independent of patching the other fields. |
| `profile.individual` | object |  | Describes the fields available when patching an individual. |
| `profile.individual.name` | object |  |  |
| `profile.individual.name.firstName` | string |  | The individual's first given name. |
| `profile.individual.name.middleName` | string |  | The individual's second given name, if any. |
| `profile.individual.name.lastName` | string |  | 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 |  |  |
| `profile.individual.address.addressLine2` | string |  |  |
| `profile.individual.address.city` | string |  |  |
| `profile.individual.address.stateOrProvince` | string |  |  |
| `profile.individual.address.postalCode` | string |  |  |
| `profile.individual.address.country` | string |  |  |
| `profile.individual.birthDate` | object |  |  |
| `profile.individual.birthDate.day` | integer |  |  |
| `profile.individual.birthDate.month` | integer |  |  |
| `profile.individual.birthDate.year` | integer |  |  |
| `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 |  |  |
| `profile.business.doingBusinessAs` | string |  |  |
| `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 |  |  |
| `profile.business.address.addressLine2` | string |  |  |
| `profile.business.address.city` | string |  |  |
| `profile.business.address.stateOrProvince` | string |  |  |
| `profile.business.address.postalCode` | string |  |  |
| `profile.business.address.country` | string |  |  |
| `profile.business.phone` | object |  |  |
| `profile.business.phone.number` | string |  |  |
| `profile.business.phone.countryCode` | string |  |  |
| `profile.business.email` | string (email) |  |  |
| `profile.business.website` | string |  |  |
| `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 |  |  |
| `profile.business.taxID.ein.number` | string |  |  |
| `profile.business.ownersProvided` | boolean |  |  |
| `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, nullable |  | 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) |  | The date and time the terms of service were accepted. |
| `termsOfService.manual.acceptedIP` | string |  | The IP address (IPv4 or IPv6) from which the terms of service were accepted. |
| `termsOfService.manual.acceptedUserAgent` | string |  | The user-agent of the user making the request. |
| `termsOfService.manual.acceptedDomain` | string (uri) |  |  |
| `foreignID` | string |  |  |
| `customerSupport` | object, nullable |  | 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 |  |  |
| `customerSupport.address.addressLine2` | string |  |  |
| `customerSupport.address.city` | string |  |  |
| `customerSupport.address.stateOrProvince` | string |  |  |
| `customerSupport.address.postalCode` | string |  |  |
| `customerSupport.address.country` | string |  |  |
| `customerSupport.website` | string (uri) |  |  |
| `settings` | object |  |  |
| `settings.cardPayment` | object |  |  |
| `settings.cardPayment.statementDescriptor` | string |  |  |
| `settings.achPayment` | object |  |  |
| `settings.achPayment.companyName` | string |  |  |

## 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 PATCH "https://api.moov.io/accounts/{accountID}" \
  -H "Authorization: Bearer {token}" \
  -H "X-Moov-Version: v2026.10.00"
```

### Typescript (SDK)

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

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

async function run() {
  const result = await moov.accounts.update({
    accountID: "433cb9d1-5943-4fd5-91b4-2aef5b30e2e7",
    patchAccount: {
      profile: {
        individual: {
          name: {
            firstName: "Jordan",
            middleName: "Reese",
            lastName: "Lee",
            suffix: "Jr",
          },
          phone: {
            number: "8185551212",
            countryCode: "1",
          },
          email: "jordan.lee@classbooker.dev",
          address: {
            addressLine1: "123 Main Street",
            addressLine2: "Apt 302",
            city: "Boulder",
            stateOrProvince: "CO",
            postalCode: "80301",
            country: "US",
          },
          birthDate: {
            day: 9,
            month: 11,
            year: 1989,
          },
        },
        business: {
          businessType: "llc",
          address: {
            addressLine1: "123 Main Street",
            addressLine2: "Apt 302",
            city: "Boulder",
            stateOrProvince: "CO",
            postalCode: "80301",
            country: "US",
          },
          phone: {
            number: "8185551212",
            countryCode: "1",
          },
          email: "jordan.lee@classbooker.dev",
          taxID: {
            ein: {
              number: "12-3456789",
            },
          },
          industryCodes: {
            naics: "713940",
            sic: "7991",
            mcc: "7997",
          },
          industry: "electronics-appliances",
        },
      },
      metadata: {
        "optional": "metadata",
      },
      termsOfService: {
        manual: {
          acceptedIP: "172.217.2.46",
          acceptedUserAgent: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36",
        },
      },
      customerSupport: {
        phone: {
          number: "8185551212",
          countryCode: "1",
        },
        email: "jordan.lee@classbooker.dev",
        address: {
          addressLine1: "123 Main Street",
          addressLine2: "Apt 302",
          city: "Boulder",
          stateOrProvince: "CO",
          postalCode: "80301",
          country: "US",
        },
      },
    },
  });

  console.log(result);
}

run();
```

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