A business expense tracking app is a classification problem, not a photography problem.
Everyone builds the camera first. A business expense tracking app then lives or dies on something much duller: whether each amount ends up in the account it belongs to. A sharp photograph filed under a category your accountant has never heard of is worth close to nothing, and it costs somebody an evening in January to unpick. That is the part worth designing carefully, and it is the part most internal business apps settle last.
This page covers where the category list should come from, what timely means for a business that reconciles once a month, what to do about one card that pays for two lives, and why the year-end export should be boring.
See where the categories come fromThe short version
Use the categories your accounts already have, not the ones the app invents.
Every business already keeps its books in a fixed set of buckets. An expense app that offers its own list, or worse a free text box, quietly creates a second taxonomy, and somebody then translates one into the other by hand, once a year, from memory.
The fix is unglamorous. Take the account list from the person who files the accounts, cut it to the twenty lines that ever get used, and make those the only choices in the app. Almost every other decision in the build gets easier once that one is settled.
The photograph is evidence. The category is the work.
A receipt image proves an amount was spent and shows who it was paid to. It says nothing about which account the amount belongs in, and that is the one question the books need answered. Sorting is the labour in expense tracking, and it is the labour software is best placed to remove, by making the right answer the easiest thing to tap.
Free text categories feel flexible and behave like a leak. Six people describing the same expense produce software, Software, saas, subs, tools and the name of the vendor, which is six lines in a report that should have been one. A fixed list of twenty options is less flexible and produces a year that can be added up.
Where that list comes from matters more than what is on it. Ask whoever files your accounts for the chart of accounts, keep the lines that ever get used, and take the names and the codes verbatim. Inventing clearer names is the most expensive kindness in this category, because the translation still has to happen and it will happen in December, in a hurry, by someone guessing.
One more field earns its place beside the category, which is what the spending was for. A supplier name is not a purpose. Even where no rule demands it, that short line is what makes an entry answerable a year later, when nobody remembers why the company bought a second monitor in March.
Try it
Four people, four names, one account
Pick an expense and see what a free text category field collects over a year, and what the books needed instead.
What four people type when the category is a text box:
Office equipment
One line in the accounts instead of four in a report nobody can total. These names are illustrative. The list that matters is the one your own books already use.
What timely means when you reconcile monthly
There is an old, dull standard for what a record has to contain. IRS Publication 463 requires an adequate record to establish the amount, the time, the place or business destination, and the business purpose, and it expects records to be timely kept rather than reconstructed later. Those four elements are worked through in full for trips on the travel expense app page, so the point worth making here is the one they leave open: none of them say which account an expense belongs to. Satisfying the standard and producing usable books are two separate jobs.
Timely is where a monthly rhythm gets confusing. Most small businesses reconcile once a month, and it is natural to treat that session as the moment the records get made. It is not. Reconciling means checking that records match a statement. If the record itself is created during the check, out of a bank line and a memory, then nothing was kept at the time and the monthly pass has become the entire system.
Which argues for splitting the two operations in the software rather than merging them. Capture happens at the moment, takes one tap and an amount, and works with no signal. Reconciliation happens monthly and is allowed to do three things: match, flag a gap, and correct a category. If the monthly screen can create expenses out of nothing, it will, and within two months that is how the app is used.
The blunt test is whether an expense can be entered in fifteen seconds while standing at a counter with a bag in the other hand. If it cannot, records will be made in arrears whatever the policy says, and no quantity of reminder emails changes that.
One card, two lives
Most small businesses run at least one card that pays for both things. The company card buys a client lunch and then buys milk on the way home. The personal card pays for a subscription because it was quicker on the day. Both directions produce the same artefact: a line nobody can classify three weeks later.
The instinct is to handle it at reconciliation, with a column marked personal. That is the wrong end of the process. The only moment anyone knows the split is the moment of the purchase. By the time a statement arrives it is a guess wearing a confident face, and guesses are what an examiner is looking for.
So the entry screen should ask, and it should ask for an amount rather than a checkbox. This cost 84, of which 60 was business. The app stores the total and the business figure as two numbers, which means the ledger gets 60 and any reimbursement follows whatever the arrangement is. A single personal flag cannot express a partial split, and partial is the common case.
Mixed use has one special case worth keeping out of the expense list entirely, which is the car. A journey can be part business and part not, the unit is miles rather than money, and the rate changes during the year. That is a different shape of record and it belongs in a mileage tracking app with its own log, not in a category alongside stationery.
The year-end export should be boring
The output of an expense app is not a dashboard. It is a file somebody else has to load, and the honest test of the whole build is whether that file needs editing before it can be used. Every minute of editing at the other end is a category decision the app declined to make.
In practice that means one row per expense, an account code column that matches the chart of accounts, dates in one unambiguous format, gross and tax as separate columns, and a stable identifier per row so a correction can be matched to the thing it corrects. A formatted PDF with a logo is worse than a plain CSV, because the CSV saves a day at the far end and nobody has ever admired an expense report.
Consistency is worth more than cleverness here, and the accounting rules say so in their own narrow corner. The regulation on inventories requires a method that conforms as nearly as may be to the best accounting practice in the trade or business and that clearly reflects the income, and it then gives greater weight to consistency from year to year than to any particular method. The subject is stock rather than expenses, and it applies to businesses that hold inventory rather than to everyone, but the instinct travels: an app that improves its category names every spring makes two years impossible to compare.
Which is a reason to be conservative once a list works. Rename an account and every historical row is filed under a name that no longer exists, unless rows store the code and screens show the name. Storing the code costs nothing on day one and is awkward to retrofit, so it is one of the few decisions worth making before the first screen is drawn.
What each approach leaves you with in January
| Option | Captured at the time | Category matches the accounts | Personal split recorded | Export needs no editing |
|---|---|---|---|---|
| Receipts in a drawer | No | No | No | No |
| Bank statement, sorted in January | No | guessed | No | No |
| Spreadsheet with a free text category | sometimes | No | a column nobody fills | No |
| Off-the-shelf expense platform | Yes | their category model | Yes | usually |
| An expense app you build | Yes | your own account codes | Yes | Yes |
Building one around your own accounts
Expense platforms are priced per user per month and built around card feeds, scanning and an approval hierarchy several levels deep. A business with nine people and one company card needs the categories to be right and very little else, and pays for all of it anyway. The irony of the category is common: the software costs more than the spending it is watching.
Newly is an AI app builder. You describe the app you want, including the twenty account names your books actually use, and it builds and ships a real mobile app you own. Plans start at $25 a month, there is no free plan, and iOS builds ship through App Store Connect. It does not process card payments and it does not connect to bank or card feeds, so entries are made by hand at the moment of spending. That is a real limit. For a business with one card and nine people it is a smaller one than it sounds, and it happens to produce records kept at the time rather than reconstructed.
Settle the account list and the export format before anything is drawn, and treat the camera as the last feature rather than the first. What a phone will and will not reliably do with a receipt is worth knowing early, which is the subject of capturing receipts.
Questions people ask about business expense tracking apps
It records what a business spent, on what, and which account the amount belongs to. The recording half is easy and every app does it. The classification half decides whether the year-end figures are usable at all, which is why the category list matters more than the receipt camera and should come from the books rather than from the app.
Describe the accounts you actually use
Write down the twenty category names your own books already have, decide what the export has to look like, and build the entry screen around those two things.
Start building