WWaSphere
GitHub
WhatsApp Business API pricing vs self-hosting: the real cost model
WaSphere Teampricingwhatsapp-business-apiself-hostedcost

WhatsApp Business API pricing vs self-hosting: the real cost model

How Meta's per-message pricing actually works, what a BSP adds on top, and the honest arithmetic for running your own WhatsApp gateway on a VPS instead — including when the official API is worth every rupee.

WhatsApp Business API pricing vs self-hosting: the real cost model

If you're in Pakistan, India or Bangladesh and you've asked a WhatsApp Business API vendor for pricing, you've probably received a quote with three or four numbers in it and no explanation of which one is Meta's and which one is theirs. That opacity is the point.

This post takes the model apart. Then it does the same for the self-hosted alternative — including the costs that don't show up on an invoice. No vendor comparison table, no "save 90%" claim. Just the arithmetic, so you can run it with your own volumes.

Part 1: what you actually pay Meta

The official WhatsApp Business Platform has one bill from Meta and, usually, a second bill from whoever gives you access to it.

Meta charges per message, by category

Meta's billing moved from a conversation-window model to per-message pricing for template messages in July 2025. Every template you send falls into a category, and each category has its own rate:

  • Marketing — promotions, offers, re-engagement. The most expensive category, everywhere.
  • Utility — order confirmations, shipping updates, payment reminders, appointment alerts. Substantially cheaper than marketing.
  • Authentication — OTPs and login codes. Priced separately again, and in some markets on its own regional rate card.
  • Service — your replies to a customer inside the 24-hour window after they message you. Free.

That last line is the single most important fact in WhatsApp pricing and the one vendors mention least. If your use case is customers message you and you reply, Meta's charge is zero. Support inboxes, sales conversations, and reply-driven flows cost nothing on the official platform.

You pay when you start the conversation, or when you reply after 24 hours of silence — because then you must use a pre-approved template, and templates are billed by category.

Rates vary enormously by country

There is no global price. Rates are set per market, and South Asian markets are among the cheapest in the world — a marketing template to a Pakistani or Indian number costs a small fraction of what the same message costs to a UK or US number.

Get the current numbers from Meta's own rate card, not from a reseller's blog post. Meta publishes per-country, per-category rates and changes them periodically. Anyone quoting you fixed prices in an article — including this one, which is why there are none — is quoting a number that will be wrong within a year.

Then there's the BSP

Most businesses can't go directly to Meta; you go through a Business Solution Provider. The BSP resells Meta's messaging and adds their own charge, usually one or more of:

  • a monthly platform fee, often tiered by contacts or seats
  • a markup per message on top of Meta's rate
  • per-seat pricing for their agent inbox
  • charges for extras: chatbot builder, campaign manager, API access, integrations

The markup is the part to scrutinise. Ask any prospective BSP two direct questions: what is your per-message markup over Meta's published rate, by category? and is that markup a fixed amount or a percentage? A vendor that won't answer plainly is telling you something.

Working out your Meta bill

The formula is simple once you separate the categories:

monthly cost =
    (business-initiated marketing templates × marketing rate)
  + (business-initiated utility templates   × utility rate)
  + (authentication messages                × auth rate)
  + (customer-initiated conversations       × 0)
  + BSP platform fee
  + (all billable messages × BSP markup)

Fill in your own volumes and Meta's current rates for your country. Two things usually fall out of this:

  1. If most of your traffic is inbound-driven support, official pricing is cheap. Free service conversations plus a modest platform fee is hard to beat.
  2. If you send a high volume of business-initiated messages, the per-message line dominates everything else — and it grows exactly in proportion to your business.

Part 2: what self-hosting actually costs

Self-hosting a WhatsApp gateway replaces per-message billing with infrastructure billing. The cost stops tracking your volume and starts tracking your server.

Infrastructure

A gateway like WaSphere runs as four Docker containers — PostgreSQL, the WhatsApp server, an API, and a dashboard. That fits comfortably on a small VPS; 2 vCPU and 4 GB of RAM is a sensible starting point, which sits in the low tens of dollars a month at mainstream providers. Add a domain and a TLS certificate (free via Let's Encrypt) and that's the hosting line item.

There is no per-message charge, because there's no meter. Ten thousand messages and one hundred thousand messages cost the same: the price of the server.

The costs that aren't on an invoice

This is where honest comparisons usually stop being flattering, so:

  • Your time. Updates, backups, certificate renewal, watching logs. Not a lot of hours, but not zero, and they're hours from someone who could be building product.
  • Backups you actually test. pg_dump plus the session volume. A backup you've never restored is a hope, not a backup. See Backup.
  • Monitoring. Sessions disconnect. If nobody's watching, you find out from an angry customer. See Monitoring.
  • Ban risk. This is the real one. A self-hosted gateway drives a regular WhatsApp account. Meta does not sanction it, and numbers can be blocked. Warming new numbers, pacing sends, and only messaging people who opted in reduces the risk substantially — no project can eliminate it, and any that claims to is lying to you.
  • No official support. When something breaks, you have GitHub issues and your own debugging, not an SLA.

The break-even question

There's no universal crossover point, and the honest way to find yours is to compare like with like:

official:      fixed BSP fee + (business-initiated volume × blended per-message rate)
self-hosted:   VPS + your time + risk

The pattern that emerges is consistent. Low outbound volume favours the official API — the per-message cost is small and you get legitimacy for free. High outbound volume favours self-hosting, because one side of that equation grows with your business and the other doesn't. Where "high" begins depends on your country's rates and what your BSP charges, which is exactly why you should run your own numbers instead of trusting a break-even chart from a vendor.

Part 3: when the official API is the right answer

We build a self-hosted gateway and we still tell people this regularly. Choose the official WhatsApp Business API when:

  • You're sending marketing at scale. Bulk outbound promotion is precisely what gets unofficial numbers blocked. Doing it officially is the difference between a business and a burner phone.
  • You need the green verified badge and a display name. Only the official platform grants it. For consumer trust, it matters.
  • Downtime is unacceptable. Meta's infrastructure with a BSP's SLA is more reliable than your VPS, and it isn't close.
  • You need OTPs to always arrive. Authentication is a poor fit for an unofficial connection: a blocked number means locked-out users.
  • You want click-to-WhatsApp ads, the WhatsApp catalogue, or Flows. These are official-platform features. Unofficial gateways don't have them.
  • You're in a regulated industry where "we drive a normal WhatsApp account programmatically" won't pass an audit.

Self-hosting makes sense when you're a developer or an integrator wiring WhatsApp into systems you already run; when your messaging is transactional and high-frequency — invoice reminders, delivery updates, internal alerts — and per-message fees would tax the most valuable traffic you have; when customer data must stay on your infrastructure; or when you simply want to read the code that handles your customers' phone numbers.

Sending one message with a self-hosted gateway is one HTTP call:

curl -X POST \
  "https://api.yourdomain.com/workspaces/{workspaceId}/proxy/api/sessions/{sessionId}/messages/text" \
  -H "Authorization: Bearer wsk_your_key" \
  -H "Content-Type: application/json" \
  -d '{ "to": "923001234567", "text": "Your invoice is due tomorrow." }'

No template approval, no category, no meter.

The summary

Official API (via BSP)Self-hosted gateway
Customer-initiated repliesFree (24h service window)Free
Business-initiated messagesPer message, by categoryFree
Platform feeUsually monthly, tieredNone
InfrastructureIncludedYour VPS
Scales with volumeYes — cost grows with youNo — cost is flat
Verified badgeYesNo
Ban riskEffectively noneReal, manageable
SupportContractualCommunity
Template approvalRequired for outboundNot applicable

The right question isn't "which is cheaper?" It's "how much of my traffic is business-initiated?" Answer that honestly and the arithmetic usually decides for you.

If self-hosting looks right, the Quick Start gets a full stack running in about ten minutes, and the whole thing is MIT-licensed with no paid tier on the core platform. If the official API looks right, go and get properly onboarded — and now you know which line on the quote is Meta's and which one is the vendor's.

Further reading: the open-source WhatsApp Business API alternative and running Baileys in production.

Get Started

Ship a self-hosted WhatsApp API today

Clone the repo, set your secrets, and send your first message in minutes — Docker-based, MIT licensed, zero config.

Read the Quick Start