Home Dashboard
Gateway Broker
A
admin
superadmin

Dashboard

Real-time platform overview

connecting...
Refresh
0
Messages Today
0
Delivered Today
0
Failed Today
0
Queued
0
SMPP Connectors
0
HTTP Connectors
0
Active Users
0
Current Total Credit Usage
0
Running Campaigns
0.00
Current Credit Balance
0
Credits Used Today
0%
Delivery Rate
0
Running Campaigns
0
Credits Used Today
0%
Delivery Rate
0
Total Credits Assigned

Traffic (Last 24 Hours)

System Health

SMS Gateway
Checking...
RabbitMQ Broker
Checking...
Redis Cache
Running
PostgreSQL
Connected
SMPP Port 2775
Open
HTTP API
Active

Campaign Summary

Message Status

Weekly Traffic

Recent Activity

Activity will appear here

Failure Reasons Summary

No failures in selected period

Quick Actions

Top Enterprise Accounts

AccountMessagesDeliveredFailedRate

Top Routes / Connectors

ConnectorMessagesDeliveredFailedRate

Recent Errors (Last 24h)

TimeToFromConnectorStatusError

Message Logs

β€”
MT (Outbound)
β€”
MO (Inbound)
β€”
API Sent
β€”
Campaign Sent
IDDirFromToMessageConnectorSourceCampaignUserStatusDLREncCreditsErrorTime

No messages yet

β€”

Delivery Reports

β€”
Total DLRs
β€”
Delivered
β€”
Failed
β€”
Pending
β€”
Expired
β€”
Avg Delay
Message IDSender IDMSISDNDLR StatusErrorConnectorDelaySubmit DateDone DateReceivedEA Account

Delivery reports appear here when DLR status updates are received

β€”
DLR Detail

Inbound SMS (MO)

0
Total Received
0
Today
0
Forwarded OK
0
Forward Failed
0
Auto Replied
0
Shortcodes
FromTo / Short CodeMessageConnectorRouted ToFwd StatusTime

Inbound messages will appear here

Test Inbound SMS (Simulate deliver_sm)

Simulate an MO (mobile-originated) message to test shortcode matching, auto-reply, forwarding, and enterprise inbox routing β€” without sending from a real phone.

Send SMS

Auto-selects connector & sender based on destination
Arabic, Chinese & special chars auto-switch to Unicode
Leave blank to use routing profile sender
0 chars Β· 1 SMS

SMPP Client Connectors

β€”
Total
β€”
Running
β€”
Stopped
β€”
Low Balance
β€”
Near Limit
β€”
Queued
Connector IDProviderHostPortUsernameBindStatusThroughputBillingBalance / QuotaUsage MonthBalance StateWindowQueuedLast SubmitLast DLRActions

Connector Logs β€” β€”


        

Connector Diagnostics β€” β€”

Loading…

HTTP Connectors

β€”
Total
β€”
Active
β€”
Inactive
β€”
Low Balance
β€”
Near Limit
β€”
Queued
Connector IDProviderBase URLMethodStatusBillingBalance / QuotaUsage MonthBalance StateWindowQueuedCreatedActions

MT (Outbound) Routes

MT Routing (Mobile Terminated) controls outbound SMS delivery β€” messages going to mobile phones. Routes decide which SMPP connector to use for each outbound message based on filters (destination prefix, source, user, etc.). Lower order = higher priority.
⚠️ Routing Profiles (Gateway β†’ Routing Profiles) are the recommended way for per-client routing β€” they wrap MT routes with prefix tables and auto-assign connectors per destination. Use raw MT routes only for system-wide defaults or advanced bypass rules.
OrderDetailsActions

MO (Inbound) Routes

MO Routing (Mobile Originated) handles inbound SMS β€” messages sent from mobile phones to your short codes via an SMPP connector. Each route specifies: which SMPP connector receives the message, which user's inbox it goes to, and (optionally) an HTTP URL to forward the message to an external system.
OrderSMPP ConnectorInbox UserHTTP ForwardDetailsActions

Routing Filters

Filter IDDetailsActions

Routing Profiles

Define number-prefix routing rules with connector and sender ID mappings. Assign profiles to users and API accounts.

β€”
Total Profiles
β€”
Active
β€”
Inactive
β€”
Total Routes
β€”
Assigned Users
β€”
API Accounts
β€”
With Warnings

Sender IDs

Manage sender IDs linked to routing profiles and connectors

0 total
0 active
0 linked to profiles
0 assigned to EAs
Sender IDStatusTypeRouting ProfilesConnectorsEAsCreatedActions

No sender IDs registered

Blacklist / Opt-Out

Numbers that are blocked from receiving SMS messages

Phone NumberReasonActiveAddedActions

No blacklisted numbers

MNO / Number Portability Prefixes

Lookup table for mobile network operator identification by number prefix

PrefixOperatorCountryMCCMNCActions

No prefixes configured. Add prefixes for MNO identification.

SMS Campaigns

NameRouting ProfileSenderRecipientsProgressStatusCreated ByCreatedActions

Campaign Monitor

Loading...

Routing Profile: β€”
Sender: β€”
Created By: β€”
Credits Used: 0
0
Total
0
Submitted
0
Delivered
0
Awaiting DLR
0
Failed
0
Queued
0
Credits
Progress0%

Live Activity

NumberStatusDLRConnectorError / DetailsSentDelivered

Waiting for activity...

Failure Summary

ReasonCount

Send Errors

NumberError

Campaign Templates

NameMessage PreviewSender IDCreatedActions

Create message templates for quick campaign setup

Number Lists

NameDescriptionNumbersCreatedActions

Upload or create number lists for campaigns

Campaign A/B Tests

Split-test two campaign variants to compare delivery performance

NameCampaign ACampaign BSplitStatusA DeliveryB DeliveryActions

No A/B tests yet. Create one to compare two campaign variants.

Groups

Group IDActions

Enterprise Users

β€”
Total
β€”
Active
β€”
Suspended
β€”
With Credits
β€”
With Routing
β€”
With Perm Group
UsernameCompanyPerm GroupRoutingSender IDsCreditsTPSBindingsStatusCreatedActions

Permission Groups

Define role-based access groups and assign them to Enterprise Users

Group NameDescriptionStatusPermissionsUsersCreatedActions

Credits & Wallet

Manage credit balances, top-ups, deductions, and transaction ledger for all accounts

β€”
Total Credits
β€”
Used Today
β€”
Added Today
β€”
Low Balance
β€”
Wallet Accounts
β€”
Unlimited
Wallet Accounts
AccountCompanyBalance TodayMonth ModeLast Top-upStatusActions

Transaction Ledger

Full audit trail of all credit movements

Date Account TypeAmount Before After Description Source By Ref

No transactions yet

Invoices

Generate and manage billing invoices based on credit usage

Invoice #AccountPeriodAmountStatusGeneratedActions

No invoices yet. Generate one from the credit transaction history.

API Keys

Use API keys to send SMS programmatically. POST /panel/api/v1/send with header X-API-Key: your_key
NameKey PrefixOwnerStatusLast UsedCreatedActions

No API keys generated

Webhooks

NameURLEventsStatusActions

Configure webhooks for DLR and MO notifications

Admin Users

UsernameRoleCreatedActions

Audit Logs

#TimeUserActionEntityIDIPDetails

Audit trail will appear after actions are performed

System Settings

Branding & Identity

PNG / JPG / SVG Β· max 2 MB Β· shown in the panel header
Logo preview

Company Contact Details

Platform Configuration

All dates/times in the panel display in this timezone

Jasmin HTTP API Credentials
Used by Send SMS and Campaign engine to authenticate with Jasmin HTTP API

Alerts
Alert when user credits drop below this amount
SMTP (Email Alerts)
These values are saved in system settings and used for connector alert emails.

About

PlatformSMS Gateway v3.0
Core EngineJasmin SMS Gateway (Docker)
ArchitectureCore System Architecture by Azhar
ComponentsNode.js, PostgreSQL, Redis, RabbitMQ, Nginx

Gateway CLI

Type help for commands. This is a direct jCLI session.

ESME / SMPP Client Accounts

Manage SMPP bind credentials for your clients and applications

System IDAssigned UserRouting ProfileMax BindsIP WhitelistStatusActions

No ESME accounts yet. Add one to allow SMPP client binds.

HTTP API Accounts

Enterprise-linked REST API credentials β€” each account uses its enterprise account's credits, routing, and message logs.

β€”
Total Accounts
β€”
Active
β€”
EA-Linked
β€”
With DLR URL
UsernameDescriptionEnterprise AccountCreditsRateDLR URLStatusAPI KeyActions

No HTTP API accounts yet.

Shortcode Management

Create shortcodes, assign to enterprise accounts, configure auto-replies and forwarding

0
Total Shortcodes
0
Total Received
0
Received Today
0
Total Forwarded
ShortcodeDescriptionSMPP ConnectorAssigned EAForward URLAuto-ReplyKeywordsReceivedStatusActions

No shortcodes configured yet.

Route Tester / Simulator

Test how a destination number will be routed without sending a real message

Test Parameters

Result

Enter a destination number and click Run to test routing

Documentation & Guides

Complete step-by-step guides for administrators and enterprise clients. All examples are copy-paste ready.

1. HTTP API Account Setup

An HTTP API account provides credentials for your client application to send SMS via REST API. Each account has its own username, password, API key, rate limit, and credit balance.
Step-by-Step: Create an HTTP API Account
  1. Navigate to Gateway β†’ HTTP API Clients in the sidebar
  2. Click Add HTTP API Account
  3. Fill in the required fields:
    UsernameUnique identifier, e.g. company_otp. This is used for Basic Auth.
    PasswordSet a strong password. This is used for Basic Auth.
    Routing ProfileSelect which SMPP connector(s) to route through. Leave blank for default.
    Rate LimitMessages per second allowed (default: 10). Excess messages are queued automatically.
    Credit BalanceStarting credits. Each SMS deducts 1 credit. Set 0 + check "Unlimited" for no limit.
  4. (Optional) Under Enterprise Account Linking:
    • Select the Enterprise user this API account belongs to
    • Set a default Sender ID
    • Set a DLR Webhook URL for delivery receipts
  5. Click Save β€” the system auto-generates an API Key
Authentication Methods

Your client application can authenticate using any of these methods:

Option 1: API Key Header

X-API-Key: httpapi_abc123def456...

# The API key is shown after creating the account.
# Click the key icon in the table to copy it.
Option 2: HTTP Basic Auth

Authorization: Basic base64(username:password)

# Use the username and password you created.
# Most HTTP libraries support Basic Auth natively.
Option 3: URL Parameters

?user=USERNAME&password=PASSWORD

# Pass credentials as query params (GET or POST).
# Useful for simple integrations & legacy systems.

2. Sending SMS via API

Endpoints
POST /api/v1/http-send (JSON body)
GET /api/v1/http-send?user=USERNAME&password=PASSWORD&to=PHONE&content=MSG&from=SENDER (URL params)
Request Parameters (JSON body or URL query params)
FieldTypeRequiredDescription
tostringYesDestination phone number in international format, e.g. 971501234567
contentstringYesSMS message body (auto-splits long messages)
fromstringNoSender ID (alphanumeric max 11 chars or numeric). Uses routing profile default if blank.
codingstringNo0 = GSM7 (English/Latin), 8 = UCS2 (Arabic/Unicode). Auto-detected if omitted.
cURL Example β€” English SMS (API Key)
curl -X POST /api/v1/http-send \ -H "Content-Type: application/json" \ -H "X-API-Key: YOUR_API_KEY" \ -d '{ "to": "971501234567", "content": "Your OTP code is 4829. Valid for 5 minutes.", "from": "MYCOMPANY" }'
GET β€” URL Parameter Style (Username/Password)
curl "/api/v1/http-send?user=YOUR_USERNAME&password=YOUR_PASSWORD&from=MYCOMPANY&to=971501234567&content=Hello+World&dr=1"
cURL Example β€” Arabic / Unicode SMS
curl -X POST /api/v1/http-send \ -H "Content-Type: application/json" \ -H "X-API-Key: YOUR_API_KEY" \ -d '{ "to": "971501234567", "content": "\u0645\u0631\u062d\u0628\u0627 \u0628\u0643\u0645 \u0641\u064a \u062e\u062f\u0645\u062a\u0646\u0627", "coding": "8" }'
PHP Example
<?php \$url = '/api/v1/http-send'; \$data = [ 'to' => '971501234567', 'content' => 'Your verification code is 1234', 'from' => 'MYCOMPANY' ]; \$ch = curl_init(\$url); curl_setopt_array(\$ch, [ CURLOPT_POST => true, CURLOPT_HTTPHEADER => [ 'Content-Type: application/json', 'X-API-Key: YOUR_API_KEY' ], CURLOPT_POSTFIELDS => json_encode(\$data), CURLOPT_RETURNTRANSFER => true, CURLOPT_TIMEOUT => 30 ]); \$response = json_decode(curl_exec(\$ch), true); curl_close(\$ch); if (\$response['ok']) { echo "SMS sent! Message ID: " . \$response['message_id']; } else { echo "Error: " . \$response['error']; } ?>
Python Example
import requests url = "/api/v1/http-send" headers = { "Content-Type": "application/json", "X-API-Key": "YOUR_API_KEY" } payload = { "to": "971501234567", "content": "Hello from Python!", "from": "MYAPP" } response = requests.post(url, json=payload, headers=headers) data = response.json() if data["ok"]: print(f"Sent! ID: {data['message_id']}") else: print(f"Error: {data['error']}")
Node.js Example
const response = await fetch('/api/v1/http-send', { method: 'POST', headers: { 'Content-Type': 'application/json', 'X-API-Key': 'YOUR_API_KEY' }, body: JSON.stringify({ to: '971501234567', content: 'Hello from Node.js!', from: 'MYAPP' }) }); const data = await response.json(); console.log(data.ok ? 'Sent: ' + data.message_id : 'Error: ' + data.error);
Response
200 OK
{"ok":true,"message_id":"abc-def-789"}
400 {"ok":false,"error":"to and content required"}
401 {"ok":false,"error":"Invalid credentials"}
402 {"ok":false,"error":"Insufficient credits"}
200 {"ok":true,"queued":true,"message_id":"queued_..."} — Rate/daily limit exceeded, message queued

3. API Authentication Details

Which username and password to use?
Important: The HTTP API username/password are NOT the same as the panel login. They are a separate set of credentials created specifically for the API account under Gateway β†’ HTTP API Clients.
CredentialWhere to FindUsed For
API KeyShown in HTTP API Clients table (click icon to copy)Header: X-API-Key
API UsernameThe username you set when creating the HTTP API accountBasic Auth: username:password
API PasswordThe password you set when creating the HTTP API accountBasic Auth: username:password
Panel UsernameYour login to this dashboardNOT for API calls
Quick Test: After creating an API account, copy the API key and run this in your terminal:
curl -X POST /api/v1/http-send -H "Content-Type: application/json" -H "X-API-Key: PASTE_YOUR_KEY_HERE" -d '{"to":"971501234567","content":"Test"}'

4. How to Create a Shortcode

A shortcode (e.g., 3536) receives inbound SMS from mobile users. You can route messages to an enterprise inbox, forward to an external URL, and auto-reply β€” all at the same time.
Step-by-Step
  1. Go to Gateway β†’ Shortcodes in the sidebar
  2. Click Add Shortcode
  3. Fill in the form:
    Shortcode *The number that mobile users send SMS to (e.g., 3536)
    SMPP Connector *Select the SMPP connector that handles this shortcode's traffic. This is the connection to the telco.
    Assigned EASelect an enterprise user. Inbound messages will appear in their inbox (Messaging β†’ Inbound SMS). Leave blank for admin-only visibility.
    DescriptionOptional label, e.g., "Marketing opt-in" or "Customer support"
  4. Configure optional features (HTTP Forwarding, Auto-Reply) β€” see sections 5 and 6 below
  5. Click Save Shortcode
How it works: When a mobile user sends an SMS to your shortcode, the SMPP connector receives it. The system matches the destination number to a shortcode, saves it to the inbox (always), then optionally forwards to your URL and/or sends an auto-reply.
Flow Diagram:
Mobile User β†’ Telco β†’ SMPP Connector β†’ Shortcode Match β†’ [Save to Inbox] + [Forward to URL] + [Auto-Reply]

5. How to Forward Inbound SMS to External URL

Enable Forwarding
  1. Edit or create a shortcode
  2. Toggle Enable HTTP Forwarding ON
  3. Enter your server URL, e.g., https://your-app.com/inbound-sms
  4. Save
What your server receives (POST JSON)
{ "from": "971501234567", "to": "3536", "content": "HELP I need information about your service", "connector": "MAIN-SMPP", "message_id": "550e8400-e29b-41d4-a716-446655440000", "timestamp": "2026-04-10T12:30:00.000Z", "shortcode_id": 1, "ea_username": "company_user" }
Building your endpoint

Your server must:

  • Accept POST requests with Content-Type: application/json
  • Return HTTP 2xx status to confirm receipt
  • Respond within 10 seconds (timeout)
Example PHP receiver
<?php // inbound-sms.php β€” receive forwarded inbound SMS \$payload = json_decode(file_get_contents('php://input'), true); \$from = \$payload['from']; // Sender phone number \$to = \$payload['to']; // Shortcode number \$message = \$payload['content']; // SMS text \$msgId = \$payload['message_id']; // Process the message (save to DB, trigger workflow, etc.) file_put_contents('inbound_log.txt', date('c')." | From: \$from | To: \$to | Msg: \$message\n", FILE_APPEND); // MUST return 2xx or it will be logged as failed forward http_response_code(200); echo json_encode(['status' => 'received']); ?>
Important: Messages are always saved to the system inbox regardless of forwarding. If your endpoint returns a non-2xx response, the failure is logged and visible in the Inbound SMS stats (Forward Failed count).

6. How to Set Up Auto-Reply & Keywords

Default Auto-Reply
  1. Edit or create a shortcode
  2. Toggle Enable Auto-Reply ON
  3. Type a default reply message, e.g., "Thank you for contacting us! We'll respond shortly."
  4. Save β€” every inbound SMS to this shortcode will now get this auto-reply
Keyword-Based Replies

You can set different replies for different keywords. The system checks the first word of the incoming message (case-insensitive).

  1. In the shortcode table, click the Keywords button (shows count)
  2. In the modal, type a keyword (e.g., HELP) and a reply message
  3. Click Add Keyword Rule
How matching works
Incoming SMSKeyword MatchReply Sent
"HELP I need info"HELPCustom HELP reply
"help please"HELP (case-insensitive)Custom HELP reply
"INFO"INFOCustom INFO reply
"Hello there"No keyword matchDefault auto-reply message
Modes: You can combine Inbox + Forwarding + Auto-Reply in any combination:
β€’ Inbox only β€” messages saved, no forwarding, no reply
β€’ Inbox + Auto-Reply β€” messages saved + automatic responses
β€’ Inbox + Forward + Auto-Reply β€” full pipeline (message saved, forwarded to URL, and reply sent)

7. How to Test a Shortcode Without Sending From a Phone

Use this to verify shortcode routing, auto-reply, and forwarding work correctly before going live.
Method 1: Use the Panel Test Form
  1. Go to Messaging β†’ Inbound SMS
  2. Scroll down to Test Inbound SMS (Simulate deliver_sm)
  3. Enter a From number (any), the shortcode in "To", and a test message
  4. Click Send Test
  5. The message flows through the full inbound pipeline: shortcode matching, inbox routing, forwarding, auto-reply
Method 2: Direct API Call

Use the /api/deliver_sm endpoint to simulate an inbound message programmatically:

# GET method (quick test): curl "/api/deliver_sm?src=971508994714&dst=3536&msg=HELP" # POST method (full control): curl -X POST /api/deliver_sm \ -H "Content-Type: application/json" \ -d '{ "src": "971508994714", "dst": "3536", "msg": "HELP I need information" }'
Parameters
FieldRequiredDescription
srcYesSource / sender phone number (simulated mobile number)
msgYesMessage content (the SMS text the "mobile user" sends)
dstRecommendedDestination / shortcode number. If blank, the message is saved without shortcode matching.
msg_idNoCustom message ID. Auto-generated UUID if blank.
eaNoEnterprise account username override (bypasses shortcode EA assignment)
typeNoMessage type (default: "sms")
What happens
  1. Message is saved to inbox with connector = "test-deliver-sm"
  2. If dst matches a shortcode: enterprise inbox routing activates
  3. If forwarding is enabled: your external URL receives the POST
  4. If auto-reply is enabled: the reply message is sent back via SMPP

8. DLR (Delivery Report) Callbacks

Setup

Set a DLR Webhook URL on the HTTP API account. When the carrier sends a delivery receipt, we forward it to your URL via HTTP POST with JSON body:

{ "message_id": "abc123-def456", "from": "MYCOMPANY", "to": "971501234567", "msisdn": "971501234567", "status": "DELIVRD", "error_code": "000", "connector": "smpp_connector_1", "timestamp": "2026-04-10T12:30:00.000Z" }
DLR Payload Fields
FieldTypeDescription
message_idstringUnique message identifier returned when SMS was sent
fromstringSender ID / source address used when sending the SMS
tostringDestination phone number the SMS was sent to
msisdnstringRecipient MSISDN (same as to)
statusstringDelivery status: DELIVRD, UNDELIV, REJECTD, EXPIRED, ENROUTE
error_codestringError code from carrier (000 = no error)
connectorstringSMPP connector that handled the message
timestampstringISO 8601 timestamp when DLR was received
StatusMeaning
DELIVRDDelivered to handset
UNDELIVUndeliverable
REJECTDRejected by carrier
EXPIREDTTL expired
ENROUTEIn transit

9. Sender ID & Unicode SMS

Sender ID
  • Alphanumeric: up to 11 characters (e.g., MYCOMPANY)
  • Numeric: full phone number (e.g., 971501234567)
  • If from field is provided in the API, it overrides the routing profile default
Unicode / Arabic
  • System auto-detects non-GSM characters and switches to UCS-2 encoding
  • GSM 7-bit: max 160 chars β†’ Unicode: max 70 chars per SMS part
  • Force Unicode with "coding":"8"

10. Credits & Billing

How to assign credits clearly to EA accounts
  1. Go to Accounts β†’ Enterprise Users and create/select the EA user.
  2. Set initial balance in the user form (Credit Balance) and save.
  3. Go to Accounts β†’ Credits & Wallet to top-up/debit with reason notes.
  4. If this EA uses HTTP API, link the API account to the EA in Gateway β†’ HTTP API Clients (EA Username field).
  5. If needed, enable Unlimited Credits on EA to bypass credit checks.
Important: Message log credits_used follows the route rate (example 0.5500), while EA balance deduction is currently 1 credit per SMS unless unlimited.
Quick policy summary
  • Each SMS sent deducts 1 credit from the EA/account balance (unless Unlimited).
  • Route rate (Routing Profiles) is logged as credits_used for reporting and costing.
  • Admin manages manual top-ups/debits via Credits & Wallet.
  • Enterprise user sees own balance in the header and credits page.
Connector commercial fields (SMPP + HTTP)

Open Gateway β†’ SMPP Connectors or Gateway β†’ HTTP Connectors, then Add/Edit connector and fill Provider Billing & Limits:

FieldMeaningStored As (DB)
Cost / SMSProvider cost per message for reportingconnector_profiles.cost_per_message
Current BalanceProvider prepaid balanceconnector_profiles.current_provider_balance
Monthly LimitPostpaid monthly capconnector_profiles.monthly_limit
Save on connector form writes to connector_profiles and is reflected in SMPP/HTTP connector lists and policy engine.
Alert triggers and channels
  • Prepaid alerts: Low/Critical/Exhausted trigger when current_provider_balance crosses thresholds.
  • Postpaid alerts: Warning/Critical/100% trigger when monthly usage crosses configured percentages.
  • SMS alert API: alerts are sent through Jasmin HTTP API endpoint http://smsplus-jasmin:1401/send using Settings β†’ Jasmin HTTP user/password.
  • Email alerts: sent to connector alert_email_recipients using SMTP settings configured in System Settings β†’ SMTP (Email Alerts).
  • Cooldown: repeats are suppressed by connector cooldown minutes unless alert level changes.

11. Enterprise Account Setup

Creating an Enterprise User
  1. Go to Accounts β†’ Enterprise Users β†’ Click Add User
  2. Set username, password, group, SMS quota, credit balance
  3. Create a Permission Group to control visibility:
    view_logsMessage logs, DLR, Inbound SMS, Shortcodes
    send_smsSend SMS page
    manage_campaignsCampaigns, Templates, Number Lists
    manage_api_keysAPI Keys
    manage_webhooksWebhooks
  4. Enterprise users see only their own data (message logs, inbound, campaigns, credits)
EA + API + Credits mapping checklist
  1. Create EA user and assign permissions/group.
  2. Create HTTP API account and set EA Username to link billing and logs.
  3. Assign routing profile to control connector selection and route rate.
  4. Top-up EA credits in Credits & Wallet and keep threshold policy documented.
  5. Optionally set low credit threshold in System Settings for dashboard alerts.

12. Troubleshooting

ProblemSolution
API returns 401Check API key or username/password. Make sure you’re using the HTTP API account credentials, not panel login.
API returns 402Add credits or enable Unlimited Credits on the account.
API returns 429Sending too fast. Reduce rate or increase the account’s rate limit.
SMS not deliveredCheck DLR reports. Verify the SMPP connector is started and the MT route exists.
Arabic text garbledSet "coding":"8" in the request or let auto-detect handle it.
Inbound SMS not receivedVerify: shortcode exists, SMPP connector is active/started, MO route is configured.
Forward webhook failingEnsure URL is accessible, returns 2xx within 10s. Check Forward Failed count in Inbound SMS stats.
Shortcode not matchingThe destination number of the incoming SMS must exactly match the shortcode value. Use Test Inbound to verify.
Auto-reply not sendingEnsure Auto-Reply is enabled on the shortcode AND at least one SMPP connector is started for outbound.

Gateway Control

Monitor and manage services (Super Admin only)

β€”
CPU Usage
β€”
Memory Usage
β€”
Disk Usage

Docker Services

ServiceStateUptimePortsActions