Table of Contents
What is FlyFun Forms?
FlyFun Forms is a companion app for general aviation pilots that generates pre-filled customs and immigration forms for your flights. Instead of hand-filling PDFs with the same passport details over and over, enter your crew and passenger information once, create your flight, and generate the correct forms with a single tap.
Important: FlyFun Forms generates forms — it does not submit them. It is your responsibility to review the generated forms for accuracy and send them to the appropriate authority via email, online upload, or any other method required by the destination airport.
Your personal data stays on your device, encrypted via iCloud — it’s only sent to the server momentarily to fill the form and is never stored.
Available on iPhone, iPad, and Mac.
Getting Started
Sign In
Sign in with your Apple ID or Google account. Your data syncs across all your devices via iCloud.
Add Your People
Start by adding yourself, your usual crew, and frequent passengers.
- Go to the People tab
- Tap + and choose how to add:
- Add Person — enter details manually
- Scan Document — point your camera at a passport or ID card’s machine-readable zone (MRZ). The app extracts name, date of birth, nationality, document number, and expiry automatically
- Import Contact — pull name, phone, email, and address from your device contacts
- Import from CSV — bulk import from a spreadsheet
For each person, add at least one travel document (passport or identity card) with the document number, issuing country, and expiry date. The app will automatically select the best document for each airport based on the region (Schengen, UK, etc.).
Add Your Aircraft
Go to the Aircraft tab and tap +. Enter the registration, type, and optionally link an owner from your people database and set a home base.
Create a Flight
- Go to the Flights tab and tap +
- Enter origin and destination airport codes (ICAO), departure and arrival dates and times
- Select your aircraft
- Choose crew and passengers from your people list
Tip: You can paste an ICAO flight plan string to auto-fill the route, times, and aircraft details.
Generating Forms
Once your flight is set up, scroll down to the Forms section. The app automatically determines which forms are required based on your destination airport.
- Fill in any extra fields if prompted (e.g., reason for visit for the UK)
- Tap Generate
- The filled form opens in a share sheet — email it to the airport, save it, AirDrop it, or print it
The app validates your data before generating and will tell you exactly what’s missing if anything is incomplete.
Remember: Always review the generated form before sending. The app fills in the data you provided, but you are responsible for ensuring it is correct and complete. Each airport or authority may have specific submission requirements — check with them for the accepted method (email, online portal, fax, etc.).
Supported Forms
| Destination | Form |
|---|---|
| UK airports (EG) | General Aviation Report (GAR) |
| French airports (LF) | Préavis Douane (Customs Notice) |
| Sion, Switzerland (LSGS) | Immigration Information |
| All other airports | ICAO General Declaration |
More airports and forms are added regularly.
Features
Passport & ID Scanning
On iPhone and iPad, use the camera to scan the MRZ strip on passports and identity cards. The app reads the encoded data and fills in the person’s details automatically. If the person already exists, you can choose to merge the new information.
Smart Document Selection
Each person can have multiple travel documents. When generating a form, the app automatically picks the most appropriate document based on:
- The airport’s region (a Schengen-country ID card for EU airports, a passport for the UK, etc.)
- Document expiry date (prefers the latest)
- Whether the document is marked as active
Time Zones
Flight times are stored in UTC but displayed in the local timezone of the relevant airport. The timezone picker shows UTC plus the origin and destination timezones. Forms are generated with the correct time reference for each airport authority.
Multi-Leg Trips
Create multiple flights as part of a trip. The app handles connecting flight references automatically — some forms at intermediate stops need to reference both your arrival and departure.
iCloud Sync
All your people, aircraft, and flight data syncs across your iPhone, iPad, and Mac via iCloud. Add a person on your phone, and they’re available on your Mac.
Contact Import
Import people from your device contacts. The app uses fuzzy name matching to detect duplicates and lets you choose to fill in missing fields or override existing data.
Privacy & Data
- Your personal data is encrypted on your device and in iCloud using Apple’s private CloudKit database
- Nothing is stored on our server — personal data is sent only to generate a form and is immediately discarded
- No tracking, no analytics on personal data
- You can delete your account at any time from Settings — this permanently removes all server-side data
Open Source
FlyFun Forms is open source. You can browse the code, report issues, and contribute on GitHub:
https://github.com/roznet/flyfun-forms
Troubleshooting
Form generation fails with validation errors
Check that all required fields are filled: crew and passengers need at least a name, date of birth, nationality, and an active travel document with a document number, issuing country, and expiry date.
MRZ scanning doesn’t detect my document
Ensure good lighting and hold the document steady. The MRZ zone (the two or three lines of characters at the bottom of the ID page) should be clearly visible. Some older or damaged documents may not scan reliably.
Data isn’t syncing between devices
Make sure iCloud is enabled and you’re signed into the same Apple ID on all devices. Check Settings → Apple ID → iCloud → FlyFun Forms is toggled on.
“Not supported on this Mac” error
Make sure you’re running the latest version of the app from the App Store.
Questions & Feedback
Have a question, found a bug, or want to request a feature? Leave a comment below and we’ll get back to you. You can also open an issue on GitHub.