SaaS upgrade modal
A Next.js dashboard opens the Pro offer from a client component. Customers who do not want to enter a card pick PayPal, and a webhook flips the account's plan.

Checkout embed
A client component opens the Plandalf checkout, PayPal is a payment option there, and your server confirms the paid invoice.
No credit card required. No coding required.
PayPal
Next.jsPlandalf has no PayPal package for Next.js. Your app loads the Plandalf browser SDK in a client provider and renders buying actions in client components; PayPal is switched on for the offer in Plandalf. The payment check and any protected access belong on your server.
| Event | From and to | Through | What happens |
|---|---|---|---|
| Checkout opened | Next.js → Plandalf | A provider below the root layout loads the SDK with next/script. A button or sdk.present call in a client component opens the offer. | |
| Pay with PayPal | Plandalf → PayPal | Payment connection | PayPal appears in the checkout for offers where it was added. The buyer approves at PayPal and returns to the checkout. |
| Checkout completed | Plandalf (paid via PayPal) → Next.js | The same completion path runs as after a card, so browser events can refresh the UI and sequences can run on the paid invoice. | |
| Entitlement | Plandalf → Next.js server | Webhook | A sequence with Send Webhook can call a Route Handler on your app. Verify the paid invoice there and deduplicate by invoice before granting anything. |
| Refund | PayPal → Next.js server | By hand | A PayPal refund does not start Invoice Refunded, which is documented for Stripe. Revoke access from your own admin or a sequence you trigger. |
You need a published Plandalf offer with PayPal added, your organization's SDK URL, and a Next.js app with a root layout.
Connect your PayPal Business account in Plandalf and enable PayPal on the offer. The SDK URL and offer slug are public configuration; keep secrets out of client bundles.
Write a 'use client' provider that loads the SDK with next/script and afterInteractive, and exposes the ready SDK through context. Mount it below the root layout so client navigation reuses it.
Add a component that opens the offer from a button. Do not touch window or open checkout during server rendering.
Use data-plandalf-mode='test' and a connected PayPal sandbox. Approve one payment, cancel another at PayPal, and compare each result with the invoice in Plandalf.
Open checkout, navigate away, come back with the browser Back button, and open it again. Check that only one checkout opens.
Point a Send Webhook step at a Route Handler, check the invoice, and only then mark the user as entitled.
A Next.js dashboard opens the Pro offer from a client component. Customers who do not want to enter a card pick PayPal, and a webhook flips the account's plan.
A creator's Next.js storefront gates downloads on a server check. The page can show the success state immediately, but the file unlocks only after the invoice check.
next/script, and open the offer from a client component.Checked October 26, 2026 against Plandalf's own setup guides.