Build on Elastbiz
How to run invoicing & billing on Elastbiz
Invoices are rows. Payments are rows. Wire Stripe once and every paid invoice lands in your Tables as a record your AI workers can reconcile.
Billing tools keep your money data in someone else's product and hand you a CSV export. On Elastbiz the invoice is a row next to the customer it belongs to, and the payment that settles it is a row too — so 'which customers are overdue' is a view, not a spreadsheet.
What you will build
- An Invoices partition linked to Customers, with Status (draft / sent / paid / overdue).
- A Payments partition that Stripe writes into via webhook.
- A Checkout button that creates a Stripe session; on success the payment row lands automatically.
Step by step
- Model invoices. Columns: Number, Customer (reference), Amount, Currency, Status, Due date, Line items (a subtable). A view grouped by Status is your accounts-receivable board.
- Add a Checkout action. A pricing/pay button calls
CreateCheckoutSession(price_id, success_url, cancel_url)and redirects to Stripe. This is the same Stripe wiring the platform ships for its own plans. - Verify the webhook. Stripe posts
checkout.session.completedandinvoice.paidto your endpoint; the handler checks thewhsec_signature before trusting the event. - Write the rows. On a verified
invoice.paid, insert a Payment row and flip the matching Invoice to Paid — the reconciliation is a row update, not a manual match. - Test in Stripe test mode. Pay with card
4242 4242 4242 4242, confirm the Payment row appears against the right Customer, and screenshot the flow before switching to live keys. - Let AI chase the rest. An AI worker can read the Overdue view, draft reminder emails through your DKIM-signed Mail server, and log each nudge as an AIRecord on the invoice.
Dogfood note: this is exactly how Elastbiz bills itself — Stripe webhooks are HMAC-verified and turned into license + payment rows in our own Tables. The billing layer is a customer of the same substrate you are building on.
Where to go next
Pair this with the CRM walkthrough so an invoice links back to its deal, and read the pricing comparison for why self-hosted billing avoids the per-seat tax.