Payment Links — Overview
A Payment Link is a shareable URL that drops a buyer into a hosted
checkout you’ve already configured. No SDK, no server integration — issue
it in the dashboard, share it, and the same payment.settled webhook
fires when funds confirm on-chain.
Under the hood, a Payment Link is a CheckoutSession — “Payment Link” is just the dashboard-side name for a session that wasn’t created by a buyer-driven SDK flow. Same webhook contract, same on-chain settlement, same fees.
Common uses:
- Invoicing a one-off customer without writing code
- Sales pages where you don’t have a custom cart
- B2B follow-ups: paste the link into an email
- “Buy me a coffee”-style fixed-amount tipping pages
Create one
Create payment links in the dashboard:
- Sign in to the merchant dashboard
- Payments → Payment Links → + New link
- Pick one of two paths:
- New order — enter line items, currency, customer info, and optional metadata. The dashboard creates the Order and the Payment Link in a single call.
- Existing order — pick a
PENDINGorder (e.g. the buyer abandoned the previous link). Re-issues a fresh link backed by the same order, so the order history stays intact. - On New order you can switch to Amount only to charge a set amount without listing products.
- Save → the dashboard shows the
https://checkout.infraio.xyz/cst_…URL with a copy button and a QR code download. Test-mode links usecheckout-dev.infraio.xyzso the environment is encoded in the hostname.
Each Payment Link is single-use today: once a buyer pays, the session
is COMPLETED. If a session expires before payment (default TTL is
30 minutes), open the order detail page and click Re-create link
to issue a fresh one against the same order.
What the buyer sees
- They land on
checkout.infraio.xyz/<session_key>— the same hosted checkout UI you’d get from an SDK-issued session. - They go through the standard pick-asset → send funds → wait for confirmation flow described in Checkout — Overview.
payment.settledfires on your webhook with the order, intent, receipt, on-chain tx hash, and confirmation count — same payload as any other settled payment. See Webhooks for the schema.
What the dashboard gives you
The Payment Links surface today ships with:
- List view — every link you’ve issued, cursor-paginated, with status, amount, parent order number, customer, expiry, and a one-click open to the buyer URL.
- Filters — status (
ACTIVE/COMPLETED/EXPIRED/CANCELED), date range, and full-text search across order number, customer name, email, or external ref. - CSV export — one click, respects the current filters.
- KPI strip — counts per status for the current environment
(
liveortest), matching what the table shows. - Detail page — order summary, sessions history (every attempt for this order), on-chain history with block explorer links, and a Re-create link action for sessions that expired before payment.
Limitations today
- No programmatic API — links must be created in the dashboard. You
can create equivalent single-use sessions via
POST /b2b/v1/checkout-sessions/quick(see API reference), but shareable links are created in the dashboard only. - No per-buyer authentication — anyone with the URL can pay. Each link is single-use, which limits this.
- Branding is global — the link uses your merchant-wide logo, brand colour, and border radius from Settings → Branding. Per-link branding overrides aren’t available.
See also
- Concepts → Sessions — what’s happening at the session and intent layer while a buyer is paying.
- Checkout → Overview — what the buyer actually sees.
- Webhooks → Overview — the
payment.settledevent your server reacts to.