🐎 CHAPAR · چاپار

Forward Android SMS to a Telegram bot: installing Chapar

Chapar forwards incoming SMS and missed calls from an Android phone straight to your Telegram — and lets you reply from there. This guide takes you from nothing to your first forwarded message.

What you need before you start An Android phone (7 or newer) with a SIM and working internet, Telegram on your own phone, and about ten minutes. Everything here is free.
Part one · Create the bot
1

Create your Telegram bot

  1. In Telegram, search for @BotFather and open it (it has a blue check).
  2. Send /newbot.
  3. Give it any name you like, e.g. My SMS relay.
  4. Give it a username ending in bot, e.g. my_sms_relay_bot.
  5. BotFather replies with a token that looks like 1234567890:AAH…. Copy it and keep it somewhere safe.
That token is your bot's password. Anyone who has it can read your messages. Never publish it. If it leaks, send /revoke to BotFather to get a new one.
2

Get your Chat ID

  1. Open @userinfobot in Telegram and tap Start.
  2. It replies with a number such as 123456789 — that's your Chat ID. Copy it.
  3. Now open the bot you created in step 1 and tap Start once. This part matters: Telegram won't let a bot message you until you've opened the chat yourself.

Want the messages in a group instead? Add the bot to the group and use the group's ID here — it usually begins with -.

Part two · Install on the phone
3

Install the APK

  1. On that phone's browser, open the Releases page.
  2. Download the latest app-release.apk.
  3. Open the downloaded file. If Android warns you, allow install from unknown sources for your browser or file manager and come back.
  4. Tap Install, then open Chapar.
4

Grant the permissions

On first launch the app asks for SMS, Contacts, Phone and Notifications. Allow all of them — without these, nothing can be read or forwarded.

⚠️ Android 13 and newer: "Restricted settings" Because the app wasn't installed from Google Play, Android blocks the SMS and call-log permissions and shows a restricted setting message. To unblock: Settings → Apps → Chapar → ⋮ menu (top right) → Allow restricted settings Then go back to Permissions on that same screen and turn the SMS permissions on by hand.
5

Connect the app to the bot

  1. In Chapar, open the Settings tab.
  2. Under Telegram connection, paste the Bot Token (step 1) and the Chat ID (step 2).
  3. Tap Send test message.
  4. A ✅ Chapar connected message should arrive in the bot chat. If it does, you're done — SMS forwarding starts immediately.

Got a ❌ instead? See "Something's wrong?" at the bottom of this page.

Chapar
SettingsNumbers
Telegram connection
Bot token1234567890:AAH…
Chat ID123456789
API address (proxy)api.telegram.org
Defaults to api.telegram.org. If you run a proxy, put its address here to work without a VPN.
Send test message
Message content
Include contact name
Include sender number
Include time received
Include SIM (1/2)
A recreation of the Settings tab — not a real screenshot
6

Stop Android from killing the app

Android shuts down background apps to save battery. Skip this and forwarding stops after a few hours:

Nothing is lost when the network drops — Chapar queues messages and retries until they're delivered, and it starts itself again after a reboot.

Part three · Everyday use
7

Reply and send SMS from Telegram

🤖 My SMS relay
🔑 Code: 48213 👤 Mellat Bank 📱 +985000 🕒 2026-08-02 14:31 📶 SIM 1 One-time password: 48213 for an online purchase of 2,450,000 IRR14:31
👤 Ali Rezaei · 📱 09121234567Leaving now, I'll be there in half an hour.14:33 ✓✓
✅ SMS sent to 09121234567.14:33
A recreation of the bot chat: a forwarded SMS, your reply, and the send confirmation — not a real screenshot
CommandWhat it does
/statusCurrent state: forwarding, OTP mode, queue size, numbers
/pause · /resumePause and resume forwarding
/otp_on · /otp_offForward only messages containing a verification code
/sendersList recent numbers
/sms <number> <text>Send an SMS to any number
/helpShow help
8

Choose what gets forwarded

Chapar
SettingsNumbers
All numbers are forwarded by default. You can switch any of them off.
Mellat Bank+985000
Ali Rezaei09121234567
Ads+9810001000
SnappSNAPP
Add a number manually09…
A recreation of the Numbers tab — not a real screenshot
When Telegram is blocked
9

Work without a VPN using a free proxy

Where api.telegram.org is filtered, instead of keeping a VPN on the phone, run a tiny free proxy on Cloudflare and point the app at it:

  1. Create a free account at dash.cloudflare.com.
  2. Workers & Pages → Create → Worker, name it, and Deploy.
  3. Click Edit code, replace everything with proxy/cloudflare-worker.js from the repo, and Deploy again.
  4. Copy the Worker URL (e.g. https://my-tg.username.workers.dev) and test it in a browser: …/bot<TOKEN>/getMe should return {"ok":true,…}.
  5. In Chapar: Settings → API address (proxy), paste the URL, then hit Send test message with the VPN off.
If workers.dev itself is blocked Attach a custom domain to the Worker — Worker → Settings → Domains & Routes → Add → Custom Domain — and use that address instead.
Privacy Message text — including bank verification codes — passes through that proxy in the clear. If that matters to you, host the proxy on your own server rather than Cloudflare.
10

Run the proxy on your own server (optional)

If you'd rather your message text didn't pass through Cloudflare, do the same job on a VPS outside the filtered region. With Caddy the whole configuration is a few lines, and the TLS certificate is handled for you:

tg.example.com {
    reverse_proxy https://api.telegram.org {
        header_up Host api.telegram.org
    }
}
One more layer of protection Your proxy URL is public, and anyone who finds it can reach Telegram through it. In the Cloudflare Worker you can set SECRET to a random string — the URL you put in the app then becomes https://…/<SECRET> and everything else gets a 403. The same trick works on Caddy with an unguessable path.

Note this takes Cloudflare out of the picture, but your messages still pass through your server — it's exactly as private as that machine is.

Something's wrong?
The test message never arrives (❌ error)

Check three things: did you tap Start in the bot chat? Was the token copied without stray spaces? Is the Chat ID digits only? If all three are fine and it still fails, Telegram is unreachable from that network — do step 9.

The app is installed but nothing gets forwarded

Almost always permissions. Go to Settings → Apps → Chapar → Permissions and make sure SMS and Phone are allowed. If they're greyed out, do the "Allow restricted settings" fix in step 4. Also check that Pause forwarding is off in Chapar's Settings tab.

It works for a few hours, then stops

The system killed the app in the background. Do step 6 in full: battery optimization exemption, plus Autostart on Chinese ROMs. You can check whether it's alive at any time by sending /status in Telegram.

Replying in Telegram doesn't send the SMS

Either the SEND_SMS permission isn't granted, or you replied to a message so old that its origin is no longer stored — reply to a more recent one. Note that service senders (like "Mellat Bank") can't be texted back at all.

Frequently asked
Does it forward the SMS already in my inbox?

No. Chapar only forwards messages that arrive after it's installed and connected. It never reads or sends your existing inbox.

How much data and battery does it use?

Data is negligible — a few kilobytes per message. Battery use is modest, but it does keep a service running to receive your Telegram commands, so keep the phone on a charger, or at minimum do step 6 (battery optimization exemption).

Can anyone else control my bot?

No. The app only acts on messages from the Chat ID you configured; if a stranger finds the bot's username and messages it, they're ignored entirely. The one thing to protect is the bot token.

Where do my messages end up?

On the phone itself (a short-lived queue until delivery) and in your Telegram chat. There's no server in between — unless you set up the proxy in step 9, in which case message text passes through it.

Does it work with two SIMs?

Yes. It tells you which SIM a message arrived on and sends your replies from that same SIM. For new messages, /sms1 and /sms2 pick the SIM.

Can I connect several phones to one bot?

Technically yes, but don't: everything lands in one chat and replies can go to the wrong phone. Create a separate bot per phone — it takes seconds — and point each at its own chat.

Does it forward WhatsApp or Telegram messages too?

No — SMS and missed calls only. The app has no access to other apps' notifications.

How fast do messages arrive?

Usually a second or two. If the phone is offline, the message waits in the queue and goes out as soon as the network is back, retrying with a growing delay (starting at 10 seconds) until it's delivered.

Does it need root?

No. Nothing beyond the ordinary Android permissions.

How do I update? Will I lose my settings?

Download the new APK from Releases and install it over the old one — no need to uninstall, and your settings, numbers and token are kept. (All official builds are signed with the same key.)

What happens if I uninstall it?

Forwarding stops and the settings and queue on the phone are erased. Messages already delivered to Telegram stay there — delete the bot chat if you want those gone too.

Is it free?

Yes, and open source. No subscription, no ads. The only possible cost is the SMS messages you send through the bot, which your carrier bills as usual.