Travel
Power Online Travel Agencies (OTAs), corporate travel management platforms, and tour operators. Issue dynamic single-use virtual cards for flight and hotel reservations, lock spend to exact itinerary amounts and dates, eliminate foreign transaction fees with wholesale FX, and automate cancellation refund matching.
System Architecture & Flow
Traveler books flight or hotel package on your platform.
Platform creates dynamic virtual card locked to airline GDS / hotel PMS and exact fare.
Cross-border supplier charge converts at institutional interbank FX rate with 0% markups.
Card self-terminates after charge, and any airline cancellation refund auto-maps to booking.
1Generate Single-Use Card Bound to Travel Booking
Create an ephemeral single-use card with an exact transaction ceiling, active time window matching the booking window, and airline/hotel MCC restriction.
curl -X POST "https://api.sandbox.rookpayments.com/v1/cards" \
-H "Authorization: Bearer rk_test_..." \
-H "X-Program-ID: 7c9e6679-7425-40de-944b-e07fc1f90ae7" \
-H "Content-Type: application/json" \
-d '{
"account_id": "acc_ota_treasury_01",
"type": "single_use",
"spending_limits": [
{ "amount": 84500, "interval": "per_authorization" }
],
"controls": {
"allowed_mccs": ["3000", "3001", "3058", "4511"],
"valid_from": "2026-10-01T00:00:00Z",
"valid_to": "2026-10-02T23:59:59Z"
},
"metadata": {
"pnr": "K98ZX1",
"carrier": "Delta Air Lines",
"passenger": "Alexander Wright"
}
}'2Process Multi-Currency Booking with Wholesale FX
When an international airline or European hotel charges in local currency (EUR/GBP/JPY), Rook applies mid-market interbank FX conversion without retail foreign exchange surcharges.
curl -X GET "https://api.sandbox.rookpayments.com/v1/fx/quotes?base_currency=USD"e_currency=EUR&amount=75000" \
-H "Authorization: Bearer rk_test_..." \
-H "X-Program-ID: 7c9e6679-7425-40de-944b-e07fc1f90ae7"3Automated Refund & Cancellation Reconciliation
If a trip is cancelled, airline refunds return directly to the terminated virtual card. Rook's ledger automatically matches the refund to the original PNR metadata.
{
"event_id": "evt_ref_39812",
"type": "transaction.refund.processed",
"data": {
"card_id": "crd_ota_singl_9912",
"refund_amount": 84500,
"currency": "USD",
"original_transaction_id": "txn_delta_8819",
"metadata": {
"pnr": "K98ZX1",
"auto_reconciled": true
}
}
}