REST API
Checkouts, customers, orders, prices, coupons. One key.
$ curl -X POST app.plandalf.com/api/v1/checkouts \
-H "Authorization: Bearer $KEY" \
-d offer=purple-rainThe most flexible checkout builder in existence. Beautiful, pixel-perfect on brand, world-class UX and a joy to buy from. And the checkout is only where it starts.
Start your 14-day free trialNo credit card required. No coding required.
Templates
Eight templates modelled on the world's best checkouts. Open one and walk the real thing, then pick it, swap the layout, add or remove blocks, and publish.
On brand
Every checkout starts from a theme. Paste your website and watch one take on your logo and colours.
Checkout looked like the rest of Bonjoro. I never felt handed off.

Pricing
One-time, subscription, instalments, tiers, add-ons, currencies and tax. Mix them in the same checkout and let the buyer choose.
One-time
Launch workshop
$149
Lifetime access. Paid once.
Secured by Plandalf
One price, one button. Nothing to configure.
Bumps, upsells, add-ons
Add-ons in the checkout, a bump at payment, an upsell after it. Same flow, same card, no second checkout.
Order summary
Add-ons
Extras the buyer attaches themselves, totalled in the same summary.
Payment
One tick beside the payment form. No new page, no second checkout.
One more thing
Charged to the card ending 4242. Nothing to re-enter.
A follow-on offer on the thank-you page. Card on file, one click.
A real deadline on any of these, so buyers decide faster.
Insights
Conversion, drop-off, bumps, customer value, countries and fees, across every checkout you run. Then what to change, and a person to talk pricing with.
The little things
Receipts, invoices, leads, tax, coupons, install. The parts of selling nobody puts on a landing page, all in the same account as the checkout and built to the same standard.
Receipts and invoices
Beautiful invoices and receipts. Set your logo and colours once; the email, the receipt page and the PDF all wear them.
On the email, the receipt page and the PDF, with your address and ABN in the footer. Never a generic receipt with somebody else's name on it.
Every buyer gets one page with all their receipts from you, each downloadable as a PDF. Save it, come back later.
Receipt for RCP-000268
Hi Harriet, thanks for your purchase. Your receipt is ready.
© 2026 The Ceramics Atelier · 12 Kiln Lane, Fremantle WA · ABN 12 345 678 901
Your receipts
All your receipts from The Ceramics Atelier, in one place. Save this page to come back later.
Contact The Ceramics Atelier · hello@ceramicsatelier.studio
Customers and leads
Everyone who bought, and everyone who gave an email and did not. The second list is a ready-made win-back campaign.
The campaign, the affiliate, the promo code. So you know which channel deserves more of your money.
Interest scored from visits and recency, so the win-back goes to the people most likely to come back.
| Person | Status | Interest | Source | Visits | Last seen |
|---|---|---|---|---|---|
Harriet Arronharriet@example.com | Bought | Hot | utm: launch | 3 | 4 min ago |
Checkout visitorsam.k@fieldkit.io | Lead | Hot | via @kilnclub | 9 | 28 min ago |
Priya Nairpriya@northstar.studio | Lead | Warm | promo: EARLYBIRD | 4 | 2 hours ago |
Tom Okafortom@example.com | Bought | Warm | direct | 2 | Yesterday |
Checkout visitord.lee@cartwell.co | Lead | Cold | utm: ig-story | 1 | 3 days ago |
Tax
Inclusive or exclusive, by country or region, with the right rate applied from the buyer's billing address. Built-in rates, or bring TaxJar or Avalara.
VAT, ABN, GST and EIN collected and validated at checkout, with reverse charge where it applies.
Every Stripe payout split into gross, refunds, fees and tax collected by region. Export the CSV, hand it to your accountant.
Coupons
Percentage or fixed, single-use or shared, with limits and expiry. Applied at checkout without leaving the page.
Set the rules once. The checkout enforces them and tells the buyer why a code did not apply.
Every use is logged to the coupon, so you know what each one cost and what it brought in.
LAUNCH20Launch week, all plansWELCOME10First order, sharedBLACKFRIDAYSingle use per buyerInstall
Paste one tag into your site and every checkout you publish is live on it. Sits beside what you run; comes out as easily as it went in.
Nothing to migrate, nothing to replace. Try it on one page, then everywhere. WordPress, Webflow, Squarespace, Framer, Shopify, or plain HTML.
Cards go straight to the processor you already have. Plandalf keeps the invoice, line items and status with the sale.
<script src="https://your-brand.plandalf.dev/js/plandalf-sdk.js" async></script>Copy1<!-- Add before </body>, or use "Insert Headers and Footers" -->2<script src="https://your-brand.plandalf.dev/js/plandalf-sdk.js" async></script>
After the sale
Paid, abandoned, failed, refunded, trial started, renewed. Plandalf handles the receipts, recovery emails and offers itself, then pushes the tags, access and deals into whatever you already run.


+2

+2

+1


























Not just the sale. Abandons, failed renewals and refunds fire too, so recovery and clean-up run themselves.
Receipts, invoices, cart recovery, deadline offers, failed-payment retries, trial reminders. No third-party tool, no setup.
Tags, lists, memberships, deals, Slack, a signed webhook, a Zap. If we do not plug into something you use, we build it.
For developers and SaaS teams
Everyone else installs one script and never reads this. This is the loop from "who is this" to "they're in".
A short JWT signed with your API key. Same person on both sides.
Name the feature and its offer. Your check fails, the checkout opens in place.
The gate resolves when they pay. Your webhook hears it too, so your backend stays the truth.
Saved cards, customer portal, cancel and win-back flows, failed-payment recovery.
// 1. who is this
plandalf.identify(await api.plandalfJwt())
// 2. your app. Try it: edit the label, click the plan or the flow, then press the button below.
button.textContent = ''
const user = { plan: '' }
// 3. can they? if not, the upgrade checkout opens right here
plandalf.addGate('seats', '', () => user.plan !== 'free')
button.onclick = async () => {
const { access } = await plandalf.gate('seats', api.sync)
if (access) team.addMember()
}
// 4. your server hears it too: on invoice.paid → POST /webhooks/plandalfCheckouts, customers, orders, prices, coupons. One key.
$ curl -X POST app.plandalf.com/api/v1/checkouts \
-H "Authorization: Bearer $KEY" \
-d offer=purple-rainAny event to any URL, payload you shape. Inbound catch URLs too.
on invoice.paid, cart.abandoned
POST https://api.yourapp.com/plandalf
{ "email": "{{trigger.customer_email}}" }Claude, Cursor or your own agent builds the checkout for you.
$ claude mcp add plandalf \
app.plandalf.com/mcp
> Build a two-plan checkout, our coloursPlus a fully documented REST API and webhook layer for whatever’s not in the list.



































15+ years building SaaS businesses together. Every part of Plandalf comes from a real checkout problem we’ve had to solve ourselves.
No credit card required. Nothing to migrate.