Skip to main content
Payment links are reusable URLs you create in the dashboard. Each visit mints a fresh payment intent, so one link can collect unlimited payments.
  1. Dashboard → Payment links → set a title, choose token & chain.
  2. Set a fixed amount, or leave it blank to let the customer choose (donations, tips, pay-what-you-want).
  3. Optionally lock the link to one payer’s email — invoicing a known customer. They see it masked on the page and can’t change it. Leave it open and the page asks whoever opens it for their own address.
  4. Share https://pay.puffinmoney.com/link/<slug> — chat, invoice, email signature, QR on a receipt, anywhere.
The payer never signs in and never creates an account. The one thing the page insists on is an email address, so the payment receipt has somewhere to go.

Programmatic use

Create an intent from a link (public endpoint, no API key):
Then send the customer to checkoutUrl or open it with the iframe SDK:
Amount is required in the request only when the link has no fixed amount. customerEmail is required only when the link isn’t locked to a payer — a locked link always uses its own address and ignores anything you send. Without either, use the hosted page (/link/<slug>, or PuffinPay.openLink with no customerEmail) and the payer supplies it themselves.