Sacred Lantern Studio

Service 03 / Stripe Payments

Taking money is the start.
Reconciling it is the finish.

The hard part of payments isn't wiring Checkout.

It's duplicate webhooks shipping the same order twice, dropped events leaving

orders stranded, and month-end reconciliation that never quite matches.

Who this is for

Does this sound familiar?

「Someone paid and never got their order」

「The same order sent two delivery emails」

「A customer cancelled their subscription and kept getting charged」

「Month-end reconciliation never matches Stripe and we can't find the gap」

What you get

01Payment path audit: order → payment → webhook → fulfilment → refund, endpoint by endpoint
02Checkout or Payment Element integration with success/cancel pages and state write-back
03Idempotent webhook handling: event-ID deduplication plus state-machine guards
04Webhook signature verification and replay protection against forged requests
05Order state machine: pending / paid / fulfilled / refunded, illegal transitions rejected
06Reconciliation script: diff Stripe transactions against database orders, output discrepancies
07Failure runbook: recovering a paid-but-lost webhook, rolling back fulfilment on refund

What I don't do

Stating the limits saves both sides more time than listing capabilities.

No regulated payment business

Technical integration only. Settlement, splits and cross-border compliance need licensed providers; my job is getting the interface right.

I don't take your Stripe account

Keys stay with you. I provide steps or demonstrate in test mode. If I need direct access you grant temporary permission and revoke it after.

No zero-failure promise

Stripe can fail too. What I can do is make your local logic correct under duplicate, delayed and out-of-order events.

Stripe only

WeChat Pay and Alipay have different flows and aren't in this scope.

Timeline and pricing

One-off payments$700Checkout + idempotency + state machine + reconciliation3–7 working days
With subscriptions$1,700Above + Subscription + trials + cancel and upgrade paths7–10 working days

Fixed pricing, not hourly. Under $2,200: 50% upfront, 50% on acceptance. Above: three instalments. Third-party costs (server, API, domain) are not included.

Why take my word

Common questions

What does idempotency actually mean here?

Stripe may send the same event more than once (retries, network jitter). Your handler must produce identical state whether it runs once or five times. The standard approach: store the event ID as a unique key and skip if it already exists.

What if payment succeeds but the webhook never arrives?

You need a fallback: when the user hits the success page, actively query the Stripe session and write back the state. Two paths means one failing doesn't strand the order.

How is proration handled?

Stripe computes the prorated amount automatically, but your system must receive and display those events. I wire proration events into the notification logic so users don't see unexplained amounts.

Can we rehearse in test mode first?

Required. Stripe provides test cards and a test clock. I run every failure path — declined card, 3D Secure, refund, cancellation — in test mode before going live.

What's actually broken?

Can't take money, shipping twice, or numbers that don't reconcile? Each has a different fix. Describe the symptom and I'll tell you whether it's an hour or a rebuild.

Describe the problem

Other services

Public pricing, written boundaries, and an honest no when it's not a fit. That saves more time than any promise.