Thank you!
We'll be in touch soon.
With Stripe's shift from Card Element to Payment Element, I found myself deep in the weeds of a significantly more asynchronous payment flow. It needed to support real-time user interactions while still respecting backend integrity, legal obligations, and the subtleties of real-world edge cases.
The biggest shift was moving from a fully synchronous, user-driven flow to one that relied on backend processing triggered by Stripe's webhook events. Orders could no longer be finalized during the initial request. Instead, they needed to be finalized asynchronously and only after a successful payment confirmation.
There was no room for guesswork here. These systems directly impact revenue, user trust, and compliance. So I approached the design with care, ensuring the system would be reliable, traceable, and aligned with the broader business logic.
The architecture I landed on introduced a dedicated post-payment processing layer. A webhook endpoint listens for Stripe's confirmation events and triggers a background job to verify the payment and finalize the order. The worker is built to fail clearly and explicitly if something goes wrong, with detailed logging that makes it easy to trace the source of the problem and act on it quickly.
The frontend also needed to accommodate this new flow. I helped shape a payment processing experience that gave the backend time to complete its work before transitioning the user to a final state. The result was no limbo states, clearer user feedback, and a backend that reflects the actual status of things.
This was one of those projects that changed how I think. I came in expecting a UI upgrade and left with a much deeper understanding of asynchronous systems, payments, and the edge cases that hide in plain sight. I also read more Stripe documentation than any one person reasonably should. Typical.
There's something really satisfying about building things that don't just work, but work in the right way. Where the system holds up under pressure. Where errors are visible. Where failure is safe, not silent.
I care about that kind of thing. And I care about growing through the work I take on. Not just technically, but also in how I approach complexity, communication, and ownership. I'm genuinely grateful for the learning this project gave me, and proud of how it pushed me forward.
Lizelle Smit
Software Engineer
Lizelle is a driven software engineer at puzzl, known for her relentless curiosity and commitment to excellence. She landed her role by spotting and fixing a bug during her interview - a move that perfectly captures her proactive spirit. Clients consistently praise her for going above and beyond.
See all our project case studies.
How we chose between SQL and NoSQL for a multi-brand marketplace.
We'll be in touch soon.