<!-- BusyBot node reference — https://busybot.net/tools/paypal-trigger/ -->

> Node: PayPal Trigger (`paypal_trigger`) · Webhook trigger · v1
> Category: Finance · Credentials: PayPal (`payPalApi`)
> Updated: 2026-08-16

# PayPal Trigger

> Trigger workflow on PayPal payment events

## Overview

Webhook trigger that listens for PayPal webhook events. PayPal sends POST requests to this webhook when configured events occur in your PayPal account. Supports 60+ event types covering payment sales, billing agreements, subscriptions, disputes, payouts, invoices, checkout orders, and more. PayPal uses a server-side verification API rather than HMAC signatures -- in sandbox mode, verification is skipped; in live mode, the webhook checks PayPal transmission headers for authenticity. Use this trigger to automate workflows based on payment completions, subscription lifecycle changes, dispute notifications, and other PayPal activity.

**Category:** Finance  
**Tool Name:** `paypal_trigger`  
**Version:** 1

**Appearance:** Icon: `si-paypal` | Color: `#003087`

## Node Type

**Trigger** — webhook (receives incoming HTTP callbacks)

## Input / Output

| Direction | Port(s) |
|-----------|--------|
| Input | None (trigger node) |
| Output | `Output` |

## Credentials

This tool requires **PayPal** credentials.
See the [Credentials Guide](https://busybot.net/credentials/pay-pal-api/) for setup instructions.

### Parameters

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Events | `multiOptions` | Yes | `[]` | The PayPal events to listen for. Select * for all events. |
| | | | | Options: `*` (any event), `BILLING.PLAN.CREATED`, `BILLING.PLAN.UPDATED`, `BILLING.SUBSCRIPTION.CANCELLED`, `BILLING.SUBSCRIPTION.CREATED`, `BILLING.SUBSCRIPTION.EXPIRED`, `BILLING.SUBSCRIPTION.RE-ACTIVATED`, `BILLING.SUBSCRIPTION.SUSPENDED`, `BILLING.SUBSCRIPTION.UPDATED`, `CHECKOUT.ORDER.APPROVED`, `CHECKOUT.ORDER.COMPLETED`, `CHECKOUT.ORDER.PROCESSED`, `CHECKOUT.ORDER.SAVED`, `CHECKOUT.ORDER.VOIDED`, `CUSTOMER.DISPUTE.CREATED`, `CUSTOMER.DISPUTE.RESOLVED`, `CUSTOMER.DISPUTE.UPDATED`, `CUSTOMER.MANAGED-ACCOUNT.ACCOUNT-CREATED`, `CUSTOMER.MANAGED-ACCOUNT.ACCOUNT-UPDATED`, `IDENTITY.AUTHORIZATION-CONSENT.REVOKED`, `INVOICING.INVOICE.CANCELLED`, `INVOICING.INVOICE.CREATED`, `INVOICING.INVOICE.PAID`, `INVOICING.INVOICE.REFUNDED`, `INVOICING.INVOICE.SCHEDULED`, `INVOICING.INVOICE.UPDATED`, `MERCHANT.ONBOARDING.COMPLETED`, `MERCHANT.PARTNER-CONSENT.REVOKED`, `PAYMENT.AUTHORIZATION.CREATED`, `PAYMENT.AUTHORIZATION.VOIDED`, `PAYMENT.CAPTURE.COMPLETED`, `PAYMENT.CAPTURE.DENIED`, `PAYMENT.CAPTURE.PENDING`, `PAYMENT.CAPTURE.REFUNDED`, `PAYMENT.CAPTURE.REVERSED`, `PAYMENT.ORDER.CANCELLED`, `PAYMENT.ORDER.CREATED`, `PAYMENT.PAYOUTSBATCH.DENIED`, `PAYMENT.PAYOUTSBATCH.PROCESSING`, `PAYMENT.PAYOUTSBATCH.SUCCESS`, `PAYMENT.PAYOUTS-ITEM.BLOCKED`, `PAYMENT.PAYOUTS-ITEM.CANCELED`, `PAYMENT.PAYOUTS-ITEM.DENIED`, `PAYMENT.PAYOUTS-ITEM.FAILED`, `PAYMENT.PAYOUTS-ITEM.HELD`, `PAYMENT.PAYOUTS-ITEM.REFUNDED`, `PAYMENT.PAYOUTS-ITEM.RETURNED`, `PAYMENT.PAYOUTS-ITEM.SUCCEEDED`, `PAYMENT.PAYOUTS-ITEM.UNCLAIMED`, `PAYMENT.REFUND.COMPLETED`, `PAYMENT.SALE.COMPLETED`, `PAYMENT.SALE.DENIED`, `PAYMENT.SALE.PENDING`, `PAYMENT.SALE.REFUNDED`, `PAYMENT.SALE.REVERSED`, `RISK.DISPUTE.CREATED`, `VAULT.CREDIT-CARD.CREATED`, `VAULT.CREDIT-CARD.DELETED`, `VAULT.CREDIT-CARD.UPDATED` |

## Output Data

Each PayPal event produces one output item carrying the event envelope:

- `id` — PayPal's id for the webhook event
- `event_type` — the event that fired, e.g. `PAYMENT.SALE.COMPLETED`
- `event_version` — the version of the event schema
- `create_time` — when PayPal created the event
- `resource_type` — the kind of object the event is about, e.g. `sale`
- `resource_version` — the version of the resource schema
- `summary` — PayPal's human-readable summary of the event
- `resource` — the full resource object (amounts, state, ids, and so on)
- `links` — PayPal's HATEOAS links for the event
- `_trigger` — always `paypal_webhook`
- `_timestamp` — ISO 8601 timestamp of when the request arrived
- `_webhookEvent` — the same value as `event_type`

Reference the payload downstream by expression, e.g. `{{ $json.resource.amount.total }}`. Deliveries whose `event_type` is not in your **Events** selection are acknowledged without starting the workflow, and in live mode requests that fail PayPal's signature verification are rejected.

## Usage Examples

- Start workflow when a PayPal payment is completed
- Trigger on new subscription creation in PayPal
- React to payment refunds automatically
- Process billing agreement cancellations
- Handle PayPal dispute notifications

## Example Configuration

Fire when a payment completes:

```json
{
  "type": "paypal_trigger",
  "parameters": {
    "events": ["PAYMENT.SALE.COMPLETED"]
  }
}
```

Follow the subscription lifecycle:

```json
{
  "type": "paypal_trigger",
  "parameters": {
    "events": [
      "BILLING.SUBSCRIPTION.CREATED",
      "BILLING.SUBSCRIPTION.UPDATED",
      "BILLING.SUBSCRIPTION.SUSPENDED",
      "BILLING.SUBSCRIPTION.CANCELLED",
      "BILLING.SUBSCRIPTION.EXPIRED"
    ]
  }
}
```

Watch refunds and disputes:

```json
{
  "type": "paypal_trigger",
  "parameters": {
    "events": [
      "PAYMENT.SALE.REFUNDED",
      "PAYMENT.CAPTURE.REFUNDED",
      "CUSTOMER.DISPUTE.CREATED",
      "CUSTOMER.DISPUTE.RESOLVED"
    ]
  }
}
```

Receive every PayPal event on one workflow:

```json
{
  "type": "paypal_trigger",
  "parameters": {
    "events": ["*"]
  }
}
```

### Trigger Behavior

- **Activation:** When the workflow is activated, a webhook endpoint is registered with the service.
- **Deactivation:** The webhook is automatically unregistered when the workflow is deactivated.
- **Payload:** The incoming webhook payload is parsed and output as workflow items.
- **Verification:** Supports signature verification where applicable.

## Tips

Listens for PayPal webhook events. Configure which events to listen for (e.g. PAYMENT.SALE.COMPLETED, BILLING.SUBSCRIPTION.CREATED). The webhook URL is automatically generated -- register it in your PayPal developer dashboard. PayPal uses server-side verification via transmission headers in live mode; sandbox mode skips verification.