Payments
stripe

Stripe

TypeScriptPythonRESTPaid

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.

License

Proprietary

Language

TypeScript / Python

82
Trust
Strong

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

npm downloads
11.8M / wk
Commits (90d)
94 commits
GitHub stars
3.9k ★
Stack Overflow
42k q's
Community
Very High
Weighted Trust Score82 / 100

Download Trend

Last 12 months

Tradeoffs & Caveats

Know before you commit

You 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 tier

Free to integrate

Paid

2.9% + $0.30 per transaction

No monthly fee — pay per transaction

Cost Calculator

Estimate your Stripe processing fees

500 txns
10100,000
50 $
5500

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

supabase

Supabase

Database & Cache

95Excellent
View
nextjs

Next.js

Frontend & UI

98Excellent
View
clerk

Clerk

Auth & Users

80Strong
View
vercel

Vercel

Hosting & Deploy

89Strong
View

Get Started

Repository and installation options

View on GitHub

github.com/stripe/stripe-node

npmnpm install stripe
pippip install stripe

Quick 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