> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tracklysms.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Update Business Profile

> Correct a business profile; an identity change releases verification and re-submits KYB.

Updates fields on a business profile. This is the **correction and resubmission** path: changing an identity field (`companyLegalName`, `taxId`, or `addressCountry`) on a `verified` profile **releases verification** (back to `unverified`) and **re-submits KYB automatically**. Editing only non-identity fields (e.g. `industry`, `websiteUrl`) leaves verification untouched.

A profile in a non-verified state (e.g. `rejected`) only releases when it carries every field KYB submission needs — `companyLegalName`, `taxId`, `addressCountry`, `businessContactFirstName`, `businessContactLastName`. Editing an identity field while any of those is missing leaves the current status in place, so a rejected profile keeps its account lock until it is whole.

Re-submission is asynchronous, so `verificationStatus` in this response is the post-release value (`unverified`), not `pending`.

<Note>
  Requires a **live** key. A `locked` profile (three failed attempts) can't be edited — contact support.
</Note>

## Path Parameters

<ParamField path="profile_id" type="string" required>
  The id of the business profile.
</ParamField>

## Body Parameters

Any subset of the [create fields](/api-reference/v2/business-profiles/create-profile#body-parameters). Send at least one.

## Response Fields

<ResponseField name="businessProfile" type="object">
  The updated profile. `verificationStatus` reflects any release/resubmission triggered by the edit.
</ResponseField>

## Examples

<RequestExample>
  <CodeGroup>
    ```bash cURL theme={null}
    curl -X PATCH "https://api.tracklysms.com/api/v2/business-profiles/664a1b2c3d4e5f6071829300" \
      -H "X-Api-Key: trk_your_api_key_here" \
      -H "Content-Type: application/json" \
      -d '{ "taxId": "98-7654321" }'
    ```

    ```python Python theme={null}
    import requests

    resp = requests.patch(
        "https://api.tracklysms.com/api/v2/business-profiles/664a1b2c3d4e5f6071829300",
        headers={"X-Api-Key": "trk_your_api_key_here"},
        json={"taxId": "98-7654321"},
    )
    print(resp.json()["businessProfile"]["verificationStatus"])  # -> "unverified" (released; KYB re-submits asynchronously)
    ```
  </CodeGroup>
</RequestExample>

<ResponseExample>
  ```json 200 — Updated theme={null}
  {
    "businessProfile": {
      "id": "664a1b2c3d4e5f6071829300",
      "taxIdLast4": "4321",
      "verificationStatus": "unverified",
      "updatedAt": "2026-07-26T13:00:00Z"
    }
  }
  ```
</ResponseExample>

## Error Codes

| HTTP Status | Error Code                                           | Description                                                                                                                                                                          |
| ----------- | ---------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| 400         | `empty_update`                                       | No updatable fields were provided.                                                                                                                                                   |
| 403         | `sandbox_read_only`                                  | Sandbox keys cannot edit profiles.                                                                                                                                                   |
| 403         | `compliance_profile_locked`                          | The profile is locked (three strikes).                                                                                                                                               |
| 403         | `compliance_profile_strike_limit` / `account_locked` | Resubmission is blocked by strikes or an account lock.                                                                                                                               |
| 404         | `not_found`                                          | No profile with that id on your account.                                                                                                                                             |
| 422         | `validation_failed`                                  | An identity field is invalid — see `fields`. **For CA profiles, `identifierType` is required; any PATCH on a CA profile without it will fail with code `identifier_type_required`.** |

## Next Steps

<CardGroup cols={2}>
  <Card title="Submission history" icon="clock-rotate-left" href="/api-reference/v2/business-profiles/list-submissions">
    See the machine-readable verdict for each attempt.
  </Card>

  <Card title="Status webhooks" icon="shield-check" href="/api-reference/v2/webhooks/signing">
    Get notified on each transition.
  </Card>
</CardGroup>
