Skip to main content

Setup

Required env vars:

How it works

PayPal doesn’t support standalone customer management — use payer information within orders instead. Metadata is stored as the order’s customId, so the combined length of all metadata keys and values must stay under 127 characters after JSON serialization.

Webhooks

Enable these events in your PayPal dashboard:
  • CHECKOUT.ORDER.APPROVED
  • CHECKOUT.ORDER.COMPLETED
  • PAYMENT.CAPTURE.COMPLETED
  • PAYMENT.CAPTURE.REFUNDED
  • BILLING.SUBSCRIPTION.CREATED
  • BILLING.SUBSCRIPTION.UPDATED
  • BILLING.SUBSCRIPTION.ACTIVATED
  • BILLING.SUBSCRIPTION.SUSPENDED
  • BILLING.SUBSCRIPTION.CANCELLED
  • BILLING.SUBSCRIPTION.EXPIRED

Raw PayPal events

Opt into any native PayPal event — typed against the full PayPal event catalog:
All available raw events:

provider_metadata

paykit.checkouts.create requires currency, amount, and itemName in provider_metadata because PayPal orders need explicit line-item data: