Clever is Faris Petrol's payment card and app. The bulk charging system tops up many Clever cards from one merchant account: a spreadsheet becomes a batch that is checked, approved and sent card by card, with live progress and a clear outcome for each card. I designed and built it on my own in 2022, test-first, as a full-stack developer at Faris Petrol.
The new batch form, the approval that asks for the password, and a batch being sent card by card.
Everything the system doesSet upMerchantstheir Clever accounts,signed in onceUsers and rolesa permission foreach actionRegistered devicesonly these canopen the appRun a batchUpload a spreadsheetits totals must matchwhat was typedApprovalits own permission,and the passwordCancelcards not yet sentnever go outClose by handwith a note that stayswith the batchEvery cardOne job per cardqueued, and lockedwhile it is sentLive progressevery change reachesthe pageThree outcomesprocessed, failedor stuckFollow upSettle a stuck cardby a person, withthe passwordResend failed cardsnothing was charged,so it is safeError logevery failure, withthe platform’s replyExcel exportevery card’s resultin one file
From setting up merchants to following up on every card, built around the three outcomes.
Bulk charging at a glanceOperatorApproverDashboardLive updatesevery change reachesthe batch pagethe web app · registered devices onlypassword re-entry on key stepsbatches and their cardsMerchantsBatchesCards in a batchError logExcel exportUsers & rolesQueue · one job per card,locked while it is sentClever card platformone top-up per call,answered with an invoiceor an errora merchant account signsin once; its passwordis never storedDatabasebatches, cards, replies and errors
One web app, a queue that sends each card on its own, and live updates back to the page.
One web app, open only to registered devices, checks each spreadsheet and keeps the batches. An approved batch goes to a queue where every card is a job that calls the Clever API, and each answer is pushed back to the page.
The life of a batchOperatorUploadedApprovedSendingProcessedPartly processedapprovesendevery card chargedclosed by hand, with a notetotals mustmatch the filea permissionand a passwordone job per card,live progresscancel at any pointCancelledPartly cancellednothing was sentthe cards not yet sentnever go outa stuck card must be settledbefore a batch closes oris cancelledresults export to Excel
A batch is sent only after it is approved, and it can be stopped at any point before the end.
Uploading and approving are separate permissions. A merchant account has one open batch at a time, and closing a batch by hand needs a note.
Failed or stuckone jobper cardsent to thecard platformcards wait their turn;one failure neverstops the restlocked while it issent, so it can’tgo out twicewhat cameback?an invoiceno replyan errorProcessedthe card was chargedStuckoutcome unknown;held for a personFailednothing was charged;safe to send againa person checks the card on the platform, then marks itprocessed or failed and confirms with a passworda batch can’t be closedor cancelled while oneof its cards is stuck
An error and a silence lead to different places, because only an error proves nothing was charged.
The system never sends a stuck card again by itself. A person checks it on the platform and settles it, and that rule is what keeps a card from being charged twice.