> ## Documentation Index
> Fetch the complete documentation index at: https://docs.agentcard.com/llms.txt
> Use this file to discover all available pages before exploring further.

# User balance

> Let a user fund their own balance with Apple Pay or Google Pay, then issue cards against it.

Let a user pay for their own cards. You verify their phone once, create a link, and the user pays in their own browser. When your company's cards are user-funded, the cards you create for that user then draw on that balance.

Every endpoint here takes your [platform token](https://docs.agentcard.com/api-reference/access-tokens/overview.md) and names the user with `user_id`. To fund cards yourself, use the [company wallet](https://docs.agentcard.com/api-reference/company-wallet/overview.md) instead.

```bash theme={null}
curl -X POST https://api.agentcard.sh/api/v2/wallet/fund \
  -H "Authorization: Bearer $ORG_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"user_id": "usr_9ae8d0b84fc1008ecb42b232", "amount_cents": 5000}'
```

In production the user needs a [verified identity](https://docs.agentcard.com/api-reference/identity-verification/overview.md) first, or the request is refused with `kyc_required`. The response then carries a `checkout_url`. Send it to the user: Agentcard covers the provider fee, so send the exact amount the user should receive. Learn when the money lands from a fresh read of the [funding session](https://docs.agentcard.com/api-reference/user-balance/funding-session.md).

The first funding needs a verified phone. Without one, the request is refused:

```json theme={null}
{
  "error": {
    "code": "phone_verification_required",
    "message": "The user must verify a phone number first. Start with POST /api/v2/wallet/phone/start.",
    "docs": "https://docs.agentcard.com"
  }
}
```

[Send a phone code](https://docs.agentcard.com/api-reference/user-balance/phone-start.md), [verify it](https://docs.agentcard.com/api-reference/user-balance/phone-verify.md), then send the same request again.

In sandbox no one pays. The test money lands right away, `checkout_url` is `null`, and the phone code is always `111111`.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.