Your own +62 number
Pair the WhatsApp number your customers already have saved, as a linked device. It keeps working on the phone.
A WhatsApp API for Indonesian businesses: send from your own +62 number with no per-message fee, get replies on a webhook, schedule in WIB, WITA or WIT, and test free.
Free Sandbox, no card needed. Pair an Indonesian number and send your first message in about 10 minutes.
Pair the WhatsApp number your customers already have saved, as a linked device. It keeps working on the phone.
Meta charges $0.025 for each utility message in Indonesia. ChatRail Core is $15 a month for unlimited sending.
Recurring schedules take a timezone, so a 09:00 reminder goes out at 09:00 local time in Jakarta, Makassar or Jayapura.

In Indonesia the two words usually mean two different products.
ChatRail is the second kind, built for developers: a REST API, signed webhooks, delivery states, schedules and optional AI replies. It is not affiliated with Meta or WhatsApp. If you need the green-tick profile, one-time passcodes at large volume, or marketing to big opted-in lists, Meta's official platform is the right choice. Official API or linked devices compares the two in detail.
Meta charges per message delivered, by category. Its Indonesia rates from the card effective 1 October 2026, in US dollars:
| Category | Meta list rate | 10,000 a month |
|---|---|---|
| Marketing | $0.0411 | $411 |
| Utility (order updates, reminders) | $0.0250 | $250 |
| Authentication (one-time codes) | $0.0250 | $250 |
| Authentication, business based abroad | $0.1360 | $1,360 |
| Service (replies past 1,000 a month) | $0.0250 | $250 |
Indonesia's utility rate is about 18 times India's and seven times the US rate. Its authentication rate for businesses based outside Indonesia is one of the highest on Meta's card. Your provider may add its own fee on top.

ChatRail Core is $15 a month for one number with unlimited sending, so it costs the same as Meta's fee at 600 utility messages a month. Above that the flat fee is cheaper, and replies are included. The full rate logic is in our WhatsApp API pricing guide.
One HTTP request with your API key. The message is plain text, so Bahasa Indonesia, English or both work the same way.
curl -X POST https://www.chatrail.dev/v1/messages/text \
-H "Authorization: Bearer $CHATRAIL_API_KEY" \
-H "Idempotency-Key: pesanan-5521-dikirim" \
-H "Content-Type: application/json" \
-d '{"connection":"toko-jakarta","to":"+628XXXXXXXXXX",
"body":"Pesanan 5521 sedang dikirim dan tiba hari ini sebelum pukul 18.00.",
"context":{"order_id":"5521","status":"shipped"}}'The response is 202 Accepted: the message is stored and queued, and delivery arrives later on your webhook. Send an Idempotency-Key on every request so a retry never sends the same update twice. You can also attach an image, invoice PDF or location, and check whether a number is on WhatsApp first with GET /v1/numbers/check.

Indonesia spans three time zones and none of them changes for daylight saving. POST /v1/schedules takes a timezone, so set the one your customers live in:
| Zone | Timezone to send | Covers, for example |
|---|---|---|
| WIB, UTC+7 | Asia/Jakarta | Java, Sumatra |
| WITA, UTC+8 | Asia/Makassar | Bali, Sulawesi |
| WIT, UTC+9 | Asia/Jayapura | Papua, Maluku |
Recurrence can be daily, weekly on chosen days, or monthly on a day of the month, with -1 for the last day, which suits bill and instalment reminders. Pause, resume and cancel a schedule from the API. A single message takes send_at instead. See the API reference for the full body.
Register an HTTPS endpoint with POST /v1/webhook-endpoints and ChatRail posts signed events to it, each with a chatrail-signature header you verify before you trust it.
message.received for every incoming message, including photos, voice notes and documents.message.sent, message.delivered, message.read and message.failed as each message moves.message.reply_correlated when a reply is matched to the alert it answers, with that alert's context attached.connection.disconnected and connection.requires_repair when the linked device needs attention.Optional AI replies can answer follow-up questions using only the context attached to the alert, and either send automatically or wait as drafts. They are off until you turn them on. Context-aware replies.
Yes, for testing. ChatRail's Sandbox is free and needs no card: one connected number, 500 messages a month, and the basic API and webhooks. Pair a number by scanning a QR code or typing a pairing code on the phone, send a message to yourself, and watch the events arrive.
For production, paid plans start at $15 a month per number with unlimited sending. Free gateways that never charge anything are worth a hard look at who runs the session and where your customers' messages go. The quickstart takes about ten minutes.
A linked-device API is not Meta's official platform, and that has consequences you should plan for:
Send updates people expect, at a steady pace, and have a plan for re-pairing. How to tell a ban from an expired session.
Yes. Any number that runs WhatsApp can be paired as a linked device, including Telkomsel, Indosat, XL and other Indonesian mobile numbers. The number keeps working on the phone.
Yes, in the sense the word is used in Indonesia: it pairs a normal WhatsApp number as a linked device and lets your code send and receive through it. It adds webhooks, delivery states, schedules and optional AI replies.
No. ChatRail uses a linked-device session, so there is no Meta onboarding, no template approval and no per-message fee, and also no green tick.
Yes. The message body is plain text, so Bahasa Indonesia, English or a mix work the same way.
Yes. You can list the groups the number is in, create and manage groups, and send to a group by name.
The Sandbox is free with 500 messages a month. Core is $15 a month for one number with unlimited messaging. Core + AI is $29 and adds 10,000 AI replies a month. Prices are in US dollars.
Validate the connection, delivery state and reply path before increasing traffic.
Start free