Meta WhatsApp Pricing — Status 2026-07-22
Summary
Product decision landed on the service margin: bill service at cost — a 0 Qontak margin at
launch (pass-through). This resolves the long-standing open product question (absorb /
pass-through / bundle). Clients pay exactly what Meta charges Qontak, with no markup; the margin
stays a real, configurable field so a markup can be introduced later. This supersedes the earlier
default-10 / per-package-50 model. No progress value changes in this report.
Decision detail
- Margin = 0 for every client, reached via two mechanisms:
- New CIDs — default
servicemargin is 0 at account creation (does not mirrorbi_fee=10). - Existing CIDs — release-date idempotent backfill writes
servicemargin = 0.
- New CIDs — default
- Other categories unchanged — marketing / utility / authentication margins and
ui_fee/bi_feeare untouched. - Per-package override (WSVC-S04) deferred —
custom_margin_by_packagesis dead end-to-end (no read path); retained as a future lever, not launch scope (RFC OQ-3).
Docs updated
- PRD
prds/service-message-billing.md→ v1.1 (§1, Scope Changes, §4, §6–9, §12–15, changelog). - Initiative
README.md— open product question marked resolved. documentations/impact-analysis.md§5 resolved;documentations/monetary-impact-to-clients.mdfigures flagged as an upper bound (they include margin; 0-margin charge is lower).- RFC
rfcs/service-message-billing.md+ task-breakdown — synced: seedConversationFee('service')at0.00; OQ-2 (margin unit) resolved as moot.
New risk / precondition (raised this pass)
The 0-margin guarantee holds only on the ConversationFee path. Where the existing
:deduction_conversation_fee flag is OFF, hub-core WaPricing falls back to PackageFee.ui_fee
(default 5, shared across all UI conversations) — which would bill a non-zero markup and violate
charge-at-cost. Precondition (RFC A-3 / OQ-11, now elevated): confirm :deduction_conversation_fee
is ON for every org enabled for bill_service_messages; do not enable legacy-path orgs until migrated.