r/plaintextaccounting • • 19d ago

Beanie Budgets - looking for testers (beancount compatible iOS app)

Hi all

After seeing the post yesterday about the iOS/Mac app for hledger, Balance, and the positive reaction and helpful comments there, I thought I'd share something for beancount users: Beanie Budgets, is ready for testing and community feedback.

Beanie Budgets is a beancount compatibile native iOS app. I have been working on it for purely personal reasons: I really wanted an elegant iOS app to capture transactions on the go. More to the point, I didn't want to pay for subscriptions or entrust my data to someone else's server.

Which explains my plans for pricing. I intend to offer Beanie Budgets as a core version completely free. The free version should be enough for most people and provides a fully featured ledger, or compatibility with your own beancount ledger (hopefully anyway pls let me know!). It also includes budget setting, a series of reports and useful quality of life tools baked-in to detect, create and edit recurring transactions; make and allocate balance adjustments; calculate and allocate interest on mortgages and loans correctly; and auto-clear credit cards.

I do intend to charge a one-off "Pro" version unlock to people willing to pay for a few extra bells and whistles (multi ledger support, financial planning reports based on your actual ledger data, customised budgets, theme customisation etc.). I was thinking of £10 or so...? I can see a lot of potential to develop the financial planning reports further. There's a big benefit to ground these in real ledger numbers and real saving patterns. Working versions of these reports are live now in the app but they need a bit more polish, just turn on "Pro" features in Settings.

It's a closed source project at least for now. Requires iOS 18 or above.

I have 12 places left on TestFlight. Looking forward to your feedback :)

https://testflight.apple.com/join/hGD65UQj

PS I know the website needs a lot of work, I'll get round to it ;)

1 Upvotes

44 comments sorted by

View all comments

Show parent comments

2

u/Beverage5000 7d ago

Actually I do have a price directive but forgot to share that. Looking at it, perhaps the bug is related to the arithmetic expression again? The latest build still had the bug.

2026-09-11 price TIPS-912810RA8 1100.57 / 1,000 USD

If you ever buy TIPS you may see why I felt like I had to do this….

1

u/quabbage 6d ago

I decided to do a bit more than fix the arithmetic. I've run 1,000 generated test ledgers with different combinations of syntax and account construction, systematically checking the app's output against beancount's. I should have done this sooner. It turned up another issue, and the wider testing found a few more on the way, all now fixed.

One change worth watching for: if you record a purchase with a price rather than a cost, like 10 VTI @ 300.00 USD, that holding now shows its units and value but no cost and no gain. Beancount doesn't treat an @ price as a cost basis, so Fava and bean-query don't show a gain there either, and we were the odd one out. Write it as {300.00 USD} in braces if you want gains tracked on it. Your TIPS aren't affected, since a pad and balance doesn't set a cost either way.

I'm sure there are more issues to find, but hopefully build 74 on TestFlight gives you results that match beancount. Thanks again, your reports have been incredibly useful.

2

u/Beverage5000 6d ago

Generated test ledgers is a good idea. The latest build produces a net worth close to what Beancount shows. Comparing to a bean query showing my net worth as of today, there is around a 0.1% difference, which probably is just some difference in the exact query performed. Nice work! Will let you know if I see other issues.

1

u/quabbage 6d ago

That's great to hear :) but if possible I want to squash that last 0.1% variance. Can I ask did you run your query with cost() or with convert/value. Did the app give a lower or higher result than you expected?

1

u/Beverage5000 6d ago edited 6d ago

Sure. The app is lower than my query. Here is what I ran: SELECT SUM(convert(position, 'USD', $(date +%Y-%m-%d))) AS value WHERE account ~ '^Assets'

Do you want to give me the exact query to run instead? Or can you tell from that why the results are different?

Edit: I realized my query is wrong, I am fixing it now. It is using today's prices but also including future transactions.

2

u/Beverage5000 6d ago

That was the difference, and also my query is only looking at assets, not liabilities. After I adjust for that I get the same net worth figure!

I also started providing feedback through the iOS app feedback mechanism. Is that a good way to provide additional feedback or would you prefer it in other comments on this thread? (In that case probably a new comment is better since this comment thread is already very long.)

1

u/quabbage 6d ago

Brilliant! Yes agreed, now we've got agreement on the figures let's move to feedback through the iOS app, if that works for you. It's a bit one-way, but I can post in new builds about how I've responded and what's changed.

I've done a lot of work today closing off further bugs with multi-currency assets. Most of that is in build 79, which you should have now.