Importing a spreadsheet into TaxCycle
TaxCycle takes a two-column spreadsheet of field codes and values through Data → Excel Import → Import Excel Worksheet. The step that catches almost everybody is that a form import resolves its field codes against whatever form is open, so opening the right form first is not tidiness: it decides whether the file lands or every row is refused.
The menu path
With the return open, go to the Data tab, then Excel Import, then Import Excel Worksheet. TaxCycle opens a file dialog titled “Import from an Excel spreadsheet.” Choose your file and it runs, then shows a report of what it took and what it refused.
The spreadsheet itself is simple: a column of field codes, and a column of values beside them. If you built it from TaxCycle’s own template export it will also carry Line#, Description and Data Type columns, and those are fine to leave in place.
The part that catches everybody: the open form decides
A form import resolves its field codes against the form that is currently open. Import a medical expenses file while a T5 is on screen and TaxCycle refuses it line by line — not a valid field code, on every row — even though every code in the file is correct.
We watched this happen on 25 August 2026. The same file, unchanged, imported perfectly the moment the Medical Expenses worksheet was the form in front of us. Nothing about the spreadsheet was wrong. TaxCycle’s own documentation tells you to open the form first; what it does not tell you is that the failure looks exactly like a bad file, which is why people spend an hour checking their codes.
If every row is refused, suspect the form before you suspect the file. A handful of refused rows in an otherwise successful import is a codes problem. All of them at once is almost always the wrong form being open.
Slip files behave differently and more forgivingly. A transposed slip worksheet carries a prefix in its first cell — T4Slips.T4, for instance — which anchors its codes absolutely rather than relative to what is on screen.
Getting to the right form quickly
F4 opens Fast Find. Type a keyword, and if the form you want is the first result press Enter. Choosing a keyword specific enough that your form comes first is worth doing deliberately: TaxCycle reorders Fast Find results between versions, so a habit built on “it is the third one down” quietly breaks on an update.
These are the keywords we have confirmed on a live TaxCycle, each landing on the named form as the first result:
| What you are importing | Fast Find keyword | The form it opens |
|---|---|---|
| Medical expenses | Medical | Medical Expenses worksheet |
| Donations | Donations | Donations worksheet, feeding Schedule 9 |
| Child care | T778 | T778, Child Care Expenses |
| Rental | T776 | T776, Statement of Real Estate Rentals |
| Moving expenses | T1M | T1-M, Moving Expenses Deduction |
| Self-employment | T2125 | T2125, Business or Professional Activities |
| RRSP contributions | RRSP contributions | RRSP Contributions worksheet |
| Student loan interest | Student loan | Student Loan Interest worksheet |
| Support payments | Support payments | Support Payments worksheet |
| Carrying charges | Carrying charges | The Schedule 4 carrying charges area |
One of those is worth calling out on its own. The moving expenses form is found as T1M, not T1-M. Fast Find returns nothing at all for the hyphenated spelling, which is the spelling on the CRA’s own form. The tab, the title and the search all read T1M.
When the report comes back with refusals
TaxCycle names the codes it would not take. Read them rather than re-running: a code refused on the correct form is usually one of three things.
- A row that does not exist yet. Expandable tables — a list of medical expenses, a list of donations — only have field codes for rows that have been created. There is nothing to import into row eleven of a table with three rows.
- A code from a different tax year. Field codes move between modules. A 2024 code is not guaranteed to be the 2025 one.
- A calculated field. Some fields are worked out by the return and are not yours to write into.
If you need the codes themselves rather than a guess at them, TaxCycle will export them for you.
Where this came from
The menu path and the template format are documented by TaxCycle: Excel Import Forms and Excel Import Slips. The open-form behaviour, the refusal it produces and the Fast Find keywords above come from running real imports on real returns through August 2026, and the dates are on them because that is the only thing that makes a guide like this worth anything.
What we do about it
KeyGlance reads a client’s dropoff, builds the field-code spreadsheet, opens the right form and runs this import on your own Windows machine. Every value stays linked to the spot on the page it was read from, so you check it against the document instead of retyping it. It never files anything with the CRA.
Questions we get asked about this
Why does TaxCycle say “not a valid field code” for every row?
Almost always because the form those codes belong to is not the form on screen. A form import resolves field codes against the open form, so a medical worksheet file imported with a T5 in front of you is refused row by row even though every code in it is correct. Open the form first, then import.
Does the open form matter for slips too?
Less. A transposed slip file carries its own prefix in the first cell, such as T4Slips.T4, which anchors the codes absolutely rather than against whatever is open. It is still worth navigating to the slip, but a slip file is far more forgiving than a form worksheet.
What does the import file itself have to look like?
Two columns are enough: the field code, and the value. TaxCycle's own exported template gives you more than that — FieldCode, Data, Line#, Description and a Data Type column for dropdowns and checkboxes — and it will import back with the extra columns still in place.
Can I import into an expandable table, like a list of medical expenses?
Yes, but the rows have to exist before the codes do. TaxCycle will not export field codes for an expandable table unless you have created at least one blank row in it first, and there is no code to import into a row that was never made.
All guides