Back to Logbook
May 26, 2026 Project: #Biznetrix

Billing Audit — Seven Bugs Fixed Before First Real Invoice

determined

Pre-deployment billing audit. Found and fixed seven bugs across the billing and tenancy layer. Three were critical — they would have silently corrupted data at runtime. The tenant package assignment was trying to write to a column that does not exist. The billing system was querying the wrong role when looking up tenant admin email addresses, meaning billing notifications would never be sent. The invoice payment recording was using wrong field names that do not exist in the invoices schema.

Three more were schema name mismatches (wrong table aliases in queries, wrong status enum values, wrong field names in renewal invoice SQL). One was a validation rule pointing at the wrong table name.

All seven fixed before any real invoices ran. The audit took a full session but it is the kind of work that saves client relationships. Silent data corruption in a billing system is not a bug you want to discover from a client complaint.

Lessons Learned

Audit your billing layer before go-live, not after. Schema drift between models and actual table structure is silent in PHP — the code executes without error while writing to columns that do not exist.