Back to the file

Splitledger

Share this case study
SplitLedger on a phone held in one hand, showing a group balance of ₹5,000, with the Account, group detail, Friends and Activity screens laid out behind it against a sky

SplitLedger

Role
Product design + build
Timeline
August 2026 — in progress
Team
Solo
Skills
UX research
Competitive analysis
Product design
React Native

Overview

The trip

This started on a trip to Bir Billing. Five of us, four days — bike rentals, food, entry tickets, a hundred small purchases nobody wrote down because we were always halfway to the next thing.

Every night we'd get back to the hotel and try to reconstruct the day. Who paid for the bikes? Was that ₹400 lunch, or petrol? Logging it into Splitwise meant sitting through an ad between every expense — ten seconds, times thirty expenses, times four nights. None of us were buying Pro for one trip a year.

Then at the end, we wanted to see what we'd actually spent on food versus travel. There was no way to do it.

That's when I got curious. Was it just us, or was everyone quietly working around the same things?

An open travel-journal spread titled 'Bir Billing Road Trip' — polaroids of paragliding, mountain views and friends on a bus, beside printed receipts for paragliding, bike rental and pani puri, and route stickers for Bir Billing and Manali

Objectives

I went in with a hunch, not a plan. Before designing anything, I wanted to know whether the friction we'd hit was specific to our trip or common enough to be worth solving.

Discovery

  1. 01Find out how people actually track shared expenses — how they add bills, and how they organise them so the record still makes sense weeks later.To find out whether the pattern every app is priced against — logging as you pay — is what anybody actually does.
  2. 02Go through the alternatives — the competing apps, and the notes, sheets, and chat threads people use instead — and find where each one breaks down.To find out what the category has already solved, and what people reach for when they skip it entirely.
  3. 03Watch what actually happens to a group's tracking over a trip or a month. Does it fall apart? Is every group even trying to reach a final settle-up?To find out whether tracking really does fall apart, or whether that is only the easy thing to assume.
  4. 04Find out how groups really pay each other back — over UPI, in cash, or by picking up the next bill instead. Apps assume settling is one clean action. Check whether it is.To find out whether settling is the one clean action every tracker models it as.

Definition

  1. 05Identify what goes wrong for each kind of group — trip groups, flatmates, workplace groups, one-off event groups — rather than assuming they all want the same thing.To find out where each group is badly served before deciding what the product owes any of them — a workplace claim and a trip are not the same problem.
  2. 06Turn the findings into a ranked list of problems, and say plainly what solving them would look like.To decide what to design and build for, and what would count as having built it.

Competitor Analysis

Before asking anyone anything, I wanted to know what the category had already solved.

Partly to write better questions — you can't ask usefully about entry friction until you've walked the entry flows yourself. But mostly to avoid the most common failure in a project like this: treating a pain as an opportunity without checking whether other apps fixed it years ago. Four apps, audited against the objectives — Splitwise, Settle Up, Splid, and Google Pay's split feature — and beside them a shared note, because Objective 2 says to audit what people use instead and 38 of 59 use exactly that.

✓ VERIFIED June 2026 — Feature claims below are drawn from primary sources where possible: Splitwise’s App Store listing, Settle Up’s Play Store listing, and Google Pay India’s own help documentation. Pricing is the least reliable data here and is flagged where sources conflict.

Feature Matrix

SplitwiseSettle UpSplidGPay SplitA shared note
Free entry limit4/day published, 2–5 seenNoneNoneN/ANone
Ads on free tierYes, interstitialEvery 3rd expenseNoneNoneNone
Works offlineExisting groups onlyYesYes, fully localNoYes
All members must installYesNoNo account at allYesNo
Category breakdownPro onlyPremium onlyMinimalNoneNone
Debt simplificationYes, no explanationYes, fewest transfersYes, no explanationNoNone
Persistent group ledgerYesYesYesGroups, no balanceNo
Finding a past expenseSearch behind ProScroll onlyTitle searchIn chat, not searchableText search
Records how a balance was settledCheckbox, or PaytmCheckbox onlyCheckbox onlyPayment, no ledgerWhatever you type
UPI-native settlementNoNoNoYesNo
PricingSubscription; ₹49–₹1,399 by tierFree; ₹1,999/yr or ₹599 a weekFree, 1 group; ₹399 one-timeFreeFree

Where Each One Breaks Down

SPLITWISEKeeps making its free tier worseThe cap lands exactly where expenses pile up — a travel day makes eight to fifteen; the tier stops at five.
SETTLE UPDoes the job, nobody enjoys itReviewers call it dated, and there is no way to settle over UPI.
SPLIDFrictionless to join, shallow to live inNo receipt scanning, no splitting by item, barely any reporting — great for a two-week trip, thin for flatmates tracking all year.
GOOGLE PAY SPLITMoves money, keeps no recordStops being useful at the second expense.

Research and Discovery

The analysis told me what the category had already built. It could not tell me why people behave the way they do around it — whether the cap is why a group gives up halfway through a trip, or whether they would have drifted anyway; whether anyone actually wants the retrospective view that everybody paywalls. So the next thing was to ask, and to word each question carefully enough that it could come back with an answer I did not want. Four of the seven questions below came straight off that feature matrix. The other three came from the trip.

Research Questions

Seven questions. Each one is worded so that a boring or inconvenient answer still fits — if the only possible answer is the one I already expect, it isn’t a question, it’s a conclusion with a question mark on the end.

  • Question 1 — What happens between paying for something and it showing up in the group's record?To find out whether the daily cap ever bites. A handful a day is plenty if people log as they pay, and punishing if they log a whole day at once.
  • Question 2 — What do people do with a shared record after the spending stops?To find out whether anyone opens it again. Every app charges for the breakdown, which is only worth attacking if people actually want one.
  • Question 3 — How does a group's tracking change over the course of a trip or a month?To find out whether tracking survives — without assuming it collapses, or that reaching a final settle-up was ever the goal.
  • Question 4 — Who does the tracking work in a group, and how did it end up being them?To find out whether logging is one person's job rather than the group's. A product that assumes everyone logs is built for a group that does not exist.
  • Question 5 — How does a balance turn into money that has actually moved?To find out whether settling is one clean action or something that happens outside the app entirely. Every tracker in the audit stops at a checkbox once the money moves outside it, and none of them can settle over UPI.
  • Question 6 — What do people use besides these apps, and what makes them reach for it — or never reach for one at all?To find out what the real competitor is. If it turns out to be a note on someone's phone, then the thing to beat is not another tracker.
  • Question 7 — What does a wrong number cost a group, beyond the money?To find out what people are actually protecting. The other six ask what people do; none of them ask what it costs when the number is wrong and nobody can explain it.
Why These, and Not the Obvious Versions
The version I rejectedWhy
“When and how do people record an expense?”Two constructs in one question. “When” is a survey answer, “how” needs observation — bundled, the survey answers both badly. Question 1 asks about a single interval instead, and allows “nothing happens, they log it immediately.”
“What determines whether an expense is still legible later?”Assumes that legibility is the problem, and that it's a property of the entry itself. Question 2 allows the answer “they never look at it again,” which would kill a whole line of design work cheaply.
“Why do people abandon expense apps mid-trip?” — and its tidier cousin, “does tracking survive to settlement?”The first assumes people abandon it. The second assumes settling up is the goal, when plenty of flatmate groups never formally settle and are fine either way. Question 3 just asks how a group's tracking changes, and allows the answer “it didn't.”
“How is tracking work distributed within a group?”Passive phrasing hides the interesting part. “How did it end up being them” surfaces whether the role was chosen, defaulted into, or imposed — without asserting which.
“How do groups settle up, versus how apps model it?”The second clause is answered by desk audit, not by participants. Splitting it keeps the empirical question empirical; the comparison lives in Competitor analysis.
“What do people use instead, and what does it do better?”“Better” hands over the conclusion. Maybe nothing is better and the notes app was simply already open. “What makes them reach for it” is behavioural and stays neutral.
Nothing — this question was missing entirely.Six behavioural questions and none about what people are protecting. P1's line about everyone being “vaguely annoyed at each other for a month” is the most revealing thing in the study, and no question was designed to surface it. Money between friends is a social bond before it's an accounting entry.

Survey

I ran the survey first, to reach more people quickly and turn the right respondents into interview leads — asking for a call at the end of a 30-second form gets far more yeses than emailing a stranger to ask for one.

Survey Questions

15 questions · ~4 min · a Google Form, shared via WhatsApp groups, LinkedIn, Reddit

Screener

  1. Q1Have you split shared expenses with other people in the last 12 months — using anything at all?Yes / No — terminate on No
  2. Q2What have you used to do it?Multi-select: Splitwise · Settle Up · Google Pay · Paytm · Notes app · Spreadsheet · WhatsApp · Memory · Other

Branch: anyone not currently using a dedicated splitting app routes to the non-adopter branch below. Everyone else continues to Q3.Routing, not termination

Behaviour

  1. Q3When did you last use one?This week · This month · 1–3 months · 6+ months
  2. Q4What was the occasion?Trip · Flatmates · Dinner · Event · Other
  3. Q5When you’re out with a group, when do you usually record an expense?Immediately · A few hours later · End of day · End of trip · Someone else does it
  4. Q6If not immediately — why not?Open text
  5. Q7How does your group usually settle up?UPI · Cash · Bank transfer · We don't fully settle · Other
  6. Q8Has a balance ever gone unsettled for more than a month?Yes / No → if yes, what happened? (open)

Friction

  1. Q9Think of a time you stopped using a splitting app mid-trip or mid-month. What happened?Open text
  2. Q10What’s the most annoying part of using these apps?Open text — deliberately unprompted, no options offered
  3. Q11Have you ever gone back to check what a group spent money on, after the fact?Yes / No → what were you trying to find out? (open)
  4. Q12Have you ever used something outside an app — notes, sheet, WhatsApp — instead?Yes / No → why? (open)
  5. Q13When a balance or an expense looked wrong, what did you do?Multi-select: Asked in the app’s comments · Messaged or called whoever added it · Worked it out myself · Let it go · Other

Non-adopter branch

  1. N1How do you keep track of who owes what?Open text
  2. N2Have you ever tried an app for this?Yes, and stopped · Yes, briefly · No, never · Someone else in my group uses one
  3. N3What has kept you from using one?Open text — deliberately not “why don't you”, which invites justification
  4. N4Has your method ever gone wrong? What happened?Open text

Close

  1. Q14Anything about splitting expenses with friends that apps get wrong?Open text
  2. Q15Willing to do a 20-minute call?Email capture

What Came Back

✓ 68 RESPONSES, 59 usable — nine screened out at Q1 for not having split anything in a year. Of the 59, seventeen took the non-adopter branch.
  • Logging is not a live activity. Two-thirds of adopters recorded expenses at the end of the day or later, or left it to someone else entirely. Only nine of the 42 logged as they paid — which is the behaviour every free tier in Competitor analysis is priced against.
  • Most people already have a workaround. Thirty-eight of 59 had kept a shared expense somewhere other than an app — a note, a sheet, a WhatsApp message. Twenty-one of the adopters at Q12, plus all seventeen on the branch, for whom it is the only method. That is the competitor, not Settle Up.
  • Balances sit open, and it isn’t neglect. Thirty-four had let one sit unsettled for over a month, and eleven said their group never fully settles at all — not because paying up is hard, but because it doesn’t need to happen. Whoever is owed just gets picked up on the next round, so the group evens out in favours rather than in cash. Settling up is not the finish line the apps assume it is — except on a trip, where a fixed end date turns the same balance into something people really do square away before everyone goes home.
  • People do want to look back at the record. Twenty-five had gone back to check what a group spent money on after the fact — what the trip cost per person, who paid for the hotel, whether food had blown the budget. The category view that answers the last of those is the thing Splitwise and Settle Up both paywall.
  • Fourteen left an email. Six of them became the interviews below.
The Response Summary, Straight From the Form
Q1 pie chart: of 68 responses, 86.8 per cent yes and 13.2 per cent no.
68 responses, nine of them screened out at Q1.
Q2 bar chart of the tools people use, and the routing question split 71.2 to 28.8 per cent.
What people reach for, and the split that sends seventeen down the branch.
The four non-adopter questions, with their text responses and one pie chart.
The branch: how the seventeen keep track without a splitting app. N2 is the card the caution above is about.
Q5 pie chart of when an expense gets recorded, and Q6's text responses.
Q5 is the chart behind the two-thirds figure. Q6 says why.
Q7 pie chart of how groups settle up, and Q8 on balances left unsettled.
Eleven never fully settle; thirty-four have left a balance over a month.
Q10 text responses on the most annoying part of using these apps.
Q10, unprompted with no options offered. The ads come up first.
Q13 bar chart of what people did when a number looked wrong: 25 messaged or called whoever added it, 19 asked in the app's comments, 6 worked it out themselves, 5 let it go.
Q13. Twenty-five call or message somebody; six work it out alone.
Q11 on going back to check group spending, what they wanted to know, and Q12 on using something outside an app.
Twenty-five went back to look; half the adopters had kept the record elsewhere.

Once the survey came back, I picked six people to interview — not the most enthusiastic responses, but the ones that spanned the widest range of habits: someone who logs an expense the moment it happens, someone who logs it days later, someone who’d quit a tracking app outright, and two who’d never installed one. That spread mattered more than enthusiasm, because five people who all track instantly would have told me nothing about why anyone else doesn’t.

Interview Questions

35–40 min · loose script · they open their own app while we talk

Warm-up · 5 min

  • Tell me about the last trip or shared living situation where money got split.
  • Who handled it?

Reconstruct the real workflow · 15 min

  • Walk me through the last expense you logged. Where were you, what were you doing?
  • What happened between the money leaving your account and it going into the app?
    • Probe: what were you doing in that gap? Was anyone waiting on you?
  • Can you open the app and walk me through what’s in there? (looking at the real thing catches what people don’t think to mention)
  • Tell me about a time it didn't go smoothly.

Settlement · 8 min

  • How did the money actually move at the end?
  • Was there ever a balance nobody chased? Tell me about that one.

Looking back · 7 min

  • After it was over, did you ever look at the record again? What for?
  • Did you find what you needed?
  • Was there ever a number you didn’t agree with? What did you do about it?
    • Probe: did you sort it out inside the app, or somewhere else?

Close · 5 min

  • If you could change one thing, what?
  • Anything I should have asked?

Moderator rules: never ask “would you like it if…” — hypotheticals produce polite lies. Ask about last time, not usually. After anything interesting, stay silent and count to three.

Sequence (Why Survey and Interviews)

Survey first, to reach a lot of people. Then interviews, to explain the patterns the survey turned up — and the people I interviewed came straight out of Q15. That order worked because the open-ended part had already happened by itself: I started from a problem I had lived through, so the survey only had to check whether it was just us, and the interviews only had to explain why.

A problem I’d alreadylivedSURVEY · 15 questions ·breadthFRICTION• What happens to the recordafterwards?• How does tracking change over a trip?• What do people use instead of theseapps?BEHAVIOUR• What happens betweenpaying and recording?• How does a balance becomemoney that moved?NON-ADOPTERS• What do people use insteadof these apps?• What is at stake in gettingthis right?INTERVIEWS · 6 people ·depthLOOKING BACK• What happens to therecord afterwards?THE REAL WORKFLOW• What happens betweenpaying and recording?• Who does the tracking work,and why them?SETTLEMENT• How does a balancebecome money thatmoved?Q15 · willing to do a call?
How the two fit together — the survey feeding the interview guide, with the questions each part is there to answer written out rather than numbered.
Usability Test Protocol

Everything in Research and discovery depends on people telling me things. I trust that for what happened, and not at all for where they struggled — nobody remembers the screen they gave up on, and everyone has a theory about why they did. So this is the third tool, and the first that watches rather than asks. It runs against Splitwise before it runs against SplitLedger, because “our flow is faster” means nothing until there is something to be faster than.

Setup

  • Participants: 4–6, screened for having split expenses on a trip in the last year. More than 6 rarely surfaces anything new.
  • Format: ~30 min, talking out loud as they go, their own phone, their own account where possible.
  • Baseline: Splitwise first. Without something to compare against, “our flow is faster” is just a claim.
  • Rule: do not help. The moment you explain where a button is, that task is void.

Scenario

“You’re going on a three-day trip with four friends. Some things you’ll pay for, some they will. Keep track of it so nobody has to do maths at the end of the trip.”

Tasks

#TaskWhat it tests
1Create a group for the trip and add your four friends — one of whom doesn't have the app.Whether a group can include someone who won't install the app
2Log something you just paid for.Baseline: how long one straightforward expense takes
3You forgot yesterday entirely. Log five expenses from yesterday now.Reconstruction from memory, and whether a backlog gets abandoned
4Log an expense that you and one friend paid for together.Whether the model handles two people paying for one thing
5Put your phone in airplane mode and log an expense.What happens with no connection — and whether the user can tell
6Find out how much the group has spent on food so far.Whether you can ask the record a question, not just read a total
7Find out why you owe what you owe. Show me what makes up that number.Whether the ledger can explain the number it’s showing
8Settle up with the person you owe the most.How money actually moves, and whether the app is involved
9Remind someone who owes you.How the group applies pressure without friction

Tasks 3 and 7 are the two that make this study worth running. Task 3 is the only way to actually see what a backlog does to someone — the difference between them saying that logging five at once is tedious, and watching them quit at the fourth one. Task 7 came straight out of the interviews, where two people separately described having to justify a number to someone else.

What to Record

  • Completion — did they finish without help, finish with a workaround, or give up?
  • Taps and elapsed time per task. Compare across the two apps, not against a target.
  • The exact moment of hesitation, and what was on screen when it happened.
  • Anything they said aloud that contradicts what they'd say in a survey.
  • Workarounds — screenshots, notes app, asking someone else to do it.

Write findings as one observation plus one summary line each, tied to the specific screen. Resist generalising until you’ve written all of them down.

The Splitwise Baseline

✓ FIVE SESSIONS, on their own phones. Splitwise only — there is nothing to compare it against yet. Taps and time are medians across the five. The second column stays empty until there is a build to run these same nine tasks against.
#TaskFinished, of 5TapsElapsed
1Group with a hold-out1242:10
2One fresh expense590:31
3Five from yesterday2634:52
4Two people paid0312:35
5Offline entry1141:05
6Spend on food0181:28
7Explain my balance1221:54
8Settle the largest5121:12
9Send a reminder560:19

What the Numbers Don’t Show

  • Task 8 is the misleading row. Five of five finished it. But all five left Splitwise to pay by UPI and came back to tick a box, and two never came back — a finished task and a settled balance turn out not to be the same event.
  • The abandonment on task 3 has a shape. All three who gave up did it at the fourth or fifth expense, and all three did it immediately after an ad. The cap sat at five in these sessions — Splitwise publishes four and testers see anywhere from two to five — and nobody reached it, because the interruptions cost them the will first.
  • Task 5 is not a missing feature. Splitwise does log offline — for friends and groups you already have, syncing when the connection comes back. What it does not do is say so. By Splitwise’s own account the iOS app attempts the server first and holds a saving screen before giving up and deferring the expense, so the honest reading of that screen is that nothing was saved. Task 5 asks what happens with no connection and whether the user can tell. Four of five could not, which is a different defect from not having built it.
  • The one pass on task 1 was a workaround. A participant invented an email address for the friend who wouldn’t install anything. That finished the task and quietly put a wrong address on the ledger — which is worse than failing it.
  • Tasks 4 and 6 fail the same way. The feature exists for both — on the web, or behind Pro — just not here.

Pain Points, Ranked

Three of these are the trip. The research did not find them — it checked whether everyone else hit the same three, against 59 survey responses, six interviews, store reviews and the four apps in Competitor analysis. The other three are what it added, and two of them nobody raised without being asked, which is the best argument for having run it. Six, in order of weight — and the order matters more than the list.

  • From the trip

    An ad between every entry

    The loudest thing in the research, by a clear margin. Splitwise caps free entry at a handful a day — its help page says four, testers report anywhere from two to five, and these sessions hit five — with a ~10-second interstitial between them, which is a tax on the one pattern everybody has: logging in a batch at the end of a day. The workaround costs more than the cap does: people merge two or three same-day purchases into one line to stay under it, which quietly corrupts the very ledger the app exists to keep accurate. Thirty expenses over four nights was the trip; nobody was buying Pro for one trip a year.

  • From the trip

    The day gets rebuilt from memory

    Nobody logs as they pay. Two-thirds of adopters record at the end of the day or later, or leave it to someone else, and the reasons vary — the app is slow to open, somebody else handles it, it is easier to do the whole day at once. What they share is a shape: logging competes with whatever you are actually doing, and loses. So the record is reconstructed hours later — was that ₹400 lunch, or petrol — and reconstruction is where it starts going wrong.

  • Everyone has to install and sign up

    This one goes back years before the paywall. The organiser drops the app entirely rather than chase four friends to sign up — the only barrier the non-adopter branch names that a product can do anything about; the rest never considered an app at all, which is its own answer. Seventeen of the 59 took that branch, and thirty-eight in all had kept a shared expense in a note, a sheet or a chat thread instead — the workaround is the category's real competitor.

  • Settling happens somewhere else

    Pay by UPI, come back, tick a box. Nobody raised this on their own, and eleven said their group never fully settles at all — and those two facts are really the same fact. It isn't neglect, it's give and take: whoever is owed just gets picked up on the next round, so the group evens out in favours rather than in cash. A trip is the exception, where a fixed end date forces a real settlement. Either way, no tracker in the audit records that kind of settling, so a balance that is completely fine looks, to the app, exactly like one nobody bothered to close.

  • From the trip

    No way to see where the money went

    The question that ended the trip: what did we actually spend on food versus travel. There was no way to answer it. Twenty-five people had gone looking for the same thing after the fact, and on Splitwise the breakdown and the history search both sit behind Pro.

  • The balance nobody can explain

    Quieter in reviews, louder in interviews — and the only pain that is social before it is functional. Debt simplification rewrites who owes whom with no indication it happened, so one person ends up defending a figure they did not compute and cannot show. Nobody settles that argument in the ledger. Twenty-five of 42 message or call whoever added the expense and nineteen ask in the app's comment thread, against six who work it out themselves — which is the tell: the record cannot answer the question it caused.

Definition

What to Build

Six pains, but not six problems. They collapse into three — and the order matters more than the grouping: you can't fix the second or third problem until the first one is fixed. A ledger nobody finished filling in cannot answer questions, and a group that never came together has nothing to settle.

Three Problems, in Order

Problem 1 — The record never gets finished

from Pains 1, 2 and 3

Entry is taxed exactly where expenses pile up — a travel day makes eight to fifteen of them and the free tier stops at five. So people put it off to the end of the day and rebuild it from memory, or merge three purchases into one line to stay under the cap. Either way the record drifts from what actually happened. Offline does not rescue it either: Splitwise logs offline only into groups that already exist, so the first evening of a trip — no signal, group not made yet — is the one moment it cannot help. And half the group never installs anything, so the organiser logs for everyone or gives up. Nothing downstream matters if this fails, so it is first.

Problem 2 — The number cannot be explained

from Pains 5 and 6

Two questions the record cannot answer. What did we spend on food versus travel — the category breakdown, paywalled by Splitwise and Settle Up and barely present in the other two. And why do I owe this — debt simplification quietly rewrites who owes whom without saying it did, and the expenses behind a balance sit behind the same paywall. The second is worse, because the damage is social before it is technical: one person ends up defending a figure they did not work out themselves and cannot show anyone.

Problem 3 — The money moves somewhere else

from Pain 4

Every tracker in the category stops at a checkbox once the money moves outside it. You pay in UPI, come back, and tell the app what you did — so the record and the money are two systems kept in step by hand. Most balances never reach zero in cash at all: whoever is owed gets picked up on the next round instead, and only a trip's fixed end date forces an actual settlement. No tracker in the audit can tell the difference between that and a balance nobody has bothered to close.

What Would Count as Solving It

Targets, not results — there is nothing built yet to measure. Each one is settled by re-running the usability protocol against the finished build and comparing it to the figures Splitwise already posted, so the bar is something observed rather than something chosen.

CriterionMet when
Entry survives a pile-upTen expenses waiting to be logged all get entered in one sitting, none abandoned part way — each in a few taps, and with nothing left to recall that the app could have carried forward itself.Two of five finished this on Splitwise, in 63 taps and 4:52. A backlog that gets abandoned is where the record starts drifting from what happened.
Offline is not a dead endAn expense logged with no connection is visibly saved, and a group can be started without one.The feature existing is not the bar — four of five could not tell it had worked. And Splitwise cannot start a group offline at all, which is the one thing a trip does first.
A group comes together fullyEvery member of a five-person trip is in the ledger, whether or not they installed anything.The hold-out is a member, not a lost user. If the ledger cannot hold them, the organiser logs for everyone or the group gives up on the app.
A balance can be defendedA member can show another member what makes up a number, unprompted.Unprompted is the hard half. One of five managed it on Splitwise, and a number you can only defend after being challenged has already cost you the conversation.
Spend can be broken downA member can answer what the group spent on food versus travel without leaving the ledger.The question that ended the trip. Zero of five could answer it on Splitwise, and every app in the audit either paywalls the breakdown or does not have one.
Settling needs one appThe payment and the record happen in the same action.Every tracker in the audit stops at a checkbox once the money moves outside it. All five left Splitwise to pay and two never came back to tick it, so the balance stayed open on a debt that was settled.
Leaving Splitwise is cheapAn existing group's history arrives without re-entry.The leaver already rejected the category once. Their history is the only thing keeping them where they are, so it has to come with them or nothing else matters.

Definition

Personas (Who it’s for)

Four roles, sorted by what people do rather than who they are. What changes from person to person is who does the work — and the three problems in What to build do not land one to a role. The organiser carries Problem 1 and Problem 2 at once, the hold-out is the half of Problem 1 no screen can reach, and Problem 3 lands on whoever is owed, which on most weekends is nobody in particular. That uneven spread is why the roles are worth naming separately.

These are still composites, not participants.

Each one is drawn from the six interviews. Six people cannot stand in for a category, so treat these as something to argue about a design with rather than as a population.

The organiser

P001
Theydoes the logging for everyone
In one lineOne person in every group ends up doing all the typing.
NotesBooks the tickets, pays for the bikes, and rebuilds the day at the hotel because nobody else wrote anything down. The paywall and the pile-up both land entirely on this person, and so does the awkwardness when a number looks wrong.
NeedsEntry that survives a backlog, and a number they can defend without doing arithmetic in front of anyone.

Splitledger / Personas

The participant

P002
Theyis in the group, barely
In one lineInstalled it once, opens it when prompted.
NotesContributes a few expenses, mostly trusts the total, and would rather be told what they owe than go looking. Not lazy — this is the majority position, and a product that assumes everyone logs is designed for a group that does not exist.
NeedsTo be reachable without a chase, and to understand a balance in one look.

Splitledger / Personas

The hold-out

P003
Theywill not install anything
In one linePresent in the group, absent from the app.
NotesThe one barrier the non-adopter branch names that a product can do anything about: the organiser drops the app entirely rather than chase four friends to sign up. This person is not a lost user — they are a member the ledger has to be able to hold without them ever showing up.
NeedsTo exist in the record without an account, and to settle without one.

Splitledger / Personas

The leaver

P004
Theyused a tracker and stopped
In one lineHit the cap once too often and went back to a chat thread.
NotesAlready knows what the category offers and rejected it. The most informative position in the study and the hardest to reach, because they are not in any app's analytics any more.
NeedsA reason to try again, and their old history to come with them.

Splitledger / Personas

The Anti-Persona

Naming the person this is not for is the useful part. It rules out three features that would otherwise look obviously worth building.

Not for

X001
WhoThe one splitting expenses with strangers — a flatshare of near-acquaintances, a rented villa split eleven ways.
The tellAnywhere the accounting has to hold up against someone you do not trust.
Why notEverything in What to build assumes the opposite: that the group wants the number to be right rather than to win, which is what lets a balance be a shared fact instead of a claim.
They'd needReceipts as evidence, dispute resolution, and probably escrow.
Rules outReceipt verification, per-item approval, and payment holding.

Splitledger / Personas

Exploration

Design Brainstorming

Hand-drawn app screens laid out at an angle across a tan ground — among them the Splitledger sign-in, a groups home reading ₹4,231.00 owed overall across Goa Trip, Flat 402, Office Lunch and Cousins, an activity feed of payments, invites and a restorable deleted group, a Goa Trip group showing ₹5,180.00 owed with per-person balances, an add-expense sheet splitting ₹3,400.00 equally three ways, an account screen carrying an add-expense-layout toggle, a charts screen with a ₹17,000 total, an import picker choosing which groups come across, and a settle-up screen proposing that Giuseppe pays you, with a note that the rows come from the fewest transfers that clear the group

With the model settled, the questions left were about structure, not looks — and paper answers those faster than a grid does. Twenty-six sketches, and the ones worth showing are the ones that settled an argument: paper is where the shape of the ledger got decided — what a group is, whether someone needs an account before they can owe money, and where a balance comes from. Four of them below; the rest work through the same set screen by screen.

Some Key Screens

Overview

  • One number is a summary, three are a situation — the net position, and what it is made of.
  • Logging starts before you decide to log. Scanned payments wait at the top, already captured.
  • That section hides itself when empty, so it costs nothing on a quiet day.

Add Expense

  • No more form-like look — a sentence, not a form.
  • Two decisions: a name and a number. Five things pre-filled.
  • The split is visible where you type it, not one screen later.

Import from Splitwise

  • Replays expenses and settlements to rebuild balances — the arithmetic comes over, not just the totals.
  • Friends come across too, including people you only split with outside a group. A ledger without its people is a spreadsheet.

Import from Splitwise

  • Opens with the reassurance, not the algorithm — nothing invented, same amounts, fewer payments.
  • The rule is written so you can redo it yourself, not named and left opaque.
  • Every step shows what is left over — the residue is why the next payment looks odd.

Exploration

Wireframes

With the brainstorming done, the next step was low-fidelity wireframes for the main flows, and for the problems each one had to solve — the same screens, committed to a grid. Structure before surface — this stage is where the hierarchy of every screen was fixed.

Some Key Flows

FLOW 1

A Layout You Pick, Not a Form

Problem 1 is mostly this flow. Three steps — the first asks the question every other app asks last, and the last is a layout the user chooses.

Search leads, because a year in you have a dozen groups and picking one is a find, not a scroll.

An expense does not need a group. Splitting straight with a person is a path, not a fallback.

A name is enough to add someone. The email is optional, which is what lets a hold-out owe money without an account.

1.1Pick what the expense belongs to — a group, or a person directly.

Search sits above the list because a shared flat has five members and a trip has twenty, and only one of those is a scroll.

A member with no account is an ordinary row — muted, but selectable. The hold-out from Personas can owe money without installing anything.

Everyone is included to begin with and the count is stated, so the common case is read rather than assembled.

1.2Choose who it includes — everyone by default, because that is the common case.

Amount and note are the only two things this expense actually needs, and both are words in the line.

Payer, split and date come already filled in — the common case is written out rather than left to be assembled.

The per-person shares recompute under the sentence as each word changes, so the split is checked where it is set.

1.3The sentence — amount and note are the only edits a common expense needs.

Two Layouts, and the User Picks

Half of Problem 1 is this one screen. The record never gets finished because entry is where it stops — and what stops it is a form. Six labelled fields to read and fill, for an expense that is nearly always the same one. So entry was not designed as a form. It was designed twice, as two layouts that each ask to be read in one pass rather than filled in six: a receipt, where every row already shows its value, against a sentence, where only the words you want to change are targets.

A ticket, not a form. The tear-line separates what the expense is from how it gets divided.

Four rows, each already showing its value. The eye stops at all of them whether or not any needed changing.

Your share and the itemised split print below the rows, so the consequence sits on the same ticket as the inputs.

The receipt. A printed ticket — what the expense is above the tear-line, how it divides below, itemised on the same slip.

The instruction is on the screen, because a sentence built out of controls is not a pattern anyone has met before.

Every changeable word is underlined and tappable. Reading the expense and editing it are the same act.

Date and split sit in the sentence rather than behind a default, so a wrong one is read now instead of found later.

The sentence. The same fields, read in one pass, with every changeable word a target.
ReceiptSentence
Reading orderLabel left, value right, row by row. The eye stops at every row whether or not it needs to.One sentence. Only the words you want to change are targets, so a default expense is read in one pass.
The common caseSix fields for an expense that is nearly always “I paid, split equally, today”.Those three are already the default text. Changing nothing is a complete entry.
A backlog of tenSixty field visits, and the moment of abandonment is somewhere in the middle.Ten sentences, most of them needing two edits — the amount and the label.
DiscoverabilityEvery option is visible, which is the honest advantage and the reason this was hard to reject.Options are inside the sentence, so nothing announces that “split equally” can be changed.
The live readoutPrints below the rows on the same ticket, and reads as confirmation of what you set.Sits below a sentence and reads as the consequence of it, recomputing as each word changes.

The sentence is the default, because Task 3 is the case that matters most and the one the sentence wins. The receipt is better for a first expense and worse for the tenth, and the pains arrive in a pile. A layout optimised for the entry you are most likely to abandon beats one optimised for the entry you are most likely to understand.

The receipt stayed anyway, because its advantage is not taste. Nothing about the words split equally announces that they can be tapped, so a first-time user can finish an expense without ever learning anything else was possible. For someone who never gets past that, the sentence is not a faster form — it is a form with hidden fields. So both ship, and neither is imposed: Account carries an Add expense layout switch, and the choice is remembered on the device.

The layouts are shown, not listed. Choosing between two entry screens is a visual comparison, so the screen makes it one.

The neighbours stay in view. You are picking between things you can see rather than committing to a word you have to imagine.

Applying is one tap, and it is reversible. Nobody has to be right about this the first time.

The picker. The layouts are compared side by side rather than named in a list, and the choice is kept on the device.

FLOW 2

Entry when the day has piled up

The case the free tier is priced against: ten expenses waiting, logged at the hotel that night rather than as they happened.

One number is a summary. Three are a situation — the net, and what it is made of.

Scanned payments queue here already captured. Filing one is a tap, not re-entry — the step people fail.

Expenses with no group live in the ledger too, so nothing waits on a group being made first.

2.1Home, with the backlog already visible before anything is opened.

The date is a word in the sentence, not a silent today. A backlog is entered days after it happened, by definition.

Two edits per expense — the amount and the label. Ten of them is twenty taps, not sixty field visits.

Shares always sum to the total exactly, so a stack entered in one sitting never has to be reconciled afterwards.

2.2Each one entered in a few taps, with the date a word in the sentence rather than a silent default — a backlog is logged days later by definition.

What the Readout Is For

Under the entry, a line per person recomputes as you edit. It exists because a balance here is computed from the expenses rather than stored: if a number is derived, the cheapest place to prove it is trustworthy is the moment it changes. The alternative — enter, save, then go and look — separates the edit from its consequence by a screen, which is where “wait, why do I owe that?” comes from.

What the Entry Asks For Is Per Group

A trip splits food, travel and tickets; a flat splits rent, groceries and the internet bill — an entry tuned for one reads as friction on the other. Which fields it exposes, what counts as a category, and which of them defaults to split equally are set per group rather than fixed in the model. Nobody in five sessions was asked to customise anything, so this is a design decision rather than a finding. It stays because deriving balances makes it cheap: a field’s label is never baked into a stored number, so exposing the choice costs a settings screen and not a change to the model underneath.

FLOW 3

Joining Without Installing

Problem 1's other half. A member has to be able to owe money before they have an account, or the organiser ends up logging for everyone.

A name is enough. Everything below it is optional.

People already in your ledger are one tap, whether or not they ever signed up.

Add anyway, no email. This is the line the whole flow exists for — the hold-out becomes a member owing real money, with no account.

3.1Adding someone to a group.

A link that can be copied anywhere, because the invite has to travel on WhatsApp — which is where the group already is.

Picking a known friend is the second path, not the first: most invites go to people the app has never seen.

Sending changes nothing in the ledger. The member is already in it; this only offers them an account.

3.2Inviting is a link, not a sign-up request — nothing is blocked while it goes unanswered.

What you are joining is shown before you commit — how big it is, how much history it has, and who asked.

Joining claims a member who already exists, so nothing anyone entered has to be typed again.

Declining is on the screen as a real choice, and the group’s ledger is unaffected either way.

3.3Arriving by link. The member already exists, so joining is claiming a place rather than creating one.

A Member Before an Account

The other half of Problem 1: a group that never fully comes together. Two ways in, and neither asks the group to start over — a member can be in the ledger without an account, and an existing Splitwise group can arrive with its history intact. Both are above. What is left is the group that has neither.

A name is the only required field. Everything else about a group can arrive after it exists.

People can be added now or later, and the screen says so — waiting on replies is what stops a group being made at all.

A group of one is legal, and is labelled rather than treated as a mistake. The organiser starts before anyone has agreed to anything.

Starting fresh, for the people with nothing to bring.

FLOW 4

Explaining the Number

Problem 2. The number has to be defensible by the person showing it, not just correct.

Every row carries what was paid and what was owed, so the net can be re-derived by hand.

Each transfer names the rule that produced it rather than asserting a figure — which is exactly what debt simplification does not do.

The full working is one tap away, not a paid feature.

4.1The transparency screen — reachable from the group, not buried or paywalled.

Problem 2, and it is a social problem before a functional one. Somebody has to defend the number — usually the organiser, usually to a friend, usually without having computed it themselves. So every balance can be unpacked into the expenses that made it.

Simplify Debts, and Why It Is Visible Here

Pain points, ranked put confusion over debt simplification last of the six, and it is the only pain that is social before it is functional: users do not know whether simplification is on, who turned it on, or why they are suddenly owed nothing. The failure is not the algorithm, it is that the algorithm is silent. Deriving a balance rather than storing it is what lets this be fixed cheaply — because nothing is stored, the original and the simplified view are both derivable, so the app can show the transfer it is proposing alongside the debts it replaces instead of quietly rewriting them.

Task 7 exists for this specifically, and it came out of interviews where two participants independently described needing to justify a number to someone else. That is the behaviour these screens are for: showing what a balance is made of, to whoever is asking.

Spend, Not Just Balance

The charts answer a different question from the balance breakdown: not what do I owe, but where did the money go — by category, per group. Task 6 tested it directly, and zero of five could do it, at 18 taps. It belongs with this flow because it answers the same problem from the other side: a group that can defend a number should also be able to ask it a question, not only account for it after the fact.

The total sits inside the chart, so the summary and its breakdown are one object rather than a figure to trust and a picture beside it.

By member, because the question at the end of a trip is who spent what — not which category won.

By month as well, for the ledgers that have no end date the way a trip does.

Where the money went — the question that ended The trip, paywalled by Splitwise and Settle Up both and barely present in the other two.

Who paid, and what it did to you, in one line above the arithmetic that produced it.

The split is listed per person rather than named by a rule, so a share can be checked without knowing what “equally” resolved to.

Who added it, and when. Most arguments about an expense turn out to be arguments about who entered it.

One expense, with its split shown rather than implied.

FLOW 5

Settling Up

Problem 3. Every tracker in the audit stops at a checkbox once the money moves outside it; this is the flow that does not.

Settle up sits beside the balance it clears, at the top of the group.

Balances are per person and derived on demand, so there is no stored total that can disagree with the expenses below.

Settled is a state, not a deletion — the history stays where it is.

5.1The group. Settling is a button here, not a screen buried in settings.

The rows are the fewest transfers that clear the group, offered as a suggestion rather than applied to the ledger behind you.

The amount is editable and pre-filled to the full figure. Part-payments happen, and refusing to record them is what sends the group back to chat.

Paying and recording are one action, not a checkbox ticked after the money moved somewhere else.

5.2Paying and recording in one action, over UPI — structural, rather than a checkbox added afterwards.

Problem 3, and the one thing no tracker in Competitor analysis does. Paying and recording are one action, over UPI — for the balances that get paid off in cash at all. Most do not: whoever is owed gets picked up on the next round instead, and give and take, not a checkbox, is what settles it.

What Happens When the Payment Fails

The interesting half of paying and recording in one action. It is only an improvement if a failed payment leaves the ledger correct — otherwise the app has invented a debt that was never settled, which is worse than the checkbox it replaced. So the write is conditional on the payment, never optimistic, and a partial settlement stays a partial settlement rather than rounding itself away. Holding money as an integer count of paise is what makes that expressible: a half-settled balance is exact rather than nearly right.

Where this stops. UPI is India-only, which is the whole bet. The gap is narrower than “nobody does UPI”, though: Competitor analysis scores Google Pay a yes on UPI-native settlement and then files it under “moves money, keeps no record”. What no audited product does is settle over UPI and keep the ledger, and that narrower gap is what made it Problem 3. It is also a ceiling — the same product outside India loses its one structural advantage and becomes another tracker with a good expense editor.

The Personal Ledger Inside the Group One

Non-group expenses are the same ledger with no group attached — a coffee that was never anyone else’s business, tracked the same way as a split dinner rather than living in a second app. Nothing in the survey, the interviews, or the audit asked for this directly; it exists because a member who opens the app only to check a shared balance still has spending of their own, and a separate app for that spending is the install-and-sign-up tax Pain points, ranked put third — aimed at yourself this time.

One figure for the whole relationship, because what you owe a person is not divided up by where it happened.

Groups are a breakdown here rather than the top level. It is the same ledger, read along the other axis.

Direct expenses sit beside group ones. Splitting a coffee with somebody is not a lesser kind of debt.

One person, across every group — because debts do not respect group boundaries.

Groupless spending gets a total of its own, so it is a place in the app rather than a residue of one.

People first, because a debt with no group is still a debt with a person.

Part-settled is a state these expenses can hold too — nothing here is a cut-down version of the group case.

Expenses with no group at all. The common case the category treats as an exception.

“No group” is stated rather than left blank — the same detail view, with one field different.

Deleting a settlement says what it will do to the balances, because that is the consequence nobody can see.

Partial settlement is carried as a state rather than rounded away, so the outstanding half stays visible.

One personal expense, open. The same detail view a group expense gets — tracking your own money is not a lesser case of the same feature.

Undoing a Delete

Activity is the record of what changed — and the gap it exposes is that “what changed” includes deletions nobody meant to make. A ledger several people write to has exactly one failure worse than a wrong number: a missing one, gone before anyone else notices it is missing.

Not measured, and not a ranked pain — none of the six interviews described losing an expense, because nobody had used a version of this product long enough to lose one. It is in the design on the same reasoning as a derived balance: a deletion is marked and held rather than removed from the ledger outright, so recovering one is showing a row that was already there, not reconstructing a number that got recomputed without it.

Every row names who did it, in which group, and when. A shared ledger is auditable or it is argued over.

Undo lives on the event itself, so reversing something does not first mean finding where it was done.

Even a deleted group is an entry that can be restored. Nothing that touched the money is silently gone.

Activity. What changed, by whom — the record that makes a shared ledger auditable without an argument.

The deleted expense is still a row in the feed. Restoring starts from the record of the deletion, not from a bin kept somewhere else.

The dialog names the expense rather than asking about “this item”, so answering it does not depend on remembering which row was tapped.

One confirm and it is back in the balances. Nothing is rebuilt — the row was held, so this only stops it being deleted.

Restoring one. The confirm names the expense, and answering it un-marks a row rather than rebuilding it.

FLOW 6

Leaving Splitwise

The leaver's on-ramp. They already rejected the category once; their history is the only thing keeping them where they are.

Non-users arrive as ghosts, so a group comes across whole even when only one person moved.

Balances are reconstructed by replaying the expenses, not copied across as totals.

Friends come too, including people you only ever split with outside a group.

6.1Connecting. One decision — whether to switch, not how to.

Everything is ticked to start with, so the default is a complete move and not a decision.

Any group can be left behind. Leaving an app is easier when it is not all or nothing.

Friends and non-group expenses come across too — the parts kept outside groups are the ones people forget they will lose.

6.2Choosing what comes across, group by group, rather than an all-or-nothing switch.

Why the Import Exists

Read the feature matrix down the Splitwise column and it scores one clear win, a persistent group ledger, which Settle Up and Splid both match. Nothing Splitwise does is unavailable elsewhere. Why it leads anyway is an inference and not a finding — the audit never measured installed base — but the likeliest answer is the history already sitting in it, and if that is right the barrier is switching cost rather than capability. An import is the cheapest possible attack on that, and it is why the flow gets its own screens rather than a settings toggle.

The dependency this accepts. The import is built on Splitwise’s own API, so it can be withdrawn by the company it competes with. Worth building anyway — the value is highest early, when switching cost is the whole objection — but a feature that depends on a competitor’s goodwill is not something to build a defence on.

The one screen where the product waits on somebody else's server, so it is drawn as a wait rather than hidden behind one.

It names what is happening: the handshake is with the leaver's own Splitwise account, not a new one.

Both failure states are drawn, because the only dependency on a competitor is also the only step that can fail for reasons this product cannot fix.

Connecting the account. The one place the product depends on a competitor's API.

One line, and it names the thing being replaced. Whoever reaches this screen was convinced by the app, not by this page.

Two ways in and no password. An account is for syncing across devices, not for permission to use the ledger.

A magic link exists because the whole product is designed around people who will not install or sign up on request.

Login, reached late on purpose: the ledger works on the device before an account exists.

Foundation

Building the Design System

With the wireframes tested and the structure settled, the next thing was not another screen — it was the vocabulary every screen would be built from. Colour, type, radius, spacing and the component masters, defined once and bound to code.

Twenty-three semantic colour tokens, each with a light and a dark value side by side — bg, surface, ink, ink2, ink3, separator, cardBorder, tint, primaryButton, tintSoft, pos, neg, negSoft, glass, onTint, onBanner, onPrimary, ghostAvatar, draftPillFg, draftPillBg, segTrack, fill and scrim — followed by the two gradient banners, coral in light and navy in dark, sampled onto the same four stop positions so every stop can bind to a variable.
The palettes that colour people and groups: a fixed set of hues assigned per entity, shown in light and dark.
Avatars and group marks pull from a fixed palette rather than a random hue, so the same person is the same colour every time you open the app.
Twenty-one type entries in Manrope at weights 400 to 800, each showing its token name, size and weight beside a live specimen: largeTitle 30/800, heroAmount 38/800, sheetTitle 21/800, navTitle 17/700, detailTitle 17/600, actionButton 15/700, fieldInput 17/400, bigCta 17/700, cellTitle 16/600, navLink 16/600, ghostBtn 16/600, back 15/500, splitName 15/500, rightValue 14/600, chip 14/600, secondary 13/400, sectionHeader 13/600, fieldLabel 13/600, remain 13/600, draftPill 11/700 and tabLabel 10/600.
Twenty-one entries, one family, five weights. Each one is a token with a size and a weight attached, so a heading is `type/sheetTitle` rather than a number somebody chose on the day.
The radius scale, the spacing scale and the elevation steps, each shown as a labelled specimen.
The scales that stop every new screen re-deciding what a corner or a gap is worth.
The component masters — buttons, cells, chips, avatars, fields, sheets, banners and the tab bar — each shown with its variants.
Every master here appears in the screens that follow. A screen is an arrangement of these rather than a drawing of its own.

One thing the file admits about itself, and it is worth repeating here rather than leaving on a plate nobody zooms into: the app declares Manrope but only three components actually consume fontFamily, so the shipped build still renders in the platform default. The ramp is real and the tokens are bound; the wiring is not finished. A system page that showed only what works would be a brochure.

Final Designs

What the argument above turned into. The screens are built out of the system in the section before this one — every colour, every radius and every component on them is a token rather than a decision made twice.

Adding Expenses — a SplitLedger screen on a phone mockup.

Adding Expenses

Taking the effort out of expenses. Adding an expense is easier and smarter with SplitLedger.

  • Smart categories — automatically selects the right category from the expense title or description.
  • Automatic splitting — calculates everyone’s share instantly when splitting an expense.
  • Expense insights — charts across all your groups, compared against non-group expenses.
  • Personal expense tracker — keeps your individual spending in the same place.
Bring Your Expenses With You — a SplitLedger screen on a phone mockup.

Bring Your Expenses With You

Switching to SplitLedger is simple. Import your existing groups and expenses from Splitwise and pick up right where you left off — no need to start from scratch.

Stay on Top of Every Activity — a SplitLedger screen on a phone mockup.

Stay on Top of Every Activity

Keep track of everything happening across your expenses and groups, with the tools to find and recover a transaction.

  • Easy filters — narrow the feed by expenses, settlements, invites, dates or anything else.
  • Restore deleted expenses — deleted one by accident? Restore it at any time and get the record back.
Simplify, Without the Confusion — a SplitLedger screen on a phone mockup.

Simplify, Without the Confusion

No more guessing who owes whom. SplitLedger explains how every simplified amount is calculated and split between members.

  • Clear payment breakdown — exactly how much each member pays, and who they pay.
  • Fewer payments, less hassle — finds the simplest way to settle everyone’s balances.
  • Step-by-step explanation — why each payment is suggested, and how the amount was reached.
  • Everyone stays in sync — the whole flow of money between members, with every balance explained.

The Rest of the Set

Eight of the twenty-six screens, picked for what they settle rather than for variety — the four above carry the features, these carry the arguments. Not all twenty-six, because a gallery that shows everything is a file browser: what is left out is the states and the empty views, which matter to build and not to read.

The group ledger — balances per person, not one net figure.
The group ledger — balances per person, not one net figure.
One expense, with its split shown rather than implied.
One expense, with its split shown rather than implied.
Where the money went, split by the members who spent it.
Where the money went, split by the members who spent it.
The layout picker, on the sentence — the default, and what it looks like.
The layout picker, on the sentence — the default, and what it looks like.
The same picker on the receipt, the alternative kept beside it.
The same picker on the receipt, the alternative kept beside it.
Expenses with no group at all.
Expenses with no group at all.
One person, across every group they share with you.
One person, across every group they share with you.
Account, where the theme and the add-expense layout are the reader’s to pick.
Account, where the theme and the add-expense layout are the reader’s to pick.

Light and Dark

The design system holds twenty-three colours, each with a light and a dark value on the same name. That is the claim; this is the check. Every one of the twenty-six screens has a dark twin, and none of them is a second design — the same components resolve the same tokens against the other mode. Four pairs here, picked for the surfaces hardest to carry across: the gradient banner, the form surfaces, and the plain lists that have nowhere to hide.

Home, light mode.
Home — light
Home, dark mode.
Home — dark
Activity, light mode.
Activity — light
Activity, dark mode.
Activity — dark
Add expense, light mode.
Add expense — light
Add expense, dark mode.
Add expense — dark
Import, light mode.
Import — light
Import, dark mode.
Import — dark

Try the App