Skip to content
Honeypod
DE
Request beta

News

One topic for every update, told in depth: what is behind it, why it turned out this way and what was discarded along the way.

Changelog

1 of 10

  1. New

    0.48.010 November 20267 min

    From the first quote to the last cent

    The new customer file, payment reminders and time tracking follow a job from start to finish. And Honeypod now speaks English.

  2. 0.47.028 October 20263 min

    Undone, knock-on effects and all

    Honeypod now tells you what an action did. One click undoes it, together with everything it changed along the way.

  3. 0.46.016 October 20265 min

    A bank statement has to add up

    Honeypod now reads the standardised statements of every bank and checks each one before a single transaction comes in.

  4. 0.45.010 October 20266 min

    Honeypod fits any window

    The big look and feel update: Honeypod follows the same rules on every page, from a narrow window to a large screen.

  5. 0.44.02 October 20264 min

    Only what you see gets drawn

    The speed update: Where Honeypod was losing time and how it wins it back.

  6. 0.43.030 September 20265 min

    Translucent where it guides. Solid where it counts.

    The big glass update and the one rule it is built on.

  7. 0.42.01 September 20264 min

    Honeypod now looks like you

    The third part of the promise, and why it is not mere decoration.

  8. 0.41.028 August 20261 min

    Transactions straight from your bank

    Importing bank statements is still possible, but no longer necessary.

  9. 0.40.027 August 20264 min

    A new look

    The first step towards a Honeypod that looks like your company.

  10. 0.39.026 August 20264 min

    Your data stays yours

    How Honeypod syncs several devices without anyone reading along.

Browse with the arrow keys, by swiping or with the dots on the bar. The Return key or a click opens the article.

Version 0.48.010 November 20267 min read

From the first quote to the last cent

The new customer file, payment reminders and time tracking follow a job from start to finish. And Honeypod now speaks English.


Until this update, Honeypod knew a lot about your customers, but it was scattered. Invoices sat with the invoices, quotes with the quotes, notes in the customer file. How many hours a job had taken was recorded nowhere. And if an invoice stayed unpaid, Honeypod showed a red “Overdue” and left the rest to you.

One job, one place. A job usually runs the same way. A quote goes out, and after a week you follow up. It is accepted, you do the work, and the hours become an invoice. Usually the money arrives, sometimes it does not. Each of these steps now has its place in Honeypod. They all meet in the customer file.

Following up without having to remember. When a quote goes out, the customer file straight away gets a follow-up to chase it after seven days. If the quote is accepted or declined before then, the follow-up disappears by itself, because there is nothing left to ask. Follow-ups can now repeat too, every month, every quarter or every year. When one is due, Honeypod shows a notification while it is running. A monthly follow-up on the 31st falls on the 28th in February and on the 31st again in March. It does not slip to the 28th for good, because it is counted from the original day. If it goes into your computer’s calendar as a series, its rule is “last day of the month”. Otherwise the calendar would simply skip the short months.

The timer keeps running when Honeypod is closed. All Honeypod stores is when it was started. If you quit Honeypod or the computer sleeps, not a minute is lost. The time is only worked out when you stop it. Only one timer runs at a time. Starting a second one stops the first. If it runs past midnight, it splits the time between both days, so every hour sits on the day it was worked. While it runs, it appears at the bottom of the sidebar and in the macOS menu bar. From the menu bar you can stop it without bringing Honeypod to the front.

Discarded

A shortcut for the timer that works everywhere, even with Honeypod in the background. On macOS, ⌥⌘T already shows and hides the toolbar in many windows. Honeypod takes no other program’s shortcut. Within Honeypod, ⌥⌘T stops the timer or restarts the last task.

The item is rounded, never the single entry. When billing, Honeypod groups the unbilled time entries into items, by entry, by task or by project. If you round to a quarter of an hour, Honeypod only rounds the finished item and shows it: 4:50 becomes 5:00. Rounded one by one, six entries of ten minutes each would become an hour and a half. Together they make one hour, and that is exactly what you bill. Times always appear as hours and minutes, on the invoice too. Nobody should have to work out that 1,3 hours are 1:18. You can still type them however they come to mind: “1:30”, “1,5”, “90 min” or “2 h”.

Nothing is stored twice. Whether a time entry has been billed is not recorded on the entry but on the invoice: A time entry on one of its items has been billed. A separate tick on the entry could drift away from the invoice, for instance if someone deletes the invoice and forgets the tick. So once an invoice is deleted or cancelled, its time is unbilled again by itself. The same goes for expenses you bill on to your customers. The activity in the customer file is not stored either. Honeypod reads it from invoices, payments, reminders and quotes every time the file opens. Only what you enter yourself is stored: Calls, emails, meetings and notes.

ActivityHafenkontor Spedition GmbH
PaymentRE-2026-004224.06.2.380,00
Payment reminderZE-2026-004212.06.2.380,00
InvoiceRE-2026-004215.05.2.380,00
AcceptedAN-2026-001708.04.2.380,00
Call07.04.

Followed up, the quote works for them. Starting at the end of April.

QuoteAN-2026-001730.03.2.380,00
A job in the customer file, from quote to payment. Only the call is stored. Honeypod reads everything else from the documents each time the file opens.

What remains and how soon they pay. At the top of the file are four key figures: Total revenue, Outstanding, Margin and Pays after. “Margin” is the revenue minus the expenses for this customer. It does not deduct your own time, which is not a cost but what you are paid for. “Pays after” counts the days to the first payment, because with agreed instalments the last one would be an unfair yardstick.

Remind first, then chase. If an invoice stays unpaid, you can now chase it in three stages: First comes the payment reminder, then the first and the second overdue notice. You decide when a stage is ready, what deadline it sets and what it costs. Honeypod never sends anything on its own. The payment reminder never carries a fee. It is usually what puts the customer in default, and by the prevailing view the cost of that first letter is not damage caused by the default. The counter on Invoices now only counts what is ready for the next stage. A counter that is almost always there soon goes unnoticed.

A due date puts nobody in default. You set the due date on your invoice on your own. But a deadline set by one side alone does not create a default, as the Federal Court of Justice ruled in 2007. That is why Honeypod counts the default from the day after a reminder, because only once it has been received is someone in default. The payment reminder already counts. Towards businesses, default begins at the latest 30 days after the due date and receipt of the invoice. Honeypod charges interest from that day. It appears on the first overdue notice if you switch it on in Settings.

Interest to the day. The basic rate of interest changes on 1 January and 1 July. If a default runs across one of these dates, Honeypod calculates each half-year at its own rate and each day on the amount outstanding on it. So a part payment lowers the interest from the day it arrived. The year has its actual length, 366 days in a leap year. That way Honeypod never asks for more than the annual rate. Rounding happens per section, so the lines on the notice add up exactly to their total. Nobody types in the basic rate, Honeypod brings the official series with it.

1st notice ZE1-2026-003813 July 2026
Outstanding on invoice RE-2026-00382.380,00
Default interest 10,27 % from 13 June to 30 June12,05
Default interest 10,52 % from 1 July to 13 July8,92
Lump sum under § 288 Abs. 5 BGB40,00
Reminder fee 5,00 €in the lump sum
Amount due2.440,97

In default since 13 June, the day after the payment reminder

A first overdue notice for 2.380,00 €. The basic rate of interest changes on 1 July, so each half-year carries its own rate. The reminder fee is covered by the lump sum.

Whoever pays the notice pays more than the invoice. Towards businesses, the lump sum of 40 euros is added from the first overdue notice on, if interest is switched on. A reminder fee is covered by it, because the law credits the lump sum against the costs of legal action. If someone pays the full amount of a notice, the invoice gets its share and the rest is income. It carries no VAT, because interest and costs are damages. In the DATEV batch they sit on separate accounts. If a payment quotes the number of the notice instead of the invoice, it still finds its invoice.

Every reminder with its own number. A reminder carries the number of its invoice, with a prefix of its own in front. For RE-2026-0042 the payment reminder is ZE-2026-0042, the first overdue notice ZE1-2026-0042 and the second ZE2-2026-0042. Anyone holding it sees straight away which invoice it belongs to and how often it has been chased.

The last stage says what comes next. The second overdue notice sets a final deadline and announces that the claim will then be pursued in court. The leaflet on commercial dunning from the IHK Dortmund, a German chamber of commerce, advises the same. The law, on the other hand, nowhere requires the German word “Mahnung”. A clear demand for payment after the due date is enough. You choose what the stages are called.

The finishing touch: Honeypod speaks English. The whole interface is now available in English too. Unless you choose otherwise, Honeypod follows your system’s language. Under Appearance you set it yourself. Documents are written in the customer’s language. By default it follows the country: German for Germany, Austria, Switzerland and Liechtenstein, English everywhere else. An English invoice shows the date written out, as 11 February 2026. As 11.02.2026, someone in the US would read it as 2 November. Amounts and dates in the interface keep the German format, so 1.234 means the same in both languages.

So a job lives in one place, from the first quote to the last cent. And whoever pays for it reads the invoice in their own language.

Newer articleThis is the newest article.
Older articleVersion 0.47.0Undone, knock-on effects and all

Want to see it for yourself?

Request beta

Version 0.47.028 October 20263 min read

Undone, knock-on effects and all

Honeypod now tells you what an action did. One click undoes it, together with everything it changed along the way.


Until this update, all you saw after deleting an expense was that its row was gone. Honeypod did not tell you whether it was the right one or whether its copy in the archive went with it. If it was the wrong one, there was still the Bin, provided you thought of it.

Honeypod reports what you cannot see. If you change a field or tick a box, you see the result right there. A message would just be noise. But if you delete, discard, duplicate, send or change several rows at once, you cannot see afterwards what happened: The row is gone, the copy is somewhere else, the email is on its way. That is exactly when a message now appears.

Bottom centre. There the message catches your eye without getting in the way. After a few seconds it disappears by itself. If the pointer rests on it, it waits until you have finished reading. Only one is ever shown, the newest. It even appears above an open dialog: If you send an invoice from the editor, you see the confirmation without closing it.

Undo takes back everything that goes with it. Before and after every action, Honeypod sets a marker in its audit trail. “Undo” returns every row this computer wrote in between to its previous state, all in one go. So even things nobody thinks of when deleting are taken back. If you delete an invoice that came from a subscription, the subscription’s due date moves back, because the period is open again. If a payment was attached to the invoice, its match is removed. “Undo” restores both. An invoice with ten items comes back with all ten.

Audit trailthis computer
Marker before
Invoice RE-2026-0042deleted
↳3 itemsdeleted
↳Subscription due date01.11. → 01.10.
↳Payment of 14.10.match removed
↳Copy in the archivemoved to the bin
Marker after
1 invoice moved to the binUndo⌘Z
Everything that deleting an invoice wrote lies between two markers, knock-on effects included. “Undo” sets each of these rows back to its previous state.

The file comes back too. Until now, deleting a record also deleted its copy in the archive. If you restored the record from the Bin, it pointed to nothing. Now Honeypod moves the copy into a bin inside the archive. If you undo the deletion, the file is back in its place, under its old name.

Honeypod does not even offer what cannot be undone. Only what this computer wrote is taken back. Whatever someone changed on another computer in the meantime stays. After sending and after a submission to ELSTER, there is no “Undo”. No button can bring back an email that has arrived, nor a submission to the tax office. A button that pretended it could would be worse than none.

The confirmation prompt stays. The message is only shown for a few seconds. If you happen to be looking elsewhere, you might only notice a slip later. Then the way back is through the Bin, which keeps deleted records for thirty days.

⌘Z works too. As long as the message is showing, ⌘Z undoes the action, Ctrl+Z on Windows. If the cursor is in a field, the shortcut belongs to the field. Behind an open dialog it has no effect, because there you would not see what it undoes.

An error does not go away by itself. If an action fails, the message says what did not happen and why. It stays until you close it. Until now, such an error came up in a system window that halted everything until you clicked it away.

A long run shows how far along it is. If you read receipts again or fetch transactions, the same spot shows what is currently running, with a progress bar beneath it. At the end it turns into the message with the result. If a receipt fails along the way, the message stays until you close it, with a link to Review.

So a slip now costs one click. And you no longer have to guess what an action did.

Version 0.46.016 October 20265 min read

A bank statement has to add up

Honeypod now reads the standardised statements of every bank and checks each one before a single transaction comes in.


Until this update, Honeypod only read the PDF statements of a few banks. If your business account was elsewhere, you fetched the transactions through the bank connection or imported a CSV file. But such a file looks different at every bank. A PDF statement from any other bank stayed out.

Two standardised formats. For passing data on to bookkeeping, banks use two standardised formats, CAMT.053 and the older MT940. Many banks let you download the transactions in one of them in their online banking. Honeypod now reads both, whichever bank they come from. Unlike in a PDF, every detail in them has its own field: Date and amount, name and account of the other party, the payment reference and a code for the type of entry. Honeypod does not have to work out any of it from the layout of a page.

Plus the PDF statements of well-known German banks. Many banks have their statements produced in the same data centre. That is why they look the same at all of these banks. Honeypod recognises them by their structure, never by the name of the bank. These banks often produce more than one statement a month. Until now, a month counted as imported as soon as there was one statement for it. Any further ones would have been left behind. Now Honeypod recognises every entry by its identifier and puts the month together from all of its statements.

A statement has to add up. Each of these statements gives its previous and its new balance. The previous balance plus all entries must equal the new one, to the cent. Honeypod checks this before a single entry comes in. If the total does not match, the whole file stays out and the message names the figures where it fails.

MusterbankStatement 7/2026
previous balance1.204,18
03.07.Kontorbedarf GmbH−84,20
14.07.Nordlicht Verlag GmbH+1.190,00
31.07.Account fees−7,57
new balance2.302,41

1.204,18 + 1.098,23 = 2.302,41

adds up, will be imported

MusterbankStatement 7/2026
previous balance1.204,18
14.07.Nordlicht Verlag GmbH+1.190,00
31.07.Account fees−7,57
new balance2.302,41

1.204,18 + 1.182,43 = 2.386,61

84,20 € missing, left out

The same statement twice. On the right an entry is missing and no line gives it away. Only the total underneath no longer adds up.

That is strict and deliberately so. You cannot tell by looking at a statement that an entry is missing. Every line in it is correct, one is just not there. If an incoming payment is missing, the invoice for it stays unpaid and soon counts as overdue, although the money has long been in the account. If a debit is missing, its receipt may end up missing too, because nothing reminds you of it. A rejected file stands out immediately, a gap taken over silently perhaps never.

Every transaction exactly once. Some banks offer the same statement in several formats. If these files lie in the same folder under the same name, Honeypod reads only one of them: CAMT.053 before MT940, both before PDF and CSV. That is because Honeypod recognises an entry by an identifier taken from its text. That text reads slightly differently in each format. Imported twice, every transaction would appear twice. So always import an account in the same format, across the months as well.

The same goes for the CSV of a private account from which you take over payments for the business. Some banks write all sub-accounts into one file. Entries of an account that Honeypod already keeps as a business account stay out, as do transfers between the sub-accounts. Two identical payments on the same day, on the other hand, both come in. Exactly once also means that none is missing.

If Honeypod cannot read something, it says so. A scanned statement or the PDF of a bank with a layout of its own used to come back with a read error that gave no hint of what to do next. Now the message names the way out: Download the transactions from your bank as CAMT.053 or MT940. If you download an account report or a booking notification instead of the statement in online banking, the message says what the file is and which one is needed instead.

The type of an entry is in its code. Standardised statements and the bank connection send a code with every entry that says what it is: Bank transfer, direct debit, card payment, interest or fee. Until now, fetched transactions only showed where they came from. Honeypod only adopts codes whose meaning we have checked against the standard’s official code list. Even so, it does not adopt them blindly. According to the list, one particular code means you are collecting money yourself by direct debit. But some banks also send it for ordinary debits. For direct debits, the direction of the money therefore decides.

Where no code helps, the text counts. Whether a credit from the tax office refunds VAT or income tax is only stated in the payment reference. Until now, every such credit counted as a VAT refund. Now what it says there decides.

A running balance, as far as it can be verified. If the Bank table shows only one account with a bank connection and is sorted by date, the running balance appears next to every entry. It is calculated backwards from the balance the bank reports when fetching. So it is only verified from the first fetched transaction onwards. Anything before that may contain a gap that nobody sees. That is why a dash appears there instead of a number that only looks right.

So the Bank page shows what happened in your account. Every transaction exactly once, none too many and none too few.

Version 0.45.010 October 20266 min read

Honeypod fits any window

The big look and feel update: Honeypod follows the same rules on every page, from a narrow window to a large screen.


Honeypod was built on a large screen and you could tell. If you made the window narrower, you saw tables scroll sideways, key figures cut off and the period selector slip out of view. Dialogs came in nine different widths and six different heights. Every page was built on its own and each had its own answer to the question of what happens when space is tight.

For this update we turned the question around. Instead of fixing each page individually, there are now shared rules and every page follows them.

One threshold for the whole window. Below a certain width, the sidebar collapses into a strip of icons by itself, the padding at the edge gets narrower and the period selector moves below the title. This threshold is not a fixed number. It follows from the space the widest table needs and shifts along when you make the text larger or the interface more spacious in Settings. On a large screen, in turn, the content does not grow endlessly wide. From a comfortable reading width onwards it stays centred, because any wider and the columns would only drift apart.

What defines a row stays. A table that no longer fitted used to scroll sideways and whatever was on the right was out of sight. Now every column has a rank. When space gets tight, the buttons at the end of the row go first, because everything they do is also in the context menu. Next goes whatever is only incidental, then whatever is supplementary. Date, name and amount always stay.

wide

all columns

DateSupplierCategoryStatusGross
12.09.Kontorbedarf GmbHOffice suppliesPaid86,90
15.09.Druckhaus SilbersteinPrinted matterUnpaid1.249,50
18.09.MusterbankAccount feesPaid9,90

medium

without buttons, category shortened

DateSupplierCategoryStatusGross
12.09.Kontorbedarf GmbHOffice suppliesPaid86,90
15.09.Druckhaus SilbersteinPrinted matterUnpaid1.249,50
18.09.MusterbankAccount feesPaid9,90

narrow

status as badge

DateSupplierGross
12.09.Kontorbedarf GmbHPaid86,90
15.09.Druckhaus SilbersteinUnpaid1.249,50
18.09.MusterbankPaid9,90
The same table at three widths. The buttons go first, then whatever is only incidental. Date, name and amount stay, the status moves behind the name as a badge.

Before a column drops out, a long name is shortened. When you hover over it, it shows the full text. An amount is never shortened, because half an amount is worse than none. Status and match no longer need a column of their own when space runs short. They move behind the name as a badge. And because the widths are measured rather than estimated, no column jumps away and back again while you type in the search.

One frame for every dialog. Every dialog now sits in the middle of the window, in one of four widths. It never gets taller than the window. Header and footer stay put, only the content in between scrolls. So “Save” is always in the same place, even in a long form. And if you review a receipt in a narrow window, you see the document above the form instead of it disappearing. A dialog now only closes if the click starts on the background. If you selected text in a field and only let go of the mouse outside it, you used to lose everything you had entered.

Only what is pressing is loud. The Overview used to stack up to six coloured banners on top of each other. A deadline three weeks away looked just as urgent there as a missed one. Now the form of a message tells you how urgent it is.

Banner

missed, with consequences

!The provisional VAT return for the 3rd quarter has been overdue for three days.

Line

waiting for you

2 receipts are waiting to be checked · View

Counter

in another module

Subscriptions2

Nothing

still to come

Mo8Tu9We10Th11Fr12Sa13Su14
Four levels, from loud to quiet. The banner is only for a deadline that has passed. An upcoming one is a dot in the calendar.

A banner now only appears when a deadline with the tax office has passed. By then there are consequences that Honeypod can no longer absorb. Whatever is waiting for your decision appears below it as a counted line. Whatever belongs to another module is counted in the sidebar: Overdue subscriptions, overdue invoices and quotes waiting for a reply. And a deadline that is still to come is not a message at all, but a dot in the calendar.

This dot now also tells you the consequence rather than the type. Red means something should already have happened. Orange means the tax office is waiting. A ring stands for everything else.

Charts you can read. The monthly overview has gained an axis with round values. Each month’s result appears below it as a number and hovering shows the same month of the previous year. Unpaid invoices appear pale on their month instead of counting invisibly as income. Tax has a tone of its own, a violet. It used to wear honey yellow and that belongs to the brand, not to a figure. Nothing is shortened here either. If a column becomes too narrow for its amount, the text first gets smaller and then the row switches to thousands of euros.

What you would otherwise only feel. Hardly anyone will be able to put their finger on some parts of this update. At most you notice that something looks calmer. The label of a pill used to sit a touch too low, because it was aligned to the box of the font rather than to the height of its capital letters. Now “Draft” sits exactly in the middle, as does every number in a counter. Every ring that shows a state is exactly one pixel thick everywhere. A fraction of that would fall between two device pixels on a Retina display and look blurred.

And colour has to stay legible, even when you choose it yourself. In more than a hundred places in the light theme, text in warning and data colours reached only a little over half the contrast that legibility requires, including every amount in a tile. Each of these colours now has its own version for text. For your brand colour, Honeypod checks whether it holds up as text on every background of the interface. Before any change to the colours goes out, we check this for 8.784 colours right across the colour wheel.

A seamless setup. The setup now also stands on the glass of the sidebar and “Continue” is in the same place in every step. In a narrow window, instead of all the stages, it shows “Step 3 of 9” with one short bar per step. Besides light and dark, “Your look” also sets logo, colour, glass and rounding. Honeypod suggests the colour from your logo. If you later connect another computer to your business, what belongs to the business arrives there: Letterhead, logo, brand colour and rounding. Light or dark and the glass remain a matter for the computer you are sitting at.

None of this changes what Honeypod calculates. What it changes is that every page, every table and every dialog follows the same rules, in every window. Your bookkeeping. Your data. Your app.

Version 0.44.02 October 20264 min read

Only what you see gets drawn

The speed update: Where Honeypod was losing time and how it wins it back.


Lately, switching to Expenses felt as if Honeypod first had to think it over. It was never the data. For a computer, a list of a hundred expenses is a trifle. It comes out of the database in a few hundredths of a second. The time was lost elsewhere. To find it, we watched Honeypod at work, frame by frame.

The biggest brake was the drawing itself. For every row of a table, the computer builds around thirty elements, arranges them and paints them. With a hundred rows that makes a good three thousand, with “All years” many times that. Most of it lies below the window, where nobody sees it.

So Expenses, Bank and Invoices now only build what can be seen in the window, plus a small buffer before and after. The rest of the list is represented by empty space, exactly as tall as the rows it stands for. That keeps the scroll bar accurate. As you scroll, the visible section moves along in steps. A list with a thousand entries now opens hardly more slowly than one with twenty.

empty, as tall as the rows before
Fernsprech Nord AG39,95
Café Morgentau48,20
Kontorbedarf GmbH86,90
Druckhaus Silberstein1.249,50
Bürohaus Lindenhof950,00
Kanzlei Ahlers & Voigt312,00
Technikkontor GmbH2.030,00
Lernwerk Seminare390,00
empty, as tall as the rows after
empty space
buffer
in view
buffer
empty space
Only what lies in the window is built, plus a small buffer before and after. Empty space holds the height of the other rows so that the scroll bar stays accurate.

There was a trap in this that would only have shown up while scrolling. A table sizes its columns to the widest entry. If only a section is built, the widest entry is sometimes included and sometimes not. The columns would then jump by a few pixels with every step. That is why Honeypod also builds the widest rows of the entire list, invisible and with no height. They hold every column in place, whatever is currently in view.

Small things that add up. Showing an amount in German notation, such as 1.234,56 €, cost the computer a tenth of a millisecond every time. That is because a new formatter was created for every single amount. It sounds like nothing, but it happens for every amount in every row on every redraw. Now there is just one and formatting is more than a hundred times as fast. Sorting by name was the same story.

On top of that, the Expenses page built its table up to three times on opening, because the data arrived in stages: First the list, then the older receipts that fall into the period, then the check whether every receipt is still in its place. Now everything arrives in one go and the table is built once.

The preview of a receipt had two brakes of its own. For every receipt, a helper that reads the document started up. Each start-up cost just under half a second. Now it starts with the first receipt and stays. The second brake was waiting out of politeness. A page is drawn in small chunks. Before each one, Honeypod waited until the interface had painted its next frame, so 40 milliseconds of work could take up to two seconds. Now the page draws straight through, with only tiny pauses in which clicks and keystrokes still get through.

So that we can find brakes like these faster in future, Honeypod now measures along the way. If switching pages, scrolling or a preview becomes noticeably slow, the log records where the time went, without file names and without content. The log only leaves your computer if you send a report through Feedback. So if something feels sluggish, tell us. The numbers then travel along with it.

None of this changes what Honeypod calculates. It only changes how long you wait for it.

One last tip, where you can help things along yourself: If you use Honeypod’s device sync and your receipts therefore sit in a folder in the cloud, keep that folder permanently on your computer. Many services offload rarely opened files to save space and leave only a placeholder behind. When you open such a receipt, it first has to be fetched from the internet. That takes longer than anything Honeypod does with it afterwards. In most services, right-clicking the folder in the Finder offers an option to keep it on the device permanently.

Version 0.43.030 September 20265 min read

Translucent where it guides. Solid where it counts.

The big glass update and the one rule it is built on.


Now that macOS builds its sidebars, menus and toolbars out of glass, an app that stays opaque and flat everywhere looks as if it came from another era. With this update Honeypod catches up, and thoroughly so. Almost everything follows from a single sentence.

The obvious idea would have been to simply make everything transparent. We did not do that. The reason is the same measurement that already tipped the balance for the new look: Against its background, text needs a contrast in brightness of four and a half to one. If the text sits on a desktop picture that nobody knows in advance, that margin can no longer be guaranteed. On a calm grey background it holds, on a holiday photo perhaps not. You would only notice once you had misread a number.

Glass carries labels, never amounts. That is the rule the whole update is built on. Whatever guides you may be translucent, meaning the navigation, menus and bars. Wherever there are numbers, in tables, tiles, cards and dialogs, the background stays opaque. There, every digit has to be equally legible on every desktop. Only a background that Honeypod paints itself can do that.

Overview
Bank
Expenses
Invoices

Invoices

RE-2026-023Studio PerlmuttPartly paid4.998,00 €
RE-2026-024Praxis am AhornwegUnpaid2.737,00 €
RE-2026-025Sandmann & Co. KGSent2.142,00 €
RE-2026-013Nordlicht Verlag GmbHPaid8.211,00 €

1 invoice selected

Open invoice
Record payment
Delete
The desktop shows through the navigation, the menu lies over the list as glass. The amounts themselves stand on solid ground.

There is real glass in exactly one place, in the sidebar. There, a system material sits behind Honeypod. It picks up the colours of whatever is behind the window at the moment and blurs them. A hint of tint stays on top, just enough for the labels to remain legible even in front of a bright desktop picture.

Whatever sits on the sidebar belongs to the glass too. The Space switcher, the light and dark toggle and the collapse button wear a light veil instead of a surface of their own. So they do not lie on the glass like slabs, but within it.

Glass is switched on by default, including for everyone who has been using Honeypod for a while. If you prefer an opaque sidebar, switch off Let the desktop show through in Settings under Appearance. That choice then stays, across future updates too.

Everywhere else, Honeypod paints the glass itself. A menu, a dropdown list or the bar above a receipt does not show the desktop but whatever lies beneath it in Honeypod: The list you just opened a menu from, or the form under a dropdown. Because Honeypod knows this background, the contrast there can be planned. This glass is therefore not tied to the desktop switch.

It shows most clearly above a receipt. The bar with search, print and zoom is made of glass. When you scroll through a long invoice, the page runs underneath it and stays visible there, muted. That way you always know there is more above.

Honeypod AG

Design and digital implementation

Beispielweg 14
30159 Musterstadt

Honeypod AG · Beispielweg 14 · 30159 Musterstadt

Nordlicht Verlag GmbH
Verlagsweg 3
10115 Musterstadt

Invoice RE-2026-013

Invoice date 23.07.2026 · Service period June to July 2026

DescriptionNet
Concept and consulting10 h1.500,00 €
Design22 h3.080,00 €
Implementation12 h1.620,00 €
Project management and handoverFlat rate700,00 €
RE-2026-013 Nordlicht Verlag GmbH.pdf
−125 %+
The page runs underneath the bar and stays visible there, muted. The labels on the bar still stand out clearly.

The veil that settles behind a dialog has been redrawn too. It is lighter and softer than before. The page behind it stays recognisable as an outline. It is the only surface in Honeypod whose whole purpose is to let things show through: You should see where a dialog comes from without being distracted by it.

Glass is an offer, not an obligation. If you have turned on Reduce transparency in the macOS accessibility settings, you get opaque surfaces everywhere in Honeypod, in the sidebar, in menus and on the bar above a receipt. The veil behind dialogs then becomes a little darker and does without the blur. The system setting applies here automatically. You do not have to make it a second time.

If you switch on Higher contrast in Honeypod, menus, dropdown lists and the bar above a receipt become opaque as well. The veil loses its blur too. Anyone who needs more contrast does not need surfaces that things show through. macOS handles it the same way.

Edges that follow the content. The glass comes with a second change that you feel more than see. Wherever something stays at the top while the content below it scrolls, a single question now decides what the boundary looks like. Does what stays at the top belong to what runs past underneath?

Studio Perlmutt4.998,00
Praxis am Ahornweg2.737,00
Sandmann & Co. KG2.142,00
Nordlicht Verlag GmbH8.211,00
Frachtgut Logistik AG1.309,00
Suggested matches

hard

Header above a list

Version 0.43.0

soft

Version line in the changelog

Invoicestop
Studio Perlmutt4.998,00
Invoicesscrolled
Praxis am Ahornweg2.737,00
Sandmann & Co. KG2.142,00
Nordlicht Verlag GmbH8.211,00

when needed

Title bar of a module page

Hard where a header names the entries below it. Soft where a row only labels itself. And a line that only appears once something disappears beneath it.

If it does, it needs a hard edge. In the dialog where you match a payment by hand, the header above the list tells you whether you are looking at the suggested matches or the remaining open entries. A clear line shows where it ends and the entries begin.

If, however, the row only carries its own label, like the version line in the changelog, the transition is soft. The row then floats above the text instead of cutting it off. Lists that scroll within themselves also end softly, like the navigation and the sections of Settings: Their entries fade out at the edge as soon as there is more beyond it. A hard line there would look like the end of a group that does not exist.

The third edge belongs to the title bar of a module page. In a large enough window it now stays at the top. When you scroll through a long list, you can always see where you are and which period applies. You can also change it right away. It only gets a line once something really disappears beneath it. As long as the page is at the very top, there is nothing to separate, so there is no line either. In a small window the title bar scrolls along, otherwise too little height would be left for the list.

None of this changes what Honeypod calculates. It changes how it feels to work with: Light where you move around and solid where your money is concerned. Your bookkeeping. Your data. Your app.

Version 0.42.01 September 20264 min read

Honeypod now looks like you

The third part of the promise, and why it is not mere decoration.


The same line appears on every page of this app: Your bookkeeping. Your data. Your app. The first part was the beginning, the second came with device sync, where nothing goes through anyone else’s server. That leaves the third, the most uncomfortable one, because it asks us to step back.

After all, what does “your app” actually mean? Until today it meant: It runs on your computer and you cannot lose it if we disappear. That is a lot and yet it is only half the answer. An app you have in front of you for hours every day is also something you see. If you own your data and run your software yourself, the next logical step is for it to look like you too, not like its maker.

There is one misunderstanding we want to clear up right away, because the market carefully cultivates it. What is usually sold is something else: A reseller puts their logo on someone else’s software and passes it off as their own. That is about price tags and sender addresses, not about the person who works with it. Here it is the other way round. Whoever does their bookkeeping in it sets it up, for themselves.

You set exactly one thing. Not forty colour fields, but one colour. From it, Honeypod calculates a whole ladder.

#2f6f5e

→
BackgroundControlText
One colour, twelve rungs. Surfaces, lines, controls and the text on them are all made from it. You only set the one value on the left.

Every colour has three properties: How light it is, how vivid it is and which hue it has. The hue stays as it is. Only the other two are adjusted, along a fixed ramp. That is why the result does not look washed out at the light end or muddy at the dark end. It is also why nobody has to match twelve values by hand.

What the ladder turns into is the whole interface: The background, the surfaces, the lines, the borders, the buttons and the text on them. Both themes, light and dark, come from the same input.

Invoice

Default

Invoice

Workshop

Invoice

Tax consultant

The same view in three businesses. None of it is a separate theme. All three are the same rule with a different number at the start.

What does not move along is just as important. Red stays red, even in a red business. Signal colours carry meaning and do not belong to the brand, otherwise an overdue deadline would look like a button. The same goes for the colours in charts: Income, expenses and tax stay what they are, so that the same report looks the same on two computers. And official views stay neutral. A tax report is not a marketing tool.

There is one limit, and it is not negotiable. With a badly chosen colour you could make your own bookkeeping unreadable. No app you need for work should allow that. Against its background, text needs a contrast in brightness of four and a half to one. With most colours, either dark or light text works. But there is a narrow band in the middle where neither is enough.

no text colour works
light textdark text
usedchosen
Create invoice

chosen #DE4836

4,13 : 1

Create invoice

used #D6412F

4,51 : 1

In the narrow band in the middle, neither dark nor light text reaches the required 4,5 to 1. If your colour falls inside it, Honeypod moves it to the edge of the band and not a step further.

Honeypod then moves such a colour just far enough for it to pass, and not a step further. The shift is so small that it cannot be seen next to a colour picker. And it has been measured: The check covers 8.784 colours and the whole colour wheel, against light, dark and cream paper. It runs again with every change. Nothing goes out without passing it.

Three more things join the colour. A logo, from which Honeypod can suggest a matching colour straight away if you like. The rounding of the corners, from sharp to soft. Because it too is derived by the rule inner equals outer minus wall thickness, a button inside a field always stays in proportion. And the font, from whatever is installed on your computer.

What you have set up can be saved as a file and loaded again on another computer. No account, no cloud, one file.

Your invoices carry it too. The accent of a document template follows your colour as soon as you have set it, without you entering it a second time. Paper, text colour and lines stay with the template, because they make up its character. If you set a template’s accent by hand, your choice is kept.

And if you like Honeypod’s own yellow, you do not have to do anything at all. None of it is required, all of it is yours.

Version 0.41.028 August 20261 min read

Transactions straight from your bank

Importing bank statements is still possible, but no longer necessary.


Honeypod can now fetch the transactions of your business account itself, instead of waiting for you to download a statement at the end of the month. Matching them to invoices and receipts then works as usual.

The connection is still being tested and is therefore marked as beta. If you run into errors, please report them to us through the feedback module.

Your bank

grants access

→

Enable Banking

licensed service

→

Honeypod

on your computer

The access is in your name, the key stays on this computer. No server of ours sits in between.

The access belongs to you. You set it up yourself in a few minutes with Enable Banking, a licensed account information service supervised by the Finnish Financial Supervisory Authority. The key stays on your computer and nothing goes through anyone else’s server, not even ours.

Signing in to your bank opens in your browser, never in Honeypod. A bank’s sign-in form in someone else’s window is exactly the pattern banks warn against. We stick to that.

Several bank connections can run in parallel. After the first authorisation, the setup asks whether you want to add accounts or authorise another bank. Accounts that are already connected stay connected.

If you have already imported bank statements, Honeypod recognises the overlap. Transactions that come from both are merged instead of being created twice. Existing matches are kept.

Version 0.40.027 August 20264 min read

A new look

The first step towards a Honeypod that looks like your company.


Until now, Honeypod wore honey brown, not as decoration but as its base tone: In the background, in every surface, in every border and in every line. That was a statement and it stood in the way of a bigger plan. One of the coming updates is meant to let you tailor Honeypod to your company, with your colours, your logo, your font. As long as the app itself speaks so loudly, no other brand can get a word in.

until v0.39.0

now

light
dark
The same view. On the left, background, sidebar, surface and border wore honey brown, on the right they are neutral. The yellow button is the same everywhere.

That is why the base tone has become neutral. Colour now only appears where it means something: As an accent for what you can do, as a signal for deadlines and errors, as a data colour in charts. Everything else is grey.

Background

Surface

Border

Accent

Mark

Three shades of grey carry the surface, two colours carry the meaning. Previously, each of these five values was a shade of brown.

There is a reason why yellow, of all colours, takes on a new role here. It came to light when we measured and had not been on our radar before. Against its background, text needs a contrast in brightness of four and a half to one, a control three to one. If a colour is too light for that, you darken it. For most colours, that comes at no further cost.

Acacia honey→Olive
Blossom honey→Dark ochre
Red→Red, passes unchanged
Blue→Blue, passes unchanged
Green→Green
Red stays red, blue stays blue, green stays green. Only the two yellows lose their names in the process.

Red stays red. Blue stays blue. Green stays green. The two yellows, on the other hand, come out with different names: Acacia honey becomes olive, blossom honey a dark ochre. Yellow is the only colour family whose identity depends on lightness. There is no such thing as a dark yellow. Make yellow legible and you no longer have yellow.

The accent is a surface with dark text on it. That is the rule the whole interface is now built on. It is not coloured text, not a thin line and not a colour in a chart. As a filled button with an almost black label, yellow stays yellow and is still easy to read, because it is not the yellow that has to carry the contrast but the text on it.

Honeypod used to break this rule in one place, and one you see every day. The active entry in the sidebar, the tags on lists and the small pills had yellow text on a pale yellow surface. Measured, that is 1,73 to 1, while 4,5 is required.

Invoices⌘4

before, 1,73 : 1

Invoices⌘4

now, 5,66 : 1

The active entry in the sidebar, a tag, a pill. The required ratio is 4,5 : 1.

So the text colour in these places has become a deep gold with the same hue, but dark enough. The same check has been run for every combination of text and background, in the light and the dark interface alike.

The mark is free, the accent is bound. An accent has to be guided by legibility and by making sure nobody mistakes it for a warning. A logo does not have to. It stands on its own, never as text in a table and never next to an error message. That is why there are two different colours from now on: The mark wears amber, a warm reddish orange, while the accent stays honey yellow. The app icon on the desktop has taken on the colour of the mark.

The numbers now have colours of their own too, instead of borrowing the accent. Income, expenses and tax are three fixed tones, the same in light and dark, so that a chart looks the same on two computers. Previous years appear more muted, but not grey: They are meant to step back and still clearly belong to their series.

This does not finish the redesign, it lays the foundation. First it has to be settled which job each colour has. Then the values can be swapped without anything breaking. If you later put in your own colour, a whole ladder is generated from it: Surfaces, lines, controls, the solid tone and the text on it. What never moves along are the signal colours and the data colours, because they carry meaning and do not belong to the brand. Official views stay neutral as well.

That is exactly where this is heading: Your bookkeeping. Your data. Your app.

Version 0.39.026 August 20264 min read

Your data stays yours

How Honeypod syncs several devices without anyone reading along.


There was a time when nobody asked this question. If you did your bookkeeping in late 2000, you wrote it into a file on your own hard drive. The file sat there and it belonged to you. If you wanted to give it to someone, you gave it to them. Nobody had to explain where the data was, because it was obvious.

Then the files moved, first into attachments and eventually onto other people’s computers altogether. That was convenient and it made a lot of things better, but it shifted the question of ownership. Today the sales, customers and receipts of most self-employed people sit with providers they do not know. This usually only becomes apparent when one of them changes its terms, is sold, shuts down or is broken into. Then your own books become part of someone else’s story.

Syncing runs through a folder in a cloud you already trust. All that matters is that the folder syncs, not which one it is.

Local-first means taking this back without giving up what has come along since. Your data is back with you on your hard drive, yet several devices still work on the same records. This is not nostalgia. It is the realisation that both are possible at once, now that the right method of calculation exists.

For Honeypod, we built our own method from this, Honeypod Local-Sync. Your local database is not on our servers. Syncing runs through a perfectly ordinary folder in a cloud you already trust.

To Honeypod, this folder is nothing more than a letterbox. What it holds are small messages about changes, not your database. Whether the folder is with a provider, on your own server or on a USB stick you carry back and forth between two computers makes no difference to Honeypod. It needs no consent, no contract and no account with us.

Each device writes only to its own area. This rule is what makes it work. It sounds like a minor detail, but everything rests on it. No device touches what another has written. Each one only adds to the end of its own list. Two devices therefore cannot overwrite each other at all, not even when they write at the same moment. That is the difference between a sync that sometimes loses something and one that cannot.

Merging happens field by field, not record against record. If you change an invoice’s note on your laptop on the move while someone at the desk corrects the recipient, both changes survive. With a sync that compares whole records, one of the two would win and the other change would be gone without anyone noticing.

That leaves the question of who is right when the same field really has been changed twice. For this, every change carries a timestamp that needs no central clock: It counts what a device has already seen, not just what its system clock claims. So a computer whose clock is wrong cannot overwrite the truth of the others.

Deleted things need a trace too. A deletion leaves behind a mark that stays. Without it, an invoice you deleted on one device would be back after the next sync, because the other device still knows it and takes it for new. Incidentally, this very mark is why there is no permanent deletion in the Bin.

The practical gain is that offline is the norm, not the exception. On the train, on a plane, in a basement without reception, you carry on working as usual. The folder catches up once it can. Conversely, Honeypod tells you when another device is currently working in the same business. Before a binding submission to the tax office, before a new invoice number and before a DATEV batch, it points out that entries recorded there might still be missing here.

That is the price of this design and we would rather name it than hide it: A folder can lag behind and nobody can decide that for you. In return, everything belongs to you. The file is on your hard drive, the sync is in your cloud and if Honeypod disappeared tomorrow, you would still have your bookkeeping. That is the line we want to be measured by: Your bookkeeping. Your data. Your app.

Device sync is marked as beta. With a single device it is harmless, since it only writes. Merging two devices has been tested but has not been in everyday use for long. Please make a backup first.

Newer articleVersion 0.40.0A new look
Older articleThis is the first article.

Want to see it for yourself?

Request beta