Use Stripe's two-step authorize-and-capture flow: create a PaymentIntent with capture_method: 'manual' to authorize the card and hold the funds without charging; capture only when the booking is confirmed by the airline or hotel API.
Set the authorization hold window appropriately — Stripe holds authorizations for up to 7 days for most cards; if your booking confirmation can take longer (e.g. group bookings, charter flights), design the flow to re-authorize or switch to immediate capture with a refund fallback.
Set statement_descriptor and statement_descriptor_suffix on the PaymentIntent to clearly identify the airline or hotel name — generic descriptors like 'Travel Agency' increase chargeback rates.
For airline bookings, Stripe requires the payment to route through a Stripe account with the correct MCC (Merchant Category Code) — airlines use MCC 3000-3299 (airline-specific) or 4511 (air carriers); travel agencies use 4722; using the wrong MCC can cause issuer declines.
Implement idempotency keys on PaymentIntent creation — use a booking-session-scoped UUID so that network retries do not create duplicate authorizations.
For refunds, use Stripe's refund API referencing the original PaymentIntent or charge id; partial refunds are supported and should be used for penalty-deducted cancellations rather than full-refund-then-recharge.
Known gotchas
Card issuers sometimes decline travel bookings due to fraud scoring — implement 3D Secure (Stripe's automatic handling via Radar) and surface clear decline messages with a retry-with-different-card fallback rather than a generic error.
Authorization hold amounts must exactly match the capture amount for most card networks — if the final booking price changes after authorization (e.g. due to repricing), you must void and re-authorize rather than capturing a different amount.
BIN-level restrictions exist for certain corporate and prepaid cards that may not support travel MCCs or delayed capture; your payment flow should handle these declines gracefully and offer alternative payment methods.
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp