Skip to main content
Payment links use two ID namespaces:

Public ID format

All public resource IDs use opaque prefixes plus a 32-character lowercase hex token (128-bit entropy): Legacy 12-character plpub_ URLs (issued before June 2026) still resolve; the API returns the current 32-char public_id in responses. Buyer responses omit internal UUIDs, settlement wallets, and webhook configuration.

Authentication (merchant routes)

Buyer routes under /v1/public/payment-links/* require no API key.
POST /v1/payment-links

Request

Response 201

id (plink_...), public_id (plpub_...), public_url, pricing fields, usage (reusable / single_use).

Retrieve / update

GET / PATCH /v1/payment-links/{id} Path id must be plink_.... PATCH cannot change pricing after checkout has started.

Activate / deactivate

POST /v1/payment-links/{id}/activate
POST /v1/payment-links/{id}/deactivate
Scope: payment_links:write.
GET /v1/public/payment-links/{public_id} Returns buyer-safe fields only: title, amounts, store_name, merchant_name. Does not expose store UUID, organization id, settlement wallet, webhooks, merchant email, or store_logo_url (CDN paths may embed org ids).

cURL


Start checkout

POST /v1/public/payment-links/{public_id}/checkout

Request

  • Fixed amount: omit amount.
  • Customer-defined: amount required within min/max.
  • Single-use: reuses open invoice when present; returns 403 when already paid.

Response 201

Security

Buyer routes are unauthenticated; rely on rate limits and opaque plpub_ tokens. Never embed plink_ merchant ids in public pages.