Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.usepaykit.dev/llms.txt

Use this file to discover all available pages before exploring further.

npm install @paykit-sdk/paypal

Setup

import { PayKit } from '@paykit-sdk/core';
import { paypal } from '@paykit-sdk/paypal';

export const paykit = new PayKit(paypal());
Required env vars:
PAYPAL_CLIENT_ID=...
PAYPAL_CLIENT_SECRET=...
PAYPAL_SANDBOX=true
PAYPAL_WEBHOOK_SECRET=...

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
const webhook = paykit.webhooks
  .setup({ webhookSecret: process.env.PAYPAL_WEBHOOK_SECRET! })
  .on('payment.created', async event => { /* ... */ })
  .on('subscription.created', async event => { /* ... */ });

await webhook.handle({
  body: rawBody,
  headersAsObject: Object.fromEntries(request.headers),
  fullUrl: request.url,
});

Raw PayPal events

paykit.webhooks
  .setup({ webhookSecret: process.env.PAYPAL_WEBHOOK_SECRET! })
  .on('paypal.PAYMENT.SALE.COMPLETED', async event => {
    // typed against PayPal's API types
  });