Skip to content
man glossary/whatsapp-calling-sip

glossary define whatsapp-calling-sip

Name

WhatsApp Calling over SIP

A Calling API option that connects WhatsApp voice calls to a contact centre or PBX over SIP, so you need not handle WebRTC media yourself.

Synopsis

WhatsApp SIP trunking, WhatsApp SIP integration, SIP calling for WhatsApp

Section

Messages & interactivity

Level

expert

▍

Reviewed

Route SIP INVITEs by the payload Meta attaches

7 / 7

Only agents with the required skill are eligible; the least busy of them wins.

Incoming · 0 left

  1. All 7 conversations have been routed.

Conversation 7 of 7 · Skills-based

Karthik · callback(needs loans)goes toWaiting queue

Every agent is at capacity, so “Karthik · callback” waits in the queue.

  • Loans queue

    2 of 2 open

    Full
    • loans
    1. Karthik · cta loan_LN4471needs loans
    2. Anitha · cta loan_LN5120needs loans
  • Cards queue

    2 of 2 open

    Full
    • cards
    1. Divya · deeplink card_limitneeds cards
    2. Fatima · cta card_blockneeds cards
  • Tamil desk

    2 of 2 open

    Full
    • tamil
    • general
    1. Suresh · no payloadneeds general
    2. Ramesh · IVR choice Tamilneeds tamil

Waiting · 1

  1. Karthik · callbackneeds loans
Same 7 conversations, each strategy
StrategyRoutedWaitingSkill mismatches
Skills-based610
Sticky612
Least busy612
Each chip is a WhatsApp call reaching the SBC as a SIP INVITE, tagged by its x-wa-meta payload headers. Step through skills-based routing to send each to the right queue, then compare sticky routing for a returning caller.

Conversation 7 of 7, Karthik · callback: Every agent is at capacity, so “Karthik · callback” waits in the queue.

Description

What is WhatsApp calling over SIP?

WhatsApp calling over SIP is a way of running the WhatsApp Business Calling API through the Session Initiation Protocol (SIP) instead of Graph API calls and webhooks. When SIP is enabled on a business phone number, a customer's WhatsApp call reaches the business as a SIP INVITE that Meta sends to the business's own SIP server — a PBX, a session border controller (SBC) or a cloud contact centre — and the business places outbound WhatsApp calls by sending an INVITE to Meta. Agents keep the phones, queues and call recording they already have; WhatsApp becomes one more trunk.

Configuration lives in the number's calling settings: calling.sip.status set to ENABLED and a servers array with one server's hostname, port (5061 by default) and optional request_uri_user_params, such as a trunk group. Meta's SIP domain is wa.meta.vc, signalling must use TLS, and your server needs a valid certificate for the hostname you configured. Meta generates a SIP password for each number and app, returned as sip_user_password by GET /{PHONE_NUMBER_ID}/settings?include_sip_credentials=true, and digest authentication runs both ways: you answer a 407 Proxy Authentication Required when you call out, and you can challenge Meta's INVITEs for inbound calls.

Media is the part teams underestimate. By default the SDP must support ICE, DTLS-SRTP and Opus (opus/48000/2), so the SBC has to handle WebRTC-style media rather than your application code. Choosing SDES key exchange instead puts the SRTP key in the SDP and removes ICE, STUN and DTLS, and PCMA and PCMU can be enabled alongside Opus. Meta tags its SIP messages with headers such as x-wa-meta-wacid (the call ID), x-wa-meta-phone-number-id, x-wa-meta-cta-payload and, on BYE, x-wa-meta-call-duration. The protocol itself is covered on the SIP page; this one is the WhatsApp-specific integration.

Key takeaways

  • WhatsApp calling over SIP routes Calling API calls to and from your own SIP server, such as a PBX, SBC or contact centre, instead of the Graph API call endpoints.
  • Enable it per number in calling.sip settings with one server's hostname and port (5061 by default); signalling to and from wa.meta.vc is TLS only.
  • Meta uses SIP digest authentication with a per-number password from GET /{PHONE_NUMBER_ID}/settings?include_sip_credentials=true.
  • Media is DTLS-SRTP with ICE by default, or SDES-keyed SRTP; Opus is required, and PCMA and PCMU can be added.
  • With SIP on, the calling Graph endpoints are unavailable and calling webhooks stop unless you enable webhook_delivery.

Properties

WhatsApp calling over SIP: key facts and limits

Meta SIP domain
wa.meta.vc
Transport
TLS only; your server on port 5061 by default
SIP servers per number
One
Authentication
SIP digest, Meta-generated password per number and app
Media
DTLS-SRTP with ICE (default) or SDES-keyed SRTP
Codecs
Opus required; PCMA and PCMU optional
Call webhooks
Off unless webhook_delivery is ENABLED; no SDP in them
Diagnostics
Health Status API field can_receive_call_sip

Mechanics

How does WhatsApp calling over SIP work?

  1. step 1 — Prepare the SIP server

    Expose TLS (port 5061 by default) with a valid certificate for the hostname, support digest authentication and Opus, and allowlist Meta's published IP addresses for both signalling and media.

  2. step 2 — Enable SIP on the number

    POST calling.sip with status: ENABLED and one entry in servers; add request_uri_user_params for trunk routing and webhook_delivery: ENABLED if your CRM still needs call events.

  3. step 3 — Fetch the SIP password

    Read sip_user_password from GET /{PHONE_NUMBER_ID}/settings?include_sip_credentials=true and keep it in a secrets store. To rotate it, disable SIP with an empty server list, re-enable it and fetch again.

  4. step 4 — Take inbound calls

    Meta sends an INVITE to your server for each user-initiated call. Challenge it with digest auth, read the x-wa-meta-* headers to route it, and answer 200 OK with your SDP.

  5. step 5 — Place outbound calls

    Send an INVITE to sip:+<E.164 number>@wa.meta.vc;transport=tls, answer Meta's 407 with a Proxy-Authorization header, and call only users who have granted call permission.

  6. step 6 — Diagnose

    Test the certificate with openssl s_client -verify_hostname, and check the Health Status API's can_receive_call_sip field when calls do not arrive.

Usage

WhatsApp calling over SIP in code

POST https://graph.facebook.com/v26.0/{PHONE_NUMBER_ID}/settings
Authorization: Bearer {ACCESS_TOKEN}
Content-Type: application/json
{
"calling": {
"status": "ENABLED",
"sip": {
"status": "ENABLED",
"webhook_delivery": "ENABLED",
"servers": [
{
"hostname": "sbc.example.in",
"port": 5061,
"request_uri_user_params": { "tgrp": "wacall", "trunk-context": "byoc.example.in" }
}
]
},
"audio": { "additional_codecs": ["PCMA", "PCMU"] }
}
}

One SIP server per number. With SIP enabled, the number signals calls only over SIP.

Caveats

Common mistakes with WhatsApp calling over SIP

  • A certificate that does not match the hostname

    Meta validates your server's certificate against the configured hostname, and a mismatch fails the TLS handshake before any INVITE is sent. Test with openssl s_client -verify_hostname before enabling SIP.

  • An SBC that cannot do ICE and DTLS

    Calls set up but carry no audio when the media path cannot complete ICE and DTLS-SRTP. Upgrade the SBC's WebRTC support or switch to SDES key exchange.

  • Expecting Graph endpoints and webhooks to keep working

    With SIP enabled, the calling Graph endpoints are unavailable and calling webhooks stop. Turn on webhook_delivery if other systems depend on call_created and terminate events.

  • Firewall rules based on SIP headers

    Allowlist Meta's IP addresses by packet source for signalling and media, not by addresses in headers such as Via. mTLS covers signalling only, never media.

  • Several apps, several SIP servers

    A number supports one SIP server, and when several apps configure their own, Meta ends the call as soon as any server sends BYE. Keep one integration in charge of the number's calls.

Why it matters

Why does WhatsApp calling over SIP matter?

Most businesses that take calls already own a voice stack: queues, IVR, skills routing, recording, quality monitoring and workforce management. Rebuilding all of it in WebRTC just for WhatsApp makes little sense. SIP lets WhatsApp calls land in the same contact centre as phone calls, routed by the same rules to the same agents, while the call stays a WhatsApp call for the customer: free to place from the chat they were already in, and tied to their WhatsApp identity.

Example

Example: A Chennai lender's contact centre takes WhatsApp calls

A Chennai-based consumer lender already runs an SBC and queue software for its toll-free line. It enables SIP on its WhatsApp number, pointing at its SBC on port 5061 with tgrp=wacall, so WhatsApp calls arrive on their own trunk group. The IVR reads x-wa-meta-cta-payload: callers who tapped "Call about my loan" in a repayment reminder skip the menu and reach the loans queue with the loan ID already on screen, while callers from the chat header go to a Tamil-or-English language menu. Recording and quality review work unchanged, and with webhook_delivery on, the CRM logs each call against the customer's chat history.

Notes

Best practices for WhatsApp calling over SIP

  • Use request_uri_user_params such as tgrp to land WhatsApp calls on their own trunk group.
  • Map x-wa-meta-cta-payload and x-wa-meta-deeplink-payload into the IVR to skip menus for known contexts.
  • Store sip_user_password in a secrets manager and rotate it by disabling and re-enabling SIP.
  • Log x-wa-meta-wacid on every call record to join it to chat history and Meta's call events.

Questions

WhatsApp Calling over SIP FAQs

Can I connect WhatsApp Business calls to my existing PBX?
Yes, if it can speak SIP over TLS with digest authentication and Opus. Enable SIP in the number's calling settings and point it at your SIP server or SBC: user-initiated calls then arrive as INVITEs, and outbound calls go to wa.meta.vc.
What is wa.meta.vc?
It is Meta's SIP domain for WhatsApp calling. Your server sends business-initiated INVITEs to sip:+<E.164 number>@wa.meta.vc;transport=tls, and Meta answers with a digest challenge before connecting the call.
Do I still need WebRTC with WhatsApp SIP calling?
Not in your application code, but your media path must meet Meta's requirements. By default that means ICE, DTLS-SRTP and Opus at the SBC; choosing SDES removes ICE and DTLS and keys SRTP from the SDP instead.
Do WhatsApp calling webhooks still arrive when SIP is enabled?
Not by default. With SIP on, the calling Graph endpoints are unavailable and calling webhooks stop unless you set webhook_delivery to ENABLED, which sends call_created and terminate events without SDP.
How do I get the SIP password for WhatsApp calling?
Call GET /{PHONE_NUMBER_ID}/settings?include_sip_credentials=true and read sip_user_password under the server entry. Meta generates one per number and app; to rotate it, disable SIP with an empty server list, re-enable it and fetch the new password.

See InfiQ pricing

Put WhatsApp Calling over SIP to work

InfiQ is an official Meta Business Partner. Start a 7-day free trial — no card needed — and see this running on your own number.