Messaging CPaaS

Multi-Tenant SMS & WhatsApp CPaaS: Reseller, DLT and Wallet FAQ (India + Global)

Reseller SMS platforms need tenants, wallets, provider adapters and India DLT compliance modeling—not the same estimator fields as a voice PBX.

WhatsApp BusinessPBX
Multi-Tenant SMS & WhatsApp CPaaS: Reseller, DLT and Wallet FAQ (India + Global)
Multi-Tenant SMS & WhatsApp CPaaS: Reseller, DLT and Wallet FAQ (India + Global)

Scenario: You sell messaging to resellers who each run campaigns for hundreds of end customers. A provider API returns 200 Accepted but half the messages never show as delivered. Wallets drift from carrier invoices. India DLT rejects templates you thought were approved. A generic “SMS API” blog will not help you—platform accounting and lifecycle will.

Direct answer

A multi-tenant CPaaS is a control plane: tenants → API/auth → policy & routing → provider adapter → delivery callbacks → reporting & wallets. It is not a single SMPP bind with a login screen.

Product scope: SMS & WhatsApp CPaaS. Engineering reference: multitenant messaging case study. Implementation: SaaS development.

Reference architecture

Tenant API / UI
    → auth (per-tenant keys, rate limits)
    → policy (DLT template, sender ID, opt-in for WhatsApp)
    → routing (provider selection, failover rules)
    → adapter (Kannel/SMPP, HTTP CPaaS)
    → provider network
    ← DLR / status callback (signed webhook)
    → ledger (wallet debit/credit, reconciliation)
    → reporting (per tenant, per reseller margin)

Tenant isolation: separate credentials, route tables, wallet balances, and audit logs. A reseller’s sub-tenant must not spend another reseller’s balance.

Message lifecycle (operational meanings)

StateMeaningBilling implication
AcceptedPlatform validated request, enqueuedMay reserve wallet units
SubmittedHanded to provider adapterDebit often committed here
DeliveredPositive DLR (provider-defined)Final for many prepaid models
FailedHard fail from providerRefund or no debit per policy
UnknownNo callback within timeoutReconciliation job; do not double-send blindly

API acceptance ≠ final delivery. Design idempotency keys so client retries do not create duplicate sends.

Wallet accounting (synthetic walk-through)

Educational example—not a live customer ledger.

  1. Tenant balance: 10,000 SMS units.
  2. Campaign enqueue 500 messages → reserve 500 (available 9,500).
  3. Provider accepts 498, fails 2 → release reserve on 2, debit 498 on submit.
  4. DLRs arrive for 490 delivered, 8 unknown after 24h → reconciliation task compares provider CDR; adjust or escalate.

Double-debit prevention: row-level lock or ledger entries with idempotency on (tenant_id, client_message_id). Documented SandeshX build uses balance check + lock before enqueue—validate concurrency in UAT.

Idempotency, retries and webhooks

  • Idempotency-Key on send API; store outcome before returning 200 to client.
  • Retries only on safe states (network timeout to provider), not after ambiguous accept.
  • Webhook security — HMAC signature, replay window, IP allowlist where provider supports it.
  • Rate limits per tenant to protect provider binds and your own stability.

India DLT vs global routes

TopicIndia DLTTypical global HTTP/SMPP
TemplateRegistered template ID required for many routesProvider-specific template/content rules
EntityPrincipal entity registrationBusiness verification per provider
Sender IDApproved headersAlphanumeric / long codes per country
Platform roleModel PE, template, sender in DB; customer owns legal registrationContract + KYC with aggregator

WhatsApp adds opt-in, template categories, service windows, per-message provider charges—scope separately from SMS.

Multi-provider and failover

Running two SMS providers can improve reach but failover without deduplication can duplicate messages if the first provider eventually delivers after timeout. Policy: primary/secondary with idempotent provider message IDs and strict timeout rules.

What we do not promise unless scoped

  • Carrier delivery SLAs
  • Legal sign-off on DLT/GDPR
  • WhatsApp Business onboarding fees
  • Full tax invoicing in every country

Provider failure handling

Failure modePlatform behavior (design target)Risk if ignored
SMPP bind downQueue or fail fast with alertSilent message loss
HTTP 5xx from CPaaSRetry with backoff + idempotencyDuplicate sends
Slow DLRUnknown state + reconciliationWrong wallet balance
Partial batch acceptPer-message status in API responseClient assumes all sent

Run game days: kill bind, delay callbacks, replay webhooks—verify ledger matches provider CDR.

Acceptance criteria for a reseller launch

  • Tenant cannot read another tenant’s messages or balance
  • Idempotent resend with same key does not double debit
  • DLT-blocked template rejected before provider submit (India)
  • WhatsApp template outside service window rejected with clear API error
  • Reseller parent sees margin report matching child usage
  • Webhook signature verification enabled in production

Connected path on this site

Article (architecture) → SandeshX case study (evidence) → product estimator (scoped build).

Author note: Platform patterns described here reflect documented builds; your carrier contracts and compliance remain your responsibility.

Estimator: messaging scope — tenants, volume, provider path—not PBX seat counts.

Next step: Request a messaging platform proposal · Case study

Questions this article answers

A gateway terminates SMPP for one operator; a CPaaS adds tenants, wallets, policies, adapters, callbacks and reseller hierarchy on top.

Parent tenants allocate balance to children; margin rules and settlement reports are business logic—define in discovery, not as an afterthought.

Idempotency keys on send APIs, ledger entries per state transition, and locks on balance before enqueue—then load-test concurrent campaigns.

Accepted means the platform took the job; submitted means handed to the provider; delivered requires a positive DLR—billing rules should name which state debits.

Model PE, templates and sender IDs with validation before send; customers remain responsible for regulator registration and consent.

Yes with routing and failover policies—avoid duplicate delivery when failover triggers on timeout.

Separate binds/API keys in vault per tenant or reseller; never share one provider account across unrelated customers without audit boundaries.

Reconciliation jobs compare provider CDRs; do not blindly retry send without idempotency or you may double-charge and double-message.

Provider per-message fees and template approval cycles are ongoing opex—scope onboarding separately from platform build.

The estimator separates implementation/hosting from usage pass-through; carrier and WhatsApp fees stay customer contracts unless explicitly bundled.

Launching a messaging operator or reseller?

Use the messaging scope estimator—tenants, wallets, SMS/WhatsApp volume, provider path.

Configure & quote →