---
"@context": https://schema.org
"@type": TechArticle
"@id": https://www.twilio.com/docs/voice/twiml/dial/application/usage#article
headline: <Dial><Application> usage
description: Connect Twilio calls between accounts with <Dial><Application>. Learn to use Twilio Programmable Voice for IVR, self-service automation, and payment use cases.
url: https://www.twilio.com/docs/voice/twiml/dial/application/usage
inLanguage: en
dateModified: 2026-06-22T10:15:32.000Z
author:
  "@type": Organization
  name: Twilio Developer Education Team
publisher:
  "@type": Organization
  name: Twilio
---

# \<Dial>\<Application> usage

Learn to connect a call to another Twilio account or TwiML App while preserving call context by using the [`<Dial>`](/docs/voice/twiml/dial) verb's [`<Application>`](/docs/voice/twiml/dial/application) noun. You can use this guide to build an interactive voice response (IVR) and create self-service automation.

See [Related reference documentation](#related-reference-documentation) to learn more about the `<Application>` TwiML and API resources used in this guide.

## Usage

In order to use `<Dial><Application>`, you must have the following:

1. An existing Programmable Voice application with a call path that leads to `<Dial><Application>` TwiML instructions.
2. A TwiML App with a Voice URL that returns TwiML instructions.

   * If you want to transfer calls to another Twilio account, this TwiML App must exist within the "receiving" Twilio account, and must be configured to allow `<Dial><Application>` requests from a different Twilio account.
   * Transferring calls within the same Twilio account requires no additional configuration.

## Accept calls from a different Twilio account

The receiving TwiML App must be configured to allow calls from a different Twilio account through `<Dial><Application>`. You can configure the TwiML App in the Twilio Console or through the REST API using the [Application Resource](/docs/usage/api/applications).

> \[!WARNING]
>
> It is your responsibility to secure and authenticate inbound calls to a TwiML App if you accept calls from outside your Twilio account.
>
> Enabling inbound calls via `<Dial><Application>` opens up the TwiML App to calls from **any Twilio customer**. You should only give the receiving TwiML App's SID to the party/parties from which you intend to receive calls. You should implement some sort of authentication to verify calls are coming to your TwiML App from a trusted party.

### Configure your TwiML App in Console

To allow inbound `<Dial><Application>` calls from a different Twilio account, follow these steps:

## Console

1. In the [Twilio Console](https://1console.twilio.com/), go to **Develop** > **TwiML apps**.
2. Select the TwiML app you want to modify.
3. On the **Voice** tab, under **Settings**, select **Allow** for **Allow Application Dialing from other Twilio Accounts**.
4. Click **Save**.

## Legacy Console

1. Go to **Voice** > **Manage** > [**TwiML apps**](https://console.twilio.com/?frameUrl=/console/voice/twiml/apps).
2. Select the TwiML app you want to modify.
3. Select **Allow Application Dialing from other Twilio Accounts**.
4. Click **Save**.

### Configure your TwiML App with the REST API

Within Twilio's REST API, a TwiML App is called an [Application Resource](/docs/usage/api/applications). If you wish to configure TwiML Apps to allow inbound `<Dial><Application>` calls from a different Twilio account, set the `PublicApplicationConnectEnabled` property to `true` on the TwiML App's [Application Resource](/docs/usage/api/applications).

You can either [update an existing Application Resource](/docs/usage/api/applications#update-an-application-resource) with `PublicApplicationConnectEnabled` set to `true` or you can set this property to `true` when [creating a new Application Resource](/docs/usage/api/applications#update-an-application-resource).

## Example scenario

Your company has two, separate Twilio accounts:

* **Account A** - handles inbound calls with an IVR
* **Account B** - handles all payments using `<Pay>`

**Account A** has a path within its IVR to direct callers to the following TwiML instructions:

```xml
<Response>
  <Dial action="https://example.com/account-a-action-url">
    <Application>
      <ApplicationSid>AP1234567890abcdef1234567890abcd</ApplicationSid>
    </Application>
  </Dial>
</Response>
```

**Account B** has a TwiML App with a SID of `AP1234567890abcdef1234567890abcd`. The TwiML App is configured to allow incoming calls from external Twilio accounts. The TwiML App's Voice URL returns the following TwiML:

```xml
<Response>
  <Pay paymentAmount="12.23" />
</Response>
```

Your company's customer, **Michael**, has dialed a Twilio Phone Number owned by **Account A**. This creates the "parent call".

**Michael** needs to be connected to **Account B** so that he can enter his payment information. To achieve this, **Account A**'s IVR leads **Michael**'s call to the `<Dial><Application>` TwiML instructions above.

When Twilio executes these `<Dial><Application>` instructions, the following occurs:

1. Within **Account A**, Twilio creates a new call leg. This is called the "child call" of the parent call.

   * Within **Account A**'s Call Logs, this child call has the following properties:

     * Direction: Outgoing Dial
     * From: \[**Michael**'s phone number]
     * To: **Account B**'s TwiML App SID.
2. In **Account B**, Twilio creates a new, incoming call.

   * Within **Account B**'s Call Logs, this call has the following properties:

     * Direction: Incoming
     * From: \[**Michael**'s phone number]
     * To: **Account B**'s TwiML App SID.
3. Within **Account B**, Twilio sends a request to **Account B**'s TwiML App's Voice URL.
4. The endpoint at **Account B**'s TwiML App's Voice URL responds with TwiML instructions (the \<Pay> instructions shown above).
5. Twilio executes the TwiML instructions, and **Michael** hears prompts to enter his payment information.

### Return custom parameters to the `<Dial>` verb's `action` URL

At the end of a `<Dial>` instruction (i.e. the incoming call in **Account B** ends and/or the child call in **Account A** ends), Twilio sends a request to the `<Dial>` verb's `action` URL.

If the caller remains on the line, the parent call in **Account A** can continue as long as the `action` URL returns TwiML instructions to Twilio.

TwiML Apps that receive calls via `<Dial><Application>` can send custom parameters in the request to the `action` URL by using `<Hangup><Parameter>` or `<Reject><Parameter>`.

To explain this using the scenario from above, assume that instead of `<Pay>` instructions, **Account B**'s TwiML App's Voice URL returned the following TwiML instructions:

```xml
<Response>
  <Say>We're sorry. All of our agents are busy right now.</Say>
  <Say>We will call you back as soon as possible.</Say>
  <Say>Please stay on the line to be redirected to the main menu.</Say>
  <Hangup>
    <Parameter name="payment_collected" value="false" />
  </Hangup>
</Response>
```

After Twilio executes these instructions, **Account** **A**'s `<Dial>`'s `action` URL (`https://example.com/account-a-action-url`) will receive a request from Twilio. The request will contain `ReturnParam_payment_collected: "false"`.

**Account A** can use these custom parameters to dynamically create further TwiML instructions for **Michael**, or to log relevant information internally.

**`<Hangup><Parameter>` and `<Reject><Parameter>`**

Typically, `<Hangup>` and `<Reject>` are self-closing TwiML tags, meaning that you only use one XML tag in your TwiML, e.g. `<Hangup />` and `<Reject />`.

If you wish to use `<Parameter>` within `<Hangup>` or `<Reject>`, you will need to use an opening and closing tag to surround the `<Parameter>`. See examples of this below.

**Note:** If using `<Reject><Parameter>`, the caller may not stay on the call, since they will hear either a busy signal or a standard not-in-service message. You can still send information back to the `<Dial>`s `action` URL for logging purposes, but without prompting the caller to stay on the line, the parent call may end.

## Use cases for `<Dial><Application>` with Twilio Programmable Voice

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

### Build an interactive voice response (IVR) with Twilio Programmable Voice

You can use this guide to route callers from a main IVR menu in one account to specialized services hosted in a different Twilio account. For example, a customer service IVR can hand off a caller to a dedicated billing application.

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

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

By using `<Dial><Application>`, you can connect callers to automated TwiML applications that handle specific tasks like account lookups or status updates without losing the original call data.

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

## Result

After following this guide, you can successfully connect a parent call leg to a TwiML App in the same or a different Twilio account. You will have configured your TwiML App to accept external connections and learned how to pass custom parameters back to your application's `action` URL for logging or further call flow logic.

## Next steps

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

* [How to capture your first payment using `<Pay>`](/docs/voice/tutorials/how-capture-your-first-payment-using-pay): Learn how to securely collect payment information during a call.
* [Build an Interactive Voice Response (IVR) phone tree](/docs/voice/tutorials/build-interactive-voice-response-ivr-phone-tree): Create a multi-level menu to route your callers effectively.
* [How to capture payment during a voice call (Generic Pay Connector)](/docs/voice/tutorials/how-to-capture-payment-during-a-voice-call-generic-pay-connector): Use a connector to process payments with your preferred provider.

## Related reference documentation

Find reference documentation for the topics on this page.

* [TwiML™ Voice: `<Application>`](/docs/voice/twiml/dial/application)
* [TwiML™ Voice: `<Dial>`](/docs/voice/twiml/dial)
* [TwiML™ Voice: `<Parameter>`](/docs/voice/twiml/pay/twiml-voice-parameter)
* [TwiML™ Voice: `<Hangup>`](/docs/voice/twiml/hangup)
* [TwiML™ Voice: `<Reject>`](/docs/voice/twiml/reject)
* [Programmable Voice API](/docs/voice/api)
