***

title: Wallet Identity
subtitle: The wallet is the customer identity in Gwop Auth
slug: concepts/wallet-identity
------------------------------

Gwop Auth turns a wallet into a durable customer identity.

The key field is `principal.sub`, which uses the format `{chain}:{address}`:

* `base:0x742d...`
* `solana:7sSi...`

That value is the account identity you should carry through your system.

## Why this matters

Without auth, a payment is just a one-off transaction. With auth, the wallet becomes the stable key for:

* sessions
* purchases
* entitlements
* credit balances
* subscription state

That means your backend can treat the authenticated wallet as the customer record even if there is no email, username, or browser session involved.

## The rule to keep in mind

The wallet used to authenticate defines the account.

If the agent authenticates with a different wallet, it is a different customer identity. Gwop does not merge wallets into a single account automatically, so your app logic should treat `{chain}:{address}` as the durable boundary.

## What to do in your app

* carry `principal.sub` forward as the primary identity key
* parse it only when you need separate `chain` and `address` values
* scope entitlements and purchase history to that identity
* do not assume two wallets belong to the same customer

## Related pages

<CardGroup cols={2}>
  <Card title="Auth Overview" icon="duotone shield-halved" href="/auth/overview">
    See the full wallet-auth lifecycle and how identity is created
  </Card>

  <Card title="Wallet Auth" icon="duotone wallet" href="/integration-patterns/wallet-auth">
    See how to carry the wallet identity through your backend adapter
  </Card>
</CardGroup>
