New Expensify includes integrated travel features powered by Spotnana, allowing you to book flights, hotels, and rental cars while automatically creating expense reports for your trips.
Key Features
New Expensify travel management offers:
Book Travel Book flights, hotels, and rental cars in one place
Manage Trips View and manage all your upcoming and past trips
Auto-Expense Travel expenses automatically added to reports
Policy Compliance Ensure travel bookings comply with company policies
Benefits
Save Money
Access negotiated corporate rates and compare prices across providers to find the best deals:
// Source: src/pages/Travel/ManageTrips.tsx
const tripsFeatures : FeatureListItem [] = [
{
icon: illustrations . PiggyBank ,
translationKey: 'travel.features.saveMoney' ,
},
{
icon: illustrations . TravelAlerts ,
translationKey: 'travel.features.alerts' ,
},
];
Travel Alerts
Receive real-time notifications about:
Flight delays and cancellations
Gate changes
Check-in reminders
Trip updates
Seamless Expense Management
Travel expenses are automatically:
Added to your expense reports
Categorized correctly
Attached with receipts and details
Ready for submission and approval
Getting Started
Accept Terms
Review and accept the Spotnana travel terms and conditions
Set Up Profile
Add your traveler information (name, date of birth, contact details)
Add Payment Method
Link a payment method for booking travel
Book Your First Trip
Search for and book flights, hotels, or rental cars
Travel Access
Travel features are workspace-specific. Access travel through:
// Source: src/pages/Travel/MyTripsPage.tsx
function MyTripsPage ({ route } : MyTripsPageProps ) {
const policyID = route . params ?. policyID ;
const { translate } = useLocalize ();
return (
< AccessOrNotFoundWrapper policyID = { policyID } >
< ScreenWrapper
includeSafeAreaPaddingBottom = { false }
shouldEnablePickerAvoiding = { false }
shouldEnableMaxHeight
testID = "MyTripsPage"
shouldShowOfflineIndicatorInWideScreen
>
< HeaderWithBackButton
title = { translate ( 'travel.header' ) }
shouldShowBackButton
/>
< ManageTrips policyID = { policyID } />
</ ScreenWrapper >
</ AccessOrNotFoundWrapper >
);
}
You must have access to a workspace with travel features enabled. Contact your workspace admin if you need travel access.
Accepting Terms
Before using travel features, accept the Spotnana terms:
// Source: src/libs/actions/Travel.ts
/**
* Accept Spotnana terms and conditions to receive a proper token used for authenticating further actions
*/
function acceptSpotnanaTerms ( domain ?: string , policyID ?: string ) {
const optimisticData : Array < OnyxUpdate < typeof ONYXKEYS . NVP_TRAVEL_SETTINGS | typeof ONYXKEYS . TRAVEL_PROVISIONING >> = [
{
onyxMethod: 'merge' ,
key: ONYXKEYS . NVP_TRAVEL_SETTINGS ,
value: {
hasAcceptedTerms: true ,
},
},
{
onyxMethod: 'merge' ,
key: ONYXKEYS . TRAVEL_PROVISIONING ,
value: {
isLoading: true ,
errors: null ,
},
},
];
const successData : Array < OnyxUpdate < typeof ONYXKEYS . TRAVEL_PROVISIONING | typeof ONYXKEYS . COLLECTION . POLICY >> = [
{
onyxMethod: 'merge' ,
key: ONYXKEYS . TRAVEL_PROVISIONING ,
value: {
isLoading: false ,
},
},
{
onyxMethod: Onyx . METHOD . MERGE ,
key: ` ${ ONYXKEYS . COLLECTION . POLICY }${ policyID } ` ,
value: {
travelSettings: {
hasAcceptedTerms: true ,
},
},
},
];
return API . makeRequestWithSideEffects ( SIDE_EFFECT_REQUEST_COMMANDS . ACCEPT_SPOTNANA_TERMS , params , { optimisticData , successData , failureData });
}
Requesting Travel Access
If travel isn’t available for your workspace, request access:
// Source: src/libs/actions/Travel.ts
function requestTravelAccess () {
const optimisticData : Array < OnyxUpdate < typeof ONYXKEYS . NVP_TRAVEL_SETTINGS >> = [
{
onyxMethod: 'merge' ,
key: ONYXKEYS . NVP_TRAVEL_SETTINGS ,
value: {
lastTravelSignupRequestTime: Date . now (),
},
},
];
API . write ( WRITE_COMMANDS . TRAVEL_SIGNUP_REQUEST , null , { optimisticData });
}
Travel access requests are reviewed by your workspace administrator. You’ll be notified when access is granted.
Book a Demo
Want to see travel features in action? Book a demo:
// Source: src/pages/Travel/ManageTrips.tsx
const navigateToBookTravelDemo = () => {
Linking . openURL ( CONST . BOOK_TRAVEL_DEMO_URL );
};
< Button
text = { translate ( 'travel.bookDemo' ) }
onPress = { navigateToBookTravelDemo }
accessibilityLabel = { translate ( 'travel.bookDemo' ) }
style = { [ styles . w100 , styles . mb3 ] }
large
/>
Travel Components
The travel interface includes:
Feature List
Highlights key travel benefits:
// Source: src/pages/Travel/ManageTrips.tsx
< FeatureList
menuItems = { tripsFeatures }
title = { translate ( 'travel.title' ) }
subtitle = { translate ( 'travel.subtitle' ) }
illustration = { LottieAnimations . TripsEmptyState }
illustrationStyle = { [ styles . mv4 ] }
illustrationBackgroundColor = { colors . blue600 }
titleStyles = { styles . textHeadlineH1 }
contentPaddingOnLargeScreens = { styles . p5 }
/>
Quick access to book travel:
// Source: src/pages/Travel/ManageTrips.tsx
< BookTravelButton
text = { translate ( 'travel.bookTravel' ) }
shouldRenderErrorMessageBelowButton
setShouldScrollToBottom = { setShouldScrollToBottom }
activePolicyID = { policyID }
large
/>
Travel Policies
Workspace administrators can configure travel policies:
Approval requirements for bookings
Spending limits by category (flights, hotels, cars)
Preferred vendors and airlines
Class of service restrictions
Advance booking requirements
Bookings that don’t comply with workspace travel policies may require additional approval or may be rejected.
Payment Methods
Supported payment methods for travel:
Company Credit Cards : Use workspace-linked cards
Personal Credit Cards : Personal cards for reimbursement
Expensify Card : Use your Expensify Card for instant categorization
Trip Types
Book different types of travel:
Flights Domestic and international flights with all major airlines
Hotels Hotels and accommodations worldwide
Rental Cars Rental cars from major providers
Mobile Support
Access travel features on mobile:
Book travel on iOS and Android
Receive push notifications for trip updates
View trip details offline
Check in for flights
Access boarding passes
Integration with Expenses
Travel bookings automatically create expenses:
Book Travel : Complete your booking in Expensify
Auto-Expense : Expense automatically added to a report
Receipt Attached : Booking confirmation attached as receipt
Ready to Submit : Expense ready for submission when trip completes
Approval : Follows your workspace approval workflow
Support
Need help with travel?
Contact Expensify Concierge for booking assistance
Check trip details in the My Trips page
Review booking confirmations in your email
Contact Spotnana support for travel-specific issues