How I got this idea
I wanted to solve the everyday problem where you want to buy something online but want to pay using two different methods, like paying half with your UPI account and the rest using your credit card, and making sure the system safely rolls back if one fails.
Problem
- Standard online checkouts restrict transactions to a single payment source, preventing customers from combining multiple balances.
- Splitting transactions across two independent payment gateways introduces severe concurrency risks, potentially leading to partial payments and double charges upon network drops.
Solution
- Engineering Approach: Created a transactional checkout router that manages two isolated payment authorization streams, ensuring atomicity.
- Architecture: Developed a Node.js express router managing concurrent payment requests linked to Razorpay API endpoints.
- What I Personally Built: Programmed the checkout router logic, integrated the Razorpay gateway capture APIs, and coded the transaction rollback listeners.
- Current Status & Result: Deployed backend checkout prototype demonstrating transaction safety during simulated gateway dropouts.
JavaScriptNode.jsRazorpay (Test Mode)REST API
Hardest Technical Challenge
Ensuring database and gateway consistency during partial payment failures. Solved by wrapping both payment authorizations in a database transaction block; if either stream fails, the system executes an automated rollback, triggering an instant API refund call to the captured gateway to prevent customer double charges.
Project Demo / Interface

What I learned
- Payment gateway API integration and reconciliation loops.
- Fintech database transaction design and ACID consistency.
- Idempotency controls and checkout error recovery paths.