CBSA CARM
Commercial Accounting Declaration
CARM API (CAD XML)
Submit + parse (CAD-OUT / CAD-PP)
Automating CARM Commercial Accounting Declarations
When goods cross into Canada, the border release is only half of the customs story. The other half is accounting—declaring the value, tariff classification, and duties owed to CBSA after release. That filing used to be the paper B3 form, handled by a broker for a fee. Under CBSA’s Assessment and Revenue Management (CARM) system, it’s now the Commercial Accounting Declaration (CAD), filed electronically—and that means it can be automated.
We built the pipeline that does it.
The Challenge
CARM replaced decades of paper-and-broker customs accounting with a digital system, but the transition put the work on importers. Filing a CAD by hand through the CARM portal is slow and error-prone, and outsourcing it to a broker reintroduces the per-shipment fee CARM was supposed to make avoidable.
For an importer already carrying shipment data in software, re-keying that same data into a customs portal—or paying someone else to—is exactly the kind of duplicated effort that automation exists to remove. The goal was to file the CAD directly, under the importer’s own business number, straight from data the platform already held.
Our Approach
The CAD is a structured document, and CARM accepts it as XML through an API. That makes it a generation-and-transport problem: build a valid CAD from the shipment’s data, submit it to the CARM API, and interpret what comes back.
We built to the CARM specification—the correct tariff classification, country of origin, transport mode, valuation, and declaration references—so the XML we produce is one CARM accepts rather than one it bounces. Because the source data already lives in the platform, the declaration assembles itself; the importer reviews rather than retypes.
The Solution
The pipeline has three parts:
- CAD generation — a CARM-compliant Commercial Accounting Declaration XML built from the platform’s shipment and consignment data, with the constants (HS classification, duty treatment, transport mode, valuation code) handled correctly.
- API submission — the declaration transmitted to CBSA’s CARM API, with the declaration, application, and functional reference IDs tracked so every filing is auditable.
- Response parsing — CARM’s responses (CAD-OUT and CAD-PP) parsed and turned into a clear status, so the importer knows whether the declaration was accepted or needs correction without reading raw XML.
Status
The CARM CAD generation and response-parsing pipeline is built, with submission validated in test mode against the CARM specification. Live filing is pending completion of CBSA certification. This is the post-crossing accounting half of a complete direct-filing stack—paired with the IID and ACI pre-arrival pipeline, it lets an importer handle both ends of a Canadian import without a broker in the middle.
The Result
Customs accounting that once meant a portal session or a broker invoice on every shipment becomes a generated declaration the importer reviews and submits—filed under their own business number, from data they already maintain, with the response interpreted automatically.
Let's Solve Your Software Problem
We show up. On-site for discovery, kickoffs, training, and milestones—wherever the work takes us. No layers, no handoffs—just direct access to the engineers building your solution.
Proven Track Record
Organizations served across Texas and beyond
Integration Experience
APIs delivered across payment, inventory, and government systems
Years Experience
Enterprise software expertise our team brings to every project


