logo

ADAStudio

HomeWorkAboutContact
WIB

Case study20245 min read

MMS Cashflow

A cash flow management web app for a group of companies, with multi-company profiles, IDR and USD balances, debt tracking and Excel or PDF reports.

We designed and built MMS Cashflow in 2024 so owners and finance staff can record income and expenses per company, pay down vendor invoices, have an accountant validate each entry and download monthly reports for every bank account.

Platform
Web app, internal finance tool
Year
2024, with updates into early 2025
Scope
Product management, UI design, web development
Status
Live and in use
Services
Web App, Fintech, Dashboard
MMS Cashflow case study cover

Overview

MMS Cashflow is a cash flow management web app we built for a business that runs its money through several companies. Each company has its own bank accounts and cash boxes. Some hold rupiah and some hold US dollars. Vendor invoices arrive with Indonesian tax lines on them, get paid off in parts, and have to agree with the bank statement at the end of the month.

The goal was easy to state. Give the owners and their finance staff one place to see what came in, what went out and what is still owed, for every company and in both currencies. Then let them download a clean report for any month instead of assembling one by hand.

The challenge

Most of the difficulty sat in a few specific requirements, and each one shaped the data model.

  • Several companies, one login. Every screen has to know which company it is showing, and switching between companies has to be quick.
  • Two currencies. USD and IDR accounts sit side by side. Owners need totals in each currency and a combined figure in rupiah.
  • Debt that shrinks over time. A vendor invoice carries a tax base, VAT (PPN) and withholding tax (PPh). It can be paid in instalments from different bank accounts, and the remaining amount must stay correct after every payment.
  • Balances that match the bank. Each account needs a statement view that starts from an opening balance and walks through every entry to a closing figure.
  • A review step. The person who records a transaction is not always the person who approves it.

Our approach

Discovery

Kevin led the project as product manager and engineer. We mapped the finance workflow into a small set of things the app had to model: companies, cash sources, transactions, debts and users with roles. Getting those five right early meant every later feature, from reports to validation, could build on the same records instead of adding new ones.

We also kept the Indonesian terms the team uses. The bank statement view is called Rekening Koran and opens with Saldo Awal, the opening balance, so the screen reads like the paper statement it is checked against.

Design

We worked from high fidelity screens for the dashboard, transaction entry and debt detail, and adjusted the build to match them. The layout stays plain on purpose. A sidebar holds a company switcher and four destinations: Home, Transactions, Debts and Manage. The home screen answers the first question anyone asks, which is how much money this company has right now. It shows total balance, income and expense in IDR and USD, a month by month chart for the year, and this month's transactions grouped by day.

Entry forms carry most of the weight in a finance tool, so we spent a lot of our design time there. A round add button sits at the bottom right of each list. Money fields use dots for thousands and a comma for decimals, the way Indonesian users write amounts. Description and address fields suggest values typed before, so the same vendor does not end up spelled three ways in a report. Before anyone saves a transaction, a confirmation shows the account balance before and after the change.

Build

MMS Cashflow is a Next.js and TypeScript web app with Supabase for sign in and data, deployed on Vercel. We shipped it in steps between August 2024 and February 2025. Users, roles and companies came first, then transactions and debts, then reports and exports, and the bank statement view in January 2025.

Each company owns its cash sources. Each cash source has a currency and an opening balance. A transaction records its type, date, account name, counterparty, amount, source and an optional link to the supporting document. When the amount is in dollars, the form pulls a current USD to IDR exchange rate and lets the user adjust it, and the entry stores its rupiah value alongside the dollar amount. That decision is what makes combined totals possible without guessing at past rates.

Debts work the same way. An expense can be marked as a debt payment and linked to a specific vendor invoice. The invoice's remaining amount and progress bar update from those linked payments.

Key features

  • Multi-company profiles. Pick a company in the sidebar and every list, total and report follows that selection.
  • Dual currency. IDR and USD accounts, totals in both, and a stored rupiah value for every dollar entry.
  • Debt management. Vendor invoices with tax base, PPN and PPh, payments linked from transactions, and a running remaining balance.
  • Accountant validation. Each transaction is marked not reviewed, validated or rejected, and only permitted roles can change that status.
  • User management. Admins manage companies, bank accounts and users from a single Manage page.
  • Reports and export. Monthly and daily transaction reports, debt reports and bank statements, each downloadable as an Excel spreadsheet or a PDF.
  • Search and filters. Search by account name, description or address. Filter by date range, bank and amount, and sort by date, type, source or status.

Outcome and what we learned

MMS Cashflow went live in 2024 and is in production use.

A few lessons came out of building it.

  1. Store the converted value when the entry is made. If dual currency totals are recalculated at today's rate, last month's report changes every time you open it. Saving the rupiah amount with each dollar transaction keeps history fixed.
  2. Use the team's own terms. Labels like Rekening Koran mean nobody has to translate between the app and the bank statement on their desk.
  3. Ship small and listen. When the team asked for search across description and address, and for the address to show in each row, those changes went in as an ordinary update rather than a new phase, because we were already shipping in small steps.

If you run more than one company and want a clearer picture of where the money is, we would like to hear from you. Whether you need an internal finance tool, a custom cash flow dashboard or another web app built around how your team already works, start a project with us.