> ## Documentation Index
> Fetch the complete documentation index at: https://www.bolna.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# The call transfer did not work

> Fix Bolna call transfers that never fire, fail to connect or drop the caller: tool descriptions, destination format, SIP URI support and provider limits.

Split the problem in two before changing anything: did the **agent try** to transfer, or did the **transfer fail**? The transcript in [Call history](/docs/agent-setup/call-history) answers this — if the pre-tool message ("I'll transfer you now") was spoken, the tool fired.

## The agent never tried to transfer

<Steps>
  <Step title="Sharpen the tool description">
    The **Description (Prompt)** on the transfer tool is what the LLM matches against. Vague text produces missed transfers. Be explicit: *"Transfer when the caller asks for a human, a manager, or the sales team, or when they are angry."* See [Transfer a call to a human](/docs/tool-calling/transfer-calls).
  </Step>

  <Step title="Confirm the tool is attached to this agent">
    Tools are configured per agent on the [Tools tab](/docs/agent-setup/tools-tab). An agent copied before the tool was added will not have it.
  </Step>

  <Step title="Check the prompt is not fighting the tool">
    A system prompt instructing the agent to "always resolve the query yourself" will suppress transfers. Say when to hand off, not only when to help.
  </Step>
</Steps>

## The transfer fired but the call did not connect

<Steps>
  <Step title="Check the destination format">
    A phone number must be in international format — `+19876543210`. A national-format number is the most common failure.
  </Step>

  <Step title="If transferring to a SIP URI, check the provider">
    SIP-URI transfer (`sip:1234@sbc.example.com`) is supported on **Plivo** telephony. On other telephony providers a transfer tool with a SIP destination does not fire, and the agent dashboard marks the tool accordingly. See [Transfer to a SIP trunk](/docs/tool-calling/transfer-calls#transfer-to-a-sip-trunk).
  </Step>

  <Step title="Verify the destination can actually receive the call">
    Call the destination number directly from an ordinary phone. A number that is out of hours, unregistered, or blocked by the carrier fails the same way regardless of Bolna.
  </Step>

  <Step title="Read the hangup fields">
    `hangup_by` and `hangup_code` on the execution show whether the transfer leg was rejected by the carrier or the destination. See [Hangup codes](/docs/post-call/list-phone-call-hangup-status).
  </Step>
</Steps>

***

## The caller heard silence during the transfer

Set a **pre-tool message** on the transfer tool so the agent explains what is happening, and add one per language for multilingual agents. Transfers take a few seconds to bridge; without a message, callers hang up first.

***

## Getting the transfer reason into your systems

Use the **pre-call webhook** on the transfer tool to notify your own URL *before* the transfer bridges, and custom **SIP headers** to carry context onto the outgoing INVITE for your trunk to route on. Both are documented in [Transfer a call to a human](/docs/tool-calling/transfer-calls).

***

## Next steps

<CardGroup cols={3}>
  <Card title="Transfer a call to a human" icon="phone-arrow-right" href="/docs/tool-calling/transfer-calls">
    Full configuration
  </Card>

  <Card title="Hangup codes" icon="phone-xmark" href="/docs/post-call/list-phone-call-hangup-status">
    Why the leg failed
  </Card>

  <Card title="Connect tools and APIs" icon="screwdriver-wrench" href="/docs/agent-setup/tools-tab">
    Where tools are attached
  </Card>
</CardGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.