In-app upgrade button
A Vue dashboard shows an Upgrade button that opens the Pro offer. Buyers outside card-first markets pay with PayPal, and your component refreshes the plan badge when checkout reports completion.

Checkout embed
A Vue 3 button opens your Plandalf checkout, and PayPal shows up there as a payment option beside cards.
No credit card required. No coding required.
PayPal
VuePlandalf does not add a PayPal package to your Vue app. Vue only renders the button that opens the Plandalf checkout; PayPal is switched on for that offer in Plandalf, where you connect your PayPal Business account. The buyer chooses PayPal inside the checkout, and the same completion path runs as after a card payment.
| Event | From and to | Through | What happens |
|---|---|---|---|
| Checkout opened | Vue → Plandalf | A button with data-plandalf-present set to the offer slug opens the checkout as a modal once the SDK script has loaded. Vue needs no PayPal-specific code for this. | |
| Payment method chosen | Plandalf → PayPal | Payment connection | The buyer picks PayPal inside the checkout, approves at PayPal and returns to the same checkout. This only appears for offers where you added PayPal as a payment option. |
| Checkout completed | Plandalf (paid via PayPal) → Vue | The same completion path runs as after a card payment, so redirects, events, webhooks and sequences work for PayPal sales. Your Vue app can update its screen from checkout events. | |
| Access granted | Plandalf → Your server | Webhook | A sequence on Checkout Completed can use Send Webhook to tell your own backend about the paid invoice. Grant durable access from that call, not from the browser event. |
| Refund | PayPal → Plandalf | By hand | Invoice Refunded is documented only for refunds that succeed in Stripe. A refund you make in PayPal leaves your Vue app's access rules untouched until you change them yourself. |
You need a published Plandalf offer, a PayPal Business account with a client ID and secret from the PayPal developer dashboard, and a Vue 3 app where you can edit the root HTML.
Open the PayPal integration in Plandalf, authorize the Business account, then add PayPal as a payment option on the offer. Keep card payment available as a fallback.
In a Vite app, put the queue snippet and the plandalf-sdk.js script in the root index.html, before your app entry. Use your own organization host in place of acme.
Create a component with a button that binds :data-plandalf-present to the offer slug and :key to the same value. The key makes Vue rebuild the button when the slug changes, because the SDK reads the attributes only once.
Connect the PayPal sandbox environment, open the checkout from the published page and approve a sandbox payment. Then cancel at PayPal, come back to the checkout, and check that no paid invoice was created.
Match the sandbox payment to a paid invoice in Plandalf. Give access from your server after that check, and repeat the sandbox run once with a card so you know both paths end in the same place.
Decide how access is removed after a PayPal refund. Either do it by hand, or start a Plandalf sequence yourself through a Webhook Trigger URL when you refund.
A Vue dashboard shows an Upgrade button that opens the Pro offer. Buyers outside card-first markets pay with PayPal, and your component refreshes the plan badge when checkout reports completion.
The pricing page is a Vue route with one button per plan. Each button carries its own slug and key, so switching plans in the UI opens the right offer with PayPal listed beside cards.
data-plandalf-mode='test' asks for test mode but is not proof that a sandbox account is connected. Check the provider binding before you submit a payment.:key changes or the button is remounted.onMounted. Calling it during server rendering fails because there is no window.data-plandalf-present. Nothing PayPal-specific goes in your components.Checked October 26, 2026 against Plandalf's own setup guides.