Stack guides
Refund handling by stack
Education first: how Connect refund handling works in each environment, where the flags belong, and which failure modes the stack makes likely. These pages stand alone — FeeGuard observes outcomes externally rather than embedding in any of them.
Languages & frameworks
Stripe Connect refunds in Node and Express
The idiomatic Express refund route with both Connect flags set, idempotency on retries, and the async-handler races that bite everyone eventually.
Next.js and Stripe Connect: refunds across server actions and routes
Where refund logic belongs in App Router projects, why server actions need re-authentication before touching money, and the env-var trap that drops flags silently.
Rails and Stripe Connect: refunds, callbacks, background jobs
The Rails service object that refunds correctly, ActiveJob retry semantics that double-refund without idempotency keys, and callback chains that skip reversal.
Laravel and Stripe Connect: refunds beyond Cashier’s comfort zone
Cashier handles subscriptions beautifully and Connect refunds barely. The manual refund path Laravel teams actually need, with queue safety built in.
Django and Stripe Connect: views, signals, Celery tasks
Refund views setting both flags, why model signals are the wrong home for money movement, and Celery task retries under idempotency keys.
Python scripts for Stripe Connect reconciliation
A complete, honest Python script — pagination, proportional math, rounding tolerance, zero-decimal currencies — plus the maintenance notes keeping it truthful.
Infrastructure patterns
Stripe webhooks on serverless: Vercel and Lambda patterns
Edge functions verify signatures fast; Node functions touch secrets. Why the split matters, how timeouts create phantom failures, and designing for at-least-once.
Background jobs and recovery actions: Sidekiq and friends
Any worker framework retries. Retries without intent-scoped idempotency keys double-debit sellers. The worker contract for reversal jobs, framework-agnostic.
Queues between Stripe and your database: the durable middle
Direct-to-database webhook handlers lose events at exactly the wrong moments. The durable-queue pattern — publish, retry, delayed dispatch — and its failure modes.
Managing Stripe Connect webhooks with Terraform
Webhook endpoints drift between environments like any infrastructure. Codifying the eight required events, per-org endpoints, and rotation-safe secrets.
Platforms & data
No-code marketplaces: where refund control disappears
Managed marketplace tooling decides the refund path for you. How to find out what it does, the questions to ask support, and reconciling regardless.
Refund automation in Zapier and Make: what breaks quietly
Automation platforms can issue refunds — until empty field lookups, retry storms and missing tolerance math intervene. Honest limits, safer patterns.
Slack alerts for payment anomalies that matter
Alert fatigue kills monitoring. Routing only above-threshold findings, digest rhythms, and payload design letting finance act from Slack without dashboards.
Stripe data in your warehouse: syncing for reconciliation
Warehouse syncs make Stripe data queryable at scale. The join finding unreversed transfers in SQL, its edge cases, and how latency eats recovery windows.