PayU doesn't natively connect to Twilio for voice payments. If you want to process PayU transactions during a phone call (via IVR, agent-assisted, or AI voice agent), you need a Twilio Pay Connector that bridges the two platforms.
Shuttle's Pay Connector does exactly this. It connects PayU (and 30+ other gateways) to Twilio's <Pay> verb, so you can accept PCI-compliant card payments during any voice interaction.
This matters most in PayU's home markets. PayU is the dominant payment provider across many emerging markets: India, Latin America, Central and Eastern Europe, and Africa. If your customers pay through PayU because it gives you local acquiring and local payment methods in those regions, you shouldn't have to switch gateways just to take a payment over the phone.
This guide walks through how the integration works, how to set it up, and what to watch for.
Why PayU + Twilio Don't Connect Directly
PayU is built for online commerce in growth markets. It operates across more than 50 countries and supports a deep bench of local payment methods alongside cards: net banking and UPI in India, cash voucher and bank transfer methods in Latin America, and local card acquiring across Central and Eastern Europe. Its APIs handle hosted checkout, server-to-server payments, and card tokenisation.
Twilio is built for voice and messaging. Its <Pay> verb captures card details during phone calls via DTMF keypad input, with tones suppressed so agents never hear them.
The problem: Twilio's <Pay> needs a Pay Connector to route captured card data to a payment gateway. PayU isn't one of Twilio's built-in connectors, so there is no native path between the two.
This is where Shuttle comes in. As Twilio's official payment partner, Shuttle provides a Pay Connector that accepts card data from Twilio's <Pay> verb and routes it to PayU for processing through your existing PayU merchant account. One integration connects the two platforms.
How It Works
`` Caller → Twilio (DTMF capture) → Shuttle (Pay Connector) → PayU (processing) → Result ``
Caller reaches payment step. Your Twilio call flow (IVR, Studio, or custom TwiML) triggers the
<Pay>verb.Card details captured via DTMF. The caller enters their card number, expiry, and CVV on the keypad. Tones are suppressed from the agent audio and call recordings.
Shuttle receives card data. The data passes from Twilio's PCI-compliant environment directly to Shuttle's connector. It never touches your servers.
Shuttle charges the card via PayU. The connector creates a PayU payment request, processes the transaction through your PayU merchant account with your local acquiring rates, and handles the response.
Result returned to your call flow. Your webhook receives the PayU transaction reference, last four digits, card brand, and transaction status. The call continues.
The entire flow happens in seconds. The caller stays on the line. No redirects, no "please visit our website."
Step-by-Step Setup
Prerequisites
A Twilio account with voice capability
A PayU account with API credentials for your region
A Shuttle account (free to create, you pay per transaction)
Step 1: Install Shuttle's Pay Connector
Go to the Twilio Marketplace and install the Shuttle Pay Connector. This adds Shuttle as an available connector in your Twilio account's Pay configuration.
Step 2: Add PayU Credentials to Shuttle
Log into the Shuttle dashboard. Navigate to Payment Profiles and create a new profile with your PayU credentials. The exact fields depend on your PayU region:
PayU India: merchant key + salt, generated from the PayU Dashboard (test and production sets are issued separately)
PayU Europe / GPO: POS ID plus OAuth client credentials (client ID and client secret), found in the point-of-sale section of your management panel
Currency: set your default (INR, PLN, EUR, etc.)
Environment: live or test
Save the profile. Shuttle now has a live connection to your PayU account.
Step 3: Configure Your Twilio Call Flow
Add the <Pay> verb to your TwiML or Twilio Studio flow:
``xml <Response> <Say>Please enter your card number followed by the hash key.</Say> <Pay paymentConnector="shuttle-pay-connector" chargeAmount="1499.00" currency="INR" description="Invoice payment" action="/payment-complete"> </Pay> </Response> ``
Key parameters:
paymentConnector: set toshuttle-pay-connectorchargeAmount: the amount to chargecurrency: ISO currency codeaction: your webhook endpoint for the payment result
Step 4: Handle the Payment Result
Twilio sends a POST to your action URL with the payment result:
``json { "Result": "success", "PaymentCardNumber": "xxxx-xxxx-xxxx-1234", "PaymentCardType": "visa", "PaymentConfirmationCode": "PAYU-TXN-REF-123...", "ProfileId": "your-shuttle-profile-id" } ``
Use the PaymentConfirmationCode to look up the transaction in your PayU dashboard if needed. Update your order, confirm to the caller, and continue the flow.
Step 5: Test
PayU provides test environments in every region: PayU India issues dedicated test merchant keys and salts through its dashboard, and PayU Europe runs a full sandbox environment for integration testing. Use your PayU test credentials in Shuttle and verify the flow end-to-end with Twilio before going live.
What You Can Do With PayU + Twilio
Charge Immediately
Standard authorisation and capture. The caller pays, PayU processes through your local acquirer, done.
Tokenise for Future Use
Capture card details once over the phone. Shuttle tokenises the card and returns a reusable token (PayU supports both single-use and multi-use card tokens). Use it for future payments across any channel: web, mobile, voice, or payment links. The card data is never stored in your systems.
Serve Callers in PayU's Markets With Local Acquiring
This is the real reason to pair PayU with Twilio. A contact centre taking payments from customers in India, Poland, or Colombia gets domestic processing rates and higher authorisation rates through PayU's local acquiring, instead of routing everything through a foreign cross-border acquirer.
Collect Across Channels From One Profile
The same Shuttle payment profile that powers your Twilio voice flow can also generate payment links for SMS and WhatsApp follow-ups. If a caller would rather not key in card details, send a link mid-call and keep the PayU processing relationship identical.
Multi-PSP: Beyond PayU
One of the key advantages of using Shuttle rather than a single-gateway connector is flexibility. Your Twilio integration stays the same even if you:
Add a second gateway: route Indian transactions to PayU and UK transactions to a local acquirer
**Serve enterprise customers** who mandate a specific PSP (Stripe, Adyen, Worldpay, etc.)
Need failover: if PayU has an outage, automatically route to a backup gateway
Expand to new markets where a different acquirer gives better authorisation rates
You configure routing rules in Shuttle's dashboard. Your Twilio call flow doesn't change. The <Pay> verb always points to shuttle-pay-connector, and Shuttle handles which gateway processes the transaction.
This is particularly important for BPOs and platforms serving clients across PayU's regions. A BPO with clients in India, Central Europe, and Latin America can give each client their own PayU merchant account (or any other gateway) through the same Twilio integration.
For PayU's full gateway profile on Shuttle, see PayU on Shuttle.
PCI Compliance
The PayU + Twilio integration via Shuttle keeps you completely out of PCI scope:
Layer | PCI handled by |
|---|---|
DTMF capture & suppression | Twilio |
Card data processing | Shuttle (PCI DSS Level 1) |
Payment processing | PayU (PCI DSS certified) |
Your systems | No card data, SAQ-A |
Card data flows from Twilio → Shuttle → PayU. Your application only receives redacted data (last 4 digits, card brand, transaction reference). You qualify for SAQ-A, the lightest PCI self-assessment.
For the full picture on PCI compliance with Twilio, see Twilio PCI Compliance: Payments Without Handling Card Data.
FAQ
Can I connect PayU to Twilio without Shuttle? Twilio doesn't have a built-in PayU Pay Connector. You'd need to build a custom connector using Twilio's Generic Pay Connector framework, which means handling PCI compliance for card data processing yourself. Shuttle provides a pre-built, PCI-certified connector that handles this.
Does this work with Twilio Studio? Yes. Twilio Studio supports the <Pay> widget. Configure it with shuttle-pay-connector as the connector and the payment flow works within your Studio flow.
Which PayU regions are supported? Shuttle connects to PayU merchant accounts using the credential set for your region: merchant key and salt for PayU India, POS ID and OAuth client credentials for PayU Europe. If you operate PayU accounts in multiple regions, create a Shuttle payment profile for each and route by caller or client.
What about PayU's test environment? Fully supported. PayU India issues test merchant keys and salts from its dashboard, and PayU Europe provides a sandbox environment. Add your test credentials to a Shuttle test profile and run the full Twilio flow before going live.
What does it cost? Shuttle charges $0.20 per successful transaction. PayU's standard fees for your region apply on top. No Shuttle setup fees or monthly minimums.
Can I switch from PayU to another gateway later? Yes. Change the gateway in your Shuttle payment profile. Your Twilio call flow stays exactly the same, with no code changes needed.
Related Reading
Twilio Pay Connectors: How to Connect Any Payment Gateway: the complete guide to Twilio Pay Connectors and multi-PSP routing
Twilio PCI Compliance: Payments Without Handling Card Data: how to keep your PCI scope at SAQ-A
How to Connect Stripe to Twilio for Voice Payments: step-by-step Stripe + Twilio setup
How to Connect Adyen to Twilio for Voice & IVR Payments: step-by-step Adyen + Twilio setup
Payment Collection for BPOs: multi-client payment routing for outsourced contact centres
Twilio Pay: Connect Any Payment Gateway to Twilio: all supported gateways, pricing, and setup
*Connect PayU to Twilio in minutes with Shuttle's Pay Connector: PCI DSS Level 1, $0.20/transaction, no setup fees. Install on Twilio or book a discovery call.*