How to get into Canada via NAFTA as a Software Engineer

Apologies if this isn’t the right forum, I’m happy to have this moved.

I’ve decided that my popular reddit post needs a new home, so I’m reposting it here.

So it’s been a while since I first tried this. There were a lot of guides for going in the other direction, but not a whole lot of information on going from the US to Canada. In fact, back in the day. you could have seen some posts that suggest doing this is not possible - but it is.

Now that I’ve finally gotten to writing up my story of how I got out of the US, I’ve decided that it would be more helpful if, instead of just telling my story, I wrote this up as a guide to help others use NAFTA to get into Canada. (While there probably are some slight differences, I expect that much of this is still applicable to Mexican citizens who want to move to Canada as software engineers as well as fellow US citizens.)

To start with, it’s very common to call them TN or TN-1 on both sides of the border. Actually, TN-1 is specific to the US version; Canada calls their version a R204(a) T23 work permit.

It’s also common to refer to this status as a visa (see for example Tutorial: Moving from Canada to America as a software developer | Ian Chan's Blog which is my inspiration for this guide) but, at least as far a IRCC is concerned, it is not. Under Canadian rules, a visa is just to allow entry into Canada. US citizens already can enter Canada without a visa, so they don’t get one under NAFTA. Instead, what they get is a temporary work permit.

It’s temporary in the sense that the work permit expires after a certain amount of time and has to be renewed.’

Basically, you need the following to get your work permit:

Your original University/College Diploma

Your US passport

An job offer letter with a start date

The job description, outlining your duties

A copy of your resume/CV

Letters from your employers (either your supervisor/manager or from your HR) detailing how long you used to work for them, and what your duties were there. Most likely, your letters won’t have any NOC codes on them. NOC codes are specific to Canada and a US employer won’t necessarily know what they are. This was fine.

A copy of the receipt showing that the employer paid a $230 CAD compliance fee (more on what this is later)

$155 CAD to pay the work permit fee. (You can pay this with a US credit card or a US debit card if you have it. I don’t know if they accept US cash.)

One thing that you won’t need: a filled out application form. When you apply at the border, you just bring your documents. You don’t need an actual application.

Also, I brought copies of my bank and 401k statements to show that I had money saved up, and a copy of my mortgage contract to show that I owned a house in the US that I could go back to. I was never asked for these and didn’t need them. (Yes, I brought them both times I applied.) Neither did I need a copy of my university transcript. However, I did bring and show a copy of my resume.

(Note that it’s possible to apply for a work permit through NAFTA in the mail. There is a visa office in New York City that handles these applications for everyone in the US, as well as one in Mexico City to handle the applications from that country. It’s possible that you’ll need some sort of application form if you apply by mail; but I avoided this as I read that it would take months.)

A lot of fuss seems to be made in the US over which category to apply for when getting TN-1. I was never asked that question by the Canadian border officials. I just showed them my documents, showing that I was hired as a software engineer, and that was that. Is a software engineer under the Engineer category or under the Computer Systems Analyst category? I didn’t know then and I still don’t know now. My degree says “Computer Science” on it, does not have the word engineering, and if you look at my transcript there are no software engineering or other engineering courses on it. It simply wasn’t a problem for me.

I also had a job offer that was for a permanent position. Actually, I’ve done this twice, and both offers were for permanent positions. Not a problem. The first time, I had a letter from my employer stating that they were only asking for a work permit from dates XX/XX/XXYY to YY/YY/YYXX. The second time I did this, we forgot about this. But it wasn’t an issue - the border official asked me how long it was for, I answered, then I was asked if there was anything written in my application packet stating how long it was for, I said there wasn’t, and I was told that it was no problem. Even so, it’s probably better not to forget to include the request duration of the work permit somewhere. (It could just be a separate letter signed by your employer.)

Also, the first time I applied, my job offer and my letter (with the dates etc) were signed by two different people from my employer. (The first was signed by the department head who was hiring me; the second was signed by a person in HR.) That wasn’t an issue.

I also was never asked about being a computer programmer (vs being a CSA or a SWE), nor did I have to deal with any “Computer Programmers do not qualify for NAFTA” remarks. Also, the first time I tried this, my job title actually used the term “developer” instead of engineer, but my employer wrote a signed letter that explained that I was being hired as a software engineer. Being called a software developer was never a problem for me, but YMMV.

I applied at a land border, crossing over in a taxi. I told the official at the window that I was applying for a work permit, and they directed the taxi to go park at secondary inspection. We walked in, I explained who I was and that I was applying for a work permit. I handed over my passport and was told to wait. (I was permitted to go back out to the parking lot to pay for my taxi, who then turned around and returned to the US.)

I was called pretty quickly, and I handed over my application packet of documents. Then I sat back down and waited. I was called back a few times to answer a couple of questions. The second to last time, I was directed to the cashier window to pay the $155 CAD fee. After I did this, I was called the final time and my documents and passport were returned to me. I also received my work permit, printed on a sheet of A4 paper.

The first time I got the permit, it was stapled to my passport and then folded to fit inside. The second time, I was just handed the permit.

After I was done, the border officials were kind enough to call a taxi for me to pick me up from secondary inspection and take me to my destination.

It turns out that the rules changed in 2015. Prior to this, it appears that you really only need a job offer letter and the job description from your new Canadian employer to apply. You could handle the remaining documentation requirements yourself. However, afterwards it became necessary for any potential employer to fill out a bunch of a paperwork online through a special government web portal and upload copies of documents (including your job offer letter) and pay a $230 CAD compliance fee. My guess is that the new fee helps pay for the labour of having the border officers look up and verify that the employer is real and that the job offer is real. Once this process is complete, your employer will be able to send you a copy of the receipt showing that the fee was paid. It will have a number on it; you’ll need this number in order to be able to apply for the work permit.

One nice thing about Canada is that a R204(a) T23 work permit holder’s spouse is allowed to obtain an open work permit and work in Canada. Those in the US with TD status (e.g. spouses of people with TN-1 status) aren’t allowed to work.

Note also that USMCA hasn’t changed anything regarding NAFTA Professionals. The process is going to stay exactly the same under the new treaty.

I found getting a bank account in Canada to be a straightforward process. I actually got one before I applied for my work permit - I simply visited Canada, walked into a branch, showed my US passport and US driver’s license, and filled out a bunch of forms and walked out with my new bank account and debit card.

Getting a SIN (Social Insurance Number, the Canadian version of the SSN) is also straightforward. I just walked into a Service Canada branch with my US passport and my work permit, told them that I was applying for a SIN as a temporary worker, and they took care of the rest.

Housing might be a bit tricky. I had a much easier time of it - when I first came, my first employer here arranged something for me temporarily until I could find my own place. (The second time I did this, I already had a place so housing wasn’t a worry.) If you aren’t so lucky however, AirBnB is in Canada too. To rent the first time, I had to provide a copy of my job offer (to show that I had money) and my SIN (for a credit check). Technically this isn’t required, but doing so saved me some money in that I had a lower security deposit.

Getting a Canadian phone number was pretty trivial. Just walked into the mall, I bought a SIM card for my unlocked phone along with a prepaid plan. (It was $65 CAD/mo) but by the time I finally got around to doing this, I also had a Canadian credit card and decided to get a new mobile as well. (I put this off for a long time because Google Voice worked so well up here.)

There are many posts that point out concern from going from TN-1 to a green card in the US.

Going from NAFTA to permanent residency in Canada isn’t a big deal. I was never asked about my intention to apply for PR when I got my work permit. Previously, when I had visited to get my bank account I did mention to the official that I was considering Express Entry. The second time I applied for a work permit, I had already accepted my ITA (invitation to apply) for PR, but I was still not asked about this.

Some notes:

The last time I tried this was in 2019, so I wouldn’t be aware of any post-COVID changes to the above process. Would love to hear feedback about it though.

The first time I tried this I got the job offer while still outside of Canada, and it was hard - I had to go through a specialized recruiting company before I could even find anyone who would even bother to interview me.

After moving to Canada, I used transferwise (now known as just Wise) to move money between my US and Canadian bank accounts. BMO had no problems with me applying as a visitor or as a US citizen. They did need my SSN so that they could report my account to the IRS, mind you.

Surprisingly, I haven’t had any issues with a job title that includes the word Engineer. I was officially titled as a Software Developer in my first Canadian job, and as a Software Engineer in my second. This did surprise me, as I thought I had read somewhere that Microsoft had been sued over it and lost. That said, there probably is a difference between telling IRCC/CBSA that you are fit the software engineer occupation for the purpose of qualifying under NAFTA and using the title of Software Engineer professionally.

Also note that work experience is not a requirement under the treaty itself (or at least it wasn’t when I last went through this process). So if you can obtain the job offer, and meet the other requirements (e.g. right degree and diploma, etc) then it should work.

Remember that the Canadian employer has to submit documents to IRCC first before you obtain the work permit - so it’s easy for CBSA to confirm that the offer is real.

The hard part might be obtaining the job offer without any work experience. There are a lot of new CS grads out there who can’t find jobs (even in their home countries) because they lack work experience (e.g. with internships and the like). With the tech market having it’s bubble burst in 2022, I can only imagine that this has gotten much harder.

Thanks for reading! If you have any questions about the process or about Canada in general, please let me know and I’d do my best to respond. Good luck to everyone else who tries this.

If you’re curious, you can still find the comments on my original post at How to get into Canada via NAFTA as a Software Engineer : IWantOut

1 Like

Great, comprehensive, articulate, detailed outline of the process. Thanks.

Thanks for this comprehensive and optimistic post. I had a question about the education requirements. Do you know if a CS degree is required? My undergrad was in a different subject (evaluated by WES as “Individualized Studies”) but that was long before I switched into this field. I have a software bootcamp diploma, though that does not satisfy the two-year program requirement. I have 15+ years of work experience and some of that is related to software engineering (mainly Product Management.)

Any help is greatly appreciated! Thanks so much.

My understanding is that education and work experience must be relevant, which is to say related to the field. I have heard of folks who had degrees in Math successfully going the other way (Canadians going to the US), but Math is at least related to CS.

From “Individualized Studies” I can’t make out how relevant this different subject would be - but perhaps you could include a transcript with names and descriptions of courses in an attempt to explain how it’s relevant to Software or to Engineering. Perhaps the bootcamp course might even help here; for a Maths degree you might be able to explain that you took a bunch of courses that help with mathematical algorithms and theorems, and the bootcamp credential allowed you to build on that foundation and turn those algorithms into actual working code.

But also note that Product Management is very different from Software Engineering, and the experience is not interchangeable if it’s irrelevant. So your PM experience likely wouldn’t count against the three years experience required for NAFTA as a Computer Systems Analyst. (Note though that I didn’t have to face this requirement anyways, as going in as a Software Engineer meant I applied under the Engineer category, which has no such experience requirement.)

1 Like

That’s all great info. About the Computer Systems Analyst vs. Engineer categories - do you apply based on how the employer codes the job for the IRCC? Or is it something different? If I were offered a job as a software engineer / developer, could I reasonably expect to apply under the Engineer stream as well? Thanks again

As I wrote I still don’t know if I was accepted under the Engineering or CSA category. I suspect it’s based on how the employer presents the job in public and open sources (e.g. keywords in the job description, the specific duties, etc.)

For what it’s worth though, the first time I applied I had drafted the letter (the one HR signed) as for the CSA and HR changed it to refer to Software Engineer instead, to keep their messaging consistent with IRCC. I went with that template the second time as well.

1 Like