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)
/v1/public/payment-links/* require no API key.
Create payment link
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}/activatePOST /v1/payment-links/{id}/deactivate
Scope: payment_links:write.
Public buyer link
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:
amountrequired within min/max. - Single-use: reuses open invoice when present; returns
403when already paid.
Response 201
Security
Buyer routes are unauthenticated; rely on rate limits and opaqueplpub_ tokens. Never embed plink_ merchant ids in public pages.