Small businesses buying trade-show banners suddenly became "importers." We examine CARM's goals, costs, procurement history, onboarding challenges, and whether a different actor model could have achieved the same objectives.
You are probably reading this because you ordered something from outside Canada—a trade-show banner, promotional pens, replacement parts, inventory, or equipment—and suddenly found yourself being asked to create a CARM account.
If you are a regular commercial importer, CARM may be something you should become familiar with.
If you are a small business owner who occasionally buys goods from overseas, your reaction is likely:
Why am I suddenly participating in a customs accounting system?
This article explains what CARM is, why it exists, what problems it was intended to solve, how much it cost, why so many importers are frustrated, and what lessons future government technology projects can learn from it.
We also propose an alternative architecture that could have achieved many of the same objectives while requiring far less participation from occasional importers.
CARM (CBSA Assessment and Revenue Management) is the Canada Border Services Agency's modernization initiative for commercial imports.

Its goals include:
Official CBSA resources:
If your company regularly imports commercial goods, registering and understanding CARM is generally advisable.
Public Service Announcement: If your organization imports inventory, equipment, or goods on a regular basis, do not wait until a shipment is delayed to understand your CARM obligations. The administrative overhead is real, and becoming familiar with the system early is preferable to resolving issues under time pressure.
That said, many small businesses are not regular importers.
They are simply buyers.
And that distinction turns out to be important.
Before criticizing the project, it is worth acknowledging that CBSA had legitimate objectives.
Canada needs to:

These are not optional requirements.
A modern customs administration needs modern systems.
The question is not whether CBSA should have modernized.
The question is whether the chosen model was the only way to achieve those objectives.
Imagine a small Canadian business orders:
from an overseas supplier.

The owner thinks:
I bought marketing materials.
The customs system thinks:
A commercial importer has imported goods into Canada.
Legally, both statements are true.
Operationally, they are very different.
The owner is not running an import business.
The owner is buying things.
Yet the architecture increasingly treats these users as active customs participants.
This is where much of the frustration originates.
Most discussions about CARM focus on:

We think there is a deeper question.
What is an importer?
Consider two examples.
A multinational retailer importing hundreds of containers every month.
Legally: Importer
Operationally: Importer
Mentally: Importer
A small business ordering a trade-show banner from overseas.
Legally: Importer
Operationally: Purchaser
Mentally: Customer
The project appears to treat these two actors as members of the same category.
That decision may seem minor.
It is not.
Once that assumption enters the design, everything downstream begins to make sense:
The system behaves logically.
But only if the underlying definition is correct.
According to publicly available CBSA expenditure reports:

Sources:
CBSA Expenditure Report: https://www.cbsa-asfc.gc.ca/agency-agence/reports-rapports/carm-gcra/expenditures-depenses-eng.html
Public records also indicate that Deloitte was the primary implementation partner for the project and accounted for the overwhelming majority of CARM-specific contract expenditures.
Contract references:
CanadaBuys: https://canadabuys.canada.ca/
The purpose of citing these figures is not to argue that modernization should be free.
Large government transformations are expensive.
The more important question is whether enough effort was invested in challenging foundational assumptions before implementation.
Importantly, concerns about CARM are not limited to importers.
CBSA's own audit materials identified risks related to:
Internal Audit:
https://publications.gc.ca/collections/collection_2023/asfc-cbsa/PS38-123-2023-eng.pdf
Parliamentary reviews and committee hearings also documented concerns raised by industry stakeholders.
House of Commons Report:
https://www.ourcommons.ca/Content/Committee/441/CIIT/Reports/RP13042197/ciitrp17/ciitrp17-e.pdf
This is important because it changes the narrative.
The story is not:
Importers complained.
The story is:
Multiple stakeholders, including government oversight processes, recognized significant adoption and readiness challenges.

What if we started from the transaction instead of the importer account?
Today, much of the workflow can be summarized as:
Importer → Register → Delegate → Participate → Import
What if it looked more like:
Purchase → Duty Order Generated → Carrier Confirmation → Government Ledger Updated → Importer Notified
In this model:
But participation becomes optional for many occasional importers.
Suppose Canada provided a Duty Order API.
When a shipment is prepared:
Vendor → submits transaction details
Government → calculates duties and taxes
Government → issues Duty Order ID
Vendor → collects funds
Carrier → confirms shipment
Government → updates importer ledger
The importer only interacts with the system when:
The account still exists.
The friction largely disappears.
This is not presented as a replacement proposal.
It is presented as an example of how the same policy objectives might be pursued using a different architectural model.
The phrase:
Nobody gets fired for picking Deloitte.
exists because procurement often rewards perceived safety.
But public-sector technology projects should not be judged primarily by:
They should be judged by whether the resulting system successfully balances the needs of all participants.
The lesson from CARM may not be about implementation.
It may be about definitions.
A project can spend hundreds of millions of dollars implementing a model that was never properly challenged.
The most expensive software defects are often not found in code.
They are found in assumptions.
Before debating:
we would have asked:
What is an importer?
And more importantly:
Which importers actually need to participate?
These are ontology questions.
Identity questions.
Actor-model questions.
They are often less visible than implementation questions.
They are also frequently more important.
CBSA had a legitimate problem to solve.
Importers have legitimate frustrations.
Both statements can be true simultaneously.
The purpose of this article is not to assign blame.
It is to highlight a question that deserves examination:
Did CARM's architecture inherit unnecessary complexity from the way it defined its primary actors?
Because if the answer is yes, then the most valuable contribution to future public-sector projects may not come from writing better software.
It may come from asking better questions before the software is written.