Skip to content
OmniChannels.ai

Messaging Reseller Pricing: Wholesale Rates and Margins

Messaging reseller pricing explained: how SMS, WhatsApp, RCS and voice wholesale rates work, how to set retail markup, manage credit risk and protect margins.

Updated 13 min read

By OmniChannels.ai Editorial Team · Reviewed by BroadNet Messaging Solutions Team

Omnichannel

Short answer

A messaging reseller buys traffic at wholesale rates and sells it at retail rates, so margin is the difference per message, segment or minute, minus payment, currency, tax and bad-debt costs. SMS is priced per country and operator, per segment, often with volume tiers. WhatsApp combines Meta's per-template charge by category and country with a provider fee. Build rate cards per route, prefer prepaid credit and reconcile delivery reports with invoices monthly.

On this page
  1. How does a messaging reseller make money?
  2. How does A2P SMS pricing work?
  3. How is WhatsApp Business API priced?
  4. How are RCS and voice billed?
  5. How do you build a retail rate card?
  6. How do you manage prepaid and postpaid credit risk?
  7. How do currency and taxes affect reseller margins?
  8. Worked example: margin on a mixed client
  9. How do you reconcile delivery reports with invoices?
  10. What pricing mistakes do resellers make?
  11. How OmniChannels.ai helps

Key takeaways

  • A2P SMS wholesale rates are set per destination country and often per operator, and every billed segment counts, so encoding and message length change the real cost per message.
  • WhatsApp Business API cost has two parts: Meta's charge per delivered template message, set by category and recipient country, and the provider's own fee or markup.
  • Per-route markup protects margin better than one flat markup, because wholesale costs vary widely between destinations and operators.
  • Prepaid credit removes bad-debt risk; postpaid needs credit limits, caps and automatic suspension sized to what the reseller can afford to lose.
  • Monthly reconciliation of delivery reports and call records against the provider's invoice catches billing gaps, rate changes and fraud early.

This guide is for messaging resellers, agencies and software vendors who buy SMS, WhatsApp, RCS and voice at wholesale and sell them to their own clients. It explains how each channel is priced, how to build retail rate cards with a margin you can defend, how to manage credit risk, and how to check that what you are billed matches what you delivered. It deliberately gives no real rates: the numbers in the worked example are a hypothetical illustration only.

How does a messaging reseller make money?

A reseller earns the difference between the wholesale cost of each billable unit and the retail price charged to the client. The billable unit is an SMS segment, a WhatsApp template message, an RCS message or a voice minute.

Gross margin per unit is easy to calculate. Real margin is what remains after:

  • payment processing and bank fees on client top-ups;
  • currency differences between what you pay and what you charge;
  • taxes you cannot recover;
  • unpaid invoices on postpaid accounts;
  • support time, sender ID registration work and onboarding;
  • traffic you are billed for but cannot charge on, such as messages billed on submission that never deliver.

A pricing model that ignores these costs can look profitable per message and lose money per client.

How does A2P SMS pricing work?

A2P SMS is priced per destination country and often per operator, per billed segment, with lower rates at higher volumes. The cost is driven mostly by the termination fee each mobile operator charges for business traffic.

Per country and per operator

Each operator sets its own A2P termination price, so two numbers in the same country can cost different amounts to reach. Providers either publish a rate per operator, identified by mobile country code and mobile network code (MCC/MNC), or a blended rate per country.

Number portability matters here. A number that has moved from one operator to another must be routed and billed by its current operator. Providers resolve this with number lookups, which is one reason per-operator rates for the same country can differ from what the number prefix suggests. Our HLR lookup guide explains how lookups work.

Segments and encoding

Under the 3GPP SMS specification, one SMS carries 160 characters in the GSM 7-bit alphabet or 70 characters in Unicode (UCS-2). Longer messages split into segments of 153 or 67 characters, and each segment is billed. A single Arabic letter or emoji switches the whole message to Unicode.

For resellers this means a client's "one message" can be three or four billed segments. See our SMS character limits guide for the details.

Volume tiers and commitments

Wholesale rates usually fall as committed or actual volume rises. Before passing a tiered rate on to clients, check whether the tier is calculated per destination, per month or across all your traffic, and what happens if you miss a commitment.

Billing basis

Some SMS routes are billed when a message is submitted, others only when delivered. Ask your provider which applies per route, and mirror it in your client terms.

How is WhatsApp Business API priced?

WhatsApp has two cost layers: Meta's charge per delivered template message, and the provider's fee. Meta's charge depends on the template category (marketing, utility or authentication) and the recipient's country, according to Meta's pricing documentation.

Cost element Set by How it varies What a reseller should do
Template charge Meta Category and recipient country; volume tiers for utility and authentication Use Meta's current rate card per country and category
Service messages Meta Free-form replies inside the 24-hour customer service window Check current allowance and rates (see below)
Provider fee Your upstream provider Per message, per account or as a markup Know exactly what is charged and on what basis
Your fee You Per message, per number, per seat or bundled Show it separately or build it into a reviewed bundle

According to Meta's pricing documentation, from 1 October 2026 Meta charges service messages after the first 1,000 free per business phone number per month, and charges utility templates sent inside the customer service window. Confirm the details in Meta's current rate card before you set prices.

Two practical points for resellers:

  • Recategorisation: Meta can recategorise a template, for example from utility to marketing, and the charge follows the category applied at sending time. Price clients on the category actually charged.
  • Who pays Meta: some clients pay Meta through their own payment method; others are billed through your credit. Your rate card must make clear which applies.

Our WhatsApp API pricing guide for 2026 explains Meta's model in more depth.

How are RCS and voice billed?

RCS and voice are billed in different units from SMS, so they need their own rate card lines.

  • RCS business messaging is billed per message or per session depending on the market, message type and Google's current RBM billing model. Messages that fall back to SMS when RCS is not available are billed as SMS. Price both legs. Our RCS guide covers how fallback works.
  • Voice is billed per minute or per part of a minute, by destination and number type, with a billing increment. Common increment notations are "60/60" (each call rounded up to whole minutes) and "1/1" (per second). The increment can change the cost of short calls such as voice OTPs considerably, so match your retail increment to your wholesale one.
  • Number rental for inbound voice or two-way SMS is usually a monthly fee per number; resell it with a margin and a minimum term.

How do you build a retail rate card?

Build retail prices per route from your wholesale cost plus a markup that covers your real costs and target profit. A route is a destination country and, where priced separately, an operator and channel.

Rate card procedure

  1. Import the wholesale rate card for every destination and channel you will sell.
  2. Group destinations by how your clients use them: home markets, regional markets, long tail.
  3. Choose a markup method per group: a percentage of cost, a fixed amount per unit, or a percentage with a minimum per-unit margin.
  4. Add a buffer for currency and rate changes on routes billed in a different currency from your retail prices.
  5. Round to clear retail prices that clients can compare and that your invoices show cleanly.
  6. Set a floor: no route should go below cost plus your fixed costs per unit, even for large clients.
  7. Create client-specific cards only for negotiated deals, and record who approved the discount.
  8. Schedule reviews whenever your provider or Meta changes rates, and at least quarterly.

Flat vs per-route markup

Approach How it works When it works Risk
Flat percentage on all routes Same percentage added to every wholesale rate Few destinations with similar costs Very small margin on cheap routes
Fixed amount per unit Same amount added per segment, message or minute High-volume, low-cost routes Uncompetitive on expensive routes
Per-route markup Markup set per destination or operator Multi-country traffic More work to maintain
Bundles Fixed price for a package of units Small clients wanting predictable bills Unused units or unexpected expensive destinations

Most resellers end up with per-route markup for active destinations and a default rule for the rest.

How do you manage prepaid and postpaid credit risk?

Prepaid credit removes bad-debt risk because clients pay before they send. Postpaid billing exposes you to clients who do not pay for traffic you have already paid for.

Prepaid Postpaid
Who funds traffic The client You, until the invoice is paid
Bad-debt risk None on usage Up to the credit limit, or more without caps
Cash flow Positive Negative if you prepay your provider
Client experience Must top up; risk of sending stopping Convenient for large clients
Controls needed Low-balance alerts, auto top-up Credit checks, caps, automatic suspension

Good practice for postpaid accounts:

  • run a basic credit check and agree a written credit limit;
  • cap monthly usage at that limit, enforced by the platform;
  • suspend automatically when an invoice is overdue;
  • watch for fraud, such as sudden OTP spikes to unusual countries, which can run up large charges quickly. See our SMS pumping guide.

How do currency and taxes affect reseller margins?

Currency and tax can remove a thin margin entirely. Decide them before you publish prices.

  • Currency: if your provider bills in USD and you sell in AED, SAR or another currency, track the exchange rate you actually pay. Pegged currencies such as the AED and SAR reduce, but do not remove, conversion and bank costs.
  • Meta's billing currency: Meta publishes rate cards in several currencies. Know which one applies to your WhatsApp traffic.
  • VAT and indirect taxes: the UAE and Saudi Arabia apply VAT, and treatment of cross-border services depends on where each party is established. Confirm with the UAE Federal Tax Authority, ZATCA or your adviser.
  • Withholding tax: some countries apply withholding tax on cross-border service payments, which reduces what you receive. Check before you sign clients abroad.
  • Quotes: state on every rate card whether prices include or exclude tax and Meta's charges.

Worked example: margin on a mixed client

Illustration only. All figures below are hypothetical, chosen to show the arithmetic. They are not BroadNet or OmniChannels.ai rates and are not market prices.

"Sahel Software" (synthetic) resells messaging to a Riyadh-based clinic group. In one month the client sends:

  • 40,000 SMS appointment reminders, half in Arabic. The Arabic version is two Unicode segments and the English version is one GSM-7 segment, so the month uses 60,000 billed segments.
  • 10,000 WhatsApp utility templates for booking confirmations.

Hypothetical costs and prices (USD):

Item Units Wholesale per unit Retail per unit Wholesale total Retail total
SMS segments 60,000 0.020 0.026 1,200 1,560
WhatsApp provider fee 10,000 0.002 0.005 20 50
WhatsApp Meta charge (passed through at cost) 10,000 0.010 0.010 100 100
Total 1,320 1,710

Gross margin is 1,710 minus 1,320, or 390, which is about 23 percent of revenue.

Now the real costs, still hypothetical:

  • payment fees of 2 percent on the 1,710 top-up: about 34;
  • currency and bank costs: about 10;
  • support and onboarding time allocated to the client: 120.

Net contribution is roughly 390 minus 164, or 226. Two lessons follow:

  1. Segments matter. If Sahel had priced "per message" at 0.026, it would have billed 40,000 messages, or 1,040, against an SMS cost of 1,200, and lost money on SMS.
  2. Pass-through charges add revenue but no margin. The Meta charge raises the invoice without adding profit, so margin percentages fall as WhatsApp volume grows unless the fee covers your costs.

How do you reconcile delivery reports with invoices?

Reconcile every month by comparing your own records of billable units with the provider's invoice, by channel, destination and status. Delivery reports (DLRs) for messages and call detail records (CDRs) for voice are your evidence.

Monthly reconciliation steps

  1. Export delivery reports and CDRs for the billing period, by sub-account.
  2. Count billable units: segments for SMS, delivered templates by category and country for WhatsApp, rounded minutes for voice.
  3. Apply the billing basis per route: submitted or delivered for SMS, delivered for Meta's template charges.
  4. Price each line with the wholesale rate in force on the sending date, including mid-month changes.
  5. Compare with the provider's invoice by destination and channel. Investigate differences above a threshold you set.
  6. Compare with your client invoices to check every billable unit was charged at retail.
  7. Review anomalies: messages stuck without a final status, unexpected destinations, sudden volume spikes.
  8. Raise disputes promptly, with exported evidence, within the window your contract allows.

Our guide to message delivery statuses explains each status and which ones are usually billable.

What pricing mistakes do resellers make?

  • Charging per message when billed per segment, especially for Arabic and long texts.
  • One flat markup that leaves expensive routes unprofitable or cheap ones uncompetitive.
  • Fixed retail prices without a rate-change clause, so wholesale increases come out of your margin.
  • Bundling Meta charges into a fixed price and not reviewing it when Meta updates its rate card.
  • Unlimited postpaid credit, which turns one non-paying client into a large loss.
  • Ignoring billing increments on voice, which change the cost of short calls.
  • Not reconciling, so billing errors, unpriced destinations and fraud go unnoticed for months.
  • Competing on price alone instead of on route quality, support and service.

How OmniChannels.ai helps

The OmniChannels.ai reseller programme gives you wholesale rates with your own retail pricing and per-route markup, plus a margin view per account. Each client sub-account has its own credit, rate card, sender IDs and users, and you can run clients prepaid or postpaid with credit control to top up, suspend or cap. Delivery reports with filters and CSV export support monthly reconciliation, and a reseller API automates top-ups, rate cards and reporting. For bulk traffic over SMPP, see wholesale partnerships. Indicative list prices, excluding taxes and Meta's WhatsApp charges, are on our pricing page; the final quote confirms the cost.

Frequently asked questions

What is a good margin for an SMS reseller?

There is no standard margin. It depends on your model, volumes, destinations and the service you add. Pure traffic resellers compete closely on price, while agencies that bundle campaigns, templates and support can charge more. Work out your own costs first, including support, payment fees, currency and bad debt, then set a markup per route that covers them with a profit you can defend.

Should I charge clients per message or per segment?

Charge the way you are charged. If your provider bills per SMS segment, bill your clients per segment too, and show segment counts in reports. Charging per message while paying per segment means long or Arabic messages, which split into more segments, can turn a profitable route into a loss.

How do I price WhatsApp messages as a reseller?

Separate Meta's charge from your fee. Meta charges per delivered template message by category and recipient country, and changes rates periodically. Either pass Meta's charge through at cost and add a clear per-message fee, or build a bundled rate per category and country that you review whenever Meta updates its rate card.

Are failed SMS messages billed?

It depends on the route and contract. Some SMS routes are billed on submission, others on delivery, so check your provider's terms. For WhatsApp, Meta charges for delivered template messages. Make sure your retail terms match your wholesale terms, or you may pay for messages you cannot charge your clients for.

How often do wholesale SMS rates change?

Rates change when operators change their A2P termination fees, when routes change or when currencies move, and some destinations change several times a year. Ask your provider how and how far in advance rate changes are notified, and build the same notice period into your client contracts so you can pass changes on.

Do I charge VAT on messaging services in the GCC?

Usually VAT applies to messaging services sold in GCC countries that have introduced VAT, such as the UAE and Saudi Arabia, but treatment depends on where you and your client are established. Confirm with the UAE Federal Tax Authority, ZATCA in Saudi Arabia or a tax adviser, and quote prices clearly as excluding or including tax.

Sources

  1. WhatsApp Business Platform pricing — Meta for Developers
  2. Pricing updates on the WhatsApp Business Platform — Meta for Developers
  3. 3GPP TS 23.040: Technical realization of the Short Message Service (SMS)
  4. Federal Tax Authority (FTA), UAE
  5. Zakat, Tax and Customs Authority (ZATCA), Saudi Arabia