Per line, per month. Flat.
$15 for messaging, $20 with voice calling. No per-message fees, no per-minute fees, no setup fees, no minimums. You only pay for WhatsApp lines that actually connect.
Flat. Billed monthly per active line.
- First line free for 7 days, then $15/month
- Always-on hosted connection
- Unlimited inbound and outbound messages
- Signed webhooks with retry queue
- Stable line ID across reconnects
- Conservative per-line daily rate limits to keep accounts healthy
- Self-healing on transient disconnects
Flat. Unlimited minutes. No per-minute fees.
- Everything in Messaging
- Click-to-call from your dashboard or API
- Voice calls through your customer's WhatsApp
- Unlimited call minutes
- Real-time call state webhooks (ringing, answered, ended)
- Mix calling-enabled and messaging-only lines on one key
- Same wallet, same webhook secret, same line ID
* Calling is rolling out on a per-account basis. See docs.
You pick everywhere, or let your customers pick per line.
Same product, same API, two ways to roll calling out. Mix them in the same account — every line is independent.
Calling on every line.
Provision every new line at $20/month with calling enabled by default. No toggle for your end-customer, no decision for your team. Simple and predictable.
How: pass calling_enabled: true on POST /api/v1/wa/lines. That line bills $20 starting at line.ready.
Let your customer choose.
Default to $15/month messaging. Show your customer a single toggle on the connect page — they pick calling or not before they scan. Lines they enable bill $20; lines they skip stay $15. Your customer never sees pricing.
How: pass allow_calling: true on POST /api/v1/wa/lines. Webhooks tell you which lines billed at $20.
Note. Flex is fully optional. By default the toggle is hidden — your customer only sees the QR scan. Pass allow_calling: true only when you want them to choose, on the lines where you want them to. Hide it entirely on the others and they never know calling existed as an option.
Pay-per-number based on the cheapest in-stock source at the moment of the request. Same key, same wallet as WhatsApp.
- One-time verification numbers, multiple countries
- Rentals (hours to days) when you need them
- Routed across a network of providers
Need something custom?
High volume, white-label, custom SLAs, or a specific integration. Tell us what you need and we’ll get back within a business day.
Card on file. Auto top-up. No surprises.
- 1Save a card
Card on file is required before your first line. Securely tokenized by Square — we never see the number. Auto top-up optional.
- 2Your first line is free for 7 days
Provision a line and connect your customer's WhatsApp. No charge during the trial. After day 7, the line bills $15 or $20/month depending on whether calling is enabled.
- 3Pay only when lines connect
Subsequent lines bill the moment the customer scans the QR. The price is fixed at connect time based on the calling choice — $15 messaging, $20 with calling. Lines that never connect cost nothing — release them anytime.
- 4Monthly renewal, with grace
Each line renews on its own monthly anniversary from the card on file. If a charge fails, you get a 5-day grace period before the line is auto-released.
Tip. Keep your wallet topped up to cover ($15 × messaging lines) + ($20 × calling lines) plus a buffer for new provisions and one renewal cycle. Top-ups never expire.
An agency with 40 connected customers.
You decide whether to resell those lines to your customers at $X each. Mossmoon takes the same $15 or $20 either way.
* Self-host estimate based on typical running costs for an always-on WhatsApp integration at this scale: per-line hosting and proxy, verification on registration, orchestration, ops time, and dedicated-CPU call infrastructure for the calling-enabled lines. Engineering cost to build and maintain not included.
Common pricing questions
What's the difference between the $15 and $20 plans?
Both plans get you the same messaging product: always-on WhatsApp, unlimited inbound and outbound, signed webhooks. The $20 plan also enables voice calling on the line — click-to-call from your dashboard, the call goes through your customer's WhatsApp to anyone. Unlimited minutes, no per-minute fees. You pick the plan per line; you can mix messaging-only and calling-enabled lines under the same API key.
Can I let my customers decide if they want calling instead of paying for it on every line?
Yes. Stay on $15 messaging by default and pass allow_calling: true on POST /api/v1/wa/lines — the Mossmoon-hosted connect page shows your customer a simple "Make and receive calls?" toggle before the QR. If they enable it, that specific line bills $20/month; if they skip it, that line stays $15. Your customer never sees Mossmoon's pricing; they just see a feature toggle. See the API docs for the full flow.
Does the calling toggle change my customer's experience?
No — to your customer it's just a single toggle on the connect page. There's no extra setup, no second QR, no second account. They scan once and their WhatsApp number is connected with whichever feature set you (or they) chose. Toggling later isn't supported in v1 — the choice is locked at QR-scan time. To add calling to an existing line, release it and provision a fresh one.
Are there per-minute charges for calling?
No. Calling-enabled lines are flat $20/month regardless of call volume. Normal business use is fully covered — sustained heavy use (lines averaging 50+ minutes/day every day) may be moved to a custom plan; we'll reach out before anything changes.
How does the 7-day free trial work?
Your first line ever is free for 7 days from when it goes ready (i.e. when your customer scans the QR — not from signup). After day 7, that line bills at $15 or $20/month depending on whether calling is enabled. The trial is per-account and one-time; subsequent lines start billing immediately.
Start with one line. Free for 7 days.
Sign up, save a card, provision your first line. Pick messaging at $15 or messaging plus calling at $20. Nothing is charged until the trial ends.