IOSOR База знаний
Send end-user всё равно бьёт в один prepaid ledger
Встроенный Send списывает prepaid wallet ISV. Не выдумывайте второй ledger, который продукт не финансирует — hold, retry и idempotency остаются честными.
Встроенный messaging кажется бесплатным: тап Send в UI SaaS и зелёная галочка. Под стеклом каждый успешный submit бьёт в один prepaid ledger ISV. Второго wallet не появляется от факта embed. Если ISV не финансирует hold, send падает с честной product-ошибкой — не с fake delivered.
Fiction accounting — типовой провал: in-app credit meter без опоры на wallet IOSOR, refund в валюте SaaS при горящем prepaid ledger, retry без idempotency с двойным debit одного OTP. Embed прячет консоль; ISV остаётся funded party.
Строка в architecture doc: end-user send ≡ prepaid debit ISV. Каждый design review начинается с неё. Перед пилотом сверьте один OTP-intent в UI с одной строкой hold/debit в export — без этого join demo запрещён.
Один ledger, даже если UI показывает product credits
Message packs для tenant — commercial layer ISV. Они мапятся на prepaid hold и debit одного wallet IOSOR. Баланс tenant без сверки со строками ledger — бомба для support. Экспортируйте usage еженедельно против строк wallet.
Не открывайте второй аккаунт IOSOR на tenant, пока Partner isolation не явный контракт. Embed-пилоты живут на одном аккаунте ISV с fair-share caps.
Hold и idempotency обязательны на embed-пути
Server-side send использует idempotency keys для OTP и transactional SMS. Double-click не создаёт два debit на одно intent. Retry после timeout — тот же ключ до terminal DLR или mapped failure.
Если wallet не берёт hold, верните insufficient-funds или paused-send. Никогда HTTP 200 с семантикой delivered при провале hold.
Сверьте product-ошибки с правдой ledger
| Сигнал UI SaaS | Правда ledger | Допустимый next step |
|---|---|---|
| Sent / delivered | Есть debit + путь DLR | Показать receipt id |
| Queued | Hold открыт или submit принят | Poll статуса |
| Failed / paused | Hold отклонён или stop-гейт | Retry только с новым intent |
| Fake success | Нет debit / нет hold | Запрещено |
Обучите support средней колонке. Тикеты про UI green без строк ledger сжигают pilot week.
Handover каналов на том же wallet
Email или voice рядом с SMS садятся на тот же prepaid ledger, пока нет second-channel handover с подписью finance. Embed не даёт бесплатный side channel. Читайте Wallet adjacency до флипа Live-тайла в настройках SaaS.
Связанные пути
- Handover spend второго канала на одном wallet
- Idempotency API, retry и деньги
- Rate limits subtenant и fair share
Начните с IOSOR
Настройте единый API-ключ ISV и сквозные ключи идемпотентности в консоли IOSOR для каждого пользовательского действия. Привяжите внутренние кредиты вашей SaaS-платформы к холдам и списаниям на основном предоплатном кошельке. Включите вебхуки статусов DLR для мгновенной синхронизации балансов субабонентов с реестром транзакций.
Итог IOSOR
Встроенная отправка сообщений конечными пользователями всегда опирается на один предоплатный леджер ISV, даже если в интерфейсе SaaS отображаются отдельные продуктовые балансы. Любое расхождение между пользовательскими кликами и записями в главном кошельке превращается в финансовый долг и проблемы поддержки.
Делайте еженедельную сверку списаний платформы с физическими транзакциями IOSOR и используйте строгую идемпотентность для всех OTP и SMS. Не пытайтесь создавать виртуальные кошельки без реального покрытия и не скрывайте ошибки холдирования за сфальсифицированными статусами в UI.
Был ли материал полезен?
Связанные гайды
- Встраивание API vs white-label партнёрский портал
SaaS, который встраивает messaging, остаётся на поверхности ISV. White-label партнёрский портал — зона Partner: не смешивайте бренд, ключи и ownership ops.
- Когда cap tenant во встроенном продукте обязан остановить send
Fair-share caps внутри продукта ISV обязаны hard-stop send для tenant — никогда не отдавайте fake delivered API 200 при ударе в потолок.