IOSOR Learn

Tag Sender ID on every prepaid debit row

Put Sender ID on every prepaid debit so finance audits burn-by-from-identity on one ledger — no second spreadsheet for OTP, SMS, or multi-sender spend.

A prepaid debit without a Sender ID is blind money. Finance sees dollars leave the wallet and cannot say which from-identity burned them — brand alpha, local DID, toll-free, or a pilot string still in setup. Sibling Debit rows vs delivery status ledger joins money to DLR. Here: every settled prepaid row must carry the Sender ID that owned the send so burn-by-from-identity is a ledger filter, not a second book.

IOSOR is white-label prepaid. Fund the wallet, hold before debit, JIT-assign when numeric sender is the path. Floor USD 20 funds first tagged proofs; soft USD 1,000/month review is when blank tags become night tickets. See Multi-sender ops at volume.

Debit without sender id is blind money

Wallet totals without from-identity are vanity. “We spent USD 400 on SMS” does not name the brand string, DID, or TF line. Blind rows force invented joins from timestamps and chat pins. At soft USD 1,000/month, reconstruction fails every close. Tagging keeps prepaid honest when Sender ID count grows. Untagged OTP and marketing SMS look identical. The USD 20 pilot must prove tags stick before volume language.

Required fields on every prepaid row

Every settled prepaid debit under a from-identity needs: Sender ID / from-identity, intent / correlation ID, debit amount + currency (USD), channel + unit type, and hold → settle + outcome. Missing Sender ID makes the rest a partial truth. Prefer one export with the tag as a first-class column. Idempotent retries reuse the same Sender ID under the same key. Never settle under a blank from-identity.

Holds rejects and filters still carry the tag

Tags are not only for delivered SMS. A hold that never settles still records which Sender ID was attempted. A sender reject stays a reject with the same from-identity — never relabeled as a content filter (Sender reject vs content filter: status truth for finance). A filter that burns a billable unit keeps the tag. JIT DID and OTP: numeric sender (or registry id) is the tag, not blank. DLR lag may update outcome later; it must not wipe Sender ID. Caps in Multi-channel wallet caps at volume need the guarded identity on every attempted burn.

Multi-sender audits without a second sheet

Finance’s close question: burn by Sender ID this period. Answer from the platform ledger — group by tag, export CSV. Multi-sender ops at volume covers registry and Live; here every debit must already be tagged. Weekly: sample settled rows for non-empty Sender ID vs the registry owner map. After each new Sender ID: one held tagged proof. Month-end: burn-by-sender export for soft USD 1,000/month.

Buyer checklist for sender debit tags

  1. Does every settled prepaid debit export a non-empty Sender ID / from-identity?
  2. Do failed holds, rejects, and filters keep the same tag on release or settle?
  3. Can finance slice burn-by-sender without a second spreadsheet or ops ticket?
  4. Do idempotent retries reuse one Sender ID under one money key?

Start with IOSOR

Open the IOSOR console ledger settings and enforce mandatory sender_id metadata for all prepaid debit billing events. Check that your active webhooks and CSV exports display the explicit from-identity tag across holds, settlements, and releases. Run a test message cycle to confirm that rejected holds keep the exact same Sender ID string.

IOSOR takeaway

Unattributed ledger entries force finance teams into manual spreadsheet joins and speculative auditing. Enforcing a strict Sender ID tag on every prepaid debit row guarantees absolute visibility into messaging spend across every brand line directly from the primary ledger export.

Was this guide helpful?

Related guides