Setting up PayPal
A click-by-click walkthrough for connecting your own PayPal business account, testing it with a pretend buyer, and going live. No technical knowledge neede...
A click-by-click walkthrough for connecting your own PayPal business account, testing it with a pretend buyer, and going live. No technical knowledge needed.
Time: about 30 minutes.
You will move between three browser tabs: your PayPal account, the PayPal Developer Dashboard, and your workspace's back office. Keep them all open.
Before you start
Have these to hand:
- A PayPal business account. A personal account will not work. If you only have a personal one, PayPal lets you upgrade it, or open a business account at paypal.com/business.
- Your plans already created under What you sell → Plans & pricing
Step 1 — Open the PayPal Developer Dashboard
Go to developer.paypal.com/dashboard and log in with your PayPal business login. There is no separate account to create.
This is where PayPal gives out the keys a website needs to take payments. It has two halves, switched by a Sandbox / Live toggle at the top:
- Sandbox — a practice copy of PayPal with pretend money. Start here.
- Live — real money. You come back to this in step 8.
Step 2 — Create a sandbox app
- Make sure the toggle at the top says Sandbox.
- Open Apps & Credentials and click Create App.
- Give it a name you will recognise, such as your business name. If asked for a type, choose Merchant.
- Click Create App.
PayPal now shows the app's page with two values:
- Client ID — a long code
- Secret (sometimes labelled Secret key 1) — click to show it
Keep this page open; you need both in the next step.
Step 3 — Paste them into your workspace
- In your workspace, open Setup → Payments, find the PayPal card and click Set up.
- Set Environment to Sandbox.
- Paste the Client ID and the Secret.
- Tick Take payments through PayPal.
- Click Save, then Test connection.
The Status card should say Verified. If it says Failed, check you copied from a Sandbox app while Environment is Sandbox — mixing the two is the usual cause.
The status card also says Webhook ID missing. That is the next step.
Step 4 — Connect the webhook
The webhook is how PayPal tells your workspace that somebody has paid. Without it, customers are charged and get nothing. Do not skip this step.
- On your workspace's PayPal page, find Webhook endpoint and click the copy button next to the address. It is private to you — treat it like a password.
- Back on your app's page in the Developer Dashboard, scroll down to Sandbox Webhooks and click Add Webhook.
- Paste the address as the Webhook URL.
- Tick each of these events (there is a search box):
CHECKOUT.ORDER.APPROVEDPAYMENT.CAPTURE.COMPLETEDPAYMENT.CAPTURE.REFUNDEDPAYMENT.SALE.COMPLETEDPAYMENT.SALE.REFUNDEDBILLING.SUBSCRIPTION.ACTIVATEDBILLING.SUBSCRIPTION.UPDATEDBILLING.SUBSCRIPTION.RE-ACTIVATEDBILLING.SUBSCRIPTION.SUSPENDEDBILLING.SUBSCRIPTION.PAYMENT.FAILEDBILLING.SUBSCRIPTION.CANCELLEDBILLING.SUBSCRIPTION.EXPIRED
- Click Save.
- The webhook now appears in the list with a Webhook ID — a short code of letters and numbers. Copy it.
- In your workspace, paste it into Webhook ID and click Save.
PayPal has no "secret" to paste. Instead your workspace asks PayPal to confirm every notification against this ID, which is why payments are only recorded once it is filled in.
Step 5 — Turn PayPal on for your customers
Open Setup → Payments and click Use PayPal on the PayPal card.
Nothing to set up for your plans. The first time somebody subscribes to a plan, it is created in your PayPal account automatically.
Step 6 — Find your pretend buyer
The sandbox comes with a pretend customer account to pay with.
- In the Developer Dashboard, open Testing Tools → Sandbox Accounts.
- Find the account marked Personal, open its ⋯ menu and choose View/edit account.
- Note its email and password. (They are pretend — PayPal made them.)
Step 7 — Make a test purchase
- Open your website in a private (incognito) window and register as a customer, using a different email from your own login.
- Choose a paid plan and click Pay. You are taken to PayPal.
- Log in with the pretend buyer from step 6 and approve the payment.
- You are brought back to your billing page. Within a minute the plan and credits appear.
- In your back office, Your customers → Payments shows the payment.
Try it with a monthly plan and with a lifetime plan or credit pack — PayPal handles subscriptions and one-off payments differently, so it is worth seeing both work. Then try cancelling and refunding.
Step 8 — Go live
- In the Developer Dashboard, switch the toggle at the top to Live.
- Open Apps & Credentials and create an app again, exactly as in step 2. Live apps have their own Client ID and Secret.
- In your workspace's PayPal page, set Environment to Live, paste the live Client ID and Secret, click Save and Test connection.
- Repeat step 4 on the live app, under Live Webhooks. You get a new Webhook ID; paste it in and save.
- Make one small real purchase yourself, then refund it.
You are live.
Good to know
- Tax: PayPal does not collect or pay sales tax, VAT or GST for you. If you need to charge tax, include it in your plan prices.
- Other currencies: if your plans are priced in a currency your PayPal account does not hold, PayPal may hold those payments until you accept them. In your PayPal account's settings, look for payment receiving preferences and choose to accept and convert payments in other currencies automatically.
- Cancelling: PayPal cannot stop a subscription at the end of a period, so when a customer cancels, PayPal stops charging them straight away. They keep their plan here until the period they paid for runs out.
- Changing prices: change the price on the plan here. The next new subscription uses the new price; existing subscribers keep theirs.
If you get stuck
"Failed" after Test connection. The Client ID or Secret is wrong, or comes from the other half of the dashboard. Sandbox credentials only work with Sandbox, live ones only with Live.
Paid in PayPal, nothing here. Check the Webhook ID is pasted in and is the one for the same half (Sandbox or Live) as your credentials, and that every event is ticked. On the app's page in the Developer Dashboard, PayPal lists recent webhook deliveries and whether they worked.
The buyer is not sent back to your site. They closed PayPal before it finished. The payment is still picked up through the webhook within a minute.
Something here out of date, or a question this does not answer?
Back to contents