Payment Gateways
Payment Gateways
Tickets Please includes three built-in payment gateways: Stripe, PayPal, and Offline. You can activate one, two, or all three at the same time. Buyers choose their preferred method during checkout. This page covers how to configure each gateway and how payment processing works behind the scenes.
Configuring Gateways
All gateway settings are under Events > Settings > Payments. Each gateway has its own section with these shared settings:
| Setting | Description |
|---|---|
| Enable/Disable | Toggle the gateway on or off |
| API Keys (Live) | Your production API credentials |
| API Keys (Test) | Your sandbox/test API credentials |
| Test Mode | When enabled, the gateway uses test keys and no real charges are made |
| Currency | Three-letter currency code (e.g., USD, EUR, GBP). Defaults to USD |
| Statement Descriptor | The text that appears on the buyer’s bank or card statement |
Always configure and test with Test Mode enabled before going live with real payments.
Stripe
Stripe processes credit and debit card payments directly on your checkout page using Stripe Elements. The buyer never leaves your site.
Setup
- Create a Stripe account at stripe.com if you do not have one.
- Go to Events > Settings > Payments > Stripe.
- Toggle Enable Stripe on.
- Enter your Publishable Key and Secret Key from the Stripe dashboard. Use your test keys first.
- Enable Test Mode for initial testing.
- Set the Statement Descriptor (up to 22 characters).
- Click Save Settings.
How It Works
When a buyer selects Stripe at checkout, a Stripe Elements card input appears inline on the page. The card details go directly to Stripe’s servers and never touch your WordPress server. Tickets Please receives a payment token from Stripe and uses it to create the charge via the Stripe API.
Stripe also supports asynchronous payment confirmation through webhooks. If you configure a webhook endpoint in your Stripe dashboard pointing to your site, Tickets Please handles the payment_intent.succeeded event to confirm the order. This is useful for payment methods that require additional verification (3D Secure, bank redirects).
PayPal
PayPal processes payments through the PayPal JavaScript SDK. Buyers can pay with their PayPal account or with a credit card through PayPal’s interface.
Setup
- Create a PayPal Business account at paypal.com if you do not have one.
- Create an app in the PayPal Developer Dashboard to get your Client ID and Secret.
- Go to Events > Settings > Payments > PayPal.
- Toggle Enable PayPal on.
- Enter your Client ID and Secret. Use your sandbox credentials first.
- Enable Sandbox Mode for testing.
- Click Save Settings.
How It Works
When a buyer selects PayPal at checkout, the PayPal button renders on the page via the PayPal JS SDK. Clicking it opens a PayPal popup where the buyer logs in and confirms the payment. Once confirmed, Tickets Please receives the payment details and completes the order.
PayPal sandbox mode lets you test the entire flow with fake PayPal accounts without processing real transactions.
Offline Payments
The Offline gateway lets you accept payments outside of your website and manually mark orders as paid. This is useful for events that accept cash at the door, bank transfers, or invoiced payments.
Setup
- Go to Events > Settings > Payments > Offline.
- Toggle Enable Offline Payments on.
- Click Save Settings.
No API keys are needed. When a buyer selects Offline at checkout, the order is created with a pending status. You then mark it as paid from the WordPress admin when you receive the payment.
Marking an Order as Paid
- Go to Events > Orders in the WordPress admin.
- Find the pending order and click Edit.
- Change the order status to Completed.
- Save the order. Attendee records are created and a confirmation email is sent to the buyer.
Multiple Active Gateways
When more than one gateway is active, the checkout page displays all of them and the buyer chooses which to use. The gateway selection appears as a set of options between the buyer information fields and the payment button.
The order in which gateways appear on the checkout page follows the order they are listed on the settings page: Stripe first, then PayPal, then Offline.
Refund Processing
Both Stripe and PayPal support refunds through their respective APIs. When an admin approves a refund request, Tickets Please calls the gateway’s refund API to return funds to the buyer. Partial refunds are supported for both gateways.
Offline payment refunds must be handled manually outside of the system. The admin marks the refund as processed in Tickets Please, but the actual fund transfer happens externally.
Revenue Reporting
Tickets Please provides two helper functions for revenue data:
get_revenue_by_event()— returns total revenue broken down by event, with gateway detailsget_revenue_summary()— returns an aggregate revenue summary across all events for a date range
These are available for custom reporting integrations or theme customizations.
Common Questions
Can I use Stripe and PayPal at the same time? Yes. Activate both and buyers choose their preferred method at checkout. You can also have all three gateways active simultaneously.
How do I test payments without real money? Enable Test Mode (Stripe) or Sandbox Mode (PayPal) in the gateway settings. Use the test API keys from your gateway dashboard. Test card numbers and sandbox accounts let you simulate the full payment flow.
What currencies are supported?
Any currency supported by your payment gateway. Set the three-letter currency code (e.g., USD, GBP, EUR) in the gateway settings. All active gateways should use the same currency.
Where do I find my API keys? For Stripe, go to the Stripe Dashboard. For PayPal, go to the PayPal Developer Dashboard and select your app.
Can I charge different prices based on payment method? Not directly. Ticket prices are set on the ticket, not the gateway. If you need to add a surcharge for a specific payment method, you would need a custom filter.
What happens if a payment fails? The buyer sees an error message on the checkout page and can try again or choose a different payment method. No order is created and no capacity is held for failed payments.
Next Steps
- Cart & Checkout — understand the full checkout flow
- WooCommerce Integration — use WooCommerce’s payment gateways instead
- Refunds & Cancellation — process refunds through the gateway APIs