The flow of funds is chosen when you create the company (user funded or company balance). A company owner can switch models from the dashboard’s Company balance page, but only until the company first moves money (a card is funded, a transfer runs, or a deposit lands). After that the two models’ funds would mix on the same collateral, so the choice locks; to change it then, create a new organization or contact us.
The flow of funds

User funded: from create_card to the agent paying the merchant
- A connected user’s agent calls
create_card. If the user’s balance covers the amount (plus fees), the card mints immediately and the agent pays the merchant. - If the balance is short,
create_cardreturnswallet_funding_required. The agent callsadd_funds, which returns a secure checkout link — the user pays with Apple Pay, Google Pay, or card in their browser, in USD. Funding reuses the identity verification the user already completed to create cards, so there’s no extra step. - While the deposit settles,
create_cardreturnsdeposit_confirming— the agent waits the suggested interval and retries. No second payment is ever needed. - The card mints,
card.createdfires, and the agent pays the merchant as usual. Unused balance from a closed card stays in the user’s balance for their next card.
What your integration looks like
Almost nothing. The funding conversation happens entirely between the user’s agent and Agentcard — your backend provisions cardholders, mints buy tokens, and listens to webhooks, but never handles a funding step. Increate_card terms this is funds_source: "onramp_flow", the default, so agents never need to pass it.
Balance tools
These run in the user’s own MCP session (via Connect with Agentcard):Funding from your own UI (API)
If you’re building an embedded funding experience — your app shows the balance and an “Add funds” button — the same flow is available server-to-server on the v2 API, so the user never leaves your product:
See the Funding a wallet guide for the full server-to-server flow, including the embedded in-app checkout.