@kodekloud: System Design: Building a Bulletproof Payment Gateway! 🚀 Basic payment setups fail during network timeouts. To block catastrophic duplicate charges, enforce client-generated idempotency keys (UUIDs). The server saves this key first; if a duplicate request arrives, it immediately returns the cached result instead of re-charging the buyer. Never overwrite database rows to update payment statuses. Instead, implement an immutable ledger where every state change—authorized, captured, or refunded—creates a brand-new row. Securely ingest asynchronous updates using signed webhooks, validating event IDs before appending them to the timeline. This design writes intents to the ledger before calling the API, shields endpoints with idempotency keys, and uses webhooks to build a flawless, fully auditable financial history. #SystemDesign #SoftwareArchitecture #PaymentGateway #Stripe #BackendDevelopment #Microservices #FinTech #Database #Idempotency #Webhooks #TechTips #codingforkids

KodeKloud
KodeKloud
Open In TikTok:
Region: TH
Wednesday 27 May 2026 15:45:00 GMT
167592
15821
67
1159

Music

Download

Comments

6t9_z
Reo Trawndres :
Can you make it into a prompt for claude? ✨
2026-05-28 08:08:42
161
sopuruv
Obinna Victor :
I think this design needs a bit more high-level system thinking. UUID is fine, but it’s not the core idea. Idempotency is about same request = same result. If the key is random every time, retries can still lead to duplicates if the client regenerates it. That’s why many production systems lean toward deterministic keys (like order_id or transaction reference) when possible, rather than relying purely on UUIDs. Also, for real-world fintech systems, webhooks alone aren’t enough. They’re useful for near real-time updates, but they’re not 100% reliable they can be delayed, retried, or even missed. Reconciliation is what guarantees correctness. It’s where you periodically verify your system state against the payment provider and resolve inconsistencies. In practice, strong systems use both: Webhooks for speed (real-time signals)Ronciliation for correctness (eventual consistency and recovery)
2026-05-29 13:46:10
36
zudellix
Ellix🎙️ :
Can't I just use a third party system to run payments and then charge the customer card processing fee?
2026-06-26 17:47:19
0
th0mas1108
Tom :
Two kinds of people here 1- employed developers with experience. 2 - vibe coders trying to learn.
2026-05-31 12:44:45
66
temma_okereke
Temma :
I disagree on having different rows for each state. The Stripe API provides a "payment_intent" key that can be queried at any time to get the state of the payment. Stripe takes care of the overhead.
2026-05-28 17:49:36
12
ibideshi
Bideshi :
Wouldn't a network error that triggers two payments just trigger the generation of a new idemlotency key?
2026-05-28 12:39:52
10
kriiptonyte
Kryptonite :
Stripe takes care of idempotent key for payment. Stripe will not send multiple webhooks if acknowledged. Backend will just have to verify the webhook ID.
2026-05-28 12:59:23
19
mornyn_glory
Mornyn Glory :
Bro, I need your help with my Apple dev enrollment. I have my money but them no Dey mind me.
2026-06-24 01:10:16
1
drgideonvalor
Gideon Valor :
please bring me back...I'm building a startup
2026-06-16 18:48:48
7
kabzlegacy
Peter SKC :
storing all stages of a txn in a db will quickly result in a lot of rows, xn rows, for x stages, n transactions, i would rather have a saparate table/log.file audit trail, where the payments events are persisted and keep the transaction table cleaner
2026-06-03 18:22:51
3
omzsi
OMZSI :
the best approach is v4 and it's mostly a combination of all the other methods
2026-06-21 11:27:51
1
ridwanulhoquekawsar
Ridwanul Hoque Kawsar :
programming
2026-06-25 14:50:49
0
alex90pi
Aleksandar Vučenić :
if you wish to make an apple piefrom scratch, first you need to invent universe
2026-05-31 06:05:29
0
arashi3695
Arashi :
bro pls can you do a video on o paystack instead of stripe pls
2026-05-28 17:55:59
5
alxnxg0
nickname :
a ledger has nothing to do with payment status
2026-05-27 17:24:40
3
cybarian
cybarian :
Follow for follow back
2026-06-21 08:48:28
0
herampto
Herampto :
Tks. Help me a lot!!!
2026-06-21 02:12:37
0
chikaemeche
Chika Emeche :
very insightful content 🥰
2026-05-28 17:45:31
1
maaaaarifer
maaaaarifer :
You need callback/webhook to verify the transaction, I work in fintech company.
2026-06-03 00:52:48
0
thechazzynator
H⃞ a⃞H⃞ a⃞⚡️💯 :
Why are u building it from scratch let's start there
2026-06-15 21:30:45
0
whatsbuzznnigeria
What's Buzzn Nigeria :
idempotency is what I need
2026-06-10 16:50:10
0
1do_ny
Dony :
really good content
2026-05-28 18:15:20
0
digitalsolutionist
DIgital Solutionist :
I don't see the need to keep each status of the transaction separately
2026-06-10 08:49:15
0
m.estesiese_nag
Gizzy2x :
i love these very informative things when im in the process of building my app. Tiktok show me more
2026-06-05 11:01:19
0
matsonwashere
Matson :
Usefull
2026-05-27 17:09:09
0
To see more videos from user @kodekloud, please go to the Tikwm homepage.

Other Videos


About