---
"@context": https://schema.org
"@type": TechArticle
"@id": https://www.twilio.com/docs/voice/tutorials/how-to-add-programmability-to-your-existing-sip-network#article
headline: How to add Programmability to your existing SIP network
description: Learn to receive inbound SIP calls from your infrastructure to Twilio Programmable Voice using Python and SIP Domains for self-service automation and more.
url: https://www.twilio.com/docs/voice/tutorials/how-to-add-programmability-to-your-existing-sip-network
inLanguage: en
dateModified: 2026-08-19T18:30:57.000Z
author:
  "@type": Organization
  name: Twilio Developer Education Team
publisher:
  "@type": Organization
  name: Twilio
---

# How to add Programmability to your existing SIP network

Learn to receive SIP inbound phone calls from your infrastructure to Twilio by configuring a SIP Domain and registered endpoint. To do this, you will create a SIP Domain and associate a credential list to enable logic when a call is received.

You can use this guide for self-service automation, inbound contact centers, and PSTN connectivity.

See [Related reference documentation](#related-reference-documentation) to learn more about the SIP and API elements used in this guide.

[All Programmable Voice SIP guides](/docs/voice/guides/by-feature-product#programmable-voice-sip)

> \[!NOTE]
>
> If you are looking to explore SIP functionality, we recommend following the [SIP Quickstart](/docs/voice/sip/quickstart) to get you up and running in a few clicks!

Are you interested in learning how to make calls using SIP with Twilio programmability? This guide will show you how to use [Programmable Voice](https://www.twilio.com/en-us/voice) to receive SIP inbound phone calls from your SIP infrastructure to Twilio

Twilio Programmable SIP Domain makes it possible to create Enterprise Grade features, contact center feasible functionality in minutes. It's possible to add to programmable logic to your calls to make your business applications more intelligent. Twilio also offers global reach with its rich and reliable PSTN network.

## Steps to make an inbound SIP calls

1. Configure SIP Domain
2. Configure your SIP Endpoint
3. Make an inbound SIP call from Twilio Registered Endpoint

Let's get started!

## Configure SIP Domain

To receive SIP traffic from your network, configure a SIP Domain in Twilio. In this example, we use a Twilio Registered Endpoint to send SIP traffic to Twilio, so the following procedure enables [SIP Registration](/docs/voice/api/sip-registration) and associates a credential list.

> \[!NOTE]
>
> The SIP registration steps in the following SIP Domain procedure are only required if you're using a Twilio Registered Endpoint. If you're not, skip them.

1. Configure a Credential List.

   ## Twilio Console

   1. Open [Twilio Console](https://1console.twilio.com/) and go to [**Voice** > **SIP Domains** > **Credential Lists**](https://1console.twilio.com/go?to=/account/__account__/us1/voice/sip-domains/credential-lists).
   2. Select **Create Credential List**.
   3. Enter a **Credential list friendly name** of `Endpoint`.
   4. In the **Add credentials** section, enter a **Username** (this can be an E.164 number, extension number, or name) of `UserA` and a **Password** of `yourpassword`.
   5. Select **Save**.

   These credentials are used by your SIP Endpoints to authenticate with Twilio.

   ## Legacy Console

   1. Open the [legacy Console](https://www.twilio.com/console/voice/sip/cls) and go to **Programmable Voice** > **Credential Lists**.
   2. Select the **+** icon to create a Credential List.
   3. Add a **Friendly Name** of `Endpoint`, a **Username** (this can be an E.164 number, extension number, or name) of `UserA`, and a **Password** of `yourpassword`, then select **Create**.

   These credentials are used by your SIP Endpoints to authenticate with Twilio.
2. Configure a SIP Domain.

   ## Twilio Console

   1. Open [Twilio Console](https://1console.twilio.com/) and go to [**Voice** > **SIP Domains**](https://1console.twilio.com/go?to=/account/__account__/us1/voice/sip-domains/sip-domains).
   2. Select **Create SIP Domain**.
   3. In the **Properties** section, enter a **SIP domain friendly name** of `T1` and a **SIP URI** of `Trunk1`. SIP URIs must be unique across Twilio — if `Trunk1` is taken, choose another name.
   4. In the **Voice authentication** section, select the `Endpoint` credential list from **Credential lists**.
   5. Select **Create**.
   6. On the SIP Domain details page, find the **SIP registration** section and select **Edit SIP registration**.
   7. Set **Enable SIP registration** to **Enabled**.
   8. Select the `Endpoint` credential list from **Credential lists**.
   9. Select **Save**.

   ## Legacy Console

   1. Open the [legacy Console](https://www.twilio.com/console/voice/sip/endpoints) and go to **Programmable Voice** > **Domains**.
   2. Select the **+** icon to create a SIP Domain.
   3. Add a **Friendly Name** of `T1` and a unique **SIP URI** of `Trunk1`. SIP URI names must be unique, so you might have to find a name that is available.
   4. Scroll down to **Voice Authentication** and associate the `Endpoint` Credential List that you created.
   5. Scroll down to **SIP Registration** and select **Enabled**.
   6. In the **SIP Registration Authentication** section, associate the Credential List that you created, then select **Save**.

## Configure SIP Endpoint

A SIP Endpoint can be a desk phone or a softphone. In this guide we use a softphone and configure it to register with the SIP Registrar.

> \[!NOTE]
>
> If you're not using a Twilio Registered Endpoint, skip this section.

1. Download and install SIP Endpoint. [Zoiper](https://www.zoiper.com/en/voip-softphone/download/current) is used for example
2. Provide login name - `UserA@Trunk1.sip.us1.twilio.com` (do add **us1** region parameter to your sip domain) and password

   * Username and password from your Credential List in [Twilio Console](https://1console.twilio.com/go?to=/account/__account__/us1/voice/sip-domains/credential-lists) or the [legacy Console](https://www.twilio.com/console/voice/sip/cls).
   * Yourdomain from your SIP Domain in [Twilio Console](https://1console.twilio.com/go?to=/account/__account__/us1/voice/sip-domains/sip-domains) or the [legacy Console](https://www.twilio.com/console/voice/sip/endpoints). For example, `Trunk1.sip.us1.twilio.com` (do add **us1** region parameter to your sip domain while configuring zoiper).
3. Click "Next/continue" to confirm the Domain.
4. Optional settings can be skipped
5. Done! You see in Zoiper that it is "Registered" and has "Tick" next to your login name.
6. You can also verify the successfully registered endpoints in the Registered SIP Endpoints section of your SIP Domain page in Twilio Console.

## Make an inbound SIP call from Twilio Registered Endpoint

It is possible to add programmable logic to your call when the call is received by Twilio. For example, we will have the code that greets the caller and make a call to your cellphone.

With Twilio you can make calls only from a verified phone number or from Twilio number. If you plan to use a number other than Twilio phone number, then go to [Verified callerID](https://1console.twilio.com/go?to=/account/__account__/us1/phone-numbers/manage/verified) page and click `+` to ensure your number is valid and verified.

We will now write the TwiML for our application. Because this is a static application, we will use a TwiML Bin. Visit the [TwiML Bin](https://www.twilio.com/console/twiml-bins) page and click the `+` icon to add a new bin.

Set the **Friendly Name** as `Greet and call` and copy and paste the TwiML below:

```xml
<?xml version="1.0" encoding="UTF-8"?>
<Response>
  <Say>Thank you for doing the tutorial. Will now call your cellphone</Say>
  <Dial callerId="+1233451789">+15557650987</Dial>
</Response>

```

> \[!WARNING]
>
> Make sure to add a verified number for **callerId** to dial.

Create the TwiML Bin and copy the URL, see below

![TwiML Bin properties showing SID and URL with copy button.](https://docs-resources.prod.twilio.com/f6bd2a04fc02781e0cab45c29df9d73da3b3f4744991160573c264efb4cddccb.png)

With our TwiML Bin created, now we need to wire it up to our SIP Domain.

1. Open the SIP Domains page in [Twilio Console](https://1console.twilio.com/go?to=/account/__account__/us1/voice/sip-domains/sip-domains) or the [legacy Console](https://www.twilio.com/console/voice/sip/endpoints) and select the domain you created.
2. Scroll down to "Voice Configuration" paste the copied URL from above to "Request URL" and click "Save"

Now go to zoiper SIP client and dial your cellphone. You will hear the greeting in zoiper and it will ring your cellphone. Congratulations, you have made your inbound SIP call.

## Use cases for SIP inbound calls with Twilio Programmable Voice

This guide teaches the basics required for the following use cases:

### Create self-service automation with Twilio Programmable Voice

Together with the `<Gather>` guide, you can use this guide to automate inbound SIP calls that gather user input using the keypad for self-service automation. For example, you can create IVR menus that allow customers to route their own calls or retrieve account information.

To learn more advanced features that you can use with self-service automation, see [Voice self-service automation](/docs/voice/guides/self-service-automation).

### Create an inbound contact center with Twilio Programmable Voice

You can use this guide to connect your existing SIP infrastructure to Twilio to build a programmable inbound contact center. This allows you to use Twilio's logic to queue calls and route them to the appropriate agents.

To learn more advanced features that you can use with inbound contact centers, see [Voice inbound contact center](/docs/voice/guides/inbound-call-center).

### Enable PSTN connectivity with Twilio Programmable Voice

You can use this guide to bridge your private SIP network with Twilio's reliable global PSTN network. This enables your business applications to reach phones anywhere in the world while maintaining your existing infrastructure.

To learn more advanced features that you can use with PSTN connectivity, see [Voice PSTN connectivity](/docs/voice/guides/pstn-connectivity).

## Result

After following this guide, you can successfully receive an inbound SIP call from your infrastructure to Twilio. You can verify this by checking your Twilio Console Call Logs to see the incoming SIP request and the execution of the programmable logic you configured.

## Next steps

Explore the following guides to build on what you've learned in this guide:

* [How to route calls to your SIP network with an outbound call](/docs/voice/tutorials/how-to-route-calls-to-your-sip-network): Learn how to send calls from Twilio back to your SIP infrastructure.
* [SIP](/docs/voice/sip): Explore the full list of features available for the Twilio SIP Interface.

## Related reference documentation

Find reference documentation for the topics on this page.

* [SIP Domain Resource](/docs/voice/sip/api/sip-domain-resource)
* [SIP CredentialList Resource](/docs/voice/sip/api/sip-credentiallist-resource)
* [SIP Credential Resource](/docs/voice/sip/api/sip-credential-resource)
* [SIP Registration](/docs/voice/api/sip-registration)
* [TwiML™ Voice: `<Sip>`](/docs/voice/twiml/sip)
