Phone Payment Processing Guide

Learn how to accept secure payments over the phone using Stripe Connect and Twilio Pay

Why use Phone Payments?

  • ✓ Customers can pay without leaving the call
  • ✓ PCI-DSS Level 1 compliant (highest security)
  • ✓ No card data passes through your system
  • ✓ Automated payment collection in your flow
  • ✓ Funds deposited to your bank in 2-5 business days

How It Works

1

Connect Stripe

Link your Stripe account in Call Settings

2

Create Payment Question

Add a payment question to your flow

3

Configure Payment

Set amount and enable payment processing

4

Handle Result

Setup success and failed paths

1

Connect Stripe Account

Enable payment processing by connecting your Stripe account

Why Stripe Connect?

Stripe Connect allows you to receive payments directly to your bank account. The integration is handled securely through Twilio's PCI-DSS Level 1 certified system, ensuring the highest level of payment security.

How to Connect:

1
Go to Call Management in your dashboard
2
Click on the Call Settings tab
3
Scroll down to the Phone Payment Integration section
4
Click Connect Stripe Account and follow the onboarding wizard
5

Complete the Stripe onboarding (you'll need):

  • • Business or personal information
  • • Bank account for payouts
  • • Tax ID (SSN or EIN)

One-Time Setup

You only need to connect Stripe once. After setup, all payment questions in all flows will use this account.

2

Create Payment Question in Flow

Add a payment step to your flow where customers will provide payment

Payment Question Placement

You can place payment questions anywhere in your flow - at the beginning, middle, or end. Common scenarios include collecting payment after service confirmation or at checkout.

Creating the Question:

1
Open your flow in the Flow Builder
2
Click Add New Question at the desired position
3

Enter a question title that describes the payment, for example:

  • • "Would you like to pay $50 for your prescription refill?"
  • • "Your total is $120. Proceed with payment?"
  • • "Payment of $25 required to continue"
4
Add two options to the question: one for success and one for failure

Required: Two Options

Payment questions must have exactly two options to handle payment outcomes:

Option 1: "Payment Successful" or "Continue"
Option 2: "Payment Failed" or "Try Again"

The system will automatically select the appropriate option based on the payment result.

3

Configure Payment Settings

Set up payment amount and enable payment processing

Enable Payment Processing:

1
Click the Settings icon (⚙️) on your payment question
2
Scroll down to find Process Payment toggle
3
Turn ON the Process Payment toggle

Stripe Connection Check

If you haven't connected Stripe yet, you'll see a prompt to set it up first. The payment toggle won't activate until Stripe is connected.

Set Payment Amount (Response JSON Template):

1
In the same settings modal, scroll to Response JSON Template
2

Enter the payment configuration in JSON format:

{ "amount": 50.00, "currency": "CAD", "description": "Prescription refill payment" }
JSON Template Parameters:

amount *required

Payment amount in dollars (e.g., 50.00 for $50)

Type: Number | Example: 50.00

currency *required

Currency code (CAD for Canadian Dollar, USD for US Dollar)

Type: String | Example: "CAD"

description optional

Description of what the payment is for (shown in Stripe dashboard)

Type: String | Example: "Order #1234 - Prescription refill"

JSON Format Important Notes:

  • • Use decimal point for amounts (50.00, not 50,00)
  • • Currency code must be uppercase (CAD, USD)
  • • Don't include currency symbols ($, ¢) in the amount
  • • All text values must be in quotes ("text")
  • • Use proper JSON syntax with commas between fields
3
Click Save Changes to apply the settings

Configuration Complete!

Your payment question is now ready. When a caller reaches this question, they'll be guided through the secure payment process by Twilio's automated system.

4

Handle Payment Results

Create follow-up questions for success and failure scenarios

Automatic Option Selection

After payment processing, the system automatically selects the appropriate option based on the result:

  • ✓ Payment successful → First option is selected
  • ✗ Payment failed → Second option is selected

Setting Up Success Path:

1

Click on your first option (success option)

Example: "Payment Successful" or "Continue"

2

Add a confirmation question, such as:

  • • "Thank you! Your payment of $50 was successful. Your order is confirmed."
  • • "Payment received. We'll process your prescription refill shortly."
  • • "Success! Your transaction ID is saved. What would you like to do next?"
3
Continue building your flow with next steps (e.g., delivery options, appointment confirmation)

Setting Up Failure Path:

1

Click on your second option (failure option)

Example: "Payment Failed" or "Try Again"

2

Add an error handling question, such as:

  • • "Sorry, the payment couldn't be processed. Would you like to try again or speak with an agent?"
  • • "Payment failed. Please verify your card details and try again, or choose another payment method."
  • • "We couldn't complete your transaction. You can retry payment or continue without payment."
3

Provide options such as:

  • • Loop back to retry payment
  • • Forward to an agent for assistance
  • • Offer alternative payment methods
  • • Continue without payment (if applicable)

Common Payment Failure Reasons:

  • • Incorrect card number or security code entered
  • • Insufficient funds on the card
  • • Expired card
  • • Card declined by bank
  • • Network timeout or technical issue

Always provide a clear path for customers to retry or get help!

Credit Cost & Pricing (in CAD)

Payment Question Cost 10 credits
Stripe Processing Fee 2.9% + $0.42 CAD
Twilio Payment Collection Fee $0.21 CAD

Currency Note: All fees shown are in Canadian Dollars (CAD). The original USD fees have been converted at current exchange rates

Calculation Example for $100 CAD Payment:

Payment Amount: $100.00 CAD
- Stripe Fee (2.9% + $0.42): -$3.32 CAD
- Twilio Fee: -$0.21 CAD
You Receive: $96.47 CAD
+ DialApp Credits Used: 10 credits
5

Testing & Going Live

Test your payment flow before accepting real payments

Use Stripe Test Mode

When you first connect Stripe, it starts in test mode. This allows you to test payment flows without processing real money.

Stripe Test Card Numbers:

✓ Success: 4242 4242 4242 4242
✗ Declined: 4000 0000 0000 0002

Use any future expiry date and any 3-digit CVV

Testing Checklist:

Test successful payment flow (verify success path works)
Test failed payment flow (verify failure path works)
Verify payment amounts are correct in Stripe dashboard
Test with different payment amounts
Complete Stripe account verification (switch to live mode)

Going Live

Once you've completed testing and Stripe has verified your account:

  1. 1. Stripe will automatically switch your account to live mode
  2. 2. All future payments will process real transactions
  3. 3. Funds will be deposited to your bank account in 2-5 business days
  4. 4. Monitor transactions in your Stripe dashboard

Best Practices

Clear Communication

  • ✓ Always state the amount clearly in the question ("Pay $50 for...")
  • ✓ Explain what the payment is for
  • ✓ Let customers know they'll enter card details via phone keypad
  • ✓ Confirm payment receipt before continuing

Security & Compliance

  • ✓ Never ask for card details in any other way (email, SMS, etc.)
  • ✓ Payment data is handled by Twilio's PCI-compliant system
  • ✓ No card information is stored in your DialApp account
  • ✓ All transactions are encrypted end-to-end

Flow Design

  • ✓ Place payment questions at logical points in your flow
  • ✓ Always provide retry options for failed payments
  • ✓ Offer alternative paths (speak to agent, call back later)
  • ✓ Keep success confirmations brief and clear
  • ✓ Don't ask for payment too early in the conversation

Monitoring & Optimization

  • ✓ Check your Stripe dashboard regularly for payment activity
  • ✓ Monitor success vs. failure rates
  • ✓ Review call recordings to identify payment flow issues
  • ✓ Update amounts in JSON template when prices change
  • ✓ Test payment flows periodically to ensure they're working

Troubleshooting

Common Issues & Solutions:

🔶 "Payment toggle won't turn on"

→ Make sure Stripe Connect is activated in Call Settings first

🔶 "Invalid JSON error"

→ Check JSON syntax (commas, quotes, proper format). Use a JSON validator online if needed

🔶 "Payment always fails"

→ Verify Stripe account is in live mode (not test mode) and fully verified

🔶 "Wrong option is selected after payment"

→ Ensure first option is for success, second for failure. System selects based on order

🔶 "Customer says they were charged but payment shows failed"

→ Check Stripe dashboard for the transaction. Sometimes authorization happens but capture fails

🔶 "Payment amount is wrong"

→ Double-check the "amount" value in Response JSON Template. Must be in dollars (50.00 = $50)

Need Help?

Our support team is ready to assist you with payment setup and troubleshooting.