CUSDEC Customs declaration message (D12A)

This is the standard EDIFACT D12A spec, with 52 loops and 165 segment positions, as OpenEDI JSON, an ediFabric C# template and an ediFabric Native model. To change it for a trading partner, customize it in the EDI Spec Builder.

Loading the spec…
The spec as an OpenAPI 3 schema with x-openedi-* extensions, for ediFabric Native, ediFabric Cloud and the EDI Spec Builder. Download OpenEDI (125 KB) Generate classes
The ediFabric .NET template, class TSCUSDEC. It needs the common segments, composites and codes of EDIFACT D12A, one download for every transaction in the version. Download C# (2 KB) Common files (68 KB)
The intermediary model ediFabric Native loads with set_map. Native supports X12 today, and EDIFACT is coming. Download Native (1 KB)

Use the CUSDEC spec in your code

ediFabric .NET

Add the C# template and its common files to your project, or reference the template NuGet package, and read CUSDEC files into TSCUSDEC objects. See ediFabric .NET.

ediFabric Native

Native supports X12 today, and EDIFACT is coming. When it's available, map version D12A to this Native model with set_map to parse CUSDEC files to JSON from Python, Java, C or C#. See ediFabric Native.

OpenEDI

Select Customize in Spec Builder to copy the spec under your own name, change it for your partner, and parse files against it in EdiNation, ediFabric Native or ediFabric Cloud. Read about OpenEDI.

Generate CUSDEC classes in Python, Java, Node.js, Go, Rust or C

The OpenEDI file describes each CUSDEC as JSON. To work with CUSDEC data as typed objects, generate classes from the OpenEDI file in your language; the root class is TSCUSDEC. The classes keep the loops, segments, lengths and code lists, but not the EDI data formats. Read more in Generate a class from OpenEDI.

Python: datamodel-code-generator. Node.js: openapi-typescript. Java, Go, Rust and C: OpenAPI Generator.

CUSDEC structure

Loops and segments of the standard CUSDEC, with their usage and maximum repeats.

IDNameUsageMax use
UNHUNHMandatory1
BGMBGMMandatory1
CSTCSTOptional1
LOCLOCOptional99
DTMDTMOptional15
GEIGEIOptional25
FIIFIIOptional1
MEAMEAOptional5
EQDEQDOptional999
SELSELOptional999
FTXFTXOptional99
Loop RFFRFFOptional99
RFFRFFMandatory1
DTMDTMOptional1
Loop PACPACOptional10
PACPACMandatory1
Loop PCIPCIOptional999
PCIPCIMandatory1
FTXFTXOptional1
Loop TDTTDTOptional5
TDTTDTMandatory1
TPLTPLOptional1
Loop DOCDOCOptional99
DOCDOCMandatory1
DTMDTMOptional2
LOCLOCOptional1
Loop NADNADOptional99
NADNADMandatory1
RFFRFFOptional10
CTACTAOptional1
COMCOMOptional5
Loop TODTODOptional1
TODTODMandatory1
LOCLOCOptional2
FTXFTXOptional1
Loop MOAMOAOptional25
MOAMOAMandatory1
Loop CUXCUXOptional1
CUXCUXMandatory1
DTMDTMOptional1
Loop EFIEFIOptional99
EFIEFIMandatory1
CEDCEDOptional99
COMCOMOptional9
RFFRFFOptional9
DTMDTMOptional9
QTYQTYOptional9
UNSUNSMandatory1
Loop DMSDMSOptional999
DMSDMSMandatory1
DTMDTMOptional1
MEAMEAOptional5
Loop MOAMOAOptional25
MOAMOAMandatory1
Loop CUXCUXOptional1
CUXCUXMandatory1
DTMDTMOptional1
Loop TODTODOptional1
TODTODMandatory1
LOCLOCOptional2
FTXFTXOptional1
Loop NADNADOptional10
NADNADMandatory1
Loop DOCDOCOptional10
DOCDOCMandatory1
DTMDTMOptional2
LOCLOCOptional1
Loop PACPACOptional10
PACPACMandatory1
Loop PCIPCIOptional999
PCIPCIMandatory1
FTXFTXOptional1
RFFRFFOptional1
Loop PYTPYTOptional5
PYTPYTMandatory1
MOAMOAOptional1
PCDPCDOptional1
FTXFTXOptional1
Loop ALCALCOptional10
ALCALCMandatory1
RTERTEOptional1
MOAMOAOptional1
PCDPCDOptional1
QTYQTYOptional1
Loop CUXCUXOptional1
CUXCUXMandatory1
DTMDTMOptional1
Loop LINLINOptional9999
LINLINMandatory1
PIAPIAOptional1
QTYQTYOptional1
PRIPRIOptional2
PCDPCDOptional1
MEAMEAOptional15
QVRQVROptional5
MOAMOAOptional15
NADNADOptional10
GIRGIROptional9999
GEIGEIOptional99
LOCLOCOptional1
Loop DOCDOCOptional10
DOCDOCMandatory1
DTMDTMOptional2
Loop ALCALCOptional10
ALCALCMandatory1
RTERTEOptional1
MOAMOAOptional1
PCDPCDOptional1
QTYQTYOptional1
Loop CUXCUXOptional1
CUXCUXMandatory1
DTMDTMOptional1
Loop TODTODOptional1
TODTODMandatory1
LOCLOCOptional2
Loop PYTPYTOptional5
PYTPYTMandatory1
MOAMOAOptional1
PCDPCDOptional1
FTXFTXOptional1
Loop IMDIMDOptional99
IMDIMDMandatory1
FTXFTXOptional1
Loop PACPACOptional10
PACPACMandatory1
Loop PCIPCIOptional999
PCIPCIMandatory1
FTXFTXOptional1
RFFRFFOptional1
Loop EFIEFIOptional99
EFIEFIMandatory1
CEDCEDOptional99
COMCOMOptional9
RFFRFFOptional9
DTMDTMOptional9
QTYQTYOptional9
Loop CSTCSTOptional99999
CSTCSTMandatory1
FTXFTXOptional9
LOCLOCOptional25
DTMDTMOptional5
MEAMEAOptional20
NADNADOptional5
TDTTDTOptional9
Loop PACPACOptional10
PACPACMandatory1
Loop PCIPCIOptional999
PCIPCIMandatory1
FTXFTXOptional1
Loop MOAMOAOptional25
MOAMOAMandatory1
Loop CUXCUXOptional1
CUXCUXMandatory1
DTMDTMOptional1
Loop RFFRFFOptional999
RFFRFFMandatory1
DTMDTMOptional1
GINGINOptional99
MOAMOAOptional1
Loop IMDIMDOptional1
IMDIMDMandatory1
FTXFTXOptional5
Loop DOCDOCOptional25
DOCDOCMandatory1
DTMDTMOptional2
LOCLOCOptional1
NADNADOptional5
Loop TODTODOptional1
TODTODMandatory1
LOCLOCOptional2
FTXFTXOptional1
Loop GDSGDSOptional1
GDSGDSMandatory1
FTXFTXOptional1
Loop GEIGEIOptional25
GEIGEIMandatory1
PCDPCDOptional1
DTMDTMOptional1
RFFRFFOptional1
Loop TAXTAXOptional10
TAXTAXMandatory1
MOAMOAOptional2
GEIGEIOptional1
Loop QVRQVROptional1
QVRQVRMandatory1
QTYQTYOptional1
Loop RFFRFFOptional1
RFFRFFMandatory1
DTMDTMOptional1
Loop GIRGIROptional50
GIRGIRMandatory1
GEIGEIOptional10
NADNADOptional1
MEAMEAOptional5
Loop MOAMOAOptional10
MOAMOAMandatory1
Loop CUXCUXOptional1
CUXCUXMandatory1
DTMDTMOptional1
Loop TAXTAXOptional10
TAXTAXMandatory1
MOAMOAOptional2
GEIGEIOptional1
Loop DOCDOCOptional5
DOCDOCMandatory1
DTMDTMOptional2
LOCLOCOptional1
UNSUNS2Mandatory1
CNTCNTOptional5
Loop TAXTAXOptional50
TAXTAXMandatory1
MOAMOAOptional2
GEIGEIOptional1
Loop AUTAUTOptional1
AUTAUTMandatory1
DTMDTMOptional1
UNTUNTMandatory1