Splitwise

Redesigned

Splitwise helps friends keep track of shared expenses. I rebuilt its design system and designed Smart Split, which reads a photo of the receipt and lets each person claim what they ordered.

Splitwise Add an Expense screen scanning a cash receipt
Splitwise home screen showing total balance, recent chats and a list of expenses
Splitwise itemized bill screen listing food items with tax and tips and a Confirm button

My role

Product Designer

Team

Solo

Timeline

One month

Status

Prototyped in Figma

Smart Split, step by step
Four friends, one $100.45 dinner bill. Follow it from the receipt photo to the last payment.
Scan the receiptTap + and photograph the receipt.Items, tax and tip are read for you.
Add friendsSearch by name to add each person.The receipt's guest count shows who's missing.
Assign itemsSelect a person, then tap what they ordered.Their total updates with every tap.
Review the splitEach share includes its part of the tax and tip,and together they match the $100.45 receipt.
Send requestsOne tap sends each friend their share.It arrives in your chat and updates once paid.
Home, with the net balance and the add button in the tab bar
The camera opens with the Frita Batidos receipt in the frame
The photo is taken and the receipt is read
Receipt detected: Frita Batidos, 8 items, $100.45
Split with, only you so far
The search field is focused and the keyboard is up
Typing Amy finds Amy Hayward
Amy is added
Typing Kunal finds Kunal Mehta
Kunal is added
Typing Amanda finds Amanda Cole
Amy, Kunal and Amanda are in, matching the 4 guests on the receipt
Assign items, with you selected and nothing assigned
Assign items, You selected, 1 taps in
Assign items, You selected, 2 taps in
Assign items, You selected, 3 taps in
Assign items, You selected, 4 taps in
Assign items, Amy selected, 5 taps in
Assign items, Amy selected, 6 taps in
Assign items, Amy selected, 7 taps in
Assign items, Amy selected, 8 taps in
Assign items, Amy selected, 9 taps in
Assign items, Kunal selected, 10 taps in
Assign items, Kunal selected, 11 taps in
Assign items, Kunal selected, 12 taps in
Assign items, Kunal selected, 13 taps in
Assign items, Amanda selected, 14 taps in
Assign items, Amanda selected, 15 taps in
Assign items, Amanda selected, 16 taps in
Review split, every share adds up to $100.45
Requests sent to Amy, Kunal and Amanda
The chat with Amy, before the request
The split request lands in the chat as a message
Amy pays, and the request is marked Paid
The design system behind it
Every screen in that flow is built from one set of tokens and 32 components. Here is how the system is put together.
Typography
SF Pro Display for headings, Text for body.
Ag
SF Pro DisplayHeadings, 20pt and above
ABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyz
0123456789 $ + - = %
Ag
SF Pro TextBody, below 20pt
ABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyz
0123456789 $ + - = %
Color
A smaller palette, one job per color.
Teal
300
#1EE1B9
500
#009B7C
600
#00735C
750
#00664F
Orange
400
#E8662C
500
#D84912
600
#B83A0B
Dark surfaces
1000
#000000
900
#111111
850
#1E1E1E
800
#162937
Light surfaces
0
#FFFFFF
50
#F3F6F5
75
#EDF2F0
150
#D5E2DE
Text on dark
25
#FBFDFF
100
#DCE5EA
200
#BBC9D3
300
#95A6B2
Text on light
950
#0B1B17
600
#3E4E58
500
#56666F
Text on card
Aa Primary18.5:1 AAA
Aa Secondary11.2:1 AAA
Aa Tertiary7.5:1 AAA
Aa Accent11.3:1 AAA
Tokens
Values, primitives, then semantic tokens.
Value
The raw hex code.
Primitive tokens
Each value named on a scale.
Semantic tokens
Named for the job the color does.
#1EE1B9
teal/300
text/accent
#009B7C
teal/500
action/primary-bg
#111111
neutral/900
surface/card
#FBFDFF
neutral/25
text/primary
Components
One button, four styles, three sizes.
Large 52pt
Medium 44pt
Small 34pt
Disabled
Primary
Secondary
Tertiary
On-gradient
Before52pt44pt44pt40pt34pt32ptThe old screens used six button heights. Now there are three.
Component library
Built once in Figma, reused everywhere.
List rows: Expense, friend, item and five more
List rowsExpense, friend, item and five more
Tab bar: Active tab, badge and the center Add button
Tab barActive tab, badge and the center Add button
Status and controls: Status pill, badge, checkbox, chip
Status and controlsStatus pill, badge, checkbox, chip
Activity row: Request, payment, reminder
Activity rowRequest, payment, reminder
Chat: Bubbles and the split request card
ChatBubbles and the split request card
Assign person: Selected ring, running total
Assign personSelected ring, running total
118tokens
32components
75variants
288uses across the screens
Anatomy
One screen, seven components.
Assign items screen, built from seven components
  1. 01Nav barClose + Title 1
  2. 02Assign personState=Selected
  3. 03Item rowAssigned=True
  4. 04CheckboxState=On
  5. 05Avatar stackCount=2
  6. 06Progress bar6 of 8
  7. 07ButtonPrimary, Large
Accessibility
Built to meet WCAG AA.
you owe$24.64
Two shades of orange for money owed
Large amounts use #D84912 (4.4:1). Text below 17pt uses the lighter #E8662C (5.7:1) to stay above AA.
44 × 44
44pt tap targets
Close and back look like 30pt circles, but each responds to a 44pt area.
RequestedPaid
Status never relies on color
Each status pairs color with a word or an icon: you owe or you lent, Requested or Paid.
Documentation
A Figma page for every component.
Figma cover page of the Splitwise design system
Read me
Principles, key decisions, and what to do and avoid
Foundations
Four pages: color in both modes, type, spacing and icons
Components
Thirteen pages of variants, properties, tokens and usage
Screens
All 17 screens, each one also in light mode
Light and dark
Light mode, no redrawing.
Home, dark mode
Home, light mode
HomeDark
Assign items, dark mode
Assign items, light mode
Assign itemsDark
Review split, dark mode
Review split, light mode
Review splitDark
Chat, dark mode
Chat, light mode
ChatDark

All screens

Every screen I designed

Home: net balance, owe and owed, friends and recent expenses
Scan: receipt detected, 8 items found
Split with: Amy, Kunal and Amanda picked from recent friends
Assign items: tap what Amy had
Item assigned: Amy’s total updates
Review split: every share adds up to $100.45
Requests sent to Amy, Kunal and Amanda
Chat: Amy’s split request marked Paid
Activity: requests and payments in one place
Pay Robbie: one sheet with amount, method and note
Paid: settled up with Robbie
Friends: balances by person, then groups
Edit details: fix a flagged price
Expenses: history grouped by month
Expense detail: who has paid and who is pending
Scan error: too blurry, with a manual fallback
First run: empty states that teach the core action

© 2026 Deeksha Kini. All rights reserved