Import TfL journey history safely
The best file depends on how you paid. The goal is a statement containing the complete route and entry and exit times for each trip.
Choose the format by payment type
Use the journey-history CSV. It contains structured journey rows and can normally be matched to the Oyster number in the filename.
Use the detailed PDF statement. Some contactless spreadsheet exports do not include complete entry and exit times needed for delay calculations.
A screenshot is useful for diagnosing a display problem, but it is not a reliable source for importing several journeys. A bank or card statement is also not enough because it normally shows a daily TfL charge rather than each gate-to-gate trip.
Download your TfL statement
- Sign in on TfL's website. Go directly to the official TfL account service and choose the Oyster or contactless card you used.
- Open journey history. Select a date range that includes the trips you want to check while keeping the 28-day claim deadline in mind.
- Choose the export. Download CSV for an Oyster card or the detailed PDF for a contactless payment card.
- Keep the original. Store it somewhere private until you have checked the imported rows. It remains the source record if a journey needs correction.
Import, then inspect the result
Open Add journeys, choose the statement and wait for the recognised-row summary. Importing the same statement again is safe: the dashboard identifies duplicates from the card, date, route and times rather than creating a second copy.
Before acting on a suggestion, check a few rows against the original statement. Confirm the date, route, start time, end time and fare. The service may still be detected asynchronously from TfL journey data, so a newly imported row can briefly show that it is being checked.
Use manual entry only for an isolated journey that cannot be read from a statement. Manual records are easier to mistype and should be compared with the official history.
How card matching works
An Oyster export filename normally begins with its 12-digit Oyster number followed by the export date and time. The dashboard uses that leading number as the card label, so later imports from the same Oyster remain filterable together.
If a valid CSV has no recognisable card number, the rows are grouped under CSV Upload. You can still review them, but they will not be automatically associated with an existing Oyster label. Contactless PDF statements use the payment-card label available in the document, typically the final digits rather than a full card number.
Do not rename unrelated files to look like an Oyster export. Card grouping is for organisation; it does not prove which card was used.
Common import problems
No journeys recognised
Check that the file is an original TfL export rather than a printed web page, screenshot or bank statement. Scanned image-only PDFs do not contain text for the browser to read.
Times are missing
Download the detailed PDF for contactless journeys. A summary export may contain charges without the entry and exit times needed to calculate a delay.
The route or service is wrong
Open journey details and correct the origin, destination, time or service using the original statement. A service marked for review should not be claimed until that uncertainty is resolved.
An older journey has disappeared
Plans have different history windows. Export a JSON backup before deleting browser storage or moving devices, and sign in if you want supported journey history to sync.
Choose how much to store
Signed-out analysis stores journeys in that browser only. Signing in saves the data to your private account so it can sync across devices. Paid email import receives only messages you deliberately forward; it does not provide mailbox access.
Statements can reveal travel patterns, so treat them as personal data. Import on a device you trust, avoid sharing the original file publicly, and use Account > Backups & data when you want to export or delete records.
Ready to check a statement?
You can import locally without creating an account. The demo remains available if you would rather explore first.
Add journeys