Redesigning POS Payments Around the Sale

Fintech / Android POS / Product Design

Redesigned an Android POS app to group split payments into a single sale and recover from card declines. Split-payment support contacts fell 40% in the first month.

Problem

The app recorded each card charge separately. When customers used multiple cards or split a bill, merchants had to track the remaining balance manually and reconcile disconnected payment records.

Audience

Merchants and staff at small businesses running 50 to 300+ transactions a day on a handheld Android POS terminal.

What I Did

Product Design

UX Research, Interaction Design

Information Architecture

Strategy, Planning, Direction

Fixing the POS Sale Model

Problem

The app recorded each card charge separately. When customers used multiple cards or split a bill, merchants had to track the remaining balance manually and reconcile disconnected payment records.

Audience

Merchants and staff at small businesses running 50 to 300+ transactions a day on a handheld Android POS terminal.

What I Did

Product Design

UX Research, Interaction Design

Information Architecture

Strategy, Planning, Direction

Company

BSI

Fintech company offering payment infrastructure and merchant services

Team

Moein Saboohi
Product Designer

Ahmad Alavi
Product Manager

Ali Omrani
Android Developer

Duration

April 2025 - September 2025
6 months

Softwares

Figma

Figma

FigJam

FigJam

Overview

While running a café alongside my product design work, I used the same Android POS terminal as my staff. A customer could pay with several cards, but the app treated each charge as a separate transaction. There was no shared record of the sale or the amount still due.

I documented the problem, brought merchant research to the provider, and joined the project on a part-time contract. Working with the product manager and Android developer, I redesigned split payments, payment recovery, and transaction history around a sale that could contain multiple payments.

Walkthrough of the redesigned sale flow, with multiple payments linked to one purchase.

The problem: one sale, several disconnected payments

When a customer used a second card or a group split a bill, merchants restarted the payment flow for each charge. They calculated the remaining balance themselves and used handwritten notes to connect payments that belonged together. Receipts and transaction history reflected individual charges rather than the complete purchase.

Comparison of the app's card-charge model and the merchant's sale model

Comparison of the app's card-charge model and the merchant's sale model.

Research with eight merchants

Over four weeks, I spoke with eight owners using the same app: three cafés, a clothing retailer, a bookstore, a supermarket, and two restaurants. I asked them to walk through payments that had been difficult to complete or reconcile.

Merchant interview findings about split payments and reconciliation

Merchant interview findings about split payments and reconciliation.

All eight described split payments as a recurring part of their work, and six of them kept a manual notepad to track partial payments. A supermarket owner reported spending 20–30 minutes on evening reconciliation because her terminal counted charges while she was checking customer purchases. A restaurant owner described processing five separate payments for one table and keeping the running total himself.

These interviews helped identify the model mismatch and its consequences. The sample was small and focused on existing users of one POS app.

A sale needed its own record and status

The app needed to distinguish the total purchase from the events used to pay for it. A sale would hold the total amount, linked payments, remaining balance, and completion status. Each card charge would remain a separate payment within that sale.

A sale needed to hold the total, remaining balance, and status, while keeping each card payment as a separate event.

Gaps caused by recording card charges without a shared sale record

Gaps caused by recording card charges without a shared sale record.

This model addressed four connected problems: disconnected records for group payments, no clear recovery after a card declined, separate receipts for a single purchase, and transaction counts that were difficult to reconcile with sales.

Sale record, separate card payment events and the merchant transaction history

Summary of the sale model and declined-card recovery described above. This diagram does not represent the payment processor’s implementation.

Agreeing the first release with product and engineering

I presented the interview findings, current flow, and model comparison to the product team. Engineering identified dependencies in the data model, reporting, and receipt generation. Together, we scoped the first release around split payments and sale grouping in the app's transaction history.

Full accounting and reporting integration remained outside this phase. I documented that dependency for the next phase and worked through two review cycles with the product manager and Android developer before release.

We scoped the first release around split payments and sale-level history, with accounting integration deferred to a later phase.

Designing the Android terminal flow

We aligned on the sale model before redesigning the screens. The previous flow showed where merchants had to restart a transaction and calculate the outstanding balance.

On the Android terminal, the merchant needed to read the payment state and decide what to do next while serving a customer. I organized the flow around the sale total, the amount collected, and the balance still due. These values connected amount entry, payment recovery, and history, so the merchant could continue the same purchase without reconstructing it from separate charges.

Previous POS payment flow with separate card transactions

Previous POS payment flow with separate card transactions.

1. Set the sale total before collecting payments. The merchant entered the purchase amount once. Each successful charge reduced the balance on that sale, so subsequent payments continued against the same total.

2. Keep the remaining balance visible. After each payment, the app showed the amount collected and the amount still due. The merchant could continue collecting payments or leave the sale partially paid, with the outstanding balance visible. A partial payment was distinct from a fully paid sale.

3. Group records at the sale level. History showed a sale's total and completion status, with individual payments available inside the record. Receipts could reflect the full sale or an individual's share of a group payment.

Redesigned POS flow for collecting multiple payments against one sale

Redesigned POS flow for collecting multiple payments against one sale.

Recovering from a declined card

If one card succeeded and the next declined, the sale remained open. The completed payment stayed attached to it, and the merchant could see the outstanding amount before choosing the next action. This made recovery part of the payment flow rather than requiring a new, disconnected transaction.

A declined card should leave the completed payment intact and the remaining balance visible.

Before and after comparison of recovery when a card payment fails

Before and after comparison of recovery when a card payment fails.

This recovery flow concerns a confirmed card decline. A pending or unknown payment result is a different condition; the examples here do not demonstrate timeout handling, duplicate-charge prevention or settlement behavior.

Making transaction history match the purchase

A sale-level history entry connected the total, status, and individual payments. Merchants could inspect the payments behind a sale without reconstructing the relationship from separate entries.

Before and after comparison of sale grouping in POS transaction history

Before and after comparison of sale grouping in POS transaction history.

Reported outcomes after release

The redesigned flows shipped in an app update. Merchant follow-up: The same eight merchants reported that average end-of-day reconciliation time for split-payment situations fell from 22 minutes to about four minutes. This measure concerned reconciling split payments, rather than the duration of the payment itself. At my café, staff stopped using the payment notepad during the first week.

Provider support report: The support team reported 40% fewer contacts related to split-payment confusion and reconciliation discrepancies in the first month after launch. This was a change in reported contact volume, rather than a measured error rate across all transactions. Both outcomes came from follow-up reporting, not a controlled comparison.

Reported changes in reconciliation time and payment-related support contacts

Reported changes in reconciliation time and payment-related support contacts.

What I learned

Merchant workarounds exposed a missing relationship in the product's model. The notepad linked payments to a purchase, so that relationship needed to exist in the app.

Split bills and payments across several cards could share one underlying model, while keeping the amounts and next actions clear for the merchant.

The release also depended on agreeing boundaries with engineering. Deferring accounting integration let us address the in-app payment experience while making the remaining dependency explicit.

About

I'm a product designer focused on complex workflows and reusable systems. I use working prototypes to test ideas and work with engineering through implementation and design QA.

Previous

Previously, I worked as a Senior Product Designer at Bettermode on enterprise onboarding, community templates, and the app design system. Before that, I was a Senior Designer at JobVision, working on job-search workflows, a shared design system, and the Annual Salary Report.

Current

I co-founded Kolig, an AI workspace for teams. I lead product and design for AI teammates, using prototypes to test new workflows. Alongside Kolig, I work as a Product Designer at SCRYPT.

Other Experiences

Design Mentor at ADPList

Digital Designer, Gaming at Cafe Bazaar

About

I'm a product designer focused on complex workflows and reusable systems. I use working prototypes to test ideas and work with engineering through implementation and design QA.

Previous

Previously, I worked as a Senior Product Designer at Bettermode on enterprise onboarding, community templates, and the app design system. Before that, I was a Senior Designer at JobVision, working on job-search workflows, a shared design system, and the Annual Salary Report.

Current

I co-founded Kolig, an AI workspace for teams.

I lead product and design for AI teammates,

using prototypes to test new workflows.

Alongside Kolig, I work as a Product Designer

at SCRYPT.

Other Experiences

Design Mentor at ADPList

Digital Designer, Gaming at Cafe Bazaar

About

I'm a product designer focused on complex workflows and reusable systems. I use working prototypes to test ideas and work with engineering through implementation and design QA.

Previous

Previously, I worked as a Senior Product Designer at Bettermode on enterprise onboarding, community templates, and the app design system. Before that, I was a Senior Designer at JobVision, working on job-search workflows, a shared design system, and the Annual Salary Report.

Current

I co-founded Kolig, an AI workspace for teams. I lead product and design for AI teammates, using prototypes to test new workflows. Alongside Kolig, I work as a Product Designer at SCRYPT.

Other Experiences

Design Mentor at ADPList

Digital Designer, Gaming at Cafe Bazaar