SignalWire IVR Payments: How the Pay Step Works

By Shuttle Team, November 2, 2026

An IVR payment lets a caller pay inside an automated call flow, with no agent on the line. On SignalWire, that payment step is the <Pay> verb in cXML, or the pay method in SWML.

Shuttle is building a SignalWire connector, similar to our Twilio connector. It is not available yet and there is no release date.

For the general picture of IVR payments, see our IVR payments guide. This guide covers how the payment step works on SignalWire.


Where the Pay Step Goes in an IVR Flow

In a SignalWire call flow, the payment is one step. The flow plays its prompts, works out the amount, and then runs <Pay> in cXML, or the pay method in SWML. SignalWire's cXML reference describes the <Pay> verb as enabling payment processing during voice calls.

Per SignalWire's documentation:

  • The caller keys their card on the phone keypad. In cXML and SWML, SignalWire supports keypad (DTMF) input only.

  • You set the amount. In cXML, chargeAmount takes the amount to charge. Set it to 0, or leave it out, and the request becomes a tokenise request instead of a charge.

  • Attempts are limited. In cXML, maxAttempts sets the maximum number of retry attempts. It accepts 1, 2 or 3, and the default is 1. SWML has max_attempts, which SignalWire describes as the number of attempts the caller gets to enter each payment detail.

  • Callers can submit early or cancel. In SWML, pressing # submits early and * cancels.


Handling the Result

In cXML, when the step ends SignalWire posts a PayResult to your action URL, and the response sets the next cXML. The values include:

  • success

  • too-many-failed-attempts

  • payment-connector-error

  • caller-interrupted-with-star

  • caller-hung-up

  • validation-error

  • internal-error

So an IVR flow needs a branch for each outcome that matters: confirm the payment on success, offer another try or an alternative after repeated failures, and handle a caller who cancels or hangs up. SignalWire's cXML reference also says the status callback payment-completed means the connector returned HTTP 200, not that the payment succeeded, so check PayResult rather than relying on the callback alone.


Who Charges the Card

SignalWire does not charge the card itself. It sends the captured card to a payment connector URL as an HTTPS POST with a JSON body, and expects a charge or token ID back. SignalWire's SWML reference says your server is responsible for charging the payment method.

You can build and host that endpoint yourself.

Shuttle is building a hosted option. Shuttle will host the connector URL that SignalWire calls, so you will not need to run your own endpoint.


Where Shuttle's SignalWire Connector Stands

  • In build, no date. It is not available to use yet.

  • Being built for cXML <Pay> and SWML pay.

  • Any currency. It will support any currency your payment provider supports.

  • Billed by Shuttle. Shuttle will bill the transactions: $49 per live instance per month, with 245 transactions included, then from $0.20 per transaction, falling with volume. An instance is one payment channel. See pricing for the full model.

We have nothing to say yet on the rest of what it will cover. Shuttle works with Twilio and Telnyx today. Building an IVR on SignalWire? Book a call and tell us about your setup.

For the full picture, see SignalWire payments.


SignalWire IVR Payments FAQ

Can I take IVR payments on SignalWire? In cXML and SWML, SignalWire's pay step has the caller key the card on the keypad. Something at a connector URL has to charge the card.

Can I take IVR payments on SignalWire with Shuttle today? Not yet. The SignalWire connector is in build, with no release date. Book a call and tell us about your setup. Shuttle works with Twilio and Telnyx today.

Does the caller have to type their card number? In cXML and SWML, SignalWire supports keypad input only for the payment step.

What happens if the payment fails? If the step does not end in success, SignalWire sends a different PayResult (for example too-many-failed-attempts or payment-connector-error) to your action URL in cXML, and your flow decides what happens next.

How much will the SignalWire connector cost? Shuttle will bill the transactions: $49 per live instance per month, with 245 transactions included, then from $0.20 per transaction, falling with volume. See pricing.


Running voice on SignalWire? Book a call.

Take payments over the phone

Card capture for contact centres, IVR flows and AI voice agents, connected to 30+ payment gateways including Stripe, Adyen, and Worldpay Access.

A phone keypad on a call: the caller is asked for their card number, expiry and security code, the digits show masked, and the payment succeeds