# KYC workflow

KYC must be completed before customers can use regulated issuing features. xMoney coordinates the KYC state machine and hosted verification providers while your app collects required customer data and redirects the customer to hosted checks.

## Check KYC status

```bash
curl "https://issuing-stage.xmoney.com/v1/kyc" \
  -H "Authorization: Bearer CUSTOMER_ACCESS_TOKEN"
```

Use the response to decide which onboarding step to show next.

## Submit data steps

Submit the required KYC data through the customer-scoped KYC routes:

| Step | Endpoint |
|  --- | --- |
| Agreements | `POST /v1/kyc/agreement` |
| Personal information | `POST /v1/kyc/personal-info` |
| Residence | `POST /v1/kyc/residence` |
| Gender | `POST /v1/kyc/gender` |
| Birthplace | `POST /v1/kyc/birthplace` |
| Wealth and income | `POST /v1/kyc/wealth-and-income` |
| PEP declaration | `POST /v1/kyc/pep` |
| PEP confirmation | `POST /v1/kyc/confirm-pep` |


## Start hosted verification

Start identity verification:

```bash
curl -X POST "https://issuing-stage.xmoney.com/v1/kyc/id-verification/start" \
  -H "Authorization: Bearer CUSTOMER_ACCESS_TOKEN"
```

Start proof-of-address verification:

```bash
curl -X POST "https://issuing-stage.xmoney.com/v1/kyc/poa-verification/start" \
  -H "Authorization: Bearer CUSTOMER_ACCESS_TOKEN"
```

The customer completes the hosted verification flow. xMoney receives the verification results and updates the KYC status.

## Wait for approval

KYC can require automated or manual review. Poll `GET /v1/kyc` while the customer is actively onboarding, and use webhooks to keep your backend state synchronized.