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

# Check profile completion

> Check whether the user's profile has all required fields for KYC.

<Note>
  Requires `X-Api-Key` and `X-Api-Secret` headers. Pass `userId` as a query parameter — no JWT required.
</Note>

Returns whether the user's profile is complete enough to start KYC, and lists any fields that are still missing.

Call this before [`POST /partner/kyc`](/api-reference/users/start-kyc) to give your integration clear feedback on what to fill in. Use [`PATCH /api/v1/user/profile`](/api-reference/users/update-profile) to add the missing fields.

## Request

```http theme={null}
GET /api/v1/user/profile/check-completion?userId=<uuid>
X-Api-Key: <your-api-key>
X-Api-Secret: <your-api-secret>
```

### Query parameters

| Parameter | Type          | Required | Description                                                               |
| --------- | ------------- | -------- | ------------------------------------------------------------------------- |
| `userId`  | string (UUID) | **Yes**  | Qash user ID from [Register user](/api-reference/users/register-personal) |

## Response

**200 OK**

```json theme={null}
{
  "success": true,
  "data": {
    "isComplete": false,
    "missingFields": [
      "gender",
      "stateProvince",
      "postalCode",
      "occupation",
      "annualSalary",
      "accountPurpose",
      "expectedMonthlyVolume"
    ]
  }
}
```

When all required fields are present:

```json theme={null}
{
  "success": true,
  "data": {
    "isComplete": true,
    "missingFields": []
  }
}
```

| Field           | Type      | Description                                             |
| --------------- | --------- | ------------------------------------------------------- |
| `isComplete`    | boolean   | `true` when the profile is ready for KYC                |
| `missingFields` | string\[] | Fields still needed — empty when `isComplete` is `true` |

### Fields required for completion

`firstName`, `lastName`, `dateOfBirth`, `nationality`, `gender`, `governmentIdType`, `governmentIdNumber`, `governmentIdCountry`, `addressLine1`, `city`, `stateProvince`, `postalCode`, `addressCountry`, `occupation`, `annualSalary`, `accountPurpose`, `expectedMonthlyVolume`

## Errors

| HTTP status | Error                                            | Cause                                                                                          |
| ----------- | ------------------------------------------------ | ---------------------------------------------------------------------------------------------- |
| `400`       | `Missing userId in request body or query params` | `userId` not provided as query param                                                           |
| `401`       | `Invalid partner credentials`                    | Wrong or missing `X-Api-Key` / `X-Api-Secret`                                                  |
| `403`       | `User does not belong to this partner`           | `userId` belongs to a different partner                                                        |
| `404`       | `PersonalProfile not found: <userId>`            | No profile exists yet — call [`POST /user/profile`](/api-reference/users/create-profile) first |
