SMPP Delivery Receipts: deliver_sm Format, Statuses and How to Test Them
How SMPP delivery receipts (DLRs) are built, what each stat value means and how to test every outcome with an SMSC simulator.
Guide
The cases your OTP and 2FA code must survive, and how to reproduce each one safely with a sandbox.
One-time passwords look simple: send a code, wait for the user to type it. In production the interesting part is everything that goes wrong between those two steps. An SMPP sandbox lets you reproduce those situations on demand, without sending real SMS or paying for them.
submit_sm_resp must stop the flow immediately, see SMPP error codes.message_id from submit_sm_resp with the OTP attempt so you can match the later deliver_sm (see delivery receipts).In the sandbox you give each client account a delivery scheme: a delay in seconds and the percentage of reports per status (Delivered, Not Delivered, Expired, Pending, Rejected). Because the scheme belongs to the client account, the simplest approach is one account per scenario:
otp-ok: 100% Delivered after 1 second.otp-slow: 100% Delivered after a delay longer than your resend timer.otp-fail: 100% Not Delivered.otp-mixed: 90% Delivered and 10% Not Delivered, for exercising statistics and monitoring.Your tests then pick the account that matches the case, with no changes to the application code itself.
Want to try this against a real SMPP endpoint? Register for the sandbox and use it free for 3 days, or tell us about your scenario.
How SMPP delivery receipts (DLRs) are built, what each stat value means and how to test every outcome with an SMSC simulator.
Failure handling is the part of SMS software that is hardest to test against a real provider. Here is how to make it repeatable.
A practical setup for running SMS and SMPP tests on every commit, with no real traffic and no flaky results.
Get your SMPP sandbox in minutes and use it free for 3 days - or tell us what you are building and we will help you choose a plan.