Back to home

How It Works

Connect a wallet, send ETH on Robinhood Chain, get a card.

https://clawd.cards

No account, no API key. Your on-chain payment is the request. You pay in native ETH on Robinhood Chain, and the card is denominated at the USD value of the ETH you send. Card details are revealed once and never shown again.

The flow

1

Connect your wallet

Use MetaMask or any WalletConnect wallet. You'll see your address and current network once connected.

2

Switch to Robinhood Chain

ClawdCards settles in native ETH on Robinhood Chain. If your wallet is on another network, the app prompts you to switch. You'll need ETH on Robinhood Chain, bridge it in from Ethereum first if you don't have any.

Network: Robinhood Chain
Native token: ETH
3

Send ETH to the treasury

Enter an amount in USD or ETH. You get a short-lived quote that locks an ETH amount to a dollar value, then you send a plain native transfer to the treasury address. No token approval, no contract call.

# a plain native ETH transfer, nothing else
to: <treasury address>
value: <quoted ETH amount>
4

Card issued

Once the transaction confirms, we verify it on-chain and issue a card from the pool, denominated at the USD value of the ETH you sent. The number, CVV, expiry, and limit are shown once, so copy them immediately.

Technical reference

The purchase flow drives two endpoints. Valuation and verification are always performed server-side: a client-supplied dollar value is never trusted, and a card is never issued without confirming the transaction on-chain.

POST /api/quote

POST

Returns a signed, short-lived quote binding an ETH amount to a dollar value at the current price. Send exactly one of usd or eth.

# request
{
"usd": "5.00"
}
# response
{
"quoteId": "b1a1…",
"ethAmountWei": "2500000000000000",
"ethAmount": "0.0025",
"usdValue": "5.00",
"treasury": "0x…",
"expiresAt": 1753300000,
"signature": "…"
}

POST /api/redeem

POST

After the payment confirms, submit the transaction hash. The server reads to, from, and value off the transaction, checks the receipt and confirmations, matches the amount to the quote within tolerance, and issues one card. A given transaction can only ever produce one card.

# request
{
"txHash": "0x…",
"address": "0x…",
"quoteId": "b1a1…"
}
# response, returned exactly once
{
"card": {
"number": "4111111111111111",
"cvv": "123",
"expiry": "12/28",
"limit_usd": "5.00"
},
"message": "Store these details now. They will not be shown again."
}

Errors

All errors return a JSON body with a code and human-readable message.

StatusCodeMeaning
400amount_over_maxRequested value exceeds the maximum card amount.
400quote_expiredThe payment landed after the quote expired. Request a new quote.
400amount_mismatchReceived ETH doesn't match the quoted amount within tolerance.
400tx_revertedThe transaction reverted on-chain.
400not_plain_transferThe transaction was a contract call, not a plain ETH transfer.
409tx_already_redeemedThis transaction has already produced a card.
503pool_exhaustedNo cards available. If you had already paid, your funds are recorded, contact support.

Before you send

  • Right network only. Send ETH on Robinhood Chain and only to the treasury address shown in the flow. ETH sent on another network or to the wrong address may be unrecoverable. Contact support with your transaction hash and we'll help where possible.
  • Native ETH, plain transfer. There is no token approval and no contract call, it's an ordinary value transfer. Leave enough ETH to cover gas.
  • Details shown once. The card number, CVV, and expiry appear only in the redeem response. Copy them immediately; they are never returned again.
  • One card per transaction. Each confirmed payment issues exactly one card. Retrying with the same transaction hash will not issue a second.

Ready to fund your agent?