Live on Stellar mainnet

Virtual Visa cards,
issued to agents.

One Stellar transaction in, one real card number out. Agents pay in USDC or XLM and get a usable card in about sixty seconds.

Virtual Card
Available$250.00
Card Sequence
4242 0402 4020 7890
YOUR AGENT
VALID 12/28
Time to card
≈60s
pay → card
Network
Stellar
mainnet
Custody
None
agent pays direct
Pricing
Face value
no fees
The flow

Four steps, zero human touchpoints. Fast enough that agents don't need to batch.

01

Create order

POST /v1/orders with a USD amount. Backend returns a Soroban receiver-contract ID and a one-time order_id.

02

Sign one transaction

Agent invokes pay_usdc (or pay_xlm) on the receiver contract. USDC-first, with a DEX-routed path payment to settle the quote.

03

Watcher + fulfillment

The Soroban watcher picks up the payment event, validates the amount against the quote, and kicks fulfillment. Mismatches go to an unmatched-payments queue.

04

Real Visa card

Number / CVV / expiry stream back over the original HTTP connection. One SSE stream, no webhooks to host, no polling required.

Integration

Three lines of TypeScript.

The Cards402 SDK wraps the order → Soroban payment → card-ready cycle behind a single call. One SSE stream, no polling, no webhook endpoint to host, resume-safe if the agent crashes mid-flight.

See the full reference
import { purchaseCardOWS } from 'cards402';

const card = await purchaseCardOWS({
  apiKey: process.env.CARDS402_API_KEY!,
  walletName: 'my-agent',
  amountUsdc: '25.00',
});

// { number, cvv, expiry, brand, order_id }
Principles

Built like a payment rail. Read like an SDK.

Stellar-native

One transaction in, one card out

Every purchase is a single `PathPaymentStrictReceive`. USDC or XLM. No redirect, no hosted checkout, no user session.

Zero custody

Agents pay the contract directly

Cards402 never holds customer funds. The agent signs with its own OWS wallet; the backend only observes on-chain events and brokers fulfillment.

Made for autonomy

One-shot claim codes, not shared keys

Operators mint a single-use claim instead of pasting raw API keys into agent context. Credentials never hit the conversation transcript.

Engineering surface

MCP, HTTP, SSE — pick your integration

Drop the Cards402 MCP server into Claude Desktop, hit the REST API from any runtime, or subscribe to the SSE phase stream for live updates.

What the operator hands their agent

One paste. No raw keys. No transcript leaks.

Read https://cards402.com/skill.md and set up
this agent by running:

  npx -y cards402@latest onboard --claim c402_<code>
Full onboarding flow