{"contractVersion":1,"product":"card_funding","name":"x402card card top-up","description":"Top up an existing wallet-owned active virtual card with native USDC on Base through x402.","discovery":"https://api.x402card.org/api/card/topup/discovery","directTopup":{"method":"POST","url":"https://api.x402card.org/api/card/topup","authentication":"x402_payment_payer","input":{"amountUsdCents":"optional integer cents; defaults to 2500","idempotencyKey":"required before submitting PAYMENT-SIGNATURE; reuse after ambiguous responses"},"payerMustOwnActiveCard":true,"cardSelectedByServer":true,"paymentSubmissionsMaxPerAttempt":1,"fundingAsynchronous":true},"economics":{"minAmountUsdCents":2500,"maxAmountUsdCents":25000,"defaultAmountUsdCents":2500,"loadFeeBps":200,"example":{"walletPaymentUsdCents":2500,"loadFeeUsdCents":50,"expectedCardCreditUsdCents":2450}},"payment":{"protocol":"x402","version":2,"scheme":"exact","network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","challengeHeader":"PAYMENT-REQUIRED","paymentHeader":"PAYMENT-SIGNATURE","settlementHeader":"PAYMENT-RESPONSE"},"continuation":{"authenticateOwner":"POST /api/auth/challenge, then POST /api/auth/verify with the payer wallet","getOrder":"GET /api/orders/:orderId","listCards":"GET /api/cards","cardBalance":"GET /api/cards/:id/balance","credentialsPolicy":"Card credentials are unrelated to top-up and remain owner-only, private and fresh-signature protected."},"availability":{"fundingWorkerEnabled":true},"safety":["Never provide a seed phrase or private key","Verify amount, Base network, native USDC asset, payee and resource before signing","The payment payer must already own an active card; no card id is accepted from the caller","After an ambiguous response, repeat the same request with the same idempotency key and do not create a new payment","Treat card credit as pending until the funding job and provider balance confirm it"]}