Official WhatsApp Business Platform
Message your customers from your own number, and know exactly what it cost.
Masar connects your WhatsApp number through Meta's Cloud API and sends for you — one message or a hundred thousand. Every send is priced before it happens, charged from a prepaid balance, and settled back for whatever did not go out.
Telegram bots connect the same way, from the same screens.
Three steps, and nothing hidden between them
-
1
Connect your number
Sign in with Facebook and pick the number, or scan a QR from an existing WhatsApp Business app. Either way the number stays yours: it is registered under your own WhatsApp Business Account, not ours.
-
2
Bring your contacts
Upload a CSV and get a receipt: how many landed, how many were refused, and the line number of every row that was. Numbers are never guessed at — an ambiguous one is reported rather than sent to whichever country it resembled.
-
3
Send, and watch the money
A campaign is quoted before it starts, reserved as one charge, and drawn down message by message. Pause it and the reservation waits; cancel it and everything unsent comes straight back.
The part everyone else leaves vague
Bulk messaging goes wrong in exactly two ways: it charges for what it did not send, or it messages someone who asked it not to. Both are design decisions, and here are ours.
You see the price before you spend it
The cost of a campaign is computed over your actual audience, at your account's own rates, and shown next to the button. The number you approve is the number that is reserved.
One charge, settled to the last fraction
A campaign takes its whole quote as a single wallet movement, then spends it down as messages go out. What was not sent is credited back in one movement, and both appear on your statement with the campaign that caused them.
A message that never arrives is not billed
A send WhatsApp refuses, or reports as failed, is refunded automatically. You are charged for messages that were accepted, not for attempts.
Every movement has a line
Top-ups, charges, refunds and settlements are all rows on one statement, accurate to a fraction of a cent. Nothing is ever rounded away, and nothing appears from nowhere.
Your number's health is the product
Meta does not restrict a number for volume. It restricts it for recipients reporting the messages — and the person who asked to stop is the person who reports. So consent is checked where it matters rather than recorded where it is convenient.
- Opt-in is evidence, not a checkbox
- Recording that somebody agreed means saying when, where and how. An import that claims consent without it is refused row by row, with the reason.
- Checked at the moment of sending
- A campaign built at four and sending at eight re-asks about every recipient as it reaches them. Somebody who opted out in between is skipped, not messaged.
- STOP works, in both languages
- A reply asking to stop is honoured automatically, on the number that received it, and it survives a contact being deleted and re-imported.
- A bad list stops itself
- A campaign failing more than a third of its attempts pauses and tells you, instead of finishing and telling you afterwards. A stale list costs you a report rate you do not get back.
Plans
Messages are priced per message, per destination, from your account's rate card — the plan decides what the platform lets you do, not what a message costs.
Free
- per day
- 100
- per month
- 1,000
- numbers
- 1
- contacts
- 500
- Single sends
- Templates
- Contacts and lists
Starter
- per day
- 5,000
- per month
- 50,000
- numbers
- 2
- contacts
- 25,000
- Single sends
- Templates
- Contacts and lists
- Campaigns
- API access
Pro
- per day
- 50,000
- per month
- 1,000,000
- numbers
- 10
- contacts
- ∞
- Everything, including the API and campaigns
The free plan deliberately excludes campaigns and the API: it exists to let you prove the product works with your own number, not to run bulk sends from an unvetted signup.
For developers
The same engine, three ways in. There is no faster path to a recipient hiding behind any of them — the charge, the quota, the idempotency claim and the delivery lease are identical whether a message is sent from a screen, from your code, or by an agent.
REST
Send a message, run a campaign, manage contacts and receive signed webhooks. Every request carries its own idempotency key, so even an automatic retry can never charge you twice for the same action.
Read the referenceOpenAPI 3.1
The whole surface is published as a machine contract at a stable URL, regenerated from the live routes. Point a generator at it and get a typed client in your language.
Download the specificationMCP
Give an AI assistant read access to your numbers, prices and campaign results with the same API key. Spending stays off until you set a daily ceiling, and every tool call is on your request log.
How it worksStart with one number and a small balance
Accounts are reviewed before they can send — it is what keeps the platform's standing with Meta, and yours.
Create an account