VoIP Troubleshooting Guide

SIP 488 Not Acceptable Here

6 min read  ·  Updated April 2026

SIP 488 is a media negotiation failure — the server rejected your SDP offer. It's almost always a codec mismatch, but SRTP conflicts, ptime disagreements, and ICE configuration issues can also trigger it. Here's how to tell them apart and fix each one.

In this guide

1. What does SIP 488 mean?

SIP 488 Not Acceptable Here is defined in RFC 3261 Section 21.4.22 and extended by RFC 3264 (the offer/answer model). It means the UAS received and understood the INVITE but could not accept the SDP offer within it.

Unlike a 503 (server problem) or 404 (user not found), a 488 is specifically about the media description in the SDP body. The signaling is fine — the server knows who you're calling and is reachable — but it can't agree on how to send the audio or video.

The response should include a Warning header with a three-digit warning code that hints at the specific problem, though many implementations omit this.

2. What it looks like in a trace

INVITE sip:bob@biloxi.com SIP/2.0 Content-Type: application/sdp v=0 o=alice 2890844526 2890844526 IN IP4 pc33.atlanta.com m=audio 49172 RTP/AVP 0 8 18 a=rtpmap:0 PCMU/8000 a=rtpmap:8 PCMA/8000 a=rtpmap:18 G729/8000 SIP/2.0 488 Not Acceptable Here Warning: 304 atlanta.com "Incompatible media format"

In this example the INVITE offered PCMU, PCMA, and G.729. The 488 with Warning 304 tells you the remote end has no codec in common with your offer. The next step is to look at what codecs the remote end supports — often found in a prior REGISTER or OPTIONS response.

3. Six common causes

Cause 01
No common codec
The most common cause by far. The caller offered a list of codecs (e.g. PCMU, G.729) but the callee supports none of them (e.g. only Opus or G.722). Check your codec lists on both endpoints and ensure at least one is shared. PCMU (G.711u) is the universal fallback — if you can't agree on anything else, add PCMU.
Cause 02
SRTP vs RTP mismatch
One side offered encrypted media (RTP/SAVP or RTP/SAVPF with crypto lines) but the other only supports unencrypted RTP/AVP. Or one side requires DTLS-SRTP (via=fingerprint) but the other uses SDES. This is increasingly common as SRTP becomes mandatory in some deployments.
Cause 03
Ptime mismatch
The offered ptime (packet time, e.g. a=ptime:20) is outside the acceptable range of the remote endpoint. Some systems only accept specific ptime values (typically 20ms) and will reject offers with 30ms, 10ms, or non-standard values.
Cause 04
ICE mismatch or missing ICE attributes
One side requires ICE (includes a=ice-ufrag, a=ice-pwd, and a=candidate lines) but the other doesn't support it or has it disabled. WebRTC endpoints always use ICE; traditional SIP endpoints typically don't.
Cause 05
Missing or incorrect telephone-event payload
Some endpoints require telephone-event (RFC 2833 DTMF) to be present in the SDP offer. If the remote end requires it and your offer omits it — or uses the wrong payload type number — a 488 can result. Check for a=rtpmap:101 telephone-event/8000.
Cause 06
Bandwidth or b= line restrictions
The offered bandwidth (b=AS: or b=TIAS:) is below the minimum required by the remote endpoint, or the b= line specifies a value the endpoint can't honor. Less common but seen in video-capable SIP endpoints and WebRTC gateways.

4. How to read the SDP to find the mismatch

Compare the m= lines

The m= line defines the media type, port, transport protocol, and payload type numbers. Make sure both sides use the same transport protocol — RTP/AVP for unencrypted, RTP/SAVP for SRTP with SDES, UDP/TLS/RTP/SAVPF for DTLS-SRTP.

Match payload type numbers to codec names

Payload types 0–95 are statically assigned (0=PCMU, 8=PCMA, 9=G722, 18=G729). Payload types 96–127 are dynamic and must be mapped via a=rtpmap lines. If both sides list payload type 101 but one maps it to telephone-event and the other to something else, you have a conflict.

Check the crypto or fingerprint lines

For SRTP with SDES, look for a=crypto: lines. For DTLS-SRTP, look for a=fingerprint: and a=setup: lines. If one side has these and the other doesn't, that's your 488.

Look for the Warning header in the 488

Warning codes in a 488 response: 300 = incompatible network address, 301 = incompatible network format, 302 = incompatible transport protocol, 303 = incompatible bandwidth, 304 = media format incompatible.

5. How to fix each cause

No common codec: Add PCMU (payload 0) to your codec list as a guaranteed fallback. Check your PBX or gateway codec configuration and ensure both endpoints share at least one codec. On Asterisk, check allow= lines in sip.conf or pjsip.conf. On FreeSWITCH, check <codec-prefs> in the profile.

SRTP/RTP mismatch: Decide on a transport standard and enforce it consistently. If your network requires SRTP, ensure all endpoints support it. If you have legacy endpoints that only support RTP/AVP, configure your SBC to transcode the SRTP at the boundary. Never mix SRTP and RTP/AVP in the same call leg without transcoding.

Ptime mismatch: Set ptime to 20ms on both endpoints — this is the universal default. If you need non-standard ptime for bandwidth reasons, verify both endpoints explicitly support it before deploying.

ICE mismatch: For WebRTC-to-SIP bridging, use a media gateway or SBC that handles ICE termination on the WebRTC side and presents standard RTP to the SIP side. Don't try to send ICE-based SDP directly to a traditional SIP endpoint.

Missing telephone-event: Add a=rtpmap:101 telephone-event/8000 and a=fmtp:101 0-16 to your SDP offer. Ensure payload type 101 is included in the m=audio line's payload list.

6. SIP 488 vs 415 vs 606 — what's the difference?

In practice, many implementations use 488 when they should use 606, so don't rely on this distinction for diagnosis — focus on the SDP content instead.

7. Analyze your SIP 488 trace automatically

Paste your SIP trace into SIPSymposium and get the exact mismatch identified in seconds — codec comparison, SRTP conflict detection, ptime analysis, and ICE compatibility check all in one report.

Getting a 488 you can't explain?

Paste both sides of the SDP negotiation into SIPSymposium. The analyzer compares offer and answer, identifies the specific incompatibility, and tells you exactly what to change on which endpoint.

Analyze my trace Create free account
Related guides