Crypto
Live today · no account- SetupZero — works out of the box
- CustodyNever — peer to peer
- ChargebacksNone — the transaction is final
- FeesNetwork gas only
- Best forAgents, global buyers, instant settlement
Crypto links take one offline command — `one wallet keygen`, paste the addresses, and you are live across four chains. No merchant account, no approval to wait for, no custody. Cards are real Stripe Elements that go live with your key. Try both below — nothing on this page is a mockup.
A real, signed link to your wallet — created on click, no backend needed. Prefer a card? ↓
Or buy from the catalog
The technical playbook behind this exact site — clone it, ship it, own every piece.
Real Stripe Elements dressed as a card — tilts to your cursor, guides you field to field, and settles straight to your own Stripe account. It goes live the moment you add two env vars; until then it's an honest preview.
Which rail?
Ship both. Point buyers at whichever fits — or let them choose.
Crypto, start to settled
One POST — or the form above. The link carries the amount, the chains, and your wallet addresses, signed so nothing can be swapped in transit.
It's just a URL and a QR code. Drop it in an invoice, a chat message, a checkout page — anywhere a buyer can tap.
The payer picks a chain and signs. Funds land directly in your wallet — no middle account, nothing to withdraw.
For developers
curl -X POST https://pay.one.ie/ \
-H 'Content-Type: application/json' \
-d '{
"protocol": "payment_link_create",
"data": {
"amount": 2500,
"unit": "usd",
"product": "Pro plan",
"merchantSlug": "your-workspace",
"chains": ["SUI", "ETH", "SOL", "BTC"],
"treasuries": { "SUI": "0x...", "ETH": "0x..." }
}
}'
# amount is in CENTS — 2500 = $25.00
# → { "success": true, "data": { "url": "https://pay.one.ie/l/...", "qr": "..." } }
# Signed server-side. Visiting the link verifies the signature before it
# renders — an unsigned or tampered link never reaches a payer.// src/pages/api/pay/create-intent.ts — real, ships in the starter
const stripe = new Stripe(env.STRIPE_SECRET_KEY, {
httpClient: Stripe.createFetchHttpClient(), // runs on Cloudflare Workers
})
const intent = await stripe.paymentIntents.create({
amount, currency: 'usd',
automatic_payment_methods: { enabled: true },
})
return Response.json({ clientSecret: intent.client_secret })
// <PhysicalCardCheckout /> mounts live Stripe Elements on that clientSecret.
// The webhook verifies every event's signature (constructEventAsync —
// Workers' SubtleCrypto is async). Fail-closed without the two keys.Run one wallet keygen, share a link, or add your Stripe key. That's the whole setup.