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

# Submit KYC Declaration

> Submit user's KYC declaration including occupation, income range, and PEP status

## Overview

Submit the user's declaration information as part of the extended KYC process. This includes occupation, income range, and Politically Exposed Person (PEP) status.

<Warning>
  If the user declares themselves as a Politically Exposed Person (PEP), their KYC will be automatically rejected.
</Warning>

## Occupation Types

| Value           | Description                         |
| --------------- | ----------------------------------- |
| `salaried`      | Salaried Employee                   |
| `self_employed` | Self-Employed                       |
| `business`      | Business Owner                      |
| `professional`  | Professional (Doctor, Lawyer, etc.) |
| `student`       | Student                             |
| `retired`       | Retired                             |
| `homemaker`     | Homemaker                           |
| `unemployed`    | Unemployed                          |
| `other`         | Other (specify in occupationOther)  |

## Income Ranges (Annual)

| Value        | Range (INR)        |
| ------------ | ------------------ |
| `below_5l`   | Below 5 Lakhs      |
| `5l_to_10l`  | 5 - 10 Lakhs       |
| `10l_to_25l` | 10 - 25 Lakhs      |
| `25l_to_50l` | 25 - 50 Lakhs      |
| `50l_to_1cr` | 50 Lakhs - 1 Crore |
| `above_1cr`  | Above 1 Crore      |

## Request Body

<ParamField body="occupation" type="string" required>
  User's occupation type
</ParamField>

<ParamField body="occupationOther" type="string">
  Specify occupation if "other" is selected (max 100 characters)
</ParamField>

<ParamField body="incomeRange" type="string" required>
  User's annual income range
</ParamField>

<ParamField body="isPep" type="boolean" required>
  Whether the user is a Politically Exposed Person
</ParamField>

<ParamField body="pepDetails" type="string">
  Additional PEP details if isPep is true (max 500 characters)
</ParamField>

<ParamField body="declarationAccepted" type="boolean" required>
  Must be `true` - user accepts the declaration terms
</ParamField>

<ParamField body="deviceId" type="string">
  Unique device identifier for FIU compliance
</ParamField>

## Response

<ResponseField name="success" type="boolean">
  Whether the declaration was submitted successfully
</ResponseField>

<ResponseField name="message" type="string">
  Success or error message
</ResponseField>

<ResponseField name="data" type="object">
  <Expandable title="properties">
    <ResponseField name="declarationId" type="string">
      Unique identifier for the declaration
    </ResponseField>

    <ResponseField name="occupation" type="string">
      Submitted occupation
    </ResponseField>

    <ResponseField name="incomeRange" type="string">
      Submitted income range
    </ResponseField>

    <ResponseField name="isPep" type="boolean">
      PEP status
    </ResponseField>

    <ResponseField name="submittedAt" type="string">
      ISO 8601 timestamp when declaration was submitted
    </ResponseField>
  </Expandable>
</ResponseField>

<RequestExample>
  ```bash cURL theme={null}
  curl -X POST "https://api.stablepay.global/v2/users/{userId}/kyc/declaration" \
    -H "Authorization: Bearer YOUR_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "occupation": "salaried",
      "incomeRange": "10l_to_25l",
      "isPep": false,
      "declarationAccepted": true,
      "deviceId": "device_abc123"
    }'
  ```
</RequestExample>

<ResponseExample>
  ```json 200 - Success theme={null}
  {
    "success": true,
    "message": "Declaration submitted successfully",
    "data": {
      "declarationId": "decl_abc123def456",
      "occupation": "salaried",
      "incomeRange": "10l_to_25l",
      "isPep": false,
      "submittedAt": "2025-06-15T10:40:00.000Z"
    }
  }
  ```

  ```json 400 - PEP Rejection theme={null}
  {
    "success": false,
    "error": "KYC Rejected",
    "message": "We cannot onboard Politically Exposed Persons (PEP) at this time",
    "data": {
      "declarationId": "decl_abc123def456",
      "isPep": true,
      "kycStatus": "rejected"
    }
  }
  ```
</ResponseExample>
