Engineering deep-dives, product thinking, and stories from teams running Billin. Written by humans who ship on Thursdays.
A look at the six changes that moved our average customer from a 22-day close to a 3-day close. Most aren't about software — they're about owners, cadence, and consistency.
Eighteen months in, we moved the accounting engine to Apache-2.0. Here's the reasoning — and what stays closed, why, and the governance model we settled on.
Every cross-border bug we've ever shipped started the same way. Here are the four invariants the ledger now enforces at the database level, and the migration we ran on 40M rows to get there.
A 62-person footwear brand shipped inventory across three countries — with four spreadsheets holding it together. Here's the full onboarding timeline and what broke on day 7.
We have one rule: no feature ships without a public API. It's why Billin has a healthier integration ecosystem than ERPs ten times its size — and why our product team spends more time on contracts than on pixels.
The Billin hiring loop has a quirk: every eng finalist runs a simulated month-end close. It's the most predictive signal we've found — better than coding exercises, better than systems design.
Perpetual inventory sounds nice in textbooks. In reality, you need a cycle-count loop that fits into a warehouse manager's morning. Here's the one we built, and the research behind it.
No sharding, no Kafka, no read-replicas-of-read-replicas. One Postgres 16 instance handles every journal entry from every tenant. The trick is in the partitioning — and in what we refuse to do.
We closed a $42M round led by Index, with participation from our customers (yes, really) and every seed investor. Here's what it funds: more engineers in Europe, a faster release cadence, and our first physical office.
Engineering write-ups, product changes, and customer stories. No marketing emails. Unsubscribe with one click. 12,400 readers so far.