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
Environment variables
Direct config
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=...
import { PayKit } from '@paykit-sdk/core';
import { createPayPal } from '@paykit-sdk/paypal';
export const paykit = new PayKit(
createPayPal({
clientId: '...',
clientSecret: '...',
isSandbox: true,
}),
);
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
});