Designing mass payouts for mobile crypto teams

Crypto Office users paid team members and external partners through individual crypto transfers. I proposed and designed a mobile batch-payment workflow covering recipient preparation, funding, review, and recovery from errors. After launch, I proposed spreadsheet import in response to user feedback; the update received positive responses from users who had struggled to copy their payout lists.

Product
Crypto Office · Telegram Mini App
My role
Sole Product Designer · end-to-end design
Team
PM, frontend and backend engineers, CTO
Design
Initial release: approximately 1–2 weeks
Import update: approximately 1 week
Status
Shipped
Mass payout workflow from recipient preparation to review and completion

From individual transfers to a batch workflow

Saved contacts made wallet addresses easier to reuse, but users still had to configure each payment separately. Stakeholders discussed my mass payout proposal with some of our largest users, and we agreed to develop it.

The design challenge was to make a large payout manageable on a small screen: users needed to assemble recipients, choose funding sources, correct problems, and inspect the financial details before sending.

Preparing a batch without losing context

Payout preparation involved several supporting decisions, including selecting wallets, choosing a currency, and reusing recipient lists. I considered separate screens for these settings, but chose contextual bottom sheets so users could make a selection and return directly to the payout they were preparing.

The first release supported typing or pasting addresses and amounts, as well as saving recipient lists for reuse. Saved lists could be edited and updated or saved as a new list, supporting recurring payments without rebuilding the recipient data each time.

Contextual bottom sheets for payout settings and source-wallet selection

Long wallet addresses competed with payment amounts for limited horizontal space. I shortened addresses in the recipient list to a beginning-and-ending format, such as xxxxx…xxxxx, so the address and amount could fit on one line. This kept the list compact enough to scan on mobile. When the input field was active, addresses expanded to show their full values.

Teams could also fund a payout from multiple wallets. Engineering defined the intermediate payout-wallet mechanism, which collected funds before distribution. I designed how users selected source wallets and reviewed their combined amount, making that funding structure understandable in the interface.

Recovering without rebuilding the payout

The recipient list kept validation within the preparation flow. Invalid addresses, incorrect or missing amounts, and addresses incompatible with the selected network were highlighted for correction. Empty rows were ignored, so unused spreadsheet rows did not create unnecessary errors.

Insufficient funds required a different response. A user could discover the balance problem after already preparing a substantial recipient list.

My initial design offered only a top-up action. After discussing interrupted workflows with the PM, I added the option to save the payout as a draft. The revised design supported two paths:

  • Funds can be added now: top up and continue the prepared payout.
  • Funds are unavailable for now: save a draft and return to it later.

This change treated a funding problem as a possible pause in the task, rather than assuming the user could resolve it immediately.

Insufficient-funds recovery with options to top up or save the payout as a draft

Reviewing the payout before sending

Before confirmation, users could review the selected currency, source wallets, intermediate payout wallet, recipient addresses and amounts, total payout amount, and commission in one place. Tapping “All” in the “Amounts and receiving addresses” section opened the list of full addresses and their corresponding amounts.

After confirmation, the interface showed that the payout had been created and that blockchain processing was still underway. Transfer history contained both confirmed and unsuccessful payouts, giving users a place to inspect results after processing.

Payout review, blockchain processing, and transfer-history results

Testing and implementation

I reviewed the prototype with the PM and primary stakeholders using actual payout lists. Our company, APD, paid salaries in crypto, so these internal testers had direct experience with the task.

During implementation, I worked closely with frontend and backend engineers, answered behavior questions, and checked implemented error states. I also refined icons and components and added states as implementation exposed details that needed clarification.

Adapting recipient entry after launch

After the first release, the support team shared feedback from approximately 15 frequent users working in teams of 50–100 members. I also read their messages myself. They maintained payout lists of roughly 50–100 addresses and amounts in spreadsheets, and found copying that data into the payout input inconvenient.

Saved lists supported reuse within Crypto Office, but these users were already maintaining their payment data elsewhere. I proposed spreadsheet import so they could bring that existing data into the payout workflow.

The follow-up release added XLSX upload and import through a Google Sheets link. I spent approximately one week designing this update, building on the existing recipient-entry flow.

Spreadsheet import through XLSX upload or a Google Sheets link

Delivery and feedback

Mass payout shipped to all users after internal testing. It replaced the need to configure each payment individually, and the subsequent import update supported users who maintained their payout data in spreadsheets.

After the import update, I personally read positive messages from users who had reported difficulty copying their payout lists, also reflected in support-team summaries. This feedback was qualitative; completion time and error rates were not measured. A next evaluation would compare preparation time and successful list entry for 50–100-recipient payouts using manual entry and spreadsheet import.

Back to case studies