For AI agents: a documentation index is available at the root level at /llms.txt and /llms-full.txt. Append /llms.txt to any URL for a page-level index, or .md for the markdown version of any page.
Apply for AccessDashboard
Guides
Guides
  • Get Started
    • Introduction
    • Quickstart
  • Agent Identity
    • Overview
    • Create Auth Intent
    • Exchange for JWT
    • Sessions
    • JWKS
  • Agent Checkout
    • Overview
    • Create an Invoice
    • List Invoices
    • Get Invoice
    • Cancel Invoice
  • Integration Patterns
    • Overview
    • Shared SDK Client
    • Wallet Auth
    • JWT Verification
    • Subscription Checkout
    • Webhook Verification
  • Concepts
    • Two Invoice IDs
    • Wallet Identity
    • Session vs Token
    • Webhook-Driven State
  • Webhooks
    • Overview
    • Verify Signatures
  • Reliability
    • Errors
    • SDK Reference
Apply for AccessDashboard
On this page
  • Why this matters
  • The rule to keep in mind
  • What to do in your app
  • Related pages
Concepts

Wallet Identity

The wallet is the customer identity in Gwop Auth
||View as Markdown|
Was this page helpful?
Edit this page
Previous

Two Invoice IDs

Next

Session vs Token

Built with

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

Auth Overview

See the full wallet-auth lifecycle and how identity is created

Wallet Auth

See how to carry the wallet identity through your backend adapter