OTA and travel tech 9 min read
How to take payments on a travel booking website safely
Travel payments are harder than retail. Here is how to charge customers safely when bookings, prices and refunds depend on suppliers.
On this page
To take payments on a travel booking website safely, choose a travel booking payment gateway that supports separate authorisation and capture, charge the customer only once the booking is confirmed, and have a clear process for failed bookings, refunds and disputes. Travel is harder than retail because the product is confirmed by a third party, prices can change mid-booking, and cancellations follow supplier rules. This guide explains how to set it up step by step.
A payment gateway is the service that sits between your website and the card networks. It collects the card details, asks the customer's bank to approve the payment and later sends the money to your account. If you are planning a full booking platform, our OTA platform service page explains how we build them.
Why travel payments are harder than retail
In a normal online shop, you take payment and then ship a product you already have. In travel, you take payment for something that another company must confirm, often seconds later and sometimes not at all.
- Confirmation happens elsewhere. An airline, hotel supplier or tour operator confirms the booking. Your website does not control whether it succeeds.
- Prices can change during booking. A fare can change between search and booking, so the amount you planned to charge may not be the final amount.
- Refunds follow supplier rules. Cancellation fees, partial refunds and refund timing depend on the supplier's terms, not only yours.
- Travel happens later. The gap between payment and travel means more time for plans to change and for disputes to arise.
- Fraud risk. Travel is a common target for card fraud because tickets and bookings can be resold or used quickly.
Your payment design needs to handle all of these cases on purpose, rather than discovering them when a customer complains.
Choosing a travel booking payment gateway
Not every gateway suits travel. Before signing up, check these points with the provider and in their documentation:
- Travel is an accepted business type. Some providers restrict or review travel businesses more closely. Confirm this before building anything.
- Separate authorisation and capture. You need to be able to reserve money first and collect it later. This is explained in the next section.
- Full and partial refunds through the API. Your system should issue refunds without someone logging into a dashboard.
- Webhooks. A webhook is a message the gateway sends to your server when something happens, such as a payment succeeding or a dispute opening. Reliable webhooks are essential.
- Currencies and payment methods your customers use. Check local cards, wallets and bank transfer options in your markets.
- Customer authentication support. Card authentication such as EMV 3-D Secure adds a verification step by the customer's bank for online payments, which helps prevent fraud.
Also ask how card data is handled. The PCI Data Security Standard (PCI DSS) sets security requirements for businesses that accept cards. The type of checkout you use, such as a payment page hosted by the gateway or a form on your own site, changes how much of the standard applies to you. Your gateway can tell you which requirements apply to your setup.
If these terms are new to you, our guide on how payment gateways work explains authorisation, capture and settlement step by step.
Many gateways also let you choose between sending customers to their page and showing the form on yours, and our comparison of hosted payment pages and embedded checkouts explains the trade-offs.
Authorise first, capture after confirmation
A card payment can happen in two stages:
- Authorisation asks the customer's bank to approve the amount and reserve it on the card. No money has moved to you yet.
- Capture collects the reserved money.
For travel, this split is valuable. The recommended order is:
- Check the price with the supplier. Confirm the fare or rate is still available and get the final amount.
- Authorise the payment. Reserve the confirmed amount on the customer's card.
- Create and confirm the booking. Send the booking to the supplier and, for flights, issue the ticket.
- Capture the payment. Only when the booking is confirmed do you collect the money.
- Release the authorisation if the booking fails. Cancelling the authorisation, often called voiding it, means the customer is never charged.
Authorisations do not last forever. How long they stay valid depends on the card network and your gateway, so check your gateway's documentation and capture promptly after confirmation.
Some gateways and payment methods do not support separate capture. In that case, you charge first and must refund quickly if the booking fails, which makes the next section even more important.
What to do if the booking fails after payment
Even with good design, some bookings fail after the customer has paid or authorised. Suppliers time out, fares disappear at the last second, or a system returns an unclear answer. Plan for this before launch.
- Record the payment and booking as separate items. Each should have its own status, such as authorised, captured or refunded for the payment, and pending, confirmed or failed for the booking.
- Never guess the booking outcome. If the supplier did not respond, check the booking status with them before deciding. Retrying a booking blindly can create a duplicate.
- Void or refund automatically when failure is certain. If the supplier clearly rejected the booking, release the authorisation or issue the refund straight away.
- Send unclear cases to a person. Put bookings with an unknown status into an operations queue in your admin panel, with the logs needed to resolve them.
- Tell the customer the truth. Show a clear message: whether they were charged, what happens next and when they will hear from you. Follow up by email.
Webhooks help here, because the gateway tells your server about payment changes even if the customer closes the browser. Always verify that a webhook really came from the gateway. Most gateways sign each message with a secret key. The exact header name and signing method differ, so follow your gateway's documentation. A simplified Laravel example looks like this:
use App\Jobs\ProcessPaymentEvent;
use Illuminate\Http\Request;
public function __invoke(Request $request)
{
$expected = hash_hmac('sha256', $request->getContent(), config('services.gateway.webhook_secret'));
abort_unless(hash_equals($expected, (string) $request->header('X-Signature')), 403);
ProcessPaymentEvent::dispatch($request->json()->all());
return response()->noContent();
}
The webhook route also needs to be excluded from Laravel's request forgery protection, because the gateway cannot send your site's form token. The job then updates the payment record, and should safely ignore an event it has already processed, since gateways may send the same event more than once.
If your site is built on Laravel, our guide to Laravel payment gateway integration shows how to structure payment records and webhooks.
Handling refunds and cancellation fees
Refunds in travel are rarely all or nothing. Your system should calculate and record them clearly.
- Store the supplier's cancellation policy with each booking. Save the policy as it was at the time of booking, including deadlines and fees.
- Calculate the refund from both policies. Combine the supplier's cancellation fee with your own service fee rules, and show the customer the result before they confirm the cancellation.
- Cancel with the supplier first. Confirm the cancellation with the supplier, then issue the refund. This avoids refunding a booking that is still active.
- Use partial refunds through the gateway. Refund the correct amount through the API and keep the gateway's refund reference with the booking.
- Keep an audit trail. Record who approved each refund and when. Your finance team will need this.
- Explain refund timing. Card refunds take time to appear on the customer's statement. Tell customers this plainly in the confirmation email.
Reducing fraud and chargebacks
A chargeback happens when a customer asks their bank to reverse a card payment. The bank takes the money back from you while it reviews the case, and you usually pay a fee. Fraudulent bookings often end in chargebacks.
- Use customer authentication. Card authentication such as 3-D Secure makes it harder to use stolen cards.
- Use your gateway's fraud screening. Most gateways offer risk scoring. Review its settings instead of leaving the defaults.
- Check high-risk patterns. Last-minute bookings, mismatched names and countries, and many attempts with different cards deserve a closer look before ticketing.
- Keep clear evidence. Save booking details, the terms the customer accepted, confirmation emails and any messages. Good records help you respond to disputes.
- Describe charges clearly. Make sure your business name on card statements is recognisable, so customers do not dispute a charge they simply do not recognise.
Reconciling payments with bookings
Reconciliation means checking that every payment matches a booking, and every booking matches a payment. It is where small errors are found before they grow.
- Match gateway reports to your records regularly. Compare captured payments, refunds and fees in the gateway with the payment records in your system.
- Match supplier invoices to confirmed bookings. Check that you are only paying suppliers for bookings that were confirmed and not cancelled.
- Flag mismatches for review. A payment with no booking, or a booking with no payment, should appear in a list for your team.
- Keep the references together. Store the gateway transaction ID, the supplier booking reference and your own booking number on one record.
Doing this from the start makes month-end accounting far simpler and gives you early warning if something in the booking or payment flow is not working.
Summary
- Pick a gateway that accepts travel businesses and supports separate authorisation and capture, refunds and webhooks.
- Check the price, authorise, confirm the booking, then capture.
- Treat payment and booking as separate records and never guess an unclear booking outcome.
- Calculate refunds from supplier and agency policies, and cancel with the supplier before refunding.
- Use card authentication, fraud screening and good records to reduce chargebacks.
Payments are where customer trust is won or lost, so they deserve careful design. If you're planning payments for a booking platform, you can tell us about it here.