n8n community node for the kwtSMS SMS gateway. Send SMS messages, check balance, validate numbers, and manage sender IDs directly from your n8n workflows.
kwtSMS is a Kuwait-based SMS gateway with coverage across 220+ countries, pay-as-you-go pricing, and built-in test mode. It supports both English and Arabic messages with transactional sender IDs that bypass DND for OTP delivery.
- Send SMS: Single or bulk (auto-batches 200+ recipients with delays and retry logic)
- Check Balance: Query current account credit balance
- List Sender IDs: Retrieve approved sender IDs on your account
- Get Coverage: List active country prefixes
- Validate Numbers: Verify phone number format and routability before sending
- Phone Normalization: Automatically strips prefixes, converts Arabic digits, removes duplicates
- Message Cleaning: Strips emoji, hidden characters, and HTML tags before sending
- Pre-send Safety: Checks balance and coverage before hitting the API
- Test Mode: Send with test=1 to validate integration without consuming credits
- Open your n8n instance
- Go to Settings > Community Nodes
- Select Install a community node
- Enter
n8n-nodes-kwtsms - Agree to the risks and click Install
cd ~/.n8n/nodes
npm install n8n-nodes-kwtsmsRestart n8n after installation.
You need a kwtSMS API account:
- Sign up or log in at kwtsms.com
- Navigate to your API settings to find your API username and API password
- In n8n, create a new kwtSMS API credential
- Enter your username, password, and default sender ID
- Click Test to verify your credentials
Note: The API username/password are separate from your account login credentials. Find them in your kwtSMS dashboard under API settings.
| Operation | Description |
|---|---|
| Send | Send an SMS to one or more recipients. Supports bulk sending with auto-batching, phone normalization, message cleaning, balance/coverage pre-checks, and duplicate removal. |
Parameters:
- To: Phone number(s), comma-separated. International format, digits only (e.g.,
96598765432). - Message: SMS text. English: 160 chars/page. Arabic: 70 chars/page. Max 7 pages.
- Sender ID: Must be pre-approved on your kwtSMS account.
- Test Mode (optional): Send without delivering or consuming credits.
| Operation | Description |
|---|---|
| Get Balance | Returns available credits and total purchased credits. |
| Get Coverage | Returns array of active country prefixes on your account. |
| Operation | Description |
|---|---|
| List | Returns all available sender IDs on your account. |
| Operation | Description |
|---|---|
| Validate Numbers | Validates phone numbers and returns OK (valid), ER (format error), and NR (no route) arrays. Numbers are normalized automatically before validation. |
Numbers are automatically normalized before any API call:
+96598765432becomes96598765432(strip +)0096598765432becomes96598765432(strip 00)965 9876 5432becomes96598765432(strip spaces)- Arabic/Hindi digits are converted to Latin automatically
The node maps all 33 kwtSMS error codes to user-friendly messages. Common errors:
| Code | Description |
|---|---|
| ERR003 | Authentication failed. Check your API username and password. |
| ERR006 | No valid phone numbers provided. |
| ERR010 | Account balance is zero. |
| ERR013 | Send queue is full. The node retries automatically with backoff. |
| ERR028 | Must wait 15 seconds before sending to the same number again. |
- n8n version 1.0 or later
- Node.js 18 or later