Payment links are reusable hosted payment pages you can share with any number of buyers, unlike a checkout session, which is single-use and tied to one buyer. A link supports three modes: standard for fixed line items or subscription signup via subscription_plan_id, donation for variable buyer-chosen amounts, and event for ticket-tier sales. Each completed checkout through a link creates its own order behind the scenes, keeping payment links inside the orders-first model.
Links stay active until you deactivate them, they expire, or they hit an optional completion limit. Line items can come from your catalog (variants or bundles) or be defined ad hoc, with optional quantity and amount adjustment controls, custom fields, tipping, and promotion support.
The public read, GET /v1/payment-links/{payment_link_id}/public, returns the merchant's current display name. If Flint can't load the merchant, the read fails with 500 INTERNAL_ERROR instead of returning a placeholder name; retry it.
A catalog-backed line item stores only the reference, so reads add resolved_name and resolved_unit_price_money to show what the catalog says right now, and is_catalog_item_unavailable when the variant or bundle is missing, deleted, or inactive. These are current catalog values, not a stored snapshot: checkout resolves the catalog again when a buyer opens the link, so a later catalog edit changes what the buyer pays. They are read-only and ignored on writes.
Start with the Payment links guide. For choosing between hosted surfaces, see Payment links vs checkout sessions vs invoices.
The link's version covers its template, image, and delivery selection. Set delivery_method_ids on create or replace the array on PATCH with expected_version. PATCH requires that version when line_items, custom_fields, or delivery_method_ids is present. Omit an array to leave it unchanged; send [] to clear delivery methods or custom fields. Null and duplicate delivery method IDs are invalid. A link without delivery methods offers settings.checkout.default_delivery_method_ids when its order has items to deliver, so buyers can still choose shipping or pickup. A stale save returns PAYMENT_LINK_CHANGED; retrieve the link before retrying. Use promotion_config.codes_enabled to control promotion-code entry.
