Skip to main content
Your integration runs in sandbox by default: a sandbox OAuth client issues test cards that are never charged, so you can build and verify the whole flow without moving money. Going live takes three steps.
  1. Subscribeagent-cards-admin subscribe activates your organization’s paid plan. Production is gated on an active subscription.
  2. Switch to productionagent-cards-admin env production (env on its own shows your current mode).
  3. Register a production clientagent-cards-admin oauth-clients create now issues a production client_id and client_secret. Pin them in your app; a 403 here means you still need step 1.
Cards issued through a production client are live — funded from each user’s own Agentcard wallet and charged for real. If your organization uses the company wallet, the same subscription also unlocks the live pool: provisioning the wallet and moving real funds return 403 subscription_required until step 1 is done (the sandbox mock pool stays free).
Keep your sandbox client for development and register a separate production client for live traffic. If your subscription lapses, production clients drop back to sandbox until you resubscribe.

Sandbox and live are split universes

Every resource belongs to the mode of the credential that created it, and each credential only ever sees its own universe — the same model as Stripe.
  • Cardholders are per-mode. A cardholder created through a sandbox client exists only in sandbox: your production credentials will not list it, and using its id in live returns 404. The same email can exist once per mode, so you can rehearse a user’s whole journey in sandbox and create them again for real in live.
  • Cards, transactions, and webhook endpoints are mode-scoped the same way. Lists and by-id reads only return the calling credential’s universe.
  • Webhook endpoints receive one mode’s events. An endpoint created with sandbox credentials gets livemode: false events only; create a second endpoint with your production client for live traffic.
  • The dashboard’s Live/Sandbox toggle switches the console between the two universes; the playground creates sandbox data only.
There is one API host — api.agentcard.sh. The credential decides the universe — a sandbox client or a production client — never the URL.