IOSOR Learn

Correlating DLR Status Webhooks with Prepaid Holds

Learn how to reconcile incoming delivery receipt callbacks against held prepaid funds to release reserved ledger amounts within the IOSOR CPaaS infrastructure.

When dispatching an OTP SMS through IOSOR, a temporary hold in USD is placed on your balance. Failing to properly correlate incoming DLR webhooks with these holds can lead to locked capital and inaccurate ledger balances. By implementing a JIT reconciliation flow via our API, you ensure that funds are instantly debited or returned based on the final delivery status.

Understanding the Prepaid Hold Mechanism

In the IOSOR ecosystem, every outbound SMS request triggers an immediate JIT (Just-In-Time) ledger check. When a request is initiated, the system places a temporary hold on the account balance to ensure sufficient funds exist for the message delivery. This hold is not a final debit but a reservation of capital. The final settlement occurs only upon receiving the DLR (Delivery Receipt) status from the network, ensuring that your financial ledger accurately reflects the actual consumption of messaging credits.

The Lifecycle of a DLR Callback

Once a message is dispatched, the network returns a DLR status. Your webhook endpoint receives this payload, which contains the unique message ID and the final status code. The IOSOR engine correlates this ID with the original transaction record. If the status indicates a successful delivery, the system converts the held amount into a permanent debit. If the status indicates a failure, the hold is released back into your available balance, ensuring you only pay for successful attempts.

Managing Ledger Reconciliation

Reconciliation is automated, but developers must monitor the latency between the dispatch and the DLR arrival. If a DLR is delayed, the hold remains active, which may temporarily reduce your available credit. For accounts maintaining a USD 20 prepaid floor, this is critical to prevent service interruptions. If your monthly volume exceeds USD 1,000/month, our system triggers a soft review to adjust your credit limits and ensure smooth throughput for high-frequency traffic.

Handling Edge Cases and Timeouts

Not all messages receive a DLR within the expected window. If a network fails to provide a status update, the IOSOR system employs a cleanup job that releases stale holds after a defined TTL (Time-To-Live). This prevents 'ghost' holds from impacting your liquidity. Always ensure your webhook handler acknowledges receipt of the DLR within 500ms to maintain synchronization between our ledger and your internal accounting records.

Essential Integration Resources

To ensure your implementation is proven and follows best practices for financial integrity, refer to these guides:

Start with IOSOR

To finalize your integration, head to the IOSOR Console and navigate to the Webhook Settings to configure your ledger reconciliation endpoint. Ensure your listener is ready to process the dlr.status payload and map it directly to the corresponding transaction hold ID. Testing this correlation in the sandbox environment will guarantee that reserved funds are released or debited instantly without ledger drift.

IOSOR takeaway

This guide demonstrated how to safely bridge the gap between real-time message delivery and financial ledger accuracy. By correlating incoming DLR callbacks with active prepaid holds, you prevent capital lockup and ensure that your available balance reflects actual delivery states rather than worst-case assumptions.

Do design your webhook handler to be strictly idempotent, ensuring that duplicate DLRs do not trigger multiple ledger adjustments. Don't rely solely on immediate callbacks; always implement a fallback TTL mechanism to release stale holds when a carrier fails to return a delivery receipt.

Was this guide helpful?

Related guides