Payments
Taking payments from your customers, into your own Paddle, Stripe, PayPal, Lemon Squeezy or Airwallex account.
Sidebar → Setup → Payments
Taking payments from your customers, into your own Paddle, Stripe, PayPal, Lemon Squeezy or Airwallex account.
Your account, your money
You connect your own payment account. Your customers' payments go to you directly. The platform never touches that money and never takes a cut of it.
You can sell through one of five providers:
| Sales tax, VAT and GST | How customers pay | Plan prices | |
|---|---|---|---|
| Paddle | Paddle collects and pays it for you | Card and wallets, in a window over your page | You create each price in Paddle and paste its ID here |
| Lemon Squeezy | Lemon Squeezy collects and pays it for you | Card, PayPal and wallets, on Lemon Squeezy's own page | You create three variants once; every plan uses them at its own price |
| Stripe | You collect and pay it | Card, Apple Pay, Google Pay and local methods, on Stripe's own page | Nothing to set up — each checkout carries the plan's price |
| PayPal | You collect and pay it | PayPal balance, card and Pay Later, on PayPal's own page | Created in your PayPal account automatically |
| Airwallex | You collect and pay it | Card, wallets, and local methods such as PayNow and GrabPay, on Airwallex's own page | Created in your Airwallex account automatically |
The tax column is the one that matters. Paddle and Lemon Squeezy act as merchant of record: they are legally the seller, so they handle sales tax and VAT worldwide. Stripe, PayPal and Airwallex do not. With those you are the seller, and if you are registered for tax where your customers are, you include it in your prices and file it yourself.
Customers never choose between providers. Your workspace sells through one provider at a time, and you can change it later — see Switching provider below.
Choosing your provider
Setup → Payments shows every provider with its connection status and how many customers are subscribed through it.
- Open the provider you want and connect it (below).
- Come back to Payments and choose Use on that provider.
You can only choose a provider once it is connected and switched on.
Setting up your provider
Each provider has a step-by-step walkthrough, written for someone who has never done this before. Each one takes you from creating the account to a test purchase and going live:
- Setting up Paddle — Seller ID, API key and client-side token; a price in Paddle for each plan.
- Setting up Stripe — just a secret key. Nothing to set up per plan.
- Setting up PayPal — a REST app's Client ID and Secret, and the Webhook ID. Plans are set up for you.
- Setting up Lemon Squeezy — an API key, your store ID, and one product with three variants that every plan uses.
- Setting up Airwallex — Client ID and API key. Plans are set up for you.
Whichever you pick, the shape is the same:
- Create the account, and use its test or sandbox mode first.
- Copy its keys into Setup → Payments → (provider), tick Take payments, save, and use Test connection.
- Copy the private webhook address shown on that page into the provider, tick the events listed there, and bring its secret (or, on PayPal, its Webhook ID) back.
- Choose the provider on the Payments page.
- Buy a plan as your own customer, then cancel and refund it.
- Repeat steps 2 and 3 with live credentials.
The webhook is not optional
Whichever provider you use, the webhook is how a payment there becomes a plan and credits here, and how renewals, cancellations and refunds made on their side reach you. Without it, a customer's payment succeeds and nothing happens here.
What your customers see
With Paddle, checkout opens in a window over your page.
With every other provider, the customer is taken to that provider's secure checkout page, then brought back to their billing page. There is a short wait while the provider confirms the payment; their page says so, and their plan and credits appear within a minute.
Testing before you go live
Do not skip this. It takes ten minutes and catches everything.
- Use your provider's test mode (Test, Sandbox, or a test key)
- Register as your own customer in a private window
- Buy a plan with a test card or sandbox account
- Check the credits arrive and the plan shows on their account
- Cancel from the customer's billing page
- Check the cancellation appears at your provider too
When all six work, switch to live and enter your live credentials. Test and live credentials are different — you cannot reuse them — and the webhook has to be set up again on the live side. With Paddle, you also need live price IDs on your plans; with Lemon Squeezy, the live store's variant IDs.
Refunds
Your customers → Payments. Find the payment and choose Refund.
You can refund in full or in part. The refund is always raised with the provider that took the payment, whichever one you sell through today. Some providers confirm a refund before the money moves; until they do, the payment shows Refund pending. Then:
- The money goes back to the customer
- The credits granted by that payment are reversed
- The subscription it paid for is ended
- The customer is emailed
The payment record stays. You will always be able to see what happened.
Refunds started inside your provider's own dashboard reach here through the webhook and have the same effect, so it does not matter which side you start from.
Refunding a voucher works differently and is covered in Vouchers.
Renewals
Your provider charges the card and tells the platform. The platform grants the next allowance and emails the customer.
Reminders go out before a renewal charge, and expiry notices before a voucher or manual plan runs out. Anyone who has already cancelled is left alone — telling somebody their card is about to be charged when they have cancelled is worse than saying nothing.
You control the wording of all of it in Emails.
Cancellations
A customer cancelling from their billing page cancels at their provider too. Their plan keeps working until the end of the period they have paid for, and then ends.
On PayPal, the subscription stops at PayPal straight away, because PayPal cannot stop one at the end of a period. Nothing more is charged, and the customer keeps their plan here until the period they paid for runs out — the same result.
They are not refunded automatically — cancelling and refunding are different things. Refund from Payments if you want to give the money back as well.
Switching provider
Switching only changes where new checkouts go. Before you confirm, the platform tells you how many customers are subscribed through your current provider.
Those customers stay where they are. They keep being renewed, cancelled and refunded through the provider they signed up with, until they cancel. Nobody's card details move between providers, and nobody is charged twice.
So keep the old provider's keys saved until its last subscriber has gone.
The "Take payments" switch
Each provider's settings page has a Take payments switch. Turning it off stops new checkouts through that provider. It does not cut off customers already paying through it: you can still cancel and refund them, as long as the keys stay saved.
If something is not working
Payments succeed but nothing happens here. The webhook. Check the URL is exactly the one shown on your settings page and that every event listed above is subscribed. Then check the secret: the signing secret on Paddle, Stripe, Airwallex and Lemon Squeezy, or the Webhook ID on PayPal. On Stripe and Airwallex, also check the webhook's API version matches the one on your settings page.
Refunds made in Paddle do not show here.
Your Paddle notification destination is missing the adjustment.created and
adjustment.updated events.
Webhooks show as rejected. Usually the secret, or on PayPal the Webhook ID. Copy it again — it is easy to miss a character.
A customer cannot check out. The checkout page shows the reason. The usual ones:
- The provider is not connected, or Take payments is off
- Test mode with live credentials, or the other way round
- Paddle: the plan has no Paddle price ID, or the price is not active in Paddle
- Lemon Squeezy: no variant for that plan's period, or the plan is priced in a currency other than your store's
Test payments worked, real ones do not. Test credentials left in place. Live needs live credentials and a live webhook — and, on Paddle, live price IDs; on Lemon Squeezy, the live store's variant IDs.
I cannot choose a provider on the Payments page. It is not ready yet. Open its settings, save its keys with Take payments ticked, and use Test connection.
Next: Vouchers
Something here out of date, or a question this does not answer?
Back to contents