> ## 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.

# Business Profile Lifecycle

> Create, validate, submit, and correct a business identity profile through KYB verification — entirely over the API.

A **business profile** is the verified legal entity (legal name, tax ID, address, authorized contact) behind your number requests. Before a profile can authorize provisioning, it must clear **KYB verification** (business-identity and TIN/registry matching). The partner API exposes that whole lifecycle so you can run onboarding inside your own product — no Trackly staff in the loop.

## The flow

```
create (draft) ──▶ validate ──▶ [identity complete] ──▶ KYB submitted
                                                              │
                        ┌─────────────────────────────────────┼───────────────┐
                        ▼                                       ▼               ▼
                    verified                          name_confirm_required   rejected
                        │                                       │               │
                        ▼                              (correct + resubmit) ◀───┘
                 authorize number requests
```

1. **[Create](/api-reference/v2/business-profiles/create-profile)** a profile. If you supply a complete identity (legal name, tax ID, country, authorized contact), KYB verification **starts automatically**.
2. **[Validate](/api-reference/v2/business-profiles/validate-profile)** a draft first to get field-level errors back (country allowlist, tax-id format, name length) without saving.
3. **Track** the verdict: poll `verificationStatus` on the profile, read the [submission history](/api-reference/v2/business-profiles/list-submissions), or receive [status webhooks](/api-reference/v2/webhooks/signing).
4. **[Correct and resubmit](/api-reference/v2/business-profiles/update-profile)**: when a profile is rejected or needs a name confirmation, edit the identity fields — an identity change re-runs KYB automatically.

## Verification statuses

| Status                  | Meaning                                                                  |
| ----------------------- | ------------------------------------------------------------------------ |
| `unverified`            | Draft — no verification submitted yet (identity incomplete).             |
| `pending`               | Submitted; awaiting the KYB verdict.                                     |
| `verified`              | Passed — the profile can authorize number requests.                      |
| `name_confirm_required` | Close match; confirm the canonical legal name, then it verifies.         |
| `admin_review`          | Ambiguous or flagged; under manual review.                               |
| `rejected`              | Failed. Correct the identity and resubmit (3 strikes locks the profile). |
| `hold`                  | Transient provider error; retries automatically.                         |
| `locked`                | Three failed attempts — contact support to unlock.                       |

<Note>
  KYB verification spends real money, so **write operations require a live API key** — sandbox keys are read-only for the compliance control plane. The [validate](/api-reference/v2/business-profiles/validate-profile) dry-run and all reads work with any key.
</Note>

## What you need for verification

A profile is ready to submit once it carries all of: `addressCountry`, `taxId`, `companyLegalName`, `businessContactFirstName`, and `businessContactLastName`. [Validate](/api-reference/v2/business-profiles/validate-profile) returns `readyForVerification: true` when those are present and valid.

## Next steps

<CardGroup cols={2}>
  <Card title="Create a profile" icon="plus" href="/api-reference/v2/business-profiles/create-profile">
    Create and auto-submit for KYB.
  </Card>

  <Card title="Status webhooks" icon="shield-check" href="/api-reference/v2/webhooks/signing">
    Receive business\_profile.\* events on every transition.
  </Card>
</CardGroup>
