IOSOR ガイド
最初の引き落とし前に行うプリペイド予約
プリペイド残高の予約から利用可能額、最初の正しい引き落としまでを追い、失敗・期限切れ・一部完了時の返金も確認します。
プリペイド決済において課金対象の処理を実行する前に、資金の移動順序を明確にしておくことが運用の鉄則です。prepaid hold は承認された金額を一時的に確保する予約処理であり、この時点ではまだ最終的な引き落としではありません。要求されたリソースの送信が正常に完了した後にのみ、ledger へ正式な debit が記録されます。IOSOR では JIT 方式を採用し、USD 20 や USD 1,000/month といった規模に関わらず財務整合性を維持します。
プリペイド予約が表すもの
Hold は未完了の intent のために資金を分離し、完了したサービスに見せかけません。金額、通貨、intent ID、作成時刻、期限、予約済み・完了・解放という読める状態が必要です。期限は飾りではなく、結果不明をいつ調査し、いつ安全に資金を戻せるかを決めます。
| イベント | ウォレットの変化 | 顧客に見える意味 |
|---|---|---|
| hold 作成 | 利用可能額が減り予約額が増える | この intent の資金が保護された |
| intent 完了 | 予約が debit に変わる | 課金対象の結果が生じた |
| 失敗または期限切れ | 予約が利用可能額へ戻る | 未完了の結果には課金しない |
状態変更は不可分である必要があります。作成失敗が孤立した予約を残したり、二つの処理が同じ金額を解放と決済へ同時に進めたりしてはいけません。各変更には理由と実行者を残し、サポートが内部チャットを探さずに説明できるようにします。
予約額と利用可能残高を分ける
「残高」という一つの数字だけでは同時実行の危険が隠れます。合計、予約済み、利用可能を別々に表示します。合計 USD 50 のうち USD 12 が予約中なら、新しい処理に使えるのは USD 38 だけです。同時リクエストが同じ資金を約束してはいけません。hold と将来の debit は一つの correlation ID を共有し、財務が一つの業務として照合できるようにします。
サービスごとに予約式は異なります。メッセージの batch は retry を含む上限付き予算を予約でき、JIT 番号の要求は購入と割り当てまで初回見積額を予約できます。ただし、有効な hold は必ず available balance から除外します。残高の読み取りと予約の書き込みを同じトランザクション境界で行わなければ、並行要求が古い残高を基にすべて通過します。
予約の件数、最古の年齢、期限間近の金額も監視します。合計残高が十分でも、止まった intent が資金を長く固定しているかもしれません。プロダクト状態のない intent が古くなったら、自動 retry を止め、証拠を調べ、文書化した基準で解放かエスカレーションを選びます。
最初の引き落としは結果に一致させる
決済の根拠はクリックやキュー投入ではなく、観測できる結果です。受理された send intent、割り当て済み番号、または事前に名付けた billable event が debit を許可します。最終額が hold より小さければ、実額だけを決済して差額をすぐ解放します。承認額を黙って超えてはいけません。上限が変わる場合は再見積もりと承認が必要です。
台帳行にはプロダクトイベントと同じ intent ID、サービス、金額、通貨、時刻、最終状態を保存します。同じ通知が二度届いても、処理は以前の資金結果を返します。このため 冪等・再試行と資金 は後付け対策ではなくウォレット設計そのものです。
照合は両方向で行えるべきです。プロダクト状態から debit を探せるだけでなく、debit から完了証拠へ戻れる必要があります。batch が一部だけ完了した場合は、完了分だけを決済し、残りを解放し、同じ export で差分を説明します。証拠のない台帳行は財務締めに使えません。
引き落とし前の失敗を処理する
completion 前の失敗は、明確な release または refund の経路で終わらせ、理由なく資金を消してはいけません。完了証拠のない JIT intent が期限切れなら hold を解放できます。処理自体は完了したが割り当てできない場合は、見える運用状態と管理された解決が必要です。番号については DID発注失敗の返金と差し替え を確認します。
- 作業前の validation 拒否:debit を作らない
- 同じキーの重複:既存 intent を返す
- hold 中に実行失敗:予約全額を解放
- 一部成功の batch:完了分だけ決済し未使用分を戻す
- 結果不明:retry を止め、二重課金を防ぎながら調査
Release と refund は別です。前者は未決済の予約を利用可能額へ戻し、後者は決済済みの資金イベントを反転します。どちらにも時刻、理由、業務参照が必要です。手動修正で残高だけを書き換えず、独立した監査可能な台帳行を作ります。
購入側が確認する項目
- 財務は reserved、available、settled を区別できるか。
- 各 hold に期限と一つの業務 intent ID があるか。
- 各チャネルの completion 証拠が明記されているか。
- release と refund をサポート依頼なしで確認できるか。
- 重複要求が最初の資金結果を再利用するか。
- 予約が衝突する前に低残高で新規処理を止めるか。残高不足での送信停止 と合わせて検証します。
権限も調べます。hold の延長、refund の承認、例外の許可を誰が行うか。期限警告が名指しの担当者へ事前に届くか。答えがチャットにしかないなら、その資金経路はまだ production 品質ではありません。
IOSORで始める
大量の課金リクエストを送信する前に、IOSORコンソールでプリペイドホールドの有効期限制限と承認状態のウェブフックを設定してください。統合システムが、一意の相関IDの下で総残高、予約残高、および利用可能残高を追跡していることを確認します。シミュレートされた失敗済みのインテントを実行して、未完了のリクエストが利用可能プールへの即時解放を自動的にトリガーすることを検証してください。
IOSORの要点
プリペイドホールドは、未請求のアクティビティを完了した収益と誤認させることなく、競合状態や二重支払いを防ぐために保留中のインテントの資金を囲い込みます。予約済み金額を利用可能残高から切り離すことで、システムゲートと財務チームの両方に、リアルタイムで監査可能なアカウントの支払能力の正確なビューを提供します。オペレーターは、すべてのオーソリゼーションホールドを一意のビジネスインテントIDにバインドし、配送や割り当てが失敗した場合には未消費の予約を自動的に解放するように設定する必要があります。最終的な決済時に予約済みの残高を静かに超過させたり、観察可能な完了の証拠なしにデビットを確定させたりしてはいけません。コンソール上での操作や元帳の整合性を維持するためには、UTC基準でのタイムスタンプ管理とエクスポート機能の活用が不可欠です。詳細な実装手順については、/learn/prepaid-billing や /learn/ledger-integrity のガイドを参照し、トランザクションの原子性を確保してください。
このガイドは役に立ちましたか?
関連ガイド
- ホールド期限切れと元帳決済の間のタイミングギャップの解決
キャリアの配信ウェブフックがTTL経過後に到着した場合の非同期消込をマスターします。元帳のズレを防ぎ、JIT残高ホールドを同期し、利益率を保護します。
- 上流障害後にスタックしたプリペイド保留の照合
プラットフォームのネットワークインシデント後、すべての課金チャネルにわたる残存プリペイドシステムホールドの監査と解放に関するステップバイステップのプレイブック。
- 残高枯渇前のウォレット消費速度異常と一時停止の検出
IOSORが異常なプリペイド消費速度を検出し、自動化されたアウトバウンドトラフィックを即座に停止して資金を守る仕組みを解説します。