Masar

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. 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. 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. 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 reference

OpenAPI 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 specification

MCP

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 works

Start 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