Connect PayPal, Polar or Paddle
Not every customer wants to type a card number, and not every business wants to file sales tax in every country it sells to. PayPal covers the first problem. Polar and Paddle cover the second: they act as the merchant of record and handle tax for you. Core Bookings can take booking payments through any of the three, next to Stripe and FluentCart.
Turn It On
- Go to Bookings → Settings → Modules. Under Payments and pricing, tick PayPal, Polar and Paddle and click Save modules.
- Open Bookings → Settings → PayPal, Polar, Paddle. There’s one tab per gateway.
- On a tab, choose Live or Sandbox (test payments) under Environment, fill in the credentials, and register the Webhook address shown on the tab with the provider, selecting the listed events.
- Tick Offer PayPal as a payment method for services (or Polar, or Paddle) and click the tab’s save button.
- Open a paid service in Bookings → Services and set Payment method to PayPal checkout, Polar checkout or Paddle checkout.
A gateway only switches on when its credentials and webhook secret are saved and it can charge in your booking currency. The notice at the top of each tab tells you which of those is missing. Secrets are stored encrypted, and a blank secret field keeps the saved value.
What Each Gateway Needs
| Gateway | Credentials | Where to get them |
|---|---|---|
| PayPal | Client ID, Secret, Webhook ID | PayPal Developer Dashboard → Apps & Credentials. Create a REST app for live or sandbox, add a webhook with the address from the tab, then copy the webhook ID. |
| Polar | Organization access token, Webhook secret | Create a token with products, checkouts and refunds (read and write) and orders (read). Add a webhook endpoint in Polar’s Settings → Webhooks using the Raw format. |
| Paddle | API key, Client-side token, Webhook secret key | Developer tools → Authentication. The API key needs transactions and adjustments (read and write). Add a notification destination with the address from the tab. |
Paddle needs two more steps: approve your site’s domain under Checkout → Website approval, and set it as the default payment link. Paddle keys and tokens belong to one environment, so a sandbox key is refused if you chose Live. For Polar, set the organization’s default currency to your booking currency.
Currencies and Tax
Each gateway accepts only some currencies. If your booking currency isn’t on its list, the tab says so and the gateway stays off.
- PayPal: AUD, BRL, CAD, CHF, CZK, DKK, EUR, GBP, HKD, ILS, MXN, MYR, NOK, NZD, PHP, PLN, SEK, SGD, THB, USD.
- Polar: AED, AUD, BRL, CAD, CHF, CZK, DKK, EUR, GBP, HKD, ILS, INR, MXN, MYR, NOK, NZD, PHP, PLN, SAR, SEK, SGD, THB, USD, ZAR.
- Paddle: AUD, BRL, CAD, CHF, CZK, DKK, EUR, GBP, HKD, ILS, INR, MXN, NOK, NZD, PLN, SEK, SGD, THB, USD, ZAR.
PayPal services use your own tax rates. Polar and Paddle charge tax themselves, so your Core Bookings tax rates don’t apply to their services. Their tabs have a Sales tax setting: Included in the service price (so the customer pays exactly what the booking form showed), added by the provider at checkout, or left to the provider (Polar decides by customer location, Paddle uses your account default). Paddle also has a Tax category. Anything other than Standard must be approved on your Paddle account first, or checkouts fail.
How a Payment Works
- The customer books and the time is held for about 32 minutes, for the deposit or the full amount.
- Continue to payment opens PayPal’s or Polar’s checkout page, or Paddle’s checkout overlay on a page of your site. Clicking it again reuses the same checkout.
- After paying, the customer comes back to their booking page.
- The provider’s webhook confirms the payment. The booking confirms only when the amount and currency match and the time is still free. Otherwise it goes to payment review.
PayPal only captures an approved payment while the hold is still open, so an expired hold is never charged. An open Paddle checkout is cancelled when its hold runs out. Refund from the appointment the same way you would for Stripe. Paddle may review a refund before approving it, and the booking shows refund pending until it does.
Limits
- Deposits work, but there’s no Pay remaining balance button. Collect the rest of a deposit booking offline. Online balances are only for Stripe and FluentCart bookings.
- Session packs, gift card sales, memberships and saved cards keep using Stripe or FluentCart.
- Each booking gets its own checkout. There are no saved payment methods or subscriptions through these gateways.
- Turning a gateway off stops new bookings on its services, but payments and refunds it already started still settle.
- Test each gateway in its sandbox before you take live payments. Saving credentials doesn’t run a payment.