Skip to content

Billing software with fewer places to be wrong

BillingMart is invoicing and payments for small businesses, built by Voiie Inc. It does the ordinary things — invoices, estimates, recurring bills, reminders, card and bank payments, reports — and it does them with the money written on the server and nowhere else.

We are pre-launch. There are no customers to quote at you yet, so the rest of this page is the reasoning instead.

Four decisions that shaped the rest

Each of these was a fork, and each one closed off a category of bug rather than adding a feature.

Why a person, not an account

Most billing software gives your customer a login per vendor. Five businesses bill them, they hold five passwords, and four of those get reset by email every quarter.

Here the link between a person and a business is a verified email address or phone number. Sign in once and you see every bill from every business on BillingMart that has your address on file. An unverified address resolves to nothing, ever, which is the other half of the same rule.

Why the server does the arithmetic

A page that calculates a total is a page that can be edited before it submits. So it does not calculate one.

Totals are re-derived from stored line items at the moment an invoice is sent, and the amount to charge is computed again when the card is charged. Every amount is an integer count of the currency’s smallest unit with the currency stored beside it, and one function does that maths for the whole platform.

Why the pay page is a different website

The page a card number is typed into has its own origin, its own content-security policy, two dependencies and no analytics. It cannot load a script from anywhere else, because its policy will not let it.

The card number lives inside the charging function while it runs and is never written down. What is stored is the last four digits and the card type.

Why an assistant can draft but not send

You can point ChatGPT, Claude or Gemini at your billing data and it can read, draft and propose. No tool it holds sends anything to a customer or moves any money.

When it proposes one of those, the proposal waits in an inbox you open yourself, showing a summary the server rendered rather than one the assistant wrote. That is not a setting. The scopes an assistant can hold are a closed list, and a money tool cannot be added to it without the build failing.

Where it runs, and who else touches your data

Five companies are involved in getting an invoice from your screen to your customer’s bank. We name all of them.

See the list

Judge it by using it

The free plan is the whole product at twenty-five invoices a month. No card, no call.

We use Google Analytics to see which pages are worth keeping. Nothing is measured until you say yes, and nothing here identifies you personally. Cookie policy