Skip to main content
Keep customers on your page. puffin.js opens the hosted checkout in a sandboxed iframe modal and reports status back via callbacks.

Install

No npm, no build step, ~2 KB, zero dependencies.

Open a payment intent

Create the intent server-side (hosted checkout), pass the id to the browser:
No backend at all:
Pass customerEmail when you already know it and the payer sees it masked and locked. Omit it and the modal opens the hosted link page first, which collects the payer’s own address for the receipt — either way no one signs in, and callbacks fire the same.

API

Client callbacks are for UX only. Fulfil orders from the payment.confirmed webhook or a server-side GET of the intent.