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

# User KYC Verification

Fluz requires users to be KYC verified in order to perform certain transactions or to be able to perform them with increased limits.  Fluz provides two types of identify verifications.

For SSN verifications you can use the **verifyUserInformation** mutation to initiate a verification.  The verification results will be processed immediately.

<Note>
  **Address formatting**

  Submit the user's residential address using the structured fields, with a consistent city, state, and ZIP/postal code. International addresses are accepted for KYC. A malformed or mismatched address can cause verification to be DECLINED. See Address Formatting Requirements for formatting rules.
</Note>

**See code example below to verify a user's information:**

```javascript theme={null}
import { GraphQLClient, gql } from 'graphql-request';

const API_URL = 'https://transactional-graph.fluzapp.com/api/v1/graphql';

const VERIFY_USER_INFORMATION = gql`
  mutation verifyUserInformation {
    verifyUserInformation(
      input: {
        firstName: "John"
        lastName: "Smith"
        streetLine1: "123 Main St"
        streetLine2: ""
        city: "Los Angeles"
        state: "CA"
        postalCode: "91234"
        country: "United States"
        dateOfBirth: "01/28/1975"
        ssnLast4: "1234"
      }
    ) {
      status
      message
    }
  }
`;

const client = new GraphQLClient(API_URL, {
  headers: {
    Authorization: `Bearer <<USER_ACCESS_TOKEN>>`,
    'Content-Type': 'application/json',
  },
});

const response = await client.request(VERIFY_USER_INFORMATION);
console.log(response);
```

For documentary verifications you can use the **requestDocumenVerificationLink** mutation to request a verification link which you can then send to your user.  The user can perform the document verification at any time and the verification results will be processed immediately after the user completes it.

**📘 See code examples below to request a document verification link:**

```javascript theme={null}
import { GraphQLClient, gql } from 'graphql-request';

const API_URL = 'https://transactional-graph.fluzapp.com/api/v1/graphql';

const REQUEST_DOC_VERIFICATION = gql`
  mutation RequestDocumentVerificationLink($input: RequestDocumentVerificationLinkInput!) {
    requestDocumentVerificationLink(input: $input) {
      userId
      verificationType
      verificationId
      verificationUrl
      status
      message
    }
  }
`;

const client = new GraphQLClient(API_URL, {
  headers: {
    Authorization: `Bearer <<USER_ACCESS_TOKEN>>`,
    'Content-Type': 'application/json',
  },
});

const response = await client.request(REQUEST_DOC_VERIFICATION, {
  input: {
    gaveConsent: true,
    prefillData: true,
  },
});

console.log(response);
```

### User KYC verification responses

| Status    | Message                                  | Description                                                                                                                                                          |
| :-------- | :--------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| APPROVED  | User verification successful             | User is KYC verified                                                                                                                                                 |
| DECLINED  | Verification declined                    | User is not KYC verified                                                                                                                                             |
| DUPLICATE | Duplicate user verification              | User is KYC verified but data matches with other users                                                                                                               |
| ERROR     | Error encountered with user verification | Errors can be one of the following:<br /><br />*User already KYC verified*<br />*Exceeded user verification limit*<br />*Exceeded document verification limit*<br /> |

<br />

<br />
