SMS Marketing API Documentation

NICTBD.COM SMS Marketing API Documentation

Use NICTBD.COM SMS API to send single SMS, secure OTP SMS, bulk SMS and dynamic SMS from your own website, Laravel application, mobile app backend or custom merchant system. Supports non-masking and masking SMS with wallet-based billing.

Overview

NICTBD.COM SMS API allows approved merchants to send SMS through a secure API. Merchants can send single SMS, secure OTP SMS, bulk SMS and dynamic SMS using their own backend system.

This API is server-to-server only. Always call this API from your backend server. Do not expose your API Secret in frontend JavaScript, Android APK, iOS app, Flutter app or public repository.
SMS charge is calculated by SMS count. If an SMS fails from provider response, the deducted SMS charge will be refunded to the merchant wallet automatically.

Masking SMS Registration

To send masking SMS, merchants must complete masking registration with NICTBD.COM first. Without approved masking registration, masking SMS requests may not be available for your merchant account.

Masking SMS registration service charge is ৳3,500. To register a masking name, please contact NICTBD.COM support.

Masking Name Rules

Rule Requirement
Maximum Length Masking name must not be more than 11 characters.
Business Name Match The masking name should match the business/company name or approved brand name.
Trade License The trade license should be in the same business/company name as the requested masking name.

Required Documents for Masking Registration

Document Details
Trade License Valid trade license in the same business/company name.
Company Letterhead Pad Required forms must be filled on company letterhead pad.
Company Seal Company seal must be attached on the required documents.
Owner Signature Company owner or authorized person signature is required.
NID Company owner or authorized person NID copy is required.
Photo Two copies of owner or authorized person photo are required.
For masking registration, contact NICTBD.COM support before using is_masking: true. Masking SMS will use the merchant’s approved masking SID after registration.

Core Features

Single SMS Send one SMS to one recipient.
Secure OTP SMS Send secure OTP SMS. Encryption and signature are handled server-side.
Bulk SMS Send the same message to multiple recipients. Maximum 100 recipients per request.
Dynamic SMS Send unique SMS messages to different recipients in one request.
Masking SMS Send SMS using approved masking name after masking registration.
Wallet Billing SMS charge is deducted from merchant wallet and failed SMS charge is refunded automatically.
Merchant Credentials Every request requires Store ID, API Key and API Secret.
Status Check Check SMS result using batch ID, CSMS ID or reference ID.

API Flow

1. Authenticate Send Store ID, API Key and API Secret with request.
2. Send Request Choose single, secure OTP, bulk or dynamic endpoint.
3. Wallet Billing SMS charge is calculated and deducted from merchant wallet.
4. Status Check Check SMS logs using status check endpoint.

API Credentials

Credential Required Example Usage
store_id Required STORE-2-FRXECLKM Your merchant Store ID.
api_key Required pk_live_xxxxxxxxx Your merchant API Key.
api_secret Required sk_live_xxxxxxxxx Your private API Secret.
Merchant verification status must be approved. Inactive or unapproved merchants cannot use this API.

API Endpoints

POST https://www.nictbd.com/api/send-sms/single
POST https://www.nictbd.com/api/send-sms/secure-otp
POST https://www.nictbd.com/api/send-sms/bulk
POST https://www.nictbd.com/api/send-sms/dynamic
POST https://www.nictbd.com/api/send-sms/status-check

Headers

Headers
Content-Type: application/json
Accept: application/json

SMS Charges

SMS Type API Parameter Charge Credential Source
Non-masking SMS is_masking: false or not sent ৳0.40 per SMS count Default SMS route
Masking SMS is_masking: true ৳0.68 per SMS count Merchant approved masking route
Charges are calculated by SMS count, not only by recipient count. If a message becomes 2 SMS parts, charge will be calculated for 2 SMS parts.
If an SMS fails from provider response, the deducted SMS charge will be refunded to the merchant wallet automatically.

SMS Character Count Rules

Language Type Character Limit SMS Count Example
English SMS 159 characters = 1 SMS 160 English characters = 2 SMS
Bangla / Unicode SMS 69 characters = 1 SMS 70 Bangla/Unicode characters = 2 SMS
Bangla text, emoji or any Unicode/non-English character will be counted as Bangla/Unicode SMS.

Charge Example

Example
English 160 characters = 2 SMS

Non-masking charge:
2 × 0.40 = 0.80 BDT

Masking charge:
2 × 0.68 = 1.36 BDT

SMS Limits

SMS Type Maximum Recipient Per Request Note
Single SMS 1 One SMS to one recipient.
Secure OTP SMS 1 One secure OTP message to one recipient.
Bulk SMS 100 Maximum 100 recipients can be sent in one request. More than 100 recipients will be rejected.
Dynamic SMS 100 Maximum 100 unique SMS objects can be sent in one request.
Bulk SMS limit: Maximum 100 recipients are allowed per request. Requests with more than 100 recipients will not be accepted.

Single SMS

Send a single SMS message to one recipient. Use is_masking: true only if your masking SMS registration is approved.

Request Parameters

Field Required Example Description
store_idRequiredSTORE-2-FRXECLKMYour Store ID.
api_keyRequiredpk_live_xxxxxxxxxYour API Key.
api_secretRequiredsk_live_xxxxxxxxxYour API Secret.
msisdnRequired01712000000Recipient mobile number.
smsRequiredTest messageSMS message body. Max 1000 characters.
is_maskingOptionaltrueSend true for masking SMS. Default is non-masking.
csms_idOptionalSMSG001Your custom unique message ID. Auto generated if not sent.

Non-masking Request Example

cURL
curl -X POST "https://www.nictbd.com/api/send-sms/single" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -d '{
    "store_id": "YOUR_STORE_ID",
    "api_key": "YOUR_API_KEY",
    "api_secret": "YOUR_API_SECRET",
    "msisdn": "01712000000",
    "sms": "Test message",
    "csms_id": "SMSG001"
  }'

Masking Request Example

cURL
curl -X POST "https://www.nictbd.com/api/send-sms/single" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -d '{
    "store_id": "YOUR_STORE_ID",
    "api_key": "YOUR_API_KEY",
    "api_secret": "YOUR_API_SECRET",
    "msisdn": "01712000000",
    "sms": "Your order has been confirmed",
    "is_masking": true,
    "csms_id": "MASK001"
  }'

Success Response

JSON
{
  "success": true,
  "batch_id": "SMS-20260616010101-A1B2C3D4",
  "csms_id": "SMSG001",
  "msisdn": "019XXXX0040",
  "status": "Success",
  "is_masking": false,
  "sms_language": "en",
  "sms_characters": 12,
  "sms_count": 1,
  "charge_per_sms": "0.40",
  "charge_amount": "0.40",
  "refunded_amount": "0.00",
  "balance_after": "999.60",
  "reference_id": "68cd6fa1a5ac2892125",
  "message": "Success"
}

Secure OTP SMS

Send one-time-password SMS. Merchant sends plain OTP message to NICTBD.COM API. Secure encryption and signature are handled server-side.

Merchant does not need to send SSLWireless secret key. Secret key is configured securely on NICTBD.COM server.

Request Example

cURL
curl -X POST "https://www.nictbd.com/api/send-sms/secure-otp" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -d '{
    "store_id": "YOUR_STORE_ID",
    "api_key": "YOUR_API_KEY",
    "api_secret": "YOUR_API_SECRET",
    "msisdn": "01712000000",
    "sms": "Your OTP is 123456",
    "is_masking": false,
    "csms_id": "OTP001"
  }'

Response

JSON
{
  "success": true,
  "batch_id": "OTP-20260616010101-A1B2C3D4",
  "csms_id": "OTP001",
  "msisdn": "019XXXX0040",
  "status": "Success",
  "is_masking": false,
  "sms_language": "en",
  "sms_characters": 18,
  "sms_count": 1,
  "charge_per_sms": "0.40",
  "charge_amount": "0.40",
  "refunded_amount": "0.00",
  "reference_id": "5d9d7ca5dac5e067314",
  "message": "Success"
}

Bulk SMS

Send the same message to multiple recipients in one request.

Bulk SMS limit: Maximum 100 recipients are allowed per request. Requests with more than 100 recipients will not be accepted.

Request Parameters

Field Required Example Description
store_idRequiredSTORE-2-FRXECLKMYour Store ID.
api_keyRequiredpk_live_xxxxxxxxxYour API Key.
api_secretRequiredsk_live_xxxxxxxxxYour API Secret.
msisdnRequired["0195...", "0170..."]Array of recipient numbers. Maximum 100.
smsRequiredBulk SMS messageSame SMS body for all recipients.
is_maskingOptionaltrueSend true for masking bulk SMS.
batch_csms_idOptionalBATCH-001Your unique batch reference ID.

Request Example

cURL
curl -X POST "https://www.nictbd.com/api/send-sms/bulk" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -d '{
    "store_id": "YOUR_STORE_ID",
    "api_key": "YOUR_API_KEY",
    "api_secret": "YOUR_API_SECRET",
    "msisdn": [
      "01900000000",
      "01700000000",
      "01800000000"
    ],
    "sms": "Bulk SMS message content",
    "is_masking": false,
    "batch_csms_id": "BATCH-001"
  }'

Success Response

JSON
{
  "success": true,
  "batch_id": "BULK-20260616010101-A1B2C3D4",
  "batch_csms_id": "BATCH-001",
  "is_masking": false,
  "total": 3,
  "success_count": 3,
  "failed_count": 0,
  "sms_language": "en",
  "sms_count_each": 1,
  "charge_per_recipient": "0.40",
  "total_charge": "1.20",
  "refunded_amount": "0.00",
  "results": [
    {
      "success": true,
      "csms_id": "BATCH-001-123456",
      "msisdn": "019XXXX0040",
      "status": "Success",
      "reference_id": "68cd6fa1a5ac2892125",
      "message": "Success"
    }
  ]
}

Dynamic SMS

Send unique SMS messages to different recipients in one request.

Dynamic SMS limit: Maximum 100 SMS objects are allowed per request.

Request Example

cURL
curl -X POST "https://www.nictbd.com/api/send-sms/dynamic" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -d '{
    "store_id": "YOUR_STORE_ID",
    "api_key": "YOUR_API_KEY",
    "api_secret": "YOUR_API_SECRET",
    "is_masking": false,
    "sms": [
      {
        "msisdn": "01712000000",
        "text": "Hello John!",
        "csms_id": "DYN-001"
      },
      {
        "msisdn": "01700000000",
        "text": "Hello Jane!",
        "csms_id": "DYN-002"
      }
    ]
  }'

Success Response

JSON
{
  "success": true,
  "batch_id": "DYN-20260616010101-A1B2C3D4",
  "is_masking": false,
  "total": 2,
  "success_count": 2,
  "failed_count": 0,
  "total_charge": "0.80",
  "refunded_amount": "0.00",
  "results": [
    {
      "success": true,
      "csms_id": "DYN-001",
      "msisdn": "019XXXX0040",
      "status": "Success",
      "reference_id": "5da2f0b5ba3a2248110",
      "message": "Success"
    }
  ]
}

Status Check

Check SMS status using batch_id, csms_id or reference_id.

Request Example: By Batch ID

cURL
curl -X POST "https://www.nictbd.com/api/send-sms/status-check" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -d '{
    "store_id": "YOUR_STORE_ID",
    "api_key": "YOUR_API_KEY",
    "api_secret": "YOUR_API_SECRET",
    "batch_id": "BULK-20260616010101-A1B2C3D4"
  }'

Request Example: By CSMS ID

cURL
curl -X POST "https://www.nictbd.com/api/send-sms/status-check" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -d '{
    "store_id": "YOUR_STORE_ID",
    "api_key": "YOUR_API_KEY",
    "api_secret": "YOUR_API_SECRET",
    "csms_id": "DYN-001"
  }'

Response

JSON
{
  "success": true,
  "batch_id": "BULK-20260616010101-A1B2C3D4",
  "total": 3,
  "success_count": 3,
  "failed_count": 0,
  "total_charge": "1.20",
  "refunded_amount": "0.00",
  "messages": [
    {
      "csms_id": "BATCH-001-123456",
      "batch_csms_id": "BATCH-001",
      "message_type": "bulk",
      "is_masking": false,
      "sms_language": "en",
      "sms_characters": 24,
      "sms_count": 1,
      "charge_amount": "0.40",
      "refunded_amount": "0.00",
      "msisdn": "019XXXX0040",
      "status": "Success",
      "provider_status": "SUCCESS",
      "status_code": 200,
      "status_message": "Success",
      "error_message": null,
      "reference_id": "68cd6fa1a5ac2892125",
      "sent_at": "2026-06-16 10:30:20"
    }
  ]
}

Error Responses

Invalid Credentials

JSON
{
  "success": false,
  "error": "Invalid API credentials."
}

Merchant Verification Not Approved

JSON
{
  "success": false,
  "error": "Merchant verification is not approved."
}

Masking Not Configured

JSON
{
  "success": false,
  "error": "Masking SMS is not configured for this merchant."
}

Insufficient Balance

JSON
{
  "success": false,
  "error": "Insufficient balance."
}

Bulk Limit Exceeded

JSON
{
  "success": false,
  "error": "Maximum recipient limit exceeded.",
  "max_recipients": 100
}

Invalid MSISDN

JSON
{
  "success": false,
  "error": "Invalid MSISDN."
}

Security Guidelines

  • Always call SMS API from backend server.
  • Never expose api_secret in frontend JavaScript or mobile app source code.
  • Keep credentials in environment variables or secure configuration.
  • Use unique csms_id for each SMS when possible.
  • For bulk SMS, do not send more than 100 recipients in one request.
  • Use is_masking: true only after masking registration approval.
  • Check API response before showing success to your customer.
If your API Secret is compromised, regenerate credentials from merchant dashboard or contact NICTBD.COM support.

Important Notes

Topic Explanation
Merchant Approval Only approved merchants can use SMS API.
Non-masking SMS If is_masking is not sent or false, SMS will be sent as non-masking SMS.
Masking SMS To send masking SMS, use is_masking: true. Masking registration approval is required.
Masking Registration Fee Masking registration service charge is ৳3,500. Contact NICTBD.COM support.
SMS Count English 159 characters = 1 SMS. Bangla/Unicode 69 characters = 1 SMS.
SMS Charge Non-masking ৳0.40 per SMS count. Masking ৳0.68 per SMS count.
Failed SMS Refund If SMS fails from provider response, deducted SMS charge is refunded to merchant wallet.
Bulk Limit Bulk SMS request can contain maximum 100 recipients.
Dynamic Limit Dynamic SMS request can contain maximum 100 SMS objects.
Status Check Use batch_id, csms_id or reference_id to check SMS status.
For SMS API support, please contact NICTBD.COM support team with your Store ID and CSMS ID or batch ID.