software-payments
Production-grade payment integration for Stripe, Paddle, Adyen, and more. Use when implementing checkout, subscriptions, webhooks, or billing.
What this skill does
# Payments & Billing Engineering
Use this skill to design, implement, and debug production payment integrations: checkout flows, subscription management, webhook handling, regional pricing, feature gating, one-time purchases, billing portals, and payment testing.
Defaults bias toward: Stripe as primary processor (most common), webhooks as source of truth, idempotent handlers, lazy-initialized clients, dynamic payment methods, Zod validation at boundaries, structured logging, and fire-and-forget for non-critical tracking. For complex billing, consider a billing orchestrator (Chargebee, Recurly, Lago) on top of Stripe/Adyen.
---
## Quick Reference
| Task | Default Picks | Notes |
|------|---------------|-------|
| Subscription billing | Stripe Checkout (hosted) | Omit `payment_method_types` for dynamic methods |
| MoR / tax compliance | Stripe Managed Payments / Paddle / LemonSqueezy | MoR handles VAT/sales tax for you |
| Mobile subscriptions | RevenueCat | Wraps App Store + Google Play |
| Enterprise / high-volume | Adyen | 250+ payment methods, interchange++ pricing |
| Complex billing logic | Chargebee / Recurly on top of Stripe | Per-seat + usage, contract billing, revenue recognition |
| Usage-based billing | Stripe Billing Meters or Lago (open-source) | API calls, AI tokens, compute metering |
| UK Direct Debit | GoCardless | Bacs/SEPA/ACH DD, lowest involuntary churn |
| EU multi-method | Mollie | iDEAL, Bancontact, SEPA DD, Klarna — 25+ methods |
| Online + POS | Square | Unified commerce: online payments + in-person readers |
| Bank-to-bank (A2A) | Open Banking (TrueLayer / Yapily) | Zero card fees, instant settlement, no chargebacks |
| Webhook handling | Verify signature + idempotent handlers | Stripe retries for 3 days |
| Feature gating | Tier hierarchy + feature matrix | Check at API boundary |
| One-time purchases | Stripe Checkout `mode: 'payment'` | Alongside subscriptions |
| Billing portal | Stripe Customer Portal | Self-service management |
| Regional pricing | PPP-adjusted prices per country | Use `x-vercel-ip-country` or GeoIP |
| PayPal button | Stripe PayPal method or PayPal Commerce Platform | Avoid Braintree — deprecated 2026, EOL Jan 2027 |
| BNPL (e-commerce) | Klarna (via Stripe/Mollie/direct) | Split payments; UK regulation expected 2026-27 |
| Testing | Stripe CLI + test cards | `4242 4242 4242 4242` |
## Scope
Use this skill to:
- Implement checkout flows (hosted, embedded, custom)
- Build subscription lifecycle management (create, upgrade, downgrade, cancel)
- Handle webhooks reliably (signature verification, idempotency, error handling)
- Set up regional/multi-currency pricing (PPP, emerging markets)
- Build feature gating and entitlement systems
- Implement one-time purchases alongside subscriptions
- Create billing portal integrations
- Test payment flows end-to-end
- Debug common payment integration issues
## When NOT to Use This Skill
Use a different skill when:
- **General backend patterns** -> See [software-backend](../software-backend/SKILL.md)
- **API design only (no payments)** -> See [dev-api-design](../dev-api-design/SKILL.md)
- **Conversion optimization** -> See [marketing-cro](../marketing-cro/SKILL.md)
- **Business model / pricing strategy** -> See [startup-business-models](../startup-business-models/SKILL.md)
- **Security audits** -> See [software-security-appsec](../software-security-appsec/SKILL.md)
---
## Decision Tree: Payment Platform Selection
Three platform layers (can be combined):
| Layer | Role | Examples |
|-------|------|----------|
| **Payment Processor** | Moves money, payment methods, fraud | Stripe, Adyen, Mollie, Square |
| **Merchant of Record (MoR)** | Handles tax, legal, disputes for you | Paddle, LemonSqueezy, Stripe Managed Payments |
| **Billing Orchestrator** | Subscription logic, dunning, revenue recognition | Chargebee, Recurly, Lago (open-source) |
| **Direct Debit** | Bank-account recurring pulls | GoCardless (Bacs, SEPA, ACH) |
| **Open Banking (A2A)** | Bank-to-bank instant payments | TrueLayer, Yapily |
```text
Payment integration needs: [Business Model]
STEP 1: Choose your processor
- Default / most common -> Stripe
- Enterprise, >$1M/yr, 250+ payment methods -> Adyen
- EU-focused, need iDEAL/Bancontact/SEPA -> Mollie
- Need PayPal button -> Stripe (PayPal method) or PayPal Commerce Platform
- WARNING: Do NOT start new projects on Braintree (deprecated 2026, EOL Jan 2027)
STEP 2: Do you need a MoR?
- Handle own tax + compliance -> Skip MoR, use processor directly
- Want tax/VAT/disputes handled -> Stripe Managed Payments, Paddle, LemonSqueezy
- Indie / small SaaS -> LemonSqueezy (simplest MoR)
- EU-heavy customer base -> Paddle (strongest EU VAT handling)
STEP 3: Is billing logic complex?
- Simple tiers (free/pro/enterprise) -> Stripe Billing is sufficient
- Per-seat + usage, contract billing, rev-rec -> Chargebee or Recurly on top of Stripe
- Usage-based (API calls, AI tokens) -> Stripe Billing Meters or Lago (open-source)
- B2C subscriptions, churn focus -> Recurly (strong revenue recovery)
STEP 4: Platform-specific needs
- Mobile app (iOS/Android) -> RevenueCat (wraps both stores)
- Hybrid (web + app) -> RevenueCat + Stripe (share customer IDs)
- Marketplace / multi-party -> Stripe Connect
- UK Direct Debit recurring -> GoCardless (Bacs DD, lowest involuntary churn)
- Multi-method EU checkout -> Mollie (25+ methods, single integration)
- Online + in-person POS -> Square (unified commerce)
- High-value A2A / zero card fees -> Open Banking (TrueLayer)
- BNPL for e-commerce -> Klarna (via Stripe, Mollie, or direct)
- One-time digital goods -> Stripe Checkout (payment mode)
- Physical goods -> Stripe + shipping integration
- Emerging markets / PPP -> Multiple Stripe Price objects per region
- Multi-currency -> Stripe multi-currency or Paddle (auto-converts)
- B2B invoicing -> Stripe Invoicing
```
For detailed platform comparison tables, see [references/platform-comparison.md](references/platform-comparison.md).
For UK/EU-specific platforms (GoCardless, Mollie, Square, Klarna, Open Banking), see [references/uk-eu-payments-guide.md](references/uk-eu-payments-guide.md).
---
## Stripe Integration Patterns (Feb 2026)
### 1. Client Initialization
**CRITICAL: Lazy-initialize the Stripe client.** Import-time initialization fails during build/SSR when env vars aren't available.
```typescript
// CORRECT: Lazy initialization with proxy for backwards compatibility
import Stripe from 'stripe';
let _stripe: Stripe | null = null;
export function getStripeServer(): Stripe {
if (!_stripe) {
const secretKey = process.env.STRIPE_SECRET_KEY;
if (!secretKey) {
throw new Error('STRIPE_SECRET_KEY is not configured');
}
_stripe = new Stripe(secretKey, {
apiVersion: '2026-01-28.clover', // Pin to specific version
typescript: true,
});
}
return _stripe;
}
// Proxy for convenience (backwards-compatible named export)
export const stripe = {
get customers() { return getStripeServer().customers; },
get subscriptions() { return getStripeServer().subscriptions; },
get checkout() { return getStripeServer().checkout; },
get billingPortal() { return getStripeServer().billingPortal; },
get webhooks() { return getStripeServer().webhooks; },
};
```
```typescript
// WRONG: Crashes during build when STRIPE_SECRET_KEY is undefined
import Stripe from 'stripe';
export const stripe = new Stripe(process.env.STRIPE_SECRET_KEY!); // Build failure
```
### 2. Checkout Session Creation
**CRITICAL: Do NOT set `payment_method_types`.** Omitting it enables Stripe's dynamic payment method selection (Apple Pay, Google Pay, Link, bank transfers, local methods) based on customer region and device.
```typescript
const session = await stripe.checkout.sessions.create({
customer: customerId,
mode: 'subscription',
// DO NOT set pRelated in Sales & CRM
process-mapper
IncludedUse when a BizOps lead, COO, or process-improvement owner needs to document an end-to-end business process (procurement, employee onboarding, incident handoff, customer-onboarding, claims adjudication) in BPMN-style notation, measure cycle times by stage, surface where work spends most of its time waiting vs. being worked, and quantify the gap between processing time and total elapsed time. Pairs Lean / Six Sigma / Theory-of-Constraints canon with deterministic stdlib-only Python tools to produce a process map, a ranked bottleneck list (with severity + root-cause hypothesis), and a cycle-time analysis (P50, P90, value-add ratio, Little's-Law throughput). Distinct from sales-pipeline, system-reliability (SLO), and strategic-OKR work — this is tactical process documentation for internal operations.
payment-integration
IncludedIntegrate payments with SePay (VietQR), Polar, Stripe, Paddle (MoR subscriptions), Creem.io (licensing). Checkout, webhooks, subscriptions, QR codes, multi-provider orders.
customer-success-manager
IncludedMonitors customer health, predicts churn risk, and identifies expansion opportunities using weighted scoring models for SaaS customer success
sales-engineer
IncludedAnalyzes RFP/RFI responses for coverage gaps, builds competitive feature comparison matrices, and plans proof-of-concept (POC) engagements for pre-sales engineering. Use when responding to RFPs, bids, or proposal requests; comparing product features against competitors; planning or scoring a customer POC or sales demo; preparing a technical proposal; or performing win/loss competitor analysis. Handles tasks described as 'RFP response', 'bid response', 'proposal response', 'competitor comparison', 'feature matrix', 'POC planning', 'sales demo prep', or 'pre-sales engineering'.
customer-success-manager
IncludedMonitors customer health, predicts churn risk, and identifies expansion opportunities using weighted scoring models for SaaS customer success
sales-engineer
IncludedAnalyzes RFP/RFI responses for coverage gaps, builds competitive feature comparison matrices, and plans proof-of-concept (POC) engagements for pre-sales engineering. Use when responding to RFPs, bids, or proposal requests; comparing product features against competitors; planning or scoring a customer POC or sales demo; preparing a technical proposal; or performing win/loss competitor analysis. Handles tasks described as 'RFP response', 'bid response', 'proposal response', 'competitor comparison', 'feature matrix', 'POC planning', 'sales demo prep', or 'pre-sales engineering'.