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.