Unified payments abstraction layer supporting Stripe, PayPal, and Apple/Google Pay with normalized webhook events. Configure one or multiple processors — the plugin exposes a single API surface regardless of which processor handles a given transaction, with normalized order and transaction records in Postgres.
nself plugin install payments
nself build
nself start# Stripe
STRIPE_SECRET_KEY=sk_live_...
# PayPal
PAYPAL_CLIENT_ID=your-paypal-client-id
PAYPAL_CLIENT_SECRET=your-paypal-secret
# Both processors can be active simultaneously
# The payments plugin routes based on the "processor" field in each request| Variable | Required | Description |
|---|---|---|
DATABASE_URL | Yes | Postgres connection string for order and transaction storage |
STRIPE_SECRET_KEY | No | Stripe secret key — enables Stripe as a processor |
PAYPAL_CLIENT_ID | No | PayPal client ID — enables PayPal as a processor |
PAYMENTS_PORT | No | HTTP port for the payments service (default: auto-assigned) |
At least one processor key must be set. The plugin health endpoint reports which processors are active.
np_payments_orders — order records with processor, amount, currency, and statusnp_payments_transactions — individual charge/refund events linked to orders| Feature | Stripe | PayPal |
|---|---|---|
| Cards | Yes | Yes |
| Wallets (Apple/Google Pay) | Yes | Limited |
| Subscriptions | Yes (via entitlements plugin) | Basic |
| Connect / marketplace splits | Yes (nself-stripe plugin) | No |
| Webhook normalization | Yes | Yes |
Pro Plugin — ɳSelf+ | v1.0.0