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

# create_card

> Issue a virtual card for a cardholder, holding an exact amount in cents (2500 = $25.00).

Connect to `https://mcp.agentcard.sh/mcp` with your **organization credential** (`client_id` + `client_secret`, or the org access token).

## What it does

Issue a virtual card for a cardholder, holding an exact amount in cents (2500 = \$25.00). Default is one-time-use: the first approved charge spends it and the card closes itself. Pass type "multi\_use" for a reusable card that survives repeated charges until its balance is spent (or expires\_at passes). In sandbox this issues a test card (mock, never charged). If the cardholder is not ready, the error says exactly which gate to clear: kyc\_required (run start\_cardholder\_kyc), insufficient\_balance or deposit\_confirming (the user's balance), payment\_method\_required, or org\_funding\_required (your company balance, with funds\_source "company\_flow").

## Inputs

| Field | Type | Description |
| - | - | - |
| `cardholder_id` *(required)* | string | Which cardholder the card is for |
| `amount_cents` *(required)* | number | Exact amount in cents, minimum 100 (\$1.00) |
| `funds_source` | string: `onramp_flow` · `company_flow` | onramp\_flow (default): the user's own balance pays. company\_flow: your pooled company balance pays. |
| `type` | string: `single_use` · `multi_use` | single\_use (default): closes after the first approved charge. multi\_use: reusable until the balance is spent. |
| `expires_at` | string | Multi-use only: ISO-8601 expiry in the future, at most 365 days out. The card closes then and any unused balance is released. |
| `idempotency_key` | string | Stable key for THIS card intent (e.g. your order id). Always pass one with company\_flow: retries then attach to the in-flight funding instead of double-funding, and a funding\_in\_progress retry must reuse the same key. |

## Returns

| Field | Type | Description |
| - | - | - |
| `message` *(required)* | string | Human-readable outcome. |
| `status` | string | "created", "funding\_in\_progress", or a readiness gate: kyc\_required \| insufficient\_balance \| deposit\_confirming \| payment\_method\_required \| org\_funding\_required. |
| `cardId` | string | Present when created. |
| `last4` | string | Present when created. |
| `verificationUrl` | string | Present on kyc\_required when a verification link exists. |
| `retryAfterSeconds` | number | Present on funding\_in\_progress / deposit\_confirming — retry after this many seconds. |

## Example call

```json theme={null}
{
  "tool": "create_card",
  "arguments": {
    "cardholder_id": "\u2026",
    "amount_cents": "\u2026"
  }
}
```


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