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

# Wallet Verification

> Prove that a user controls a crypto wallet by having them sign a message. No funds move and no transaction is sent.

Wallet Verification lets you confirm that a user controls a wallet address before you rely on it. Your backend creates a verification, the user opens a verification page, connects their wallet, and signs a plain-text message. Wallet Verification checks the signature and stores an attestation that you can read and re-check yourself.

The user only signs a message. No funds move, no transaction is sent, and the user pays no gas.

## Who is Wallet Verification for?

* **Payout platforms and PSPs** that need to confirm a beneficiary controls the destination wallet before sending a payout or approving a withdrawal.
* **Platforms verifying their own customers** that want proof of ownership for the wallets customers link during onboarding or re-verification.
* **Regulated institutions** that need proof of control over self-hosted wallets for Travel Rule checks.

## How does Wallet Verification work?

```mermaid theme={null}
sequenceDiagram
    participant Backend as Your backend
    participant API as Wallet Verification API
    participant User as User
    participant Page as Verification page

    Backend->>API: POST /verifications
    API-->>Backend: 201 verification + url
    Backend->>User: Send the url (link, redirect, or embed)
    User->>Page: Open link and connect wallet
    Page->>User: Ask for a signature
    User->>Page: Sign the message
    Page->>API: Submit signature
    API->>API: Check signature and store attestation
    loop Until the state is terminal
        Backend->>API: GET /verifications/{id}
    end
    API-->>Backend: state verified + attestation
```

1. Your backend creates a verification with your own `reference_id` and a `purpose`. The response includes a one-time `url`.
2. You send the user that `url` as a link, a redirect, or an embedded iframe.
3. The user opens the [verification page](/wallet-verification/hosted-page.md), connects a wallet, and signs a message that names your business and the purpose.
4. Wallet Verification checks the signature and stores an [attestation](/wallet-verification/attestations.md).
5. Your backend polls the verification until it reaches a terminal state, then reads the attestation.

> [!NOTE]
>
> Wallet Verification does not send webhooks. Poll `GET /verifications/{id}` to get the result.

## Get Started

> **[Quickstart](/wallet-verification/quickstart.md)**
>
> Create your first verification and read the result.

> **[Dashboard & API keys](/wallet-verification/dashboard.md)**
>
> Request access, manage API keys, customize the page, and review activity.

> **[User experience](/wallet-verification/hosted-page.md)**
>
> What your users see, supported wallets, return URLs, and embedding.

> **[Results & attestations](/wallet-verification/attestations.md)**
>
> States, the attestation, how to re-check a signature, and the signed message.

> [!NOTE]
>
> The API reference is coming soon.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.