Nicheloom

Market intelligence for builders — see what's gaining traction before it's crowded.

Stripe-no-webhooks

Sync your Stripe data to your Postgres DB

Details

External ID
46963177
Source
HN
Company
—
Product
Stripe-no-webhooks
Website domain
github.com
Launched
Feb. 10, 2026
Cohort
—
Upvotes
66
Upvotes percentile
0.8517520215633423
Tags
—
Fetched at
Sept. 7, 2026, 9:26 p.m.
Updated at
Sept. 7, 2026, 9:26 p.m.

Description

Hey HN, stripe-no-webhooks is an open-source library that syncs your Stripe payments data to your own Postgres database: https://github.com/pretzelai/stripe-no-webhooks.Here's a demo video: https://youtu.be/cyEgW7wElcsWhy is this useful? (1) You don't have to figure out which webhooks you need or write listeners for each one. The library handles all of that. This follows the approach of libraries like dj-stripe in the Django world (https://dj-stripe.dev/). (2) Stripe's API has a 100 rpm rate limit. If you're checking subscription status frequently or building internal tools, you'll hit it. Querying your own Postgres doesn't have this problem. (3) You can give an AI agent read access to the stripe.* schema to debug payment issues—failed charges, refunds, whatever—without handing over Stripe dashboard access. (4) You can join Stripe data with your own tables for custom analytics, LTV calculations, etc.It creates a webhook endpoint in your Stripe account to forward webhooks to your backend where a webhook listener stores all the data into a new stripe.* schema. You define your plans in TypeScript, run a sync command, and the library takes care of creating Stripe products and prices, handling webhooks, and keeping your database in sync. We also let you backfill your Stripe data for existing accounts.It supports pre-paid usage credits, account wallets and usage-based billing. It also lets you generate a pricing table component that you can customize. You can access the user information using the simple API the library provides: billing.subscriptions.get({ userId }); billing.credits.consume({ userId, key: "api_calls", amount: 1 }); billing.usage.record({ userId, key: "ai_model_tokens_input", amount: 4726 }); Effectively, you don't have to deal with either the Stripe dashboard or the Stripe API/SDK any more if you don't want to. The library gives you a nice abstraction on top of Stripe that should cover ~most subscription payment use-cases.Let's see how it works with a quick example. Say you have a billing plan like Cursor (the IDE) used to have: $20/mo, you get 500 API completions + 2000 tab completions, you can buy additional API credits, and any additional usage is billed as overage.You define your plan in TypeScript: { name: "Pro", description: "Cursor Pro plan", price: [{ amount: 2000, currency: "usd", interval: "month" }], features: { api_completion: { pricePerCredit: 1, // 1 cent per unit trackUsage: true, // Enable usage billing credits: { allocation: 500 }, displayName: "API Completions", }, tab_completion: { credits: { allocation: 2000 }, displayName: "Tab Completions", }, }, } Then on the CLI, you run the `init` command which creates the DB tables + some API handlers. Run `sync` to sync the plans to your Stripe account and create a webhook endpoint. When a subscription is created, the library automatically grants the 500 API completion credits and 2000 tab completion credits to the user. Renewals and up/downgrades are handled sanely.Consume code would look like this: await billing.credits.consume({ userId: user.id, key: "api_completion", amount: 1, }); And if they want to allow manual top-ups by the user: await billing.credits.topUp({ userId: user.id, key: "api_completion", amount: 500, // buy 500 credits, charges $5.00 }); Similarly, we have APIs for wallets and usage.This would be a lot of work to implement by yourself on top of Stripe. You need to keep track of all of these entitlements in your own DB and deal with renewals, expiry, ad-hoc grants, etc. It's definitely doable, especially with AI coding, but you'll probably end up building something fragile and hard to maintain.This is just a high-level overview of what the library is capable of. It also supports seat-level credits, monetary wallets (with micro-cent precision), auto top-ups, robust failure recovery, tax collection, invoices, and an out-of-the-box pricing table.I vibe-coded a little toy app for testing: https://snw-test.vercel.app. There's no validation so feel free to sign up with a dummy email, then subscribe to a plan with a test card: 4242 4242 4242 4242, any future expiry, any 3-digit CVV.Screenshot: https://imgur.com/a/demo-screenshot-Rh6UcqxFeel free to try it out! If you end up using this library, please report any bugs on the repo. If you're having trouble / want to chat, I'm happy to help - my contact is in my HN profile.

Enrichment

Theme
payments, billing, and wallet infrastructure
Vertical
Fintech
Function
Data infrastructure
Audience
Developer
AI stance
Not AI
Project type
Commercial product
Normalized one-liner
sync stripe data to postgres database
Manually corrected
False

Could you build this?

Yes It is a straightforward utility library that polls Stripe's paginated REST APIs and upserts the retrieved records into PostgreSQL tables.

Discussion

20 comments analyzed.

Competitors mentioned: Supabase stripe-sync-engine, Better-Auth's Stripe integration, dj-stripe (Django)

Concerns raised: Misleading name - actually uses webhooks internally, Stripe grace period quirks with subscription status, Payment failure edge cases affecting AI products, PCI compliance requirements unclear

Feature requests: Support for Clover payment processor, Webhook event recording and backfill system

Competitors

Other products that read as similar to this one — 110 launches clear the similarity bar, closest 8 shown.

Attention rank: #17 of 111 (itself plus its competitors, highest first — normalized so YC and Product Hunt are compared fairly).

Launched 102 days after the earliest competitor.

Other launches for this product

Same idea, different domain

Nobody's really built a data infrastructure tool for Media & entertainment yet.