IOSOR Learn

Shared status language for product and finance

Agree one product↔finance vocabulary for outcomes — accepted, held, settled, released, blocked, gated, delivered, failed, unknown/missing — before anyone builds dashboards. Not an SMS status encyclopedia.

Shared status language is the agreement product and finance make before anyone paints charts. One vocabulary for outcomes — accepted, held, settled, released, blocked, gated, delivered, failed, unknown, missing — beats three dashboards that disagree on the same intent. This page is vocabulary-before-dashboard, not the SMS status dictionary. Adjacent: undelivered, rejected, expired and DLR, latency, and failover — not this page.

IOSOR is white-label prepaid. USD 20 funds a pilot that proves shared words; soft review near USD 1,000/month makes mismatched labels louder. Related: Debit rows vs delivery status ledger, When launch is blocked: status without lying, webhooks that survive launch.

Vocabulary before dashboards

Dashboards amplify words you already argue about. If product says delivered while finance still reads held, a green tile is a month-end incident. Freeze a shared glossary first: which labels mean money moved, reserved, returned, traffic stopped, or nobody knows yet. Sign the one-pager, then wire UI, exports, and support macros to those exact strings.

Words product and finance must share

Word Product Finance
Accepted Intent received No settle yet
Held Reservation open Balance reserved
Settled Billable unit consumed Debit final for intent ID
Released Hold closed without settle Funds back to balance
Blocked / gated Production promises off Zero volume; no soft Live
Delivered Channel outcome success Join settled debit; not free
Failed Terminal unsuccessful Keep or release — never fake Delivered
Unknown / missing No trustworthy outcome Not success; open recon

Unknown and missing are not success

Unknown and missing are first-class outcomes. Blank cells, silent webhooks, or late nulls must not default to delivered or settled success. Product says unknown or missing; finance keeps the row open until a terminal word arrives or a named owner closes it. Joinable outcomes need webhooks that survive launch.

Map statuses to money outcomes

Every shared word maps to reserve, settle, release/refund, or stop. Accepted alone does not spend; held reserves; settled spends once under one intent ID; released returns what was never owed; blocked/gated stop new volume. Delivered updates the same debit row — see Debit rows vs delivery status ledger. Failed is terminal; keep or release — never a second silent settle. Unknown/missing keeps recon open; never auto-settles as success.

Buyer checklist for shared status language

  1. Signed glossary: accepted, held, settled, released, blocked/gated, delivered, failed, unknown/missing?
  2. UI, ledger export, and support macros reuse the same strings?
  3. Unknown/missing never defaults to success?

Start with IOSOR

Export your current webhook events and ledger export schemas into a single side-by-side audit in the console. Align key terms like accepted, held, settled, and released so your product webhooks map 1:1 with financial debit rows. Update UI status indicators and webhook handlers to ensure unknown or missing outcomes never silently convert to successful settlement.

IOSOR takeaway

Unifying status language between product and finance prevents costly month-end reconciliation disputes caused by mismatched definitions. Mapping intent identifiers directly to clear financial outcomes like holds, settlements, and releases ensures that operational events mirror balance movements accurately.

Was this guide helpful?

Related guides