Calling Troubleshooting

WhatsApp Calling errors and fixes: full error code table (138000-138023), SIP-specific status codes, media-flow timeouts, audio clipping causes and mitigations (SDES, pre-accept), quick triage guide.

What This Page Covers

Error codes for the WhatsApp Business Calling API plus media-path issues (audio clipping, RTP timeouts) that don't surface as clean error codes. SIP-specific errors are also collected here for one-stop reference.

Standard Error Shape

Most errors return:

{
  "error": {
    "message": "<Error Message>",
    "type": "<Exception Type>",
    "code": <Exception Code>,
    "fbtrace_id": "<Trace ID>"
  }
}

Some errors include error_data.details with extra context. Always log code, message, and fbtrace_id — Meta support needs the trace ID for incident investigation. For terminate webhooks on failed calls, the errors[] array on the calls object carries the same shape.

Call Logs in WhatsApp Manager

The Call Logs tab in WhatsApp Manager (Account tools → Phone numbers → select number → Call Logs) shows a per-call event timeline. Useful for self-service troubleshooting and reproducing the exact event sequence.

FieldDescription
TimestampWhen the call occurred
Call DirectionOutbound (BIC) or Inbound (UIC)
SignalingSIP or GRAPH_API
Call IDWhatsApp call identifier (wacid.) — provide this when contacting Meta support
Request IDIdentifier for the request that initiated the call
Call DetailsEvent log for the call lifecycle

Calling Error Codes

CodeHTTPMeaningFix
100400Invalid parameter (or SDP validation error — details in error_data)Fix payload; check SDP RFC 8866 compliance
613429Permission state API rate limit hitReduce frequency of /call_permissions polls
131009400Interactive type voice_call not supported (only button, list)Sender must be in supported country
131030400Recipient phone not in allowed list (PTN test only)Add recipient to allowed list
131044400No valid payment methodAttach payment method to WABA
131055400Method not allowed — Graph API call attempted on SIP-enabled numberUse SIP signaling instead
138000401Calling not enabledConfigure call settings
138001400Receiver uncallable (not on WhatsApp / hasn't accepted ToS / unsupported client)Confirm with recipient; check supported clients
138002429Concurrent calls limit (1,000) reachedThrottle inbound capacity
138003400Duplicate call — one is already ongoing with this userWait for current call to end
138004500Connection error during call setupInvestigate connection params; retry
138005429Call rate limit exceededReduce sending rate
138006401No approved call permission foundGet permission first (Call Permissions)
138007500Connect timeout — business didn't apply offer/answer SDP in timeSpeed up connect-API response
138009400Permission request limit hitWait for limit reset (or for a connected call to reset it)
138012400BIC daily limit hit (100 connected calls / 24h per pair)error_data has timestamp for next allowed call
138013400BIC not available for this business phone number countrySee availability
138014400Calling temporarily disabled (low quality)Improve outreach quality, wait for restriction to expire
138015400Calling cannot be enabledCheck messaging limit ≥ 2,000
138017400Permission request can't be sent — permanent permission already existsJust place the call directly
138018400Calling can't be enabled — technical prerequisites not metConfigure SIP or ensure an app is subscribed to both WABA and calls field
138019400Call setup failed (in terminate webhook)Retry; check media path
138020400Relay connection failed (in terminate webhook)Retry; check network
138021400Media receive timeout — no media for ~20–30s (in terminate webhook)Verify your media server is sending RTP
138022400Media transmit timeout (in terminate webhook)Investigate outbound media path
138023400Call accepted but terminated with no media signalsInvestigate WebRTC setup — Cloud API couldn't determine if call was connected

SIP-Specific Errors

Status codes returned over SIP signaling, in addition to the 131055 Graph-API-attempted error above:

SIP StatusMeaningFix
400 Asset not foundFrom header phone number isn't a registered business numberCheck the number; resend with correct From
403 SIP server X from INVITE does not match...From header domain ≠ configured SIP server hostnameUpdate SIP config or From header (sub-domains are valid)
403 No Approved Call Permission FoundNo permission from recipient (or recipient not on WhatsApp)Get permission (Call Permissions)
403 The app [APP_ID] configured for SIP server X is not authorized for phone number id [ID]App used to configure SIP lacks whatsapp_business_messaging on the numberReconfigure with the right app
403 Business Initiated Connected Call Per Day Limit Hit5 connected BICs in 24h reachedAdjust call rate; check pricing tier
403 Duplicate call / Invalid digest auth response / Business eligibility payment issue / SDP Validation ErrorVarious — read the error messageCheck earlier sections
404 Not found / SIP INVITEs using IP in request URI are not allowedDon't use IP literal in request URIUse the configured SIP request URI
407 Proxy Authentication RequiredStandard digest auth challenge from MetaResend with Authorization header
408 RTP TimeoutNo media received for too longSee Media-Related Issues
480 Temporarily UnavailableUser unreachable / didn't answerTry later; unanswered calls degrade permission
486 Busy HereUser declined the callTry later; rejections degrade permission
487 Request TerminatedYou sent SIP CANCEL before Meta responded to your INVITEExpected — your CANCEL worked
503 Service UnavailableGeneric internal errorRetry later; contact Meta support if persistent
SymptomCauseFix
Call disconnects ~20 seconds after ringing startsNo media flowing from business to user for 20s after call setupCheck media server is initiating media session and sending RTP. Check firewall for packet drops. Capture pcap for support.
Call disconnects ~30 seconds after connectionAfter call connect, no media from business to user for 30sSend at least RTCP packets even during silence (e.g. waiting for IVR input). Check why media server stops sending.

If you're hitting these, capture network traffic with tcpdump or pcap and attach it when contacting Meta support.

Audio Clipping

A common symptom when bridging WhatsApp's WebRTC media leg to a SIP leg: the WhatsApp consumer misses ~1 second of business audio at the start of the call. If your IVR plays "1-2-3", the user hears "2-3" or just "3".

Root cause: the SIP user-agent starts transmitting media before the WebRTC leg between you and Meta is fully ready. Meta drops the early packets.

Mitigations (any of these works; pick what fits):

ApproachTrade-off
Switch to SDES for SRTP key exchange (instead of DTLS)Eliminates the ~3-second DTLS handshake delay. See SIP Configuration → SDES vs DTLS
Pre-accept before sending SIP INVITE"Optimistic accept" — establishes WebRTC connection ahead of SIP. RFC-recommended approach
Delayed audio playbackConfigure SIP UA to wait for ACK from your WebRTC endpoint before playing audio
Connection state-based delayWait until WebRTC connection state is connected before playing audio
Buffer SIP media packetsHold packets until WebRTC is up
Insert silence at start of IVR audioSimple; gives WebRTC time to establish during silence

For full sequence-diagram detail, see Meta's "Audio clipping issue and solution" section. Most teams use SDES + pre-accept and call it done.

"No Fingerprint Found in SDP"

You're using DTLS for SRTP key exchange but your SDP is missing the a=fingerprint line.

Fix: add the fingerprint line to your SDP. Or, if you can't, switch to SDES which doesn't need it. See SIP Configuration → Configure SRTP Key Exchange.

Common Symptoms — Quick Triage

SymptomFirst thing to check
BIC fails immediately with no errorsPermission status (/call_permissions) — likely no approved permission
BIC works in test, fails in productionBIC country availability (US/CA/EG/VN/NG excluded); messaging limit ≥ 2,000
UIC webhook never arrivescalls field subscription on the right app; SIP not accidentally enabled (check /settings)
SIP INVITE never received from MetaTLS cert validation (openssl s_client test); app permissions; firewall reachability
Call setup hangs ~3 secondsDTLS handshake delay — switch to SDES
User hears no audio for first secondAudio clipping — see above
Call drops after 20–30sMedia flow stopped or never started — check media server logs
403 SIP errors generallyAlmost always digest auth (resend with Authorization) or From domain mismatch
131055 on Graph APISIP is enabled — use SIP signaling, or disable SIP if you want Graph API back

Related

  • Cloud API CallingVoice calling on WhatsApp Business Cloud API: VoIP via WebRTC or SIP, business-initiated and user-initiated calls, prerequisites, availability, and integration patterns.
  • Business-Initiated CallsPlace outbound voice calls to WhatsApp users. POST /calls with action: connect, SDP offer/answer flow, call status webhooks (RINGING/ACCEPTED/REJECTED), terminate webhook with duration, biz_opaque_callback_data tracking.
  • User-Initiated CallsReceive inbound voice calls from WhatsApp users. Call Connect webhook with SDP offer, pre-accept for faster setup, accept/reject/terminate actions, DTMF dial pad, companion-device support.
  • SIP ConfigurationUse SIP signaling instead of Graph API + webhooks for WhatsApp calling. TLS certificate requirements, digest authentication, business and user initiated SIP flows, SDES vs DTLS for SRTP, custom SIP headers.
Browse more docsStart Free Trial