Inspiration

Paybak started with a college project. A few of us were building something together, and parts got bought by whoever was free that day. Someone paid by UPI, someone paid cash, and a screenshot landed in the group chat. By the end, nobody was sure who had paid for what. Nobody wanted to be the one asking friends for money back, either.

Most split apps are made for a dinner bill or a trip. They aren't made for a project with a budget and a parts list that keeps growing. So we built our own: an app that keeps score so friends don't have to.

What it does

Paybak is a ledger for shared money. You add an expense and pick who it's split with. Paybak keeps a running balance with every friend, group and project.

  • Split it any way. Split equally, by exact amounts, by percentages, by shares, or item by item from a receipt. Two people can pay one bill.
  • Projects. A project is a group with a goal and a budget. Add a part and everyone's fair share updates.
  • Settle up in fewer payments. Paybak works out the smallest set of payments that clears everything.
  • Scan a receipt. Take a photo, check what was read, and tap who had each item.
  • Ask Paybak. Ask "Who owes me money?" or say "Add ₹600 for a cab, split with Esha and Dev". It answers from your own data and drafts the expense. Nothing is saved until you tap Save.
  • Gentle reminders. Paybak writes the nudge for you, so you never have to type the awkward message yourself.
  • Different currencies. Each expense keeps the rate from the day it was added, so balances don't drift.

One thing Paybak does not do is move money. You pay each other the way you already do, by UPI, cash or bank transfer, and then record it. There's no wallet and no fees, and you never trust us with your money.

How we built it

Paybak began as a Flutter app in March. It worked, but we wanted it to feel at home on each phone. So we rebuilt it as two native apps: SwiftUI on iOS and Jetpack Compose on Android.

We designed every screen in Figma first: 117 of them, from the welcome screens to settings. Then we turned the Figma file into a written spec for screens, components, colours and type, and the money rules. Both apps are built from that spec.

The money rules came first. In each group, every member gets a net balance:

$$\text{net} = \text{paid} - \text{share} + \text{payments sent} - \text{payments received}$$

The nets always add up to zero. To settle up, the person who owes the most pays the person who is owed the most, and this repeats until everyone is at zero. A group of \( n \) people never needs more than \( n - 1 \) payments.

Rounding got the same care. ₹1,000 split three ways is ₹333.34, ₹333.33 and ₹333.33. The extra paisa rotates, so the same person isn't always the one paying it.

The smart parts run on the phone too. Receipts are read with Apple's Vision framework on iOS and Google's ML Kit on Android. Ask Paybak doesn't send your data to any AI server. It understands simple phrases and answers from the same balances you see on screen. The illustrations, including the little celebration after a payment, are Rive animations.

Challenges we ran into

  • Money has to be exactly right. If a split app is off by one rupee, people stop trusting every number in it. Making splits, percentages, receipts with tax and tip, and different currencies always add up took the most thought.
  • Two apps, one behaviour. Keeping iOS and Android in step, down to the same numbers and the same words, meant the spec had to be the single source of truth.
  • Figma limits. Once several agents shared our Figma education plan, it allowed only a couple of design reads a minute. We switched to Figma's REST API, downloaded the whole file once and worked from that copy.
  • Too many cooks. Several agents worked on the same code at the same time and sometimes overwrote each other's changes. We learned to split the work by file and check before every commit.
  • Saying less. The first full build was correct but cluttered. We did a "calm pass": we cut repeated text and extra captions and gave the screens more room. Now +₹ and −₹ say enough on their own, without "Owes you" next to them.
  • No server yet. Without a backend, the other person can't confirm a payment. For now a payment counts as soon as you record it, and confirmation will come with the server.

What we learned

  • Write the rules down before the screens. A clear spec made everything after it faster, for us and for the AI.
  • AI agents are fast, but they build what you describe. The decisions still have to be ours.
  • In a money app, trust is the feature. Being exact, being clear and never touching anyone's money mattered more than any extra feature.

What's next

We'll add sync so that friends see the same ledger, let the other person confirm a payment, and launch on the App Store and Play Store.

Built With

Share this project:

Updates

Submission history