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

# Dashboard setup

> Add Ringup to a Vapi agent from the dashboard. No code: wire it in Test on a copy of your agent, then repeat in Live on your real agent.

Add pay-by-phone to a Vapi agent in a few clicks. Ringup attaches one payment tool and hands you one prompt line to paste. No payment code.

You do this **twice**: in **Test** on a copy of your agent, then in **Live** on your real agent.

## Before you start

<Steps>
  <Step title="A Vapi agent with a SIP-capable number">
    Vapi-native and SIP trunk (BYOC) numbers can transfer to the payment line. A number imported from a telephony provider cannot.
  </Step>

  <Step title="Your Vapi API key">
    Vapi dashboard, **Org settings, then API Keys**.
  </Step>

  <Step title="Your Ringup account">
    Sign in at [ringup.dev/dashboard](https://ringup.dev/dashboard).
  </Step>
</Steps>

<Warning>
  Test wires a **copy** of your agent (you duplicate it in Step 1), so production stays untouched until you deliberately go live.
</Warning>

## Set it up in Test

Make sure the dashboard is in **Test** mode (top-right toggle).

<Steps>
  <Step title="Duplicate your agent">
    In Vapi, duplicate your live agent and name the copy something like **Agent (Ringup test)**. You wire this copy, not production.

    <Frame caption="Vapi: duplicate your agent and name the copy Agent (Ringup test).">
      <img src="https://mintcdn.com/ringup/6rwpYNEIBAppz8jr/images/vapi/04-duplicate-agent.png?fit=max&auto=format&n=6rwpYNEIBAppz8jr&q=85&s=bd6214916901eb6893234f056a95a9ec" alt="Duplicate the Vapi agent for testing" width="2000" height="313" data-path="images/vapi/04-duplicate-agent.png" />
    </Frame>
  </Step>

  <Step title="Connect your platform">
    In the Ringup dashboard, open **Voice integrations**, choose **Vapi**, and paste your **Private API key**. Ringup lists your agents to check the key, then creates one payment tool on your account.

    Then pick what your agent sends at hand-off:

    * **The order id** it creates in the point of sale. Ringup reads the total from that order, so tax and modifiers are always right and the payment lands on the real ticket.
    * **The total** it works out itself. For agents with no point-of-sale order.
    * **Both**, for a mixed fleet. Each call sends whichever it has; when an order id is present it wins.

    <Frame caption="Voice integrations: choose Vapi, paste your key, pick what the agent sends.">
      <img src="https://mintcdn.com/ringup/6rwpYNEIBAppz8jr/images/vapi/01-connect-vapi.png?fit=max&auto=format&n=6rwpYNEIBAppz8jr&q=85&s=f940b51c6e15d7b47f6f24f7b7dc5bd3" alt="Connect Vapi and choose the order model" width="2000" height="1012" data-path="images/vapi/01-connect-vapi.png" />
    </Frame>
  </Step>

  <Step title="Choose the agent">
    Pick your **test copy** and click **Add payment**. Ringup attaches one tool to it and changes nothing else.

    <Frame caption="Pick the test copy and click Add payment.">
      <img src="https://mintcdn.com/ringup/6rwpYNEIBAppz8jr/images/vapi/02-pick-agent.png?fit=max&auto=format&n=6rwpYNEIBAppz8jr&q=85&s=2f2620819b95443f00d59e913c36c971" alt="Choose the agent and add payment" width="2000" height="995" data-path="images/vapi/02-pick-agent.png" />
    </Frame>
  </Step>

  <Step title="Add the prompt line">
    Paste the one **system prompt** line Ringup shows into the test copy's system prompt in Vapi. That is the whole change on your side.

    <Frame caption="Copy the prompt line into your Vapi agent's system prompt.">
      <img src="https://mintcdn.com/ringup/6rwpYNEIBAppz8jr/images/vapi/03-prompt-line.png?fit=max&auto=format&n=6rwpYNEIBAppz8jr&q=85&s=54fae310128aaef2373a2fb465fe7e3e" alt="Paste the Ringup prompt line into the Vapi agent" width="2000" height="994" data-path="images/vapi/03-prompt-line.png" />
    </Frame>

    <Warning>
      Do not add the tool by hand in Vapi. Ringup attaches it with the right server URL and secret. A hand-made tool is not bound to your account and will fail at call time.
    </Warning>
  </Step>

  <Step title="Connect a test merchant">
    A call can only take payment for a merchant, so create one in **Test** first. In the dashboard, open **Merchant integrations** and create a test merchant; in test mode it is automatically backed by Ringup's test processor account, so there is no OAuth step and no real processor account to connect. Without one, the payment layer stays inaudible and the test call has nothing to charge. See [Merchant integrations](/payment-providers/overview).
  </Step>

  <Step title="Place a test call">
    Call the test copy from your own phone and place an order. It charges the test merchant you just created. On your first call you are texted a link and pay with the test card `4111 1111 1111 1111`; on your next call you are recognized and pay on the saved Visa ending 1111. No real money moves. Watch it land in **Logs**.
  </Step>
</Steps>

## Go live

<Steps>
  <Step title="Wire your real agent">
    Switch the dashboard to **Live** and run **Connect your platform, Choose the agent, Add the prompt line** again, this time on your **production** agent, no copy.

    <Frame caption="Switch to Live and wire your production agent the same way.">
      <img src="https://mintcdn.com/ringup/6rwpYNEIBAppz8jr/images/vapi/05-go-live.png?fit=max&auto=format&n=6rwpYNEIBAppz8jr&q=85&s=e1a56022f80d9d0b6fc544dcb80e42a5" alt="Go live" width="2000" height="999" data-path="images/vapi/05-go-live.png" />
    </Frame>
  </Step>

  <Step title="Let your merchants connect">
    Real calls take payment only for merchants who have connected their own processor. Embed the one-line Connect button so each merchant self-connects Square or Clover. Until a merchant connects, the payment layer stays inaudible on their calls, so going live first is safe. See [Merchant integrations](/payment-providers/overview).
  </Step>
</Steps>

## What Ringup guarantees during the transfer

<Check>
  **The hand-off is never silent.** Before the leg switches, Ringup speaks a heads-up in your agent's turn ("Just a sec, connecting you to our secure payment line now") and holds the transfer until the sentence finishes.
</Check>

<Check>
  **A dropped session reference cannot strand a payment.** The Checkout Session rides the transfer two ways at once: in the transfer itself and in a short-lived server-side record keyed to the caller's number. If either carrier fails, the other completes the payment.
</Check>

<Check>
  **The confirmation is pushed, not polled.** The moment a payment settles, whether by saved card on the call or a texted link paid mid-call, the payment line announces it instantly.
</Check>

## Next steps

<CardGroup cols={2}>
  <Card title="Merchant integrations" icon="store" href="/payment-providers/overview">
    How your merchants connect Square or Clover so calls can take payment.
  </Card>

  <Card title="Webhooks" icon="webhook" href="/concepts/webhooks">
    Reconcile every payment from one signed event on your server.
  </Card>
</CardGroup>
