How payment links work
When you create a payment link, Crypto Checkout assigns it a short, uniqueslug and exposes it at /l/{slug}. Every visit to that URL:
- Creates a fresh checkout session scoped to that customer’s payment attempt.
- Presents the customer with a QR code and deposit address.
- Monitors the chain for incoming funds and marks the session
paidonce confirmed.
Key fields
| Field | Type | Description |
|---|---|---|
id | string | Unique identifier for the payment link (pl_…). |
object | "payment_link" | String literal identifying the object type. |
slug | string | URL-safe short code used in /l/{slug}. |
title | string | Display name shown on the hosted checkout page. |
description | string | null | Optional longer description shown below the title. |
fiatAmount | string | Fixed amount customers will be charged, e.g. "150.00". |
fiatCurrency | string | Three-letter ISO currency code, e.g. "USD". |
successUrl | string | null | Where to redirect the customer after a successful payment. |
cancelUrl | string | null | Where to redirect the customer if they abandon the checkout. |
active | boolean | When false, visiting the link returns an error instead of a checkout page. |
checkoutUrl | string | The full public URL customers use to pay (/l/{slug}). |
createdAt | string | ISO 8601 timestamp when the link was created. |
updatedAt | string | ISO 8601 timestamp when the link was last modified. |
Creating a payment link
- Dashboard
- API
Fill in the details
Enter a title, the fiat amount and currency, and optionally a description, success URL, and cancel URL.
Managing payment links
Once a link exists you can list, retrieve, update, or delete it through the dashboard or the API.List links
GET /api/v1/payment_links — returns a paginated list of all your links, newest first. Use limit and starting_after for cursor-based pagination.Retrieve a link
GET /api/v1/payment_links/{id} — fetch a single link by its id.Update a link
PATCH /api/v1/payment_links/{id} — update any mutable field, including active, title, fiatAmount, successUrl, and cancelUrl.Delete a link
DELETE /api/v1/payment_links/{id} — permanently removes the link. Existing sessions created from it are unaffected.Activating and deactivating links
Theactive flag lets you pause a link without deleting it. When active is false, any customer who visits the link’s URL sees an error page and no new session is created.
Metadata and customer email
You cannot attachmetadata or customerEmail to the payment link itself, but customers (or your server) can supply them when creating a session from a link. Pass these fields in the session-creation request alongside the linkId:
Payment links vs. checkout sessions
| Payment Links | Checkout Sessions | |
|---|---|---|
| Reusability | Reusable — unlimited visits | Single-use |
| Amount | Fixed at creation time | Fixed (link mode) or arbitrary (ad-hoc mode) |
| URL | Permanent /l/{slug} | Temporary checkoutUrl with TTL |
| Creation | Dashboard or API, once | API (or auto, on each link visit) |
| Best for | Invoices, product pages, social links | Checkout flows from your own server |
If you need dynamic pricing per customer or per order, create checkout sessions directly in ad-hoc mode rather than using payment links. See Checkout Sessions for details.
Next steps
Checkout Sessions
Understand the single-use payment object that a link visit creates.
Payment Links API reference
Full request/response schemas for every payment links endpoint.