Contract Accounts
Contract accounts are smart contracts that act like accounts. They hold balances and use __check_auth to decide who can act and under what conditions.
Use a contract account when:
- You need custom authentication in the contract (passkeys/WebAuthn, hardware keys, or other signer checks).
- You need on chain rules such as spend caps, allow lists, or timelocks.
Stay with a classic account when:
- You want the simplest path: one private key, fund the account, no extra contract code or infrastructure.
- You must interoperate with systems/tools that expect memos (for example, some exchanges require payments with memos from a G-address; contract account payments go through the Stellar Asset Contract as muxed transfers, so transfers from contracts are not supported by exchanges today).
Quick links:
Guides in this category:
Smart wallets
Smart wallets are contract accounts that act as user wallets. They hold assets and enforce authorization in check_auth instead of a single secret key. Passkeys (WebAuthn) are common, but you can also use Ed25519 keys, policy signers, session keys or anything the contract can verify.
Advanced contract account patterns
Layer spend limits, allow lists, time rules, and other guardrails onto contract accounts.
Contract account examples
Real projects that showcase policy signers, passkeys, and contract-account UX on Stellar.