How to configure the SMPP Registered Delivery Field
What is the Registered Delivery Field?
The Registered Delivery field in SMPP is a 1-byte bitmask in PDUs like submit_sm
and data_sm
that controls
delivery receipts and acknowledgments. It enables senders to track message delivery status through SMSC-generated receipts. Key functions include:
- Requesting final delivery receipts (success/failure)
- Enabling intermediate delivery notifications
- Handling SME (Short Message Entity) acknowledgments
Field Structure and Bitmask
Defined in SMPP v3.4, the field uses the following bitmask structure:
Bit | Description |
---|---|
0 | SMSC Delivery Receipt (0 = disabled, 1 = enabled) |
1 | SME Originated Acknowledgment (0 = disabled, 1 = enabled) |
2 | Intermediate Notification (0 = disabled, 1 = enabled) |
3-7 | Reserved |
Common Values
Value (Hex) | Binary | Description |
---|---|---|
0x00 | 00000000 | No receipts requested |
0x01 | 00000001 | SMSC delivery receipt only |
0x03 | 00000011 | SMSC receipt + SME acknowledgment |
0x05 | 00000101 | SMSC receipt + intermediate notifications |
Use Cases
1. Basic Delivery Receipts
registered_delivery: 0x01 // Request final delivery status
2. High-Reliability Messaging
registered_delivery: 0x05 // Receipt + intermediate notifications
3. Two-Way Communication
registered_delivery: 0x03 // Confirm both SMSC and SME delivery
Example SMPP PDUs
Example 1: No Receipts (0x00)
0000001D // Command Length (29 bytes) 00000004 // Command ID (SubmitSM) 00000001 // Sequence Number 00 // Source TON 00 // Source NPI 736F7572636500 // Source Address ("source") 00 // Dest TON 00 // Dest NPI 36353433323100 // Destination Address ("654321") 00 // ESM Class 00 // Protocol ID 00 // Priority Flag 00 // Schedule Delivery Time 00 // Validity Period 00 // Registered Delivery (0x00: No receipts) 00 // Replace-if-Present 00 // Data Coding (DCS=0x00) 00 // SM Default Message ID 07 // SM Length (7 septets) C8329BFD06DDDF72 // Payload ("Hello!")
Example 2: SMSC Delivery Receipt (0x01)
0000001D // Command Length (29 bytes) 00000004 // Command ID (SubmitSM) 00000002 // Sequence Number ... 00 // Validity Period 01 // Registered Delivery (0x01: SMSC receipt) 00 // Replace-if-Present ...
Example 3: Intermediate Notifications (0x05)
0000001D // Command Length (29 bytes) 00000004 // Command ID (SubmitSM) 00000003 // Sequence Number ... 05 // Registered Delivery (0x05: SMSC receipt + intermediates) ...
Delivery Receipt Format
SMSCs return receipts via deliver_sm
PDUs with a payload formatted as:
id:IIIIIIIIII sub:SSS dlvrd:DDD submit date:YYMMDDhhmm done date:YYMMDDhhmm stat:STATUS err:EEE
Example receipt for a delivered message:
id:1896384752 sub:001 dlvrd:001 submit date:2310151430 done date:2310151431 stat:DELIVRD err:000
Interactions with Other Fields
- esm_class: Bit 6 (delivery receipt flag) must align with registered_delivery settings
- validity_period: Determines how long the SMSC will attempt delivery before sending a failure receipt
- message_id: Critical for correlating receipts with original messages
Common Pitfalls
- Enabling receipts but not listening to
deliver_sm
PDUs - Assuming all SMSCs support SME acknowledgments (0x02)
- Mismatching
registered_delivery
andesm_class
flags - Ignoring SMSC rate limits for receipt generation
Some providers charge extra for delivery receipts. Confirm pricing before enabling.
Conclusion
The Registered Delivery field is essential for tracking SMS delivery status in SMPP. While basic receipt handling (0x01) is widely supported,
advanced features like intermediate notifications require SMSC-specific testing. Always implement robust receipt parsing and correlate messages
using message_id
. For detailed behavior, consult SMPP v3.4 Section 5.2.17 and your provider's documentation.
More information
- How to configure the SMPP Service Type field
- How to configure the SMPP Phone Number fields
- How to configure the SMPP ESM Class field
- How to configure the SMPP PID field
- How to configure the SMPP Prioirity field
- How to configure the SMPP Scheduled Time field
- How to configure the SMPP Validity Period field
- How to configure the SMPP Registered Delivery field
- How to configure the SMPP Replace if Present field
- How to configure the sm_default_msg_id field
- How to configure the SMPP DCS field
- How to calculate the SMPP SM Length field
- How to put data into the SMPP SM field