In June we took Japan off the list of countries where KAZENA Books is offered. It disappeared from the country selector on the sign-up screen as well. And yet the accounts created through the Google button after that kept being born as Japanese ledgers. Between 1 June and the middle of August there were 47 of them, and 41 still carried Japanese currency, a Japanese chart of accounts and a Japanese fiscal year.
E was the one who noticed. He lives in a small town some way outside Jakarta, and before he hands anything to people there he always creates an account on his own device and works through it. He made a new one through the Google button for an unrelated check, and on the first input screen the symbol beside the amount field was not Rp but ¥. What reached me was a single line: when I create a new account, the currency is yen.
Country is only 1 field on the sign-up form. But that 1 field decides a great deal: the currency, the chart of accounts, the default tax rate, the month the fiscal year begins, the way dates are written, the format of withholding slips. To the person signing up it is a country name. On our side, it is where the skeleton of the ledger gets decided.
There were 2 doors. One goes through the sign-up screen, the other through the Google button. The screen has a country selector, and Japan is gone from it. The Google route never touches that screen; it calls the account-creation function directly, and that function's country argument still carried Japan as its default value. A leftover from our earliest days, when we were building for Japan.
I will not make excuses. The moment Japan vanished from the visible list, I treated the job as finished. I changed the sign in the shop window and never checked the warehouse. A default value is a choice I made in the past on behalf of anyone who does not choose. Forgetting to delete one means quietly applying an old decision of mine to today's users.
We counted what was inside. Of the 41, 33 had no entries at all. The remaining 8 did, 126 entries in total, and 1 of them had 3 months of bookkeeping behind it. The number typed into the amount field is stored exactly as typed, so a payment entered as 1,500,000 sits in that ledger as 1,500,000 yen. The same digits, only the meaning is different.
A symbol is conspicuous, so somebody eventually notices the yen mark. What nobody noticed was the fiscal year. The Japanese default begins in April. The Indonesian calendar year runs from January to December, so the "current period" on screen was adding up a range that was not the current period. The addition was right; only the range being added was wrong. The default tax rate was still 10%, not 11%.
The messages had been arriving. In 6 of the accounts the people using them had corrected the setting themselves, and 4 of those 6 had asked us where the currency could be changed. We answered carefully, explaining how. As an answer it was correct. What we failed to look at was what lay behind the question. An enquiry is a report of a symptom, not a report of a cause. When the same question arrives 4 times, it has stopped being a question and become a defect.
The receipts from the eating house near the office are handwritten, and sometimes the amounts carry no currency symbol at all. Nobody writes it because everyone standing there knows it is rupiah. That is the only condition under which a default works. Where the context is shared, leaving something out is a kindness. Software has no such shared place. Putting a default into something anyone may walk into from anywhere is not leaving a thing out; it is deciding it for them.
The fix was mostly deletion. We removed the default from the function and made country a required argument; without it, no account is created. That alone surfaced 3 call sites that were not passing a country. The Google route now shows 1 screen with 1 question before the first ledger exists. Nothing is created until a country is chosen. We ask once, and it can still be changed later in the settings.
We did not rewrite the existing accounts ourselves. For the 33 with no entries, we rebuilt the settings. For the 8 that had entries, we have sent a list showing the numbers currently held and exactly what changes if the country changes, and they are deciding. Fixing it silently would mean the figure someone saw yesterday is a different figure today. That is not a repair; it is a second accident.
I should say plainly that I am not a tax accountant. The country setting determines tax rates and the format of filings, so documents produced in this state may not be usable as they are. If this sounds like your situation, please check what you have already submitted, and confirm anything final with a professional.
These days, whenever I am about to write a default value, I stop once and ask whose default it is. There is no neutral default. There is only a default that leans toward whatever the person who built it is used to. If the currency or the fiscal year on a KAZENA account you created through the Google button is not what you expected, tell us; it can be fixed. The yen on the first screen you saw was not something you did.
Tell us what you think
How the KAZENA apps feel to use, what we should fix, features you wish existed — if you run a small or medium business or work freelance in Indonesia or the Philippines, your voice is exactly what we want to hear. Messages in Bahasa Indonesia or English are answered by teammates who know your market from the inside. KAZENA Books is already set to launch in the Philippines and Indonesia — and if your company would like to bring it to other countries as a partner, or is interested in acquiring the system, we would love to hear from you too. We also take on new system development. We are a small team, so we cannot always start right away — but what we build carries made-in-Japan quality and stays close to how business really works here, one project at a time.
Get in touch