Stripe
The gold standard for payments infrastructure. Handles subscriptions, one-time charges, invoicing, tax, and fraud detection. Used by millions of businesses globally — the default choice.
Why Stripe?
You need battle-tested, enterprise-grade payments
You need subscriptions, trials, or metered billing
You want the largest ecosystem of payment integrations
Signal Breakdown
What drives the Trust Score
Download Trend
Last 12 months
Tradeoffs & Caveats
Know before you commitYou sell digital goods and need VAT managed automatically (try Paddle)
You're in a country Stripe doesn't support
You need a no-code checkout without engineering effort
Pricing
Free tier & paid plans
Free to integrate
2.9% + $0.30 per transaction
No monthly fee — pay per transaction
Cost Calculator
Estimate your Stripe processing fees
Estimated monthly cost
$788 – $963/mo
Standard rate: 2.9% + $0.30 per card transaction. Interchange+ available at higher volume.
Estimates only. Verify with official pricing pages before budgeting.
Often Used Together
Complementary tools that pair well with Stripe
Learning Resources
Docs, videos, tutorials, and courses
Get Started
Repository and installation options
View on GitHub
github.com/stripe/stripe-node
npm install stripepip install stripeQuick Start
Copy and adapt to get going fast
import Stripe from 'stripe';
const stripe = new Stripe(process.env.STRIPE_SECRET_KEY!);
const session = await stripe.checkout.sessions.create({
payment_method_types: ['card'],
line_items: [{ price: 'price_xxx', quantity: 1 }],
mode: 'subscription',
success_url: 'https://yoursite.com/success',
cancel_url: 'https://yoursite.com/cancel',
});
redirect(session.url!);Code Examples
Common usage patterns
Webhook handler
Verify and process Stripe webhook events in Next.js
import Stripe from 'stripe';
import { headers } from 'next/headers';
const stripe = new Stripe(process.env.STRIPE_SECRET_KEY!);
export async function POST(req: Request) {
const body = await req.text();
const sig = (await headers()).get('stripe-signature')!;
const event = stripe.webhooks.constructEvent(
body, sig, process.env.STRIPE_WEBHOOK_SECRET!
);
if (event.type === 'customer.subscription.created') {
const sub = event.data.object;
await db.updateUserSubscription(sub.customer as string, sub.status);
}
return Response.json({ received: true });
}Customer portal
Let users manage their own billing
import Stripe from 'stripe';
const stripe = new Stripe(process.env.STRIPE_SECRET_KEY!);
export async function POST(req: Request) {
const { customerId } = await req.json();
const session = await stripe.billingPortal.sessions.create({
customer: customerId,
return_url: 'https://yoursite.com/dashboard',
});
return Response.json({ url: session.url });
}One-time payment intent
Accept a one-time card charge
const paymentIntent = await stripe.paymentIntents.create({
amount: 2000, // $20.00 in cents
currency: 'usd',
automatic_payment_methods: { enabled: true },
metadata: { userId: '123', orderId: 'ord_abc' },
});
return Response.json({ clientSecret: paymentIntent.client_secret });Community Notes
Real experiences from developers who've used this tool