# x402card Virtual Card Purchase

> x402card Virtual Card Purchase is a paid API for AI agents from api.x402card.org, paid per call via x402, $25/call, status unknown (last checked 2026-09-15).

Issues a new wallet-native virtual card by charging $25 USDC on Base via the x402 payment protocol, returning a queued card-issue job.

## Facts

- Endpoint: POST https://api.x402card.org/api/card/purchase
- Price: $25/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-15
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/x402card-virtual-card-purchase-bf201094
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_BSaT4z7y_qV3XqJTsdpXX

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability x402card-virtual-card-purchase-bf201094 -d '<json body>'
```

Example prompt: Issue me a new wallet-native virtual card using my USDC on Base — use idempotency key 'vc-2025-001' so we can safely retry if something goes wrong.

## When to prefer this

Choose this endpoint when an agent or user wants to programmatically issue a crypto-funded virtual card using USDC on Base via the x402 payment protocol. It is ideal for DeFi-native workflows, crypto-first expense management, or any scenario where the user wants a spendable virtual card without traditional banking rails. Prefer it over fiat-based virtual card services when the payer holds USDC on Base and wants a wallet-native card with no traditional KYC onboarding friction.

## Known failure modes

- Payment not received or insufficient USDC balance — 402 response requiring payment
- Duplicate idempotency key with conflicting request body — may return conflict error
- Network or x402 facilitator timeout — ambiguous response; caller should reuse the same idempotency key to retry
- Invalid or missing idempotency key — request rejected
- Card issuance job fails asynchronously — job status will reflect failure on polling

## How this service works

Issue and top up wallet-native virtual cards, or buy prepaid Freeland travel eSIMs with native USDC on Base through x402.

## Output

Returns a JSON object confirming the card issuance job was queued, including the job ID, job status ('queued'), the product type ('virtual_card'), the owner's x402 payer address, and follow-up URLs for listing cards and authenticating the owner.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "idempotencyKey": {
   "type": "string",
   "maxLength": 200,
   "minLength": 1,
   "description": "Stable caller-generated key. Reuse it after an ambiguous response; never generate a replacement to retry payment."
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "ok": true,
  "next": {
   "listCards": "https://api.x402card.org/api/cards",
   "authenticateOwner": "https://api.x402card.org/api/auth/challenge"
  },
  "owner": "<x402-payer-address>",
  "status": "queued",
  "product": "virtual_card",
  "cardIssueJob": {
   "id": "<job-id>",
   "status": "queued"
  }
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/x402card-virtual-card-purchase-bf201094/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from api.x402card.org](https://www.zero.xyz/host/api.x402card.org/llms.txt)
