The 3CX VoIP Provider Checker
- Overview
- Basic Configuration for SIP Trunks
- Account Details
- PreRequisites
- Configure your Test Trunk
- Confirm Successful Registration
- Working with the VoIP Provider Checker
- Trunk Analysis
- Inbound Call Test
- Outbound Call Test
- Successful Tests with Default Settings
- Trunk Analysis Stage - Common Detected Issues
- Auto-Discovery Not Available
- Incoming Call Stage - Common Detected Issues
- Inbound Call Failed Identification
- Codec Mismatch Detected
- Caller Name Not Visible
- Outgoing Call Stage - Common Detected Issues
- Provider Cannot Support RPID SIP Headers
- Provider Requires P-Asserted-Identity SIP Headers
- Provider Supports Anonymous Calling
- Provider Requires P-Preferred-Identity SIP Headers
- Provider Supports CLIP No Screening
- Common Registration Errors
- Common Call Errors
- See also
Overview
This document will guide you through the steps required to get your SIP Trunk working reliably. You will learn to:
- Create a first-step Generic SIP Trunk configuration
- Configure basic settings and authentication parameters for your SIP trunk
- Run the VoIP Provider Checker tool
- Interpret results from the VoIP Provider checker, and adjust for detected issues
- Extract results from the VoIP Provider checker and create a custom SIP Trunk template
- Validate your work by using your newly-created custom SIP Trunk template
These are essential steps for:
- Onboarding a new SIP Trunk provider
- Address registration and/or audio issues
- Possibly achieving interop certification between 3CX and the SIP trunk provider
Keep in mind that your aim here is to match your custom SIP template to the specific SIP behaviour of your SIP Trunk provider, so you can then use the custom SIP template on other deployments reliably.
Basic Configuration for SIP Trunks
Account Details
Create your new SIP Trunk by providing the basic registration details, which typically consist of:
- Main Trunk Number
- Authentication ID (if your SIP trunk is registration-based)
- Authentication Password (if your SIP trunk is registration-based)
- SIP Registrar address
- Additional Security Elements required by some trunk providers
- Your trunk provider may also require 3-way authentication; in this case, you will also be provided with a 3-way Authentication Password (if your SIP trunk is registration-based)
- Your trunk provider may also require you to specify an Outbound Proxy address that is different from the SIP Registrar address
PreRequisites
Before you can run your tests, make sure that you:
- Successfully configure a phone client on your 3CX system, and that it is registered successfully for the duration of your testing
- Can make an inbound call to your Main Trunk Number from a device that is external to your 3CX system; typically you would call in from a cell phone
- Can make an outbound call from your Main Trunk Number to a device that is external to your 3CX system; typically would call out to a cell phone
Configure your Test Trunk
- Go to your Admin Console, and:
- Navigate to "Admin → Voice & Chat"
- Click the Add Trunk button
- In the Choose your SIP Trunk VoIP Provider dialog:
- Select the Country native to your SIP trunk
- From the Provider drop-down, select:
- Generic VoIP Provider (Registration) - in the case of a registration-based SIP trunk
- Generic SIP Trunk (IP-Based) - in the case of an IP-based SIP trunk
- Click the OK button
- In the Add Trunk page:
- Provide a Name for your SIP Trunk provider account (in this example "TestTrunkProvider01")
- Set the Default route to the extension number for the phone client you will use for your testing
- Ensure that you have ENABLED the checkbox labelled Create an outbound rule for this SIP Trunk
- Set the Main Trunk Number, the Authentication ID, and Authentication password, and the Registrar/Server to the values provided by your SIP Trunk provider
- in this example, the Registrar/Server address has Auto-discovery enabled; see below the Notes about Server Details and Auto-Discovery
- Depending on the requirements of your SIP Trunk provider:
- you may also need enable Optional 3-way authentication and specify the 3-way authentication password
- you may also need to specify the Outbound Proxy
- Click the Save button
- Create an Outbound Rule for calls to route through your SIP Trunk
Notes about the different types of Authentication:
- The default setting for Type of authentication is "Registration/Account based".
- Some trunk providers add an additional layer of security, binding the trunk to your 3CX public IP address; for these trunks, the Type of authentication should be changed to "Do not require - IP based".
- Finally, some trunk providers turn up the security level one more notch, by doing both - they require authentication, and ALSO bind the trunk to your 3CX public IP address; for these trunks, the Type of authentication should be set to "Registration/Account based", because the correct credentials will also need to be negotiated, even though the trunk is bound to an IP address.
Notes about Server Details and Auto-Discovery:
The classic DNS setup for SIP Trunks is via:
- A records (for IPv4), or
- AAAA records (for IPv6)
This is often sufficient for basic configuration, and, in the case of registration-based trunks, you can see that your SIP Trunk does indeed register in the Voice & Chat page.
For these types of SIP trunks, it is typically sufficient to simply populate the Registrar/Server and (where necessary) the Outbound Proxy fields with the values provided by your SIP Trunk provider.
Some modern setups use more resilient (and often times also more secure) DNS setups that can also allow for auto-discovery, by using:
- SRV records, and/or
- NAPTR records
If your SIP Trunk does not connect using the simplistic classic setup, you will most likely need to enable the Auto-discovery option for your SIP Registrar address and/or your Outbound Proxy address.
Keep in mind that, as security becomes more prominent, it is becoming increasingly common for trunk providers to use NAPTR with SRV records pointing to higher-level security servers that use Secure SIP over TLS; in a traffic capture, you might see SRV records like _sips._tcp.3cx.example.com, which tells your 3CX to communicate using SecureSIP (sips) over TCP (which basically implies using TLS).
Confirm Successful Registration
- Go to your Admin Console, and:
- Navigate to "Admin → Voice & Chat"
- Note the green indicator next to your test trunk; if the indicator is red, then you need to go back and check your registration details
Now that your test trunk basic configuration is complete, you are ready to use the VoIP Provider Checker.
Working with the VoIP Provider Checker
- Go to your Admin Console, and:
- Navigate to "Admin → Voice & Chat"
- Select the Check SIP Trunk option for your test trunk
Trunk Analysis
- This will execute the Trunk Analysis part of the test, which includes a report of the DNS resolution for the Registrar/Server address. This example shows a successful DNS resolution for the Registrar:
- The Registrar has a valid NAPTR record pointing to SRV record "_sips._tcp.3cx.example.com"
- The Registrar has valid SRV records pointing to 2 Registrars with different priorities and weights:
- host "sbc01.3cx.example.com" on port 5061 with priority 10
- host "sbc02.3cx.example.com" on port 5061 with priority 20
- The Registrar has valid A records for the 2 hosts listed in the SRV records:
- host "sbc01.3cx.example.com" pointing to IP Address 11.12.13.14
- host "sbc02.3cx.example.com" pointing to IP Address 12.13.14.15
- The Registrar host and address was identified and selected based on the higher priority:
- IP mode IPv4
- host "sbc01.3cx.example.com" on IP address 11.12.13.14
- Transport type: TLS
- The registration is shown to be successful
Inbound Call Test
The next task is to run the Inbound Call Test. For this, you will need to initiate an inbound call to the Main Trunk Number from outside the 3CX system, answer the call from a web client extension, and run the call for at least 40 seconds (to ensure that the test overcomes the SIP timeout of 32 seconds).
If your Inbound Call test shows errors or warnings, see the Incoming Calls Stage section below.
Successful Inbound Call Test:
When your Inbound Call test is completed without errors, you will see a summary of the checks and results performed during the test. A clean report means that you are set and can proceed to the Outbound Call test.
Outbound Call Test
The next task is to run the Outbound Call Test. For this, the VoIP Checker will need to initiate an outbound call from a web client extension.
If your Outbound Call test shows errors or warnings, see the Outgoing Calls Stage section below.
- Click the Start button, enter the destination number to call for the test, and click the Phone icon to make the outbound call. Keep the call active for more than 32 seconds after the destination has answered the call.
Successful Outbound Call Test
When your Outbound Call test is completed without errors, you will see a summary of the checks and results performed during the test. A clean report means that you are ready for the next step.
Successful Tests with Default Settings
If you have used one of the Generic templates WITHOUT ANY MODIFICATIONS, and the VoIP Provider checks all pass successfully in all 3 stages (Trunk Analysis, Inbound Call test, Outbound Call test), then you don’t need to do anything else.
Trunk Analysis Stage - Common Detected Issues
Auto-Discovery Not Available
Warning Message
Resolution
- For TLS Providers:
- In the General tab:
- Set the Registrar/Server Port to 5061 (default for SIP-over-TLS) unless the provider instructs you to use a specific port number
- Disable the Auto-Discovery checkbox
- In the Options tab, set the Transport Protocol to TLS
- For UDP Providers:
- Set the Registrar/Server Port to 5060 (default for SIP-over-UDP) unless the provider instructs you to use a specific port number
- Disable the Auto-Discovery checkbox
Incoming Call Stage - Common Detected Issues
Inbound Call Failed Identification
When the VoIP Provider inbound call cannot be matched to a Trunk, you will get a warning message saying that the inbound call failed. Further information can be seen in the Dashboard Event Log.
Warning Message:
Additional Information in the Event Log:
Resolution:
The generic template by default configures source identification based on Contact Host Part, meaning inbound calls are matched on the Voip Provider registrar. Modern providers don't need that, and a more robust mechanism with rinstance is used to identify the call source.
To resolve this issue:
- Export your current trunk configuration:
- In the Admin Console, navigate to "Admin → Voice & Chat"
- Click on the Options button for your VoIP Provider, and select the Export option; this will download the current configuration of your VoIP Provider as a file named provider.pv.xml
- Open the downloaded file with your favourite text editor
- In the text file, navigate to the lines immediately after the </codecs> line
- Here you can see that, for incoming calls, the generic VoIP Provider template you started with includes a Source parameter; comment this out to set your trunk to use the 3CX default identification algorithm
- Save your one-line change to the file
- Delete your current trunk configuration:
- In the Admin Console, navigate to "Admin → Voice & Chat"
- Delete the current configuration for your VoIP Provider
- Import your new trunk configuration:
- In the Admin Console, navigate to the "Admin → Advanced → Templates → Provider Templates" tab
- Click the Import Provider button
- In the Import Provider dialog, select your adjusted trunk configuration file and click the Import button
- This will take you to the Add Trunk page; fill in the details in the same way you did when creating the trunk the first time
- When done, click the Save button; in the background, the new settings will be configured for your new trunk configuration
- Repeat the Inbound Call test to confirm the issue is resolved
Codec Mismatch Detected
When the VoIP Provider does not match the default codec list, you will get an appropriate warning message. Adjust the codec list to get a full match to avoid intermittent audio issues with mismatched codecs.
Warning Message:
Additional Test Information:
Resolution:
- The Local Codec list shows how your trunk's codecs are configured on 3CX
- The Remote Codec list shows how your provider's codec's are configured
- Your target is to make the list and the order match; you can achieve this by adjusting your trunk's codec configuration, for this example:
- Navigate to the "Admin → Voice & Chat → Edit Trunk → Options" tab, and set the Codec priority as follows:
- …to ensure that the codecs and the order match the detected Remote Codec sequence
- Click the Save button
- Repeat the Inbound Call test to confirm the issue is resolved
Caller Name Not Visible
Missing Caller Name:
When running an incoming call test, your VoIP Provider can send not only the caller's number, but also the caller's name.
In this example, we can see that the caller's name is not visible in the web client. We can investigate the Detailed SIP Message to check the incoming SIP message from the VoIP provider.
Additional Test Information:
You can expand the Detailed SIP Message in the Inbound Call Test panel to check how the provider is sending the Caller Name.
In this example, we can see that the caller's name is sent in the Display Name part of the From field.
Resolution:
To resolve this issue:
- Export your current trunk configuration:
- In the Admin Console, navigate to "Admin → Voice & Chat"
- Click on the Options button for your VoIP Provider, and select the Export option; this will download the current configuration of your VoIP Provider as a file named provider.pv.xml
- Open the downloaded file with your favourite text editor
- In the text file, navigate to the lines immediately after the </codecs> line
- Here you can see that, for incoming calls, the generic VoIP Provider template you started with expects to obtain the $CallerName from the UserPart of the From field
- Change this to reflect your findings during the Inbound Call test; in this case, you will need to replace FromUserPart to FromDisplayName
- Save your one-line change to the file
- Delete your current trunk configuration:
- In the Admin Console, navigate to "Admin → Voice & Chat"
- Delete the current configuration for your VoIP Provider
- Import your new trunk configuration:
- In the Admin Console, navigate to the "Admin → Advanced → Templates → Provider Templates" tab
- Click the Import Provider button
- In the Import Provider dialog, select your adjusted trunk configuration file and click the Import button
- This will take you to the Add Trunk page; fill in the details in the same way you did when creating the trunk the first time
- When done, click the Save button; in the background, the new settings will be configured for your new trunk configuration
- Run your Inbound Call test again to confirm that your new configuration has taken effect
Outgoing Call Stage - Common Detected Issues
Provider Cannot Support RPID SIP Headers
When the VoIP Provider cannot support RPID SIP Headers, outbound calls can be rejected by the VoIP Provider. You should confirm this with your VoIP Provider. If the VoIP Provider cannot adjust its requirements, the alternative is to customize the provider template.
Warning Message:
Additional Test Information:
Clicking on the Call Log button will show the messages exchanged with the VoIP Provider. Scroll to the bottom of the log to find the first INVITE message sent to the VoIP Provider for the call.
In this example, we have confirmed with the VoIP Provider that they cannot support RPID Headers, and we can see that the Outbound Call test is sending the header.
Resolution:
To resolve this issue:
- Export your current trunk configuration:
- In the Admin Console, navigate to "Admin → Voice & Chat"
- Click on the Options button for your VoIP Provider, and select the Export option; this will download the current configuration of your VoIP Provider as a file named provider.pv.xml
- Open the downloaded file with your favourite text editor
- In the text file, navigate to the lines immediately after the </codecs> line
- Here you can see that, for outgoing calls, the generic VoIP Provider template you started with will, by default, send the RemotePartyIDCallingParty header
- Change this to reflect your findings during the Outbound Call test; in this case you will need to comment out the RPID header specifications
- Save your changes to the file
- Delete your current trunk configuration:
- In the Admin Console, navigate to "Admin → Voice & Chat"
- Delete the current configuration for your VoIP Provider
- import your new trunk configuration:
- In the Admin Console, navigate to the "Admin → Advanced → Templates → Provider Templates" tab
- Click the Import Provider button
- In the Import Provider dialog, select your adjusted trunk configuration file
- Click the Import button
- This will take you to the Add Trunk page; fill in the details in the same way you did when creating the trunk the first time
- When done, click the Save button; in the background, the new settings will be configured for your new trunk configuration
- Run your Outbound Call test again to confirm that your new configuration has taken effect:
- The Call Log now shows that the RPID Header is no longer being sent
- You are now able to make outbound calls
Provider Requires P-Asserted-Identity SIP Headers
When the VoIP Provider requires P-Asserted-Identity headers, outbound calls can be rejected by the VoIP Provider. You should confirm this with your VoIP Provider. If the VoIP Provider cannot adjust its requirements, the alternative is to customize the provider template.
Warning Message:
Additional Test Information:
Clicking on the Call Log button will show the messages exchanged with the VoIP Provider. Scroll to the bottom of the log to find the first INVITE message sent to the VoIP Provider for the call.
In this example, we have confirmed with the VoIP Provider that the P-Asserted-Identity header is required, and we can see that the Generic template does not send the header by default.
Resolution:
To resolve this issue:
- Export your current trunk configuration:
- In the Admin Console, navigate to "Admin → Voice & Chat"
- Click on the Options button for your VoIP Provider, and select the Export option; this will download the current configuration of your VoIP Provider as a file named provider.pv.xml
- Open the downloaded file with your favourite text editor
- In the text file, navigate to the lines immediately after the </codecs> line
- Here you can see that, for outgoing calls, the generic VoIP Provider template you started with will, by default, send the RemotePartyIDCallingParty header; we will need to replace this with the P-Asserted-Identity header
- Change this to reflect your findings during the Outbound Call test; in this case you will need to comment out the RPID header specifications, and add the P-Asserted-Identity specifications
- Save your changes to the file
- Delete your current trunk configuration:
- In the Admin Console, navigate to "Admin → Voice & Chat"
- Delete the current configuration for your VoIP Provider
- Import your new trunk configuration:
- In the Admin Console, navigate to the "Admin → Advanced → Templates → Provider Templates" tab
- Click the Import Provider button
- In the Import Provider dialog, select your adjusted trunk configuration file
- Click the Import button
- This will take you to the Add Trunk page; fill in the details in the same way you did when creating the trunk the first time
- When done, click the Save button; in the background, the new settings will be configured for your new trunk configuration
- Run your Outbound Call test again to confirm that your new configuration has taken effect:
- The Call Log now shows that the P-Asserted-Identity Header is being sent
- You are now able to make outbound calls
Provider Supports Anonymous Calling
Overview:
Some VoIP Providers are able to support anonymous calling (making outbound calls using the *5 prefix).
You can customize the provider template to test if your VoIP Provider supports anonymous calling.
Pre-Requisite Actions:
Support for anonymous calling is typically implemented through P-Asserted-Identity headers. Before attempting these changes, you should have already completed the changes described in the section above titled Provider Requires P-Asserted-Identity SIP Headers.
Possibility 1 - Warning Message:
Your test outbound call should be to a number, as in this example: *512223334444.
If the VoIP Provider cannot support anonymous calling, you can get a warning message similar to the above; calls may be rejected with a number of different response codes, with the 403 response code being the most common.
Possibility 2 - Destination sees your Main Trunk Number:
If your VoIP Provider cannot support anonymous calling, but can still deliver the call, the destination will typically see your main trunk number, rather than anonymous.
Resolution:
To resolve this issue:
- Export your current trunk configuration:
- In the Admin Console, navigate to "Admin → Voice & Chat"
- Click on the Options button for your VoIP Provider, and select the Export option; this will download the current configuration of your VoIP Provider as a file named provider.pv.xml
- Open the downloaded file with your favourite text editor
- In the text file, navigate to the lines immediately after the </codecs> line
- You will need to adjust the P-AssertedIdentityUserPart header
- … by changing it to $LineNumber
- Save your changes to the file
- Delete your current trunk configuration:
- In the Admin Console, navigate to "Admin → Voice & Chat"
- Delete the current configuration for your VoIP Provider
- Import your new trunk configuration:
- In the Admin Console, navigate to the "Admin → Advanced → Templates → Provider Templates" tab
- Click the Import Provider button
- In the Import Provider dialog, select your adjusted trunk configuration file
- Click the Import button
- This will take you to the Add Trunk page; fill in the details in the same way you did when creating the trunk the first time
- When done, click the Save button; in the background, the new settings will be configured for your new trunk configuration
- Run your Outbound Call test again to confirm that your new configuration has taken effect:
- The Call Log now shows that:
- The P-Asserted-Identity Header is now being sent with the Main Trunk number
- The Contact and From Headers are now replacing the Outbound Caller ID with anonymous
- If you still cannot get outbound calls to work, or if outbound calls still do not present anonymous, then your VoIP Provider probably cannot support this
Provider Requires P-Preferred-Identity SIP Headers
When the VoIP Provider requires P-Preferred-Identity headers, outbound calls can be rejected by the VoIP Provider. You should confirm this with your VoIP Provider. If the VoIP Provider cannot adjust its requirements, the alternative is to customize the provider template.
Warning Message:
Additional Test Information:
Clicking on the Call Log button will show the messages exchanged with the VoIP Provider. Scroll to the bottom of the log to find the first INVITE message sent to the VoIP Provider for the call.
In this example, we have confirmed with the VoIP Provider that the P-Preferred-Identity header is required, and we can see that the Generic template does not send the header by default.
Resolution:
To resolve this issue:
- Export your current trunk configuration:
- In the Admin Console, navigate to "Admin → Voice & Chat"
- Click on the Options button for your VoIP Provider, and select the Export option; this will download the current configuration of your VoIP Provider as a file named provider.pv.xml
- Open the downloaded file with your favourite text editor
- In the text file, navigate to the lines immediately after the </codecs> line
- Here you can see that, for outgoing calls, the generic VoIP Provider template you started with will, by default, send the RemotePartyIDCallingParty header; we will need to replace this with the P-Preferred-Identity header
- Change this to reflect your findings during the Outbound Call test; in this case you will need to comment out the RPID header specifications, and add the P-Preferred-Identity specifications
- Save your changes to the file
- Delete your current trunk configuration:
- In the Admin Console, navigate to "Admin → Voice & Chat"
- Delete the current configuration for your VoIP Provider
- Import your new trunk configuration:
- In the Admin Console, navigate to the "Admin → Advanced → Templates → Provider Templates" tab
- Click the Import Provider button
- In the Import Provider dialog, select your adjusted trunk configuration file
- Click the Import button
- This will take you to the Add Trunk page; fill in the details in the same way you did when creating the trunk the first time
- When done, click the Save button; in the background, the new settings will be configured for your new trunk configuration
- Run your Outbound Call test again to confirm that your new configuration has taken effect:
- The Call Log now shows that the P-Preferred-Identity Header is now being sent
- You are now able to make outbound calls
Provider Supports CLIP No Screening
Overview:
Some VoIP Providers are able to support CLIP No Screening. This feature allows your PBX to transmit an Outbound Caller ID without the provider verifying it against the trunk numbers assigned to you.
The main use case for this is when forwarding an incoming call out to an external number, such as to an extension user's mobile number.
You can customize the provider template to test if your VoIP Provider supports CLIP No Screening.
Pre-Requisite for testing:
The extension number you plan to use for your tests must have an Outbound Caller ID set to some number that you do not own; for example, 17776665555. When you make an outbound call with active CLIP No Screening, the callee will see this number.
Possibility 1 - Warning Message:
If the VoIP Provider does not support CLIP No Screening, you can get a warning message similar to the above. Calls may be rejected with a number of different response codes, with the 403 response code being the most common.
Possibility 2 - Destination sees your Main Trunk Number:
If your VoIP Provider cannot support CLIP No Screening, but can still deliver the call, the destination will typically see your main trunk number.
Resolution:
To resolve this issue:
- Export your current trunk configuration:
- In the Admin Console, navigate to "Admin → Voice & Chat"
- Click on the Options button for your VoIP Provider, and select the Export option; this will download the current configuration of your VoIP Provider as a file named provider.pv.xml
- Open the downloaded file with your favourite text editor
- In the text file, navigate to the lines immediately after the </codecs> line
- For each of the lines with variable $OutboundCallerId…
- … you need to change to $OriginatorCallerId
- Save your changes to the file
- Delete your current trunk configuration:
- In the Admin Console, navigate to "Admin → Voice & Chat"
- Delete the current configuration for your VoIP Provider
- Import your new trunk configuration:
- In the Admin Console, navigate to the "Admin → Advanced → Templates → Provider Templates" tab
- Click the Import Provider button
- In the Import Provider dialog, select your adjusted trunk configuration file
- Click the Import button
- This will take you to the Add Trunk page; fill in the details in the same way you did when creating the trunk the first time
- When done, click the Save button; in the background, the new settings will be configured for your new trunk configuration
- Run your Outbound Call test again to confirm that your new configuration has taken effect:
- The Call Log now shows that:
- All the headers are now showing the custom Originator Caller ID
- If you still cannot get outbound calls to work, or if outbound calls still do not present the custom Originator Caller ID, then your VoIP Provider probably cannot support this
Common Registration Errors
Error Message | Meaning | Resolution |
Alternate Proxy 'X' is not resolved | Alternate proxy hostname not found in DNS | Correct alternative proxy hostname or DNS settings. In the Trunk config page ensure you are using the hostname as given to you by the provider. |
Proxy 'X' is not resolved | Proxy hostname not found in DNS | Correct proxy hostname or DNS settings. In the Trunk config page ensure you are using the hostname as given to you by the provider. |
Registrar 'X' is not resolved | Registrar hostname not found in DNS | Correct registrar hostname or DNS settings. In the Trunk config page ensure you are using the hostname as given to you by the provider. |
Certificate name mismatch | TLS certificate CommonName or SAN does not match host name | Correct registrar or provider certificate. In the Trunk config page ensure you are using the hostname as given to you by the provider or ask them to fix on their side. |
Secure SIP certificate is expired or not yet valid | Provider certificate with invalid dates | The provider must replace the certificate and contact them. |
Secure SIP certificate is missing or invalid | Secure SIP not configured or expired | Configure a valid certificate in Admin -> Advanced -> Secure SIP |
Secure SIP private key is missing or invalid | Private key missing or mismatched | Replace private key or use the matching public key in Admin -> Advanced -> Secure SIP |
SIP Registration failed [401 Unauthorized] | Invalid credentials | Verify Authentication ID & password in the Trunk config page. |
TLS handshake failed – self-signed certificate | Untrusted provider certificate | The Provider must use a trusted CA. Please contact them. |
TLS handshake failed – no peer supplied certificate | Weak or incompatible TLS | The Provider must adjust TLS to current standards. |
Trunk is disabled | Inbound and outbound are disabled | Enable all trunk directions needed in the Trunk Options tab. |
Common Call Errors
In/Out-bound | Error Message | Meaning | Resolution |
Both | Codec Mismatch Detected | Codec lists differ | Align codec order, on Trunk provider’s side or in the Options tab of the trunk config. |
Inbound | Number Format Mismatch Detected | To / Request-URI mismatch | The Provider must correct number formatting, contact them. |
Both | RTP/SRTP Mismatch Detected | Encryption mismatch | Enable/disable SRTP consistently - either in the trunk config Options tab, or by asking the trunk Provider. |
Inbound | Transport Mismatch Detected | Call arrived using an unexpected transport | Align UDP/TCP/TLS settings on both sides - either in the trunk config Options tab, or by asking the trunk Provider. |
Inbound | Inbound Call failed | No inbound call received | Check provider routing & firewall (does the Firewall check pass?) / Make an inbound call within the time limit. |
Outbound | Call lasted less than 32 seconds | RTP or firewall issue / Call was ended too soon | Verify RTP and firewall settings (does the Firewall check pass?) / Repeat test with a longer call, over 32 sec. |
Outbound | Outbound Call failed: Busy | Destination did not answer in time | Answer the call at the destination. |
Outbound | Outbound Call failed: 404 Not Found | Invalid destination | Use a valid test number. Confirm valid destinations with the Trunk providers. |
Outbound | Outbound Call failed: Routing failure | No outbound rule matched | Fix outbound rules, see this. |
Outbound | Provider allows inbound calls only | Outbound disabled | Enable outbound calls in the trunk config Options tab. |
Inbound | Provider allows outbound calls only | Inbound disabled | Enable inbound calls in the trunk config Options tab. |
See also
- Requirements for VoIP Providers
- SIP Trunk / VoIP Providers Configuration Guides
- Supported SIP Trunk Providers
Last updated
This document was last updated 02 June 2026