# Prerequisites: KYC & Whitelisting

Before any wallet can deploy or operate a vault, it must be on Tesseract's on-chain `Whitelisting` contract with a non-expired entry. The steps are fixed:

### 1. Complete KYC / KYB

Go to [compliance.tesseract.fi](https://compliance.tesseract.fi) and complete the onboarding flow. For a company, this is a KYB (verification of the legal entity, beneficial owners, and directors); for an individual, it's a standard KYC. Full details of what's required are in [Compliance & Onboarding](/dedicated-client-vaults/compliance-and-onboarding.md).

### 2. Register the wallet you'll use

During onboarding you're asked to provide the wallet address(es) you'll use for vault operations and to sign a wallet-ownership message from each. Tesseract runs an AML screen on each wallet.

### 3. Wallet gets whitelisted on-chain

Once KYC/KYB clears and the wallet passes AML screening, Tesseract writes the wallet to the `Whitelisting` contract with a KYC-expiration timestamp. From that moment the wallet can deploy and operate vaults.

You can check the whitelist state on-chain at any time:

```ts
import {createPublicClient, http} from 'viem'
import {mainnet} from 'viem/chains'

const client = createPublicClient({chain: mainnet, transport: http()})

const whitelistingAddress = '0x25f1a2Ce5b681592E4196616f72aa27593EB5df8'
const whitelistingAbi = [
  {
    type: 'function', stateMutability: 'view',
    name: 'isWhitelisted',
    inputs: [{name: 'account', type: 'address'}],
    outputs: [{type: 'bool'}],
  },
  {
    type: 'function', stateMutability: 'view',
    name: 'whitelistExpiration',
    inputs: [{name: 'account', type: 'address'}],
    outputs: [{type: 'uint256'}],
  },
] as const

const isWhitelisted = await client.readContract({
  address: whitelistingAddress,
  abi: whitelistingAbi,
  functionName: 'isWhitelisted',
  args: [myWallet],
})
```

### 4. KYC renewal

Whitelist entries expire. Renewal typically requires going through the KYC flow again — Tesseract will email you shortly before your expiration date with instructions for what's needed. Once the renewal is cleared, the new expiration is written back to the on-chain whitelist. Until the wallet is re-whitelisted after expiry, new on-chain operations (deploy, deposit, withdraw, strategy change) revert for that wallet. Read `whitelistExpiration` directly from the `Whitelisting` contract if you want an independent view of remaining validity.

### Using multiple wallets

A single client may have several whitelisted wallets (hot, cold, multisig, custodial). Each must be registered and whitelisted individually. Note that a vault is tied to the wallet that created it — operational rights on a given vault stay with that wallet.

***

Once your wallet is whitelisted, continue to [**Deploying a Vault**](/dedicated-client-vaults/integration-guide/scenario-a/deploying-a-vault.md).


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.tesseract.fi/dedicated-client-vaults/integration-guide/scenario-a/prerequisites.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
