Skip to main content
Payment links are reusable, shareable URLs that give you a hosted crypto checkout page without writing a single line of integration code. You create a link once with a fixed fiat amount, share the URL, and Crypto Checkout automatically generates a new checkout session every time a customer visits it. When you create a payment link, Crypto Checkout assigns it a short, unique slug and exposes it at /l/{slug}. Every visit to that URL:
  1. Creates a fresh checkout session scoped to that customer’s payment attempt.
  2. Presents the customer with a QR code and deposit address.
  3. Monitors the chain for incoming funds and marks the session paid once confirmed.
Because each visit produces its own session, you can safely share the same link with many customers — each one gets a clean, isolated payment object with its own expiry timer.

Key fields

FieldTypeDescription
idstringUnique identifier for the payment link (pl_…).
object"payment_link"String literal identifying the object type.
slugstringURL-safe short code used in /l/{slug}.
titlestringDisplay name shown on the hosted checkout page.
descriptionstring | nullOptional longer description shown below the title.
fiatAmountstringFixed amount customers will be charged, e.g. "150.00".
fiatCurrencystringThree-letter ISO currency code, e.g. "USD".
successUrlstring | nullWhere to redirect the customer after a successful payment.
cancelUrlstring | nullWhere to redirect the customer if they abandon the checkout.
activebooleanWhen false, visiting the link returns an error instead of a checkout page.
checkoutUrlstringThe full public URL customers use to pay (/l/{slug}).
createdAtstringISO 8601 timestamp when the link was created.
updatedAtstringISO 8601 timestamp when the link was last modified.
1

Open the Links page

Navigate to Dashboard → Links and click New.
2

Fill in the details

Enter a title, the fiat amount and currency, and optionally a description, success URL, and cancel URL.
3

Share the link

Copy the checkoutUrl from the link detail page and share it with your customers via email, invoice, or any channel you prefer.
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.
The active 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.
# Deactivate a link
curl -X PATCH https://your-domain.com/api/v1/payment_links/pl_abc123 \
  -H "Authorization: Bearer ck_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"active": false}'
Use the active flag for seasonal promotions or limited-time pricing — flip it back to true whenever you’re ready to accept payments again.

Metadata and customer email

You cannot attach metadata 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:
curl -X POST https://your-domain.com/api/v1/checkout_sessions \
  -H "Authorization: Bearer ck_test_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "linkId": "pl_abc123",
    "customerEmail": "[email protected]",
    "metadata": {"orderId": "ORD-999"}
  }'
Metadata is a free-form JSON object (string keys, any JSON values) and is echoed back on every session object and webhook event, making it easy to correlate payments with your own order records.
Payment LinksCheckout Sessions
ReusabilityReusable — unlimited visitsSingle-use
AmountFixed at creation timeFixed (link mode) or arbitrary (ad-hoc mode)
URLPermanent /l/{slug}Temporary checkoutUrl with TTL
CreationDashboard or API, onceAPI (or auto, on each link visit)
Best forInvoices, product pages, social linksCheckout 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.