Building an integration between an ERP and the HMRC customs stack is a system-of-systems problem. Here is a stable shape.
Map to a single canonical record
Model the consignment once in your ERP. Every field that ends up in CDS, ICS2, GVMS or NCTS should trace to a canonical column with a documented format.
Route through TSS
TSS is the intended input layer. Push canonical records through it rather than trying to file to each backend directly. That gives you one contract to test against, not four.
Version your commodity codes
Commodity codes change. A versioned lookup table protects downstream systems from a code that was valid last quarter but not this one.
Reconcile after routing
Once TSS has fanned out to CDS, ICS2, GVMS and NCTS, pull back the identifiers each system returned and store them against your canonical record. This is what makes audits fast. The TSS and CDS integration guide covers the identifier map.
Instrument the seams
Log at each hop, not just at the boundary. When a check-in is rejected weeks later, the seam is where the answer lives.
Practical takeaway
Design for reconciliation, not just submission. That is the difference between an integration that scales and one that survives one audit.
Ready to plug an ERP into all four HMRC systems the clean way? Watch a demo to see the iCustoms.ai integration path.







