IOSOR Learn

Voice billing rounding and connect fees: export math finance can defend

Connect fee, minute increment, and OTP fallback rows must sit in the same export. Under prepaid, rounding is a wallet line, not a UI preference. Write caps before you scale alerts.

Finance asks why this call billed two minutes. Product answers “it connected.” Both are right and the book does not close. Voice under prepaid has at least two layers: a connect fee and minutes under an increment rule. OTP fallback adds another row. Without an export finance can defend, leadership reconciles from screenshots. A corridor marked live may admit alert scale; in setup is not cheaper per-second billing.

IOSOR is white-label prepaid: voice and SMS on one ledger, client-safe errors. Connect and minutes must be exportable. See voice minute versus connect and voice alerts and OTP fallback. Near USD 1,000+ monthly usage the increment rule and per-attempt rows enter a tighter commercial read. Evidence first, then scale.

Connect fee vs billed minutes

A connect fee debits when the far end answers (or when policy counts a connect), even if the user hangs up after a second. Billed minutes round by increment — often sixty-second blocks; a corridor may use thirty or six. Finance must split wall-clock from wallet minutes. Product counts calls; finance counts connect plus rounded minutes.

Row When it debits Export must show
Connect fee Connect established Call ID + rate
Billed minutes Rounding by increment Increment seconds + rounded minutes
OTP fallback Voice attempt after SMS fail Same correlation as SMS

Rounding increments in exports

If the export writes only “duration seconds,” finance cannot recompute rounding. Increment, rounded minutes, and unit rate must be visible. Eight seconds under a sixty-second rule is a minute; under a six-second rule it may be two blocks. Mixing rules in one table fights month-end close. Slice by corridor; a world average hides an expensive increment. Near USD 1,000+ that gap becomes a commercial topic. Product dashboards that show “talk time” while the wallet bills rounded minutes will fight every close.

OTP fallback voice rows

OTP fallback voice is a second row, not a “free upgrade of the same check.” The SMS attempt and the voice attempt must sit with the same user event. Uncapped fallback hammers connect fees on no-answer. See voice alerts and OTP fallback. Separate user resend from system failover. When policy says stop, the wallet stops. Quiet hours still apply; a night ring is not free engagement.

Prepaid caps before alert scale

Before you scale alerts, write prepaid caps: auto-attempts per call, per user and event, stop on low balance.

Red flags

  • Export only seconds, no rounded minutes
  • Connect and minutes mixed in an unsplittable row
  • OTP fallback without correlation to SMS
  • “Until it connects” with no attempt cap
  • World average hiding an expensive increment corridor
  • Catalog in setup sold as Live voice alerts
  • Finance cannot recompute one call’s wallet row

Start with IOSOR

Configure your export webhooks in the IOSOR console to output raw duration, increment rules, rounded billable minutes, and connect fees as separate columns. Apply attempt caps and balance safety gates on voice OTP fallback triggers before scaling call volume. Audit incoming CDR webhooks to ensure every voice fallback row retains the correlation ID of its initial SMS event.

IOSOR takeaway

Defensible voice billing requires explicit mathematical visibility into connect fees, rounding blocks, and parent transaction links. Raw call duration alone cannot account for sixty-second rounding floors or high-frequency connection charges, making financial reconciliation impossible when corridors mix billing policies.

Do export rounded minutes alongside raw duration and connect fee flags for every voice dispatch. Don't allow uncapped fallback loops or blend connection charges into single duration columns that hide true per-call costs.

Was this guide helpful?

Related guides