Why the wallet model changes everything for SaaS billing
Most shipping platforms invoice you monthly for labels you bought. We invert that — pre-fund a wallet, and every label deducts atomically. Here’s why.
For years, the default shipping-platform billing model has been: print labels all month, get a bill on the first. The bill is reconciled against carrier statements. The platform charges your card.
It’s a bad model — for both sides. Card declines mid-billing-cycle. Disputes over carrier surcharges. Surprise invoices when a marketplace import goes haywire. We picked a wallet model instead.
How it works
You pre-fund your wallet. Every label purchase is an atomic SQL transaction: lock the wallet row, check balance, insert the wallet_transactions row, update wallets.balance_cents, insert the label record. If anything fails, nothing happens.
Why it’s better
- No card declines mid-day. Your wallet is funded; labels print.
- No surprise invoices. You always know what you’ve spent — it’s in the ledger.
- No over-charging. The atomic deduction means you’re never billed for a label that didn’t actually print.
- No disputes. The wallet ledger and the carrier statement always agree, because we only deduct when EasyPost confirms the label exists.
The trade-off
You have to think about wallet balance. We mitigate this with auto-topup (refill from your card when balance hits a threshold) and low-balance alerts (email + in-app at 24-hour intervals).
For most merchants, this trade-off is the difference between a shipping system that feels in control and one that feels like it’s shipping you bills.