Business Features¶
The SMS Gateway is a multi-tenant A2P messaging platform for direct notifications and managed campaigns in Bangladesh. Its business capabilities span the complete message journey: authentication, tenant budgets, content validation, operator routing, charging, carrier submission, delivery tracking, refunds, reporting, and operational continuity.
This section describes what the platform offers and the rules users or operators can rely on. Implementation details are in System Architecture, while API request and response details are in the API Reference.
Capability map¶
| Business domain | Primary users | Capabilities |
|---|---|---|
| Identity and access | Client applications, tenant users, platform operators | Login, JWT sessions, refresh rotation, logout, gateway authorization and administrative access separation |
| Client and balance management | Provisioning teams, finance operators, tenant administrators | Organization onboarding, prepaid/postpaid accounts, client users, top-ups and real-time balance checks |
| Direct messaging | Transactional systems and notification applications | OTP, transactional and promotional submission, multi-recipient sends, idempotent acceptance and status polling |
| SMS campaigns | Marketing and operations teams | Generic/personalized campaigns, inline or bulk CSV upload, preview, instant sending or scheduling, lifecycle controls, retry and resend |
| Routing, pricing and compliance | Messaging operations and commercial teams | Bangladesh operator detection, sender/CLI authorization, primary/secondary routes, carrier credentials, segment pricing and BTRC compliance, including the promotional sending window |
| Delivery, DLR and refunds | Client support, finance and messaging operations | Infozillion dispatch, delivery polling, terminal classification, direct/campaign refund ownership and safe reconciliation |
| Reporting and alerts | Reporting users, account managers and NOC teams | CDRs, campaign jobs, dashboards, billing summaries, CSV exports and channel-failure threshold alerts |
| Platform reliability and operations | SRE, NOC and platform operators | Service discovery, load-balanced ingress, transactional outboxes, bounded recovery, health diagnostics and horizontal scaling |
How an SMS is processed¶
flowchart TB
Submit[Client submits an SMS or campaign]
Check[Check recipients, content, balance and BTRC rules]
Prepare[Select route, calculate cost and charge balance]
Queue[Accept and queue the messages]
Send[Send messages to the mobile operator]
Status[Check and record delivery status]
Refund[Refund eligible failed messages]
Report[Update reports and alerts]
Submit --> Check --> Prepare --> Queue --> Send --> Status
Status --> Refund
Status --> Report
An accepted request has been checked, charged and queued. It does not mean the message has reached the recipient. Delivery happens afterward, and clients can follow the result through message status and reports.
External client features¶
- Authenticate with username/password, rotate single-use refresh tokens, and explicitly revoke sessions.
- Send 1–5,000 OTP, transactional, or promotional recipients in a direct request.
- Create generic or personalized campaigns for up to 5,000 inline recipients, or upload promotional CSV files containing up to 1 million recipients for background processing.
- Preview rendered segment counts and cost before creating an inline campaign.
- Schedule, pause, resume, reschedule, cancel, and resend failed campaign recipients.
- Poll aggregate message status or request recipient-level detail.
- Use tenant-scoped idempotency keys to make submission retries predictable.
Operator and commercial features¶
- Provision prepaid/postpaid organizations and client users.
- Set a separate balance limit for each user or let users use the organization's shared balance.
- Configure operator/IPTSP groups, credentials, channels, authorized sender CLIs, alternate routes and tenant-specific billing rates.
- Inspect per-recipient CDRs, campaign job snapshots, daily dashboards and billing aggregates.
- Export complete filtered report sets as spreadsheet-safe UTF-8 CSV.
- Receive rolling channel-failure alerts through a webhook.
Key rules and limits¶
| Area | What the platform does | What to know |
|---|---|---|
| Client access | Users can only view their own messages and campaigns | Internal service ports must remain private |
| Balance safety | Balance changes are protected against simultaneous spending | Do not retry a manual top-up or unkeyed debit when the result is unclear; check the balance first |
| Duplicate requests | The same idempotency key can safely retry the same message or campaign request for 24 hours | Do not reuse a key for different request details |
| Message queueing | Accepted messages are saved before they are queued for sending | Accepted does not mean sent or delivered |
| Campaign pricing | Content, message parts, rates and cost are saved when the campaign is accepted | Later rate changes only affect new campaigns; operators can still switch undispatched messages to a configured fallback route |
| Refund safety | Direct messages and campaigns have separate processes that prevent duplicate refunds | NOT_AVAILABLE and provider/local 9099 do not currently receive automatic refunds |
| Reporting | Repeated delivery events do not create duplicate report records | Reports and alerts can take time to update |
Current limitations¶
The platform currently has these limits:
- Operators select the secondary route manually; the platform does not automatically switch routes based on response codes or service health.
- Response code
9099is recorded as delivered and charged, even when caused by a timeout or circuit fallback. - After nine delivery-status checks without a final result, a recipient becomes
NOT_AVAILABLEand is not automatically refunded. - Operators must manually review failed reporting events and exhausted queue/refund records; there is no self-service replay screen.
- The same channel-alert settings apply to all clients and channels, and there is no alert-management API.