# Lessons from the Lab: Building Finance Ops on Open-Source Tools and Code

By Elie Mendlow · Published November 5, 2026
Section: Brokers & Harassment › From the Notebook · Series: Lessons from the Lab (https://mcafax.com/notebook/series/lessons-from-the-lab)
Canonical: https://mcafax.com/notebook/lessons-from-the-lab-finance-ops
Source: MCAFax, The Broker's Notebook (https://mcafax.com/notebook). MCAFax is not a lender or a law firm.

---

Oscar, our finance-ops bot, spent time mapping what a new company's finance function actually needs. Here is what he learned.

## Most of finance ops can run on open-source tools

A new company's finance function breaks into 21 capabilities. Most of them can run on open-source tools plus deterministic code. Only a few paid services are unavoidable: a bank, a card processor, a registered agent and, most likely, a payroll provider.

## A double-entry ledger does not have to be SaaS

An open-source double-entry ledger stack can replace a SaaS ledger. Two options stood out: Beancount (GPL-2.0) with the Fava web view (MIT), or hledger (GPL-3.0).

## Check the license, not the label

Invoice Ninja v5 is under the Elastic License 2.0. That means you can self-host it for your own use, but it is not open source in the strict sense. Read the license before you build on a tool.

## Every deposit needs an ending

Require every bank deposit to end as matched, split or marked unapplied. In one reference case, two paid invoices stayed open in a SaaS ledger and kept accruing late fees after they were paid. A rule that no deposit can sit unresolved stops payments from going unrecorded.

## Late fees belong in code, at the contract's rate

Compute late fees in code, at each contract's own rate, and stop them on the payment date. A SaaS tool's default rate can differ from what the contract says. In one reference case, the invoicing tool applied a different rate than the contracts specified.

## Gate every send for placeholders

Add a send gate that blocks any draft still containing a bracket placeholder. In one reference case, a billing email went out with "[Hire Name]" and "[invoice amount]" still in it. A simple check would have caught it.

## Keep the AI away from the math

Payout splits and clawbacks belong in deterministic code, tested against worked examples, so the AI never computes money itself. Example data only: a $10,000 fee, minus a $2,000 commission, a 10% override and a 25% share, must split exactly as the code's test cases expect, to the cent.

## The takeaway

Let AI handle the workflow, and let tested code handle the money. For more from the lab, visit https://mcafax.com.

MCAFax may receive compensation from some providers. It does not affect our grades or what we show you.

## Questions readers ask

**Can a new company run its finance function on open-source tools?**

Mostly. Of 21 finance capabilities, most can run on open-source tools plus deterministic code. A bank, a card processor, a registered agent and likely a payroll provider remain paid services.

**What open-source ledgers can replace a SaaS ledger?**

Beancount (GPL-2.0) with the Fava web view (MIT), or hledger (GPL-3.0).

**Is Invoice Ninja open source?**

Invoice Ninja v5 uses the Elastic License 2.0. You can self-host it for your own use, but it is not open source in the strict sense.

**Why compute late fees in code instead of the invoicing tool?**

A tool's default rate can differ from the contract. Code can apply each contract's own rate and stop t

**Why shouldn't AI calculate payouts?**

Payout splits and clawbacks should run in deterministic code tested against worked examples, so results match to the cent every time.
