> ## Documentation Index
> Fetch the complete documentation index at: https://docs.payglue.io/llms.txt
> Use this file to discover all available pages before exploring further.

# PayPal

PayPal works differently from providers like Polar or Lemon Squeezy. It is a **payment processor**, not a product catalog. This means a private paypal account does not create products for you instead, **you create subscription plans directly in your PayPal Business account, and PayGlue listens for the payment events those plans generate.**

## What PayPal supports in PayGlue

PayGlue supports **subscription plans** only. One-time PayPal Checkout payments are not supported.

When a subscriber activates, cancels, or expires a PayPal subscription, PayGlue receives a webhook event and updates the Ghost membership accordingly.

## Important requirements

<Warning>
  A **PayPal Business account** is required. Personal PayPal accounts cannot access Live API credentials or create subscription plans for merchant use.
</Warning>

* PayPal Business account (not personal)
* Live API credentials sandbox credentials do not work with PayGlue
* At least one active subscription plan created in your PayPal account

***

## Step 1: Create a subscription plan in PayPal

Subscription plans are managed in your PayPal Business dashboard — not in the developer portal.

1. Log in to [paypal.com](https://www.paypal.com) with your business account
2. In the left sidebar, click **Get Paid** (or "Accept Payments")
3. Click **Subscriptions**
4. Open the **Subscription Plans**
5. Click **+Create plan**

<Frame>
  <img src="https://mintcdn.com/payglue/WNeiFfUh0nA9TmNs/images/paypalcreat-esubscription.png?fit=max&auto=format&n=WNeiFfUh0nA9TmNs&q=85&s=6ee2277102c00162b3635447d8f104a2" alt="Paypalcreat Esubscription" width="1942" height="1314" data-path="images/paypalcreat-esubscription.png" />
</Frame>

6. Fill in the plan details: name, billing cycle (monthly or yearly), and price
7. Activate the plan  it must have status **ACTIVE** to appear in PayGlue

<Frame>
  <img src="https://mintcdn.com/payglue/WNeiFfUh0nA9TmNs/images/paypal-subscription-plan.png?fit=max&auto=format&n=WNeiFfUh0nA9TmNs&q=85&s=d043bf08238c1a50225e5c9d5ed4c09a" alt="Paypal Subscription Plan" width="1305" height="921" data-path="images/paypal-subscription-plan.png" />
</Frame>

After saving, each plan gets a **Plan ID** starting with `P-`. You will need this to build the checkout link (see Step 5).

***

## Step 2: Create a REST API app in the PayPal Developer portal

1. Go to [developer.paypal.com](https://developer.paypal.com)
2. Click **Apps & Credentials** in the left sidebar
3. Make sure you are in **Live** mode — click the toggle at the top left to switch from Sandbox to Live

<Frame>
  <img src="https://mintcdn.com/payglue/WNeiFfUh0nA9TmNs/images/Paypal-create-app.png?fit=max&auto=format&n=WNeiFfUh0nA9TmNs&q=85&s=4aef7c35a42dac88dd2ac454403b1f36" alt="Paypal Create App" width="1947" height="879" data-path="images/Paypal-create-app.png" />
</Frame>

<Warning>
  If you see a banner saying "Viewing sandbox API credentials. Upgrade your account to PayPal for Business to view live credentials"  your account is not yet a Business account or you are in Sandbox mode. Switch to Live at the top of the page.
</Warning>

<Frame>
  <img src="https://mintcdn.com/payglue/WNeiFfUh0nA9TmNs/images/paypalbusiness-account-1.png?fit=max&auto=format&n=WNeiFfUh0nA9TmNs&q=85&s=0ba30058093aef29dd5f2629dc55a04a" alt="Paypalbusiness Account" width="588" height="414" data-path="images/paypalbusiness-account-1.png" />
</Frame>

4. Click **Create App**
5. Give it a name (e.g. `PayGlue`) and select **Merchant** as the app type
6. After creation, copy the **Client ID** and **Client Secret**  you will need both in Step 4

<Frame>
  <img src="https://mintcdn.com/payglue/WNeiFfUh0nA9TmNs/images/Paypal-app-details.png?fit=max&auto=format&n=WNeiFfUh0nA9TmNs&q=85&s=c13888e5030658621f2f988b5d33abb6" alt="Paypal App Details" width="1932" height="1318" data-path="images/Paypal-app-details.png" />
</Frame>

***

## Step 3: Add a webhook to your app

1. Open your newly created app in the developer portal
2. Scroll down to the **Webhooks** section
3. Click **Add Webhook**
4. Paste this URL as the Webhook URL:

```text theme={null}
https://api.payglue.io/webhooks/paypal?tenant=YOUR-SLUG
```

Replace `YOUR-SLUG` with your PayGlue tenant slug (visible in the PayGlue dashboard URL or on the PayPal connection page).

5. Enable the following events:

| Event                            | Trigger                    |
| -------------------------------- | -------------------------- |
| `BILLING.SUBSCRIPTION.ACTIVATED` | New subscription started   |
| `BILLING.SUBSCRIPTION.CANCELLED` | Subscription cancelled     |
| `BILLING.SUBSCRIPTION.EXPIRED`   | Subscription expired       |
| `BILLING.SUBSCRIPTION.SUSPENDED` | Subscription paused        |
| `BILLING.SUBSCRIPTION.UPDATED`   | Subscription changed       |
| `PAYMENT.CAPTURE.COMPLETED`      | One-time payment completed |

6. Save the webhook — PayPal will show a **Webhook ID** after saving. Copy it.

<Frame>
  <img src="https://mintcdn.com/payglue/WNeiFfUh0nA9TmNs/images/Paypal-webhook-2.png?fit=max&auto=format&n=WNeiFfUh0nA9TmNs&q=85&s=0753e0429d348820f8c090588fb1bddc" alt="Paypal Webhook" width="1935" height="1301" data-path="images/Paypal-webhook-2.png" />
</Frame>

***

## Step 4: Enter your credentials in PayGlue

1. Open your PayGlue dashboard and go to **Providers**
2. Click **Connect PayPal**
3. Fill in the three fields:
   * **Client ID** — from your Live app in the developer portal
   * **Client Secret** — from your Live app in the developer portal
   * **Webhook ID** — shown after you save the webhook in Step 3
4. Click **Save credentials**
5. Click **Run health check** to verify the connection

The PayPal connection page also shows your full **Webhook URL** at the top. Use this when setting up the webhook in Step 3.

<Frame>
  <img src="https://mintcdn.com/payglue/WNeiFfUh0nA9TmNs/images/payglue-paypal.png?fit=max&auto=format&n=WNeiFfUh0nA9TmNs&q=85&s=9c0480590ef113a957fa1506e62ae552" alt="Payglue Paypal" width="1242" height="967" data-path="images/payglue-paypal.png" />
</Frame>

***

## Step 5: Map plans and add checkout links

After saving credentials, PayGlue loads your active PayPal subscription plans. You can use them in the [Buy Button](/buy-button/overview), [Paywall](/paywall/overview), and [Pricing Table](/pricing-table/overview) editors.

**How the checkout link works:**

PayPal subscription plans use a direct checkout URL. When a buyer clicks it, they are taken to a PayPal login page — they must have a PayPal account to subscribe. This is expected behavior: PayPal requires buyers to log in.

The checkout URL format is:

```text theme={null}
https://www.paypal.com/webapps/billing/plans/subscribe?plan_id=P-XXXX
```

Replace `P-XXXX` with your plan's ID (visible in the plan list in your PayPal business account).

In the editor, select your PayPal plan from the product picker, then paste the corresponding checkout URL manually into the URL field.

<Frame>
  <img src="https://mintcdn.com/payglue/WNeiFfUh0nA9TmNs/images/payglue-paypal-mapping.png?fit=max&auto=format&n=WNeiFfUh0nA9TmNs&q=85&s=eef84359a03c6d015e9c92362fbb8483" alt="Payglue Paypal Mapping" width="1242" height="967" data-path="images/payglue-paypal-mapping.png" />
</Frame>

***

## Step 6: Map plans to Ghost tiers

Open the **Buy Button**, **Paywall**, or **Pricing Table** editor in your PayGlue dashboard and select your PayPal subscription plan from the product picker. Choose the Ghost newsletter (tier) the member should receive and the welcome email type, then save.

The mapping is created automatically. When a subscriber activates the plan, PayGlue grants the matching Ghost tier.

See also: [Buy Button](/buy-button/overview) · [Paywall](/paywall/overview) · [Pricing Table](/pricing-table/overview)

***

## Supported events

| PayPal event                     | PayGlue action        |
| -------------------------------- | --------------------- |
| `BILLING.SUBSCRIPTION.ACTIVATED` | Grant Ghost tier      |
| `BILLING.SUBSCRIPTION.UPDATED`   | Keep tier active      |
| `BILLING.SUBSCRIPTION.CANCELLED` | Revoke Ghost tier     |
| `BILLING.SUBSCRIPTION.SUSPENDED` | Revoke Ghost tier     |
| `BILLING.SUBSCRIPTION.EXPIRED`   | Revoke Ghost tier     |
| `PAYMENT.CAPTURE.COMPLETED`      | Grant tier (one-time) |

***

## Buyer experience

When a buyer clicks a PayPal subscription checkout link, they see a **PayPal login page**. This is by design — PayPal requires buyers to have a PayPal account to manage a subscription. After logging in, they confirm the plan and are charged automatically on the billing cycle.

PayGlue receives the confirmation webhook and creates or updates the Ghost member automatically.
