Margin, markup and break-even
Margin per message is your sell price minus your buy price. Gross margin expresses it as a percentage of the sell price, while markup expresses it as a percentage of the buy price. The two are easy to confuse: a 25% markup is a 20% margin, and a 50% markup is a 33% margin. The calculator shows both so you can compare it with how your clients and competitors quote.
Gross profit is margin per message times the messages you deliver in a month. Profit after fixed costs subtracts what you pay regardless of volume, such as platform fees, staff, hosting and support. Break-even volume is fixed costs divided by margin per message, and break-even clients is the number of clients at your current average volume needed to cover those costs.
- Margin per message = sell price − buy price
- Gross margin % = margin per message ÷ sell price
- Sell price for a target margin m = buy price ÷ (1 − m)
- Break-even volume = fixed monthly costs ÷ margin per message
Where the buy prices come from
For SMS the buy price starts at BroadNet's indicative list rate for the country, averaged across operators and taken at the volume tier your monthly total reaches: list below 100,000 messages, then 100,000, 1 million and 5 million. These are published list rates, not a quote, so replace them with the price you actually pay.
For WhatsApp the buy price is Meta's rate for the category and the recipient's market from the rate card effective 1 October 2026, which OmniChannels.ai passes through at zero markup. Meta's own volume tiers for utility and authentication are counted per business portfolio, so whether they apply depends on how your clients' WhatsApp accounts are set up; the calculator keeps the WhatsApp buy price flat.
Worked example: reselling SMS to the UAE
A reseller sends 500,000 SMS a month to the UAE for 10 clients. At the 100,000+ tier the indicative buy price is $0.01082 per message. Selling at $0.0135 leaves $0.00268 per message: a 19.9% gross margin and a 24.8% markup. Revenue is $6,750, message cost $5,410 and gross profit $1,340, or $134 per client.
With $500 of fixed monthly costs, profit after fixed costs is $840. Break-even is about 186,568 messages a month, or 4 clients at the current average of 50,000 messages each. At the same sell price, 1 million messages a month would reach the next buy tier and earn about $3,900 after fixed costs, while 50,000 messages at the list rate would lose about $440.
How to price as a reseller
Volume is the strongest lever. As your total traffic grows, SMS buy prices step down through the tiers while your clients' prices can stay the same, so margin per message rises. A small fixed cost spread over more messages also lowers your break-even point.
Price per route rather than with one global markup. Destination countries differ widely in cost and in what clients are used to paying, and WhatsApp categories differ from each other by several times. A white-label platform lets you set a rate card per client and per route, so high-volume clients can get a sharper price without lowering everyone else's.
- Quote SMS per segment: long or Unicode messages are billed as several parts
- Keep WhatsApp rates clearly linked to Meta's categories so clients understand the difference
- Use prepaid credit for new clients to keep credit risk inside your limits
- Review prices when Meta or operators change rates; Meta only changes on the first day of a quarter
Running a white-label reseller business
The OmniChannels.ai reseller programme gives resellers everything the platform supports. Your clients log in to a console with your brand, logo and domain, each in its own sub-account with its own credit, sender IDs, users and rate card. You set your own prices per client and per route, automate accounts and credit through a reseller API, and sell every channel: WhatsApp, SMS, RCS, Voice, Messenger, Instagram, Telegram, Email and Push.
BroadNet runs the operator connections, channel set-up and engineering underneath, and provides second-line support behind your team. You own the client relationship and the margin you set.
