Payments are handled on the server
The browser only gets a one-time code to open the Paystack window. Before marking an order paid, the server checks that the amount, currency and reference match what Paystack reports.
OT Collectives is a fashion label in Lagos. I designed and built their online store, including Paystack payments and an admin the owner uses every day on their phone.
The brand’s motto is “Dress different. Normal is boring,” and the founder wanted a store that looked the part. Customers had to be able to pay by card, bank transfer or USSD, and get their order updates on WhatsApp.
The founder also wanted to run the store without calling a developer. That meant adding new pieces, marking a size as sold out and moving orders along, all from a phone.
Each product page shows which sizes are still available and crosses out the ones that have sold. On a phone you can add to your bag in one tap, and the bag shows how close you are to free delivery.

Customers pay with Paystack by card, transfer or USSD. The browser never gets a payment key. The server creates the transaction, and only marks the order as paid after Paystack confirms it.


The owner sees new orders and moves each one to packed, shipped or delivered with a tap. They can also add products, change sizes and stock, and edit the homepage. Changes show up on the store straight away.


The browser only gets a one-time code to open the Paystack window. Before marking an order paid, the server checks that the amount, currency and reference match what Paystack reports.
I used Postgres row-level security, so only the admin can change products and orders. Even if the UI had a bug, the database would refuse the write.
Pages are served from cache and refresh as soon as the owner saves a change in the admin.
Sentry tells me about errors, and about any payment that went through without its order being confirmed.
“Told you what I want and you delivered. Thought I’d have issues, but it’s 💯. You even got it done on time.”
I’d track stock for each size so sizes sell out on their own, and send WhatsApp updates automatically when an order moves.