Homecooked UPI Shopping Cart for Slow Commerce
If you are a tiny business wo/man, there are literally no easy payment products to sell online. They all need registration, KYC, complex setups, etc. This is even when you have a valid bank account. There are also platform and transaction fees.
In such scenarios, I see most people receive money on UPI apps like Google Pay or BHIM and ask you to send a screenshot of the transaction once the payment is complete so they can reconcile it. I think it works for most people. Ideally, even though only the UTR/Transaction ID is enough to map it, it’s not easy for the sender to send it. Most apps make it difficult to copy, too.
So I was wondering if we could include additional information in the transaction to make confirmation/reconciliation easier for small-time business folks. I was not looking for a real-time payment confirmation, as it is not needed by many. They can log in to the bank account, confirm the payment, and accept the order.
The flow would be. The customer creates a cart, checks out (final amount), a UPI QR code is displayed, and he pays. Then they submit the order by indicating that payment is complete1.
A small business person receives the order, opens the bank app, checks the payment, and marks the order as accepted if the payment is complete; otherwise, they reject the order. This flow works without effort if there are only a few orders a day. Let’s say there are ten or fifteen valid orders and another ten invalid orders. Then it becomes difficult for the merchant to confirm.
So I was wondering: if the transaction details the bank receives and displays to the merchant include the order_id (or the customer’s mobile_number) for which the payment is made. Then the merchant can just compare order_id and amount against the received and confirm the order. Most banks allow you to download a transaction statement in CSV or PDF format. You can script to read it and confirm the orders once a day. I know it’s not real-time. But I am thinking about slow commerce and not quick commerce.
One can easily generate a QR code for their UPI ID that apps can use to send payments. It’s a simple link inside the QR code that makes it possible. In the link parameters, you can specify the amount (am), currency (cu), receiver’s UPI ID (pa), Receivers Name (pn) etc.
There is also a field called tn. I think it’s called transaction notes or remarks. It’s what you see in UPI Apps as remarks/note/comments, etc. The interesting thing to note is that it appears in the receiver’s bank statement. Each app allows a different note length, and some also allow special characters. But I have found 10-digit alphanumeric to be safe. It’s allowed by almost all apps. It appears clearly in the bank statement of the receiver. Now we can use it creatively.
upi://pay?pa=thej@upi&pn=Thej&tn=<mobile_number>&am=<full_amount>&cu=INR
We can use it to send order_id, customer_id, or mobile_number if you are building a simple, homemade shopping cart payment system. I wish the regular bank accounts had API access. But for now, EoD, you can export the transactions as PDF or CSV and map them.

Above is the screenshot of bank statement. In that case I sent string qwert12345 as tn and hence that appears in my statement.
I built a small dummy demo using Claude. In the video demo below I sent a dummy customer mobile number 9945299452 as the tn and hence that would appear in my bank transaction statement.
- This is where it changes from regular flows ↩


