Merging Midtrans (revenue) and IRIS (vendor payments) into a unified wallet so merchants pay vendors instantly from their revenue — a retention-first redesign that drove $600M+ GTV.
Merchants lived across two of our products. Midtrans managed revenue — receiving, tracking, withdrawing and exporting for reconciliation. IRIS handled vendor payments through a wallet. They never talked to each other.
The story that crystallised it: Andre runs a store and an online shop. He collects revenue in Midtrans but pays his fabric & transport vendors from IRIS. To pay them he first has to move money out of Midtrans — a 3-day withdrawal — then top up IRIS. On payment day, the money simply wasn't there.

The friction of moving money between "money-in" and "money-out" pushed merchants toward competitors like Xendit that offered a unified balance — a direct GTV and retention risk.

With a tight timeline, I leaned on quantitative data + targeted qual. I used Google Analytics to find the key flows and exactly where users got stuck, and validated the unified-balance need through focus interviews and competitor analysis.

With a retention-first model and real backend constraints (two wallets still maintained separately), I planned a deliberate three-phase release so we kept momentum even if the final phase slipped.
Bring IRIS into the Midtrans dashboard with merged transaction & statement pages so merchants track income and expenses together and reconcile at once — while wallets stayed separate. Staging the complexity kept the learning curve gentle.
Let merchants pay vendors directly from the revenue balance. Because withdrawal of the disbursement balance wasn't yet possible, I designed for that constraint honestly — making the unified-but-limited balance legible.

Navigation was a mess of inconsistencies, dead-ends and repetition — e.g. "Add payout" existed in both the nav and the disbursement list. I ran an internal card-sorting session with sales and business stakeholders to surface their assumptions, then turned those into hypotheses to validate.


I iterated each phase against usability tests. Users wanted the balance breakup shown right next to the effective balance, and crucially wanted to know how much was still under cut-off so they could plan vendor payments.

Phase 3 delivered the ideal unified wallet — surfacing the priority information that drives the add-vs-withdraw decision, plus an in-dashboard "add money" that instantly moves funds from bank to wallet.

I made sure the UI could scale and shipped thorough documentation for a clean handover, so future enhancements would be effortless thanks to the restructured system.

Stop merchants from moving money to move money.— The principle behind the unified wallet
By unifying the wallet and the dashboard around the merchant's real decisions, we removed the single biggest reason merchants leaked volume to competitors.