Buy with card
Fiat-to-crypto via Stripe hosted onramp — crypto lands on the invoice deposit address.
When card onramp is available, hosted checkout shows Buy crypto with card.
How it works
- Buyer clicks the button on
/pay/{invoiceId}. - By default, Ulasend switches the invoice to USDC on Base (reprices the USD amount and mints a fresh deposit address), then creates a Stripe Crypto Onramp session locked to that address.
- Buyer completes payment on Stripe's hosted flow.
- Purchased crypto is sent to the invoice address.
- Deposit confirmation marks the invoice paid; your webhook fires as usual.
Accepted methods (via Stripe): credit & debit, Apple Pay, Google Pay, and US bank (ACH), depending on region.
Default: USDC on Base
Card purchases default to USDC so the dollar amount matches 1:1 with no crypto volatility window. A note on checkout explains this to the buyer.
- If the buyer has not picked a coin in the checkout picker, the card button delivers
USDC_BASE. - If the buyer explicitly selects a coin (BTC, ETH, SOL, etc.), the card button buys that coin instead.
- Litecoin has no Stripe onramp — those invoices still show the card button via the USDC default path.
This only applies to pending, USD-priced invoices with allow_asset_selection, before any payment is detected. If the switch cannot run, Ulasend falls back to the invoice's current coin.
Merchant setup
No extra API call from your app. Keep USDC on Base enabled under Settings → Accepted coins if you want card payments. Your invoice needs a real deposit address; Ulasend must have the matching Stripe secret configured for that mode (live vs test).