Submit Received SMS
curl --request POST \
--url https://{brand_domain}/api/mobile/v1/sms \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"messages": [
{
"sender": "bKash",
"body": "You have received Tk 500.00 from 01700000000. Ref INV-10029. Fee Tk 0.00. Balance Tk 15400.00. TrxID A8K9D2J3S",
"local_id": 104,
"received_at": "2026-06-23 14:17:12"
}
]
}
'<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://{brand_domain}/api/mobile/v1/sms",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'messages' => [
[
'sender' => 'bKash',
'body' => 'You have received Tk 500.00 from 01700000000. Ref INV-10029. Fee Tk 0.00. Balance Tk 15400.00. TrxID A8K9D2J3S',
'local_id' => 104,
'received_at' => '2026-06-23 14:17:12'
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}import requests
url = "https://{brand_domain}/api/mobile/v1/sms"
payload = { "messages": [
{
"sender": "bKash",
"body": "You have received Tk 500.00 from 01700000000. Ref INV-10029. Fee Tk 0.00. Balance Tk 15400.00. TrxID A8K9D2J3S",
"local_id": 104,
"received_at": "2026-06-23 14:17:12"
}
] }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
messages: [
{
sender: 'bKash',
body: JSON.stringify('You have received Tk 500.00 from 01700000000. Ref INV-10029. Fee Tk 0.00. Balance Tk 15400.00. TrxID A8K9D2J3S'),
local_id: 104,
received_at: '2026-06-23 14:17:12'
}
]
})
};
fetch('https://{brand_domain}/api/mobile/v1/sms', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://{brand_domain}/api/mobile/v1/sms"
payload := strings.NewReader("{\n \"messages\": [\n {\n \"sender\": \"bKash\",\n \"body\": \"You have received Tk 500.00 from 01700000000. Ref INV-10029. Fee Tk 0.00. Balance Tk 15400.00. TrxID A8K9D2J3S\",\n \"local_id\": 104,\n \"received_at\": \"2026-06-23 14:17:12\"\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://{brand_domain}/api/mobile/v1/sms")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"messages\": [\n {\n \"sender\": \"bKash\",\n \"body\": \"You have received Tk 500.00 from 01700000000. Ref INV-10029. Fee Tk 0.00. Balance Tk 15400.00. TrxID A8K9D2J3S\",\n \"local_id\": 104,\n \"received_at\": \"2026-06-23 14:17:12\"\n }\n ]\n}")
.asString();const url = 'https://{brand_domain}/api/mobile/v1/sms';
const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
messages: [
{
sender: 'bKash',
body: JSON.stringify('You have received Tk 500.00 from 01700000000. Ref INV-10029. Fee Tk 0.00. Balance Tk 15400.00. TrxID A8K9D2J3S'),
local_id: 104,
received_at: '2026-06-23 14:17:12'
}
]
})
};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error(err));{
"success": true,
"data": [
"<unknown>"
]
}{
"success": true,
"data": {
"status": "accepted",
"server_ref": "OP-481029304",
"error": null
}
}{
"success": false,
"error": "Validation failed",
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "sender exceeds 100 bytes",
"field": "sender"
}
],
"request_id": "8f5a2e9b0c7d4e5f"
}API Reference
Submit Received SMS
Submits SMS payloads received on the physical companion device to the server. The server parses the payload using brand-configured regex rules to verify customer transaction payments. Supports batch processing up to 200 messages to prevent visual details from getting lost during connection drops. Enforces maximum length limits (100 bytes for sender, 16384 bytes for body) to block DoS attempts.
POST
https://{brand_domain}
/
api
/
mobile
/
v1
/
sms
Submit Received SMS
curl --request POST \
--url https://{brand_domain}/api/mobile/v1/sms \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"messages": [
{
"sender": "bKash",
"body": "You have received Tk 500.00 from 01700000000. Ref INV-10029. Fee Tk 0.00. Balance Tk 15400.00. TrxID A8K9D2J3S",
"local_id": 104,
"received_at": "2026-06-23 14:17:12"
}
]
}
'<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://{brand_domain}/api/mobile/v1/sms",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'messages' => [
[
'sender' => 'bKash',
'body' => 'You have received Tk 500.00 from 01700000000. Ref INV-10029. Fee Tk 0.00. Balance Tk 15400.00. TrxID A8K9D2J3S',
'local_id' => 104,
'received_at' => '2026-06-23 14:17:12'
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}import requests
url = "https://{brand_domain}/api/mobile/v1/sms"
payload = { "messages": [
{
"sender": "bKash",
"body": "You have received Tk 500.00 from 01700000000. Ref INV-10029. Fee Tk 0.00. Balance Tk 15400.00. TrxID A8K9D2J3S",
"local_id": 104,
"received_at": "2026-06-23 14:17:12"
}
] }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
messages: [
{
sender: 'bKash',
body: JSON.stringify('You have received Tk 500.00 from 01700000000. Ref INV-10029. Fee Tk 0.00. Balance Tk 15400.00. TrxID A8K9D2J3S'),
local_id: 104,
received_at: '2026-06-23 14:17:12'
}
]
})
};
fetch('https://{brand_domain}/api/mobile/v1/sms', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://{brand_domain}/api/mobile/v1/sms"
payload := strings.NewReader("{\n \"messages\": [\n {\n \"sender\": \"bKash\",\n \"body\": \"You have received Tk 500.00 from 01700000000. Ref INV-10029. Fee Tk 0.00. Balance Tk 15400.00. TrxID A8K9D2J3S\",\n \"local_id\": 104,\n \"received_at\": \"2026-06-23 14:17:12\"\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://{brand_domain}/api/mobile/v1/sms")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"messages\": [\n {\n \"sender\": \"bKash\",\n \"body\": \"You have received Tk 500.00 from 01700000000. Ref INV-10029. Fee Tk 0.00. Balance Tk 15400.00. TrxID A8K9D2J3S\",\n \"local_id\": 104,\n \"received_at\": \"2026-06-23 14:17:12\"\n }\n ]\n}")
.asString();const url = 'https://{brand_domain}/api/mobile/v1/sms';
const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
messages: [
{
sender: 'bKash',
body: JSON.stringify('You have received Tk 500.00 from 01700000000. Ref INV-10029. Fee Tk 0.00. Balance Tk 15400.00. TrxID A8K9D2J3S'),
local_id: 104,
received_at: '2026-06-23 14:17:12'
}
]
})
};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error(err));{
"success": true,
"data": [
"<unknown>"
]
}{
"success": true,
"data": {
"status": "accepted",
"server_ref": "OP-481029304",
"error": null
}
}{
"success": false,
"error": "Validation failed",
"errors": [
{
"code": "VALIDATION_FAILED",
"message": "sender exceeds 100 bytes",
"field": "sender"
}
],
"request_id": "8f5a2e9b0c7d4e5f"
}Authorizations
Enter your Short-lived access JWT token.
Body
application/json
Can be a single SMS object payload, a batch array of objects, or a wrapper object containing a messages array.
Show child attributes
Show child attributes
Last modified on August 25, 2026
Was this page helpful?