Twilio error 31603 maps to SIP response code 603 Decline, which is a global rejection response meaning the called party explicitly does not wish to accept the call under any circumstances at this time. Unlike 486 (Busy Here, which is endpoint-specific), a 603 is a global decline that indicates all of the called party's endpoints have been considered and none will accept the call. This is a stronger rejection than 480 or 486 and typically means the rejection was an explicit user action.
What Causes This Error
A SIP phone or softphone user pressing the reject or decline button while the phone is ringing sends a 603 Decline response, which is a deliberate real-time rejection by the user that Twilio maps to error 31603. Some SIP PBX platforms and SIP clients use 603 as the response for calls that fall outside of defined business hours or routing rules, returning a global decline rather than a more specific 480 when no routing path is configured for the call at that time. SIP clients with call screening rules that automatically decline calls from specific numbers or outside specified hours return 603 as the automated rejection code. Twilio's own TwiML Reject verb, when used with a reason attribute of rejected, sends a SIP 603 to the calling party, so if you are seeing 31603 on inbound calls to a Twilio number, your own TwiML may be generating the response.
How to Fix It Step by Step
Determine the source of the 603 by checking the Twilio Debugger under Monitor, then Debugger for the call SID: the SIP message trace will show whether the 603 originated from the called SIP device, from the PBX routing layer, or from Twilio's own TwiML execution. If the 603 is from a user manually declining calls, this is expected SIP behavior and your TwiML Dial action handler should handle DialCallStatus=no-answer with DialSipResponseCode=603 by playing a voicemail prompt or offering a callback. If the 603 is from automated PBX routing rules rejecting calls outside business hours, update the PBX routing configuration to return a 480 (which implies retry is appropriate) rather than 603 (which implies no retry), or implement time-based TwiML routing in your Twilio application that routes calls to voicemail before they reach the PBX outside of hours. If the 603 is unexpectedly coming from Twilio's own TwiML, review your inbound call handling TwiML for any Reject verbs with a reason that maps to 603 and confirm they are intended.
How to Prevent It from Recurring
Implement a TwiML Dial action callback handler that specifically distinguishes between user decline (DialSipResponseCode=603) and other failure modes, and routes the caller to an appropriate experience: a voicemail recording prompt for deliberate agent declines, or a retry queue for automated 603 responses from time-based routing rules. Work with your PBX administrator to standardize the SIP response codes used for different rejection scenarios, establishing that 480 means temporarily unavailable (retry acceptable), 486 means busy (retry may succeed), and 603 means global decline (do not retry, offer alternative), so your TwiML application can handle each case correctly. For applications where 31603 from a user decline indicates a missed customer contact, implement a real-time missed call alert to the agent using Twilio's event callbacks so they can initiate a callback without delay. Monitor your 31603 rate over time in your application analytics and correlate spikes with specific agents or time windows to identify whether declines are a training issue or a routing configuration issue.
When to Call a Specialist
If 31603 errors are appearing unexpectedly on calls that should be answered (for example, a PBX auto-attendant that should always answer is returning 603), there may be a misconfiguration in the SIP server's rejection policy that is causing it to decline calls it should be accepting, and a specialist can audit the PBX SIP configuration and trace the call routing decision path. A specialist is also useful if you need to implement a sophisticated call handling strategy that uses different TwiML responses based on the specific SIP response code received from the called party, creating a call flow that handles 480, 486, and 603 each with a tailored customer experience.
Conclusion
Error 31603 is a SIP 603 Decline that represents an explicit call rejection, requiring TwiML action handler logic that recognizes the decline and routes the caller to a graceful alternative such as voicemail or a callback queue. If this error is blocking your production system, contact our team and we will diagnose and fix it within the hour.
Ready to Transform Your Business Communications?
Get a free consultation with our VoIP experts and discover how we can help you save costs, improve efficiency, and scale your business.
Comments (0)
Join the discussion and share your thoughts (AI-moderated for quality)
Be the first to comment
No comments yet. Share your thoughts below.