Skip to content

Rebilling Money Model

Iron’s money model is a flat base subscription plus metered usage rebilling: a client’s monthly invoice is the flat base plus measured SMS, AI, and voice usage. The agency sets a rate card; usage is metered, rolled up, and reported to Stripe.

  • Flat base — the recurring anchor (the decided plan is $297/mo, with a quarterly prepay option). This covers the done-for-you service, number rental, and an included usage bucket.
  • Metered usage — three usage meters (SMS, voice minutes, AI tokens). Usage is rolled up daily and reported to Stripe as meter events, which add usage lines to the client’s invoice.
  • Rate card — the agency-stored card of per-meter prices and the base rate (agency-only, on the agency org’s settings; no migration). See Billing.
  1. Activity (SMS sent, voice minutes, AI tokens) is recorded as usage.
  2. A daily beat rolls usage into crm.usage_rollups.
  3. A daily reporter selects unreported rollups, maps the org to its Stripe customer, pushes meter events to Stripe, and stamps the rows as reported (idempotent — the timestamp is the guard).
  4. The client’s monthly invoice = flat base + the measured usage lines.

Recurring checkout modes (monthly, quarterly, ACH) attach the metered prices alongside the base so this works automatically. An annual prepay is flat-only (Stripe cannot mix a yearly base with monthly metered prices in one subscription).

A client starts in a card-required trial. The trial-lifecycle state machine (none / trialing / active / past_due / lapsed / canceled) is driven by Stripe webhooks plus a daily trial-expiry sweep. A trial that doesn’t convert is lapsed, and the per-request billing gate then returns 402 for a lapsed / past-due client org. The agency org is always exempt, and the gate fails open on any internal error.

For the lean field-service back office, client invoices are collected via direct charges on the client’s connected Stripe account with an application fee — the agency’s markup. Connect is hard-gated to sandbox keys until go-live.