CNTCND Contractual conditions message (D15A)

This is the standard EDIFACT D15A spec, with 40 loops and 141 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 (122 KB) Generate classes
The ediFabric .NET template, class TSCNTCND. It needs the common segments, composites and codes of EDIFACT D15A, 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 CNTCND 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 CNTCND files into TSCNTCND objects. See ediFabric .NET.

ediFabric Native

Native supports X12 today, and EDIFACT is coming. When it's available, map version D15A to this Native model with set_map to parse CNTCND 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 CNTCND classes in Python, Java, Node.js, Go, Rust or C

The OpenEDI file describes each CNTCND as JSON. To work with CNTCND data as typed objects, generate classes from the OpenEDI file in your language; the root class is TSCNTCND. 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.

CNTCND structure

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

IDNameUsageMax use
UNHUNHMandatory1
BGMBGMMandatory1
DTMDTMMandatory99
ALIALIOptional99
AGRAGROptional99
MOAMOAOptional99
GEIGEIOptional99
PAIPAIOptional99
TODTODOptional99
FTXFTXOptional99
Loop RFFRFFOptional99
RFFRFFMandatory1
DTMDTMOptional99
Loop PRIPRIOptional99
PRIPRIMandatory1
RNGRNGOptional99
Loop QTYQTYOptional99
QTYQTYMandatory1
DTMDTMOptional99
Loop DOCDOCOptional99
DOCDOCMandatory1
DTMDTMOptional99
RFFRFFOptional99
FTXFTXOptional99
Loop CUXCUXOptional99
CUXCUXMandatory1
DTMDTMOptional99
Loop TAXTAXOptional99
TAXTAXMandatory1
MOAMOAOptional99
Loop PYTPYTOptional99
PYTPYTMandatory1
DTMDTMOptional99
PCDPCDOptional99
MOAMOAOptional99
Loop SEQSEQMandatory99
SEQSEQMandatory1
NADNADMandatory1
GEIGEIOptional99
FIIFIIOptional9
FTXFTXOptional99
Loop RFFRFFOptional99
RFFRFFMandatory1
DTMDTMOptional99
Loop CTACTAOptional99
CTACTAMandatory1
COMCOMOptional99
Loop RELRELOptional99
RELRELMandatory1
NADNADOptional99
RFFRFFOptional99
Loop ALCALCOptional99
ALCALCMandatory1
ALIALIOptional99
DTMDTMOptional99
Loop RFFRFFOptional99
RFFRFFMandatory1
DTMDTMOptional99
Loop QTYQTYOptional99
QTYQTYMandatory1
RNGRNGOptional99
Loop PCDPCDOptional99
PCDPCDMandatory1
RNGRNGOptional99
Loop RTERTEOptional99
RTERTEMandatory1
RNGRNGOptional99
Loop MOAMOAOptional99
MOAMOAMandatory1
RNGRNGOptional99
DTMDTMOptional99
Loop TAXTAXOptional99
TAXTAXMandatory1
MOAMOAOptional99
Loop FORFOROptional99
FORFORMandatory1
GEIGEIOptional99
ALIALIOptional99
RFFRFFOptional99
DTMDTMOptional99
Loop FSQFSQOptional99
FSQFSQMandatory1
RTERTEOptional99
PCDPCDOptional99
MEAMEAOptional99
MOAMOAOptional99
RFFRFFOptional99
DTMDTMOptional99
Loop INDINDOptional99
INDINDMandatory1
ALIALIOptional99
DTMDTMOptional99
QTYQTYOptional99
Loop LINLINOptional99
LINLINMandatory1
PIAPIAOptional99
IMDIMDOptional99
MOAMOAOptional99
DTMDTMOptional99
FTXFTXOptional99
Loop RFFRFFOptional99
RFFRFFMandatory1
DTMDTMOptional99
Loop TAXTAXOptional99
TAXTAXMandatory1
MOAMOAOptional99
Loop GEIGEIOptional99
GEIGEIMandatory1
RTERTEOptional99
MOAMOAOptional99
TAXTAXOptional99
PCDPCDOptional99
DTMDTMOptional99
Loop QTYQTYOptional99
QTYQTYMandatory1
DTMDTMOptional99
Loop FORFOROptional99
FORFORMandatory1
ALIALIOptional99
MOAMOAOptional99
RFFRFFOptional99
DTMDTMOptional99
GEIGEIOptional99
Loop FSQFSQOptional99
FSQFSQMandatory1
RTERTEOptional99
PCDPCDOptional99
MEAMEAOptional99
MOAMOAOptional99
RFFRFFOptional99
DTMDTMOptional99
GEIGEIOptional99
QTYQTYOptional99
Loop ALCALCOptional99
ALCALCMandatory1
ALIALIOptional99
DTMDTMOptional99
Loop RFFRFFOptional99
RFFRFFMandatory1
DTMDTMOptional99
Loop QTYQTYOptional99
QTYQTYMandatory1
RNGRNGOptional99
Loop PCDPCDOptional99
PCDPCDMandatory1
RNGRNGOptional99
Loop RTERTEOptional99
RTERTEMandatory1
RNGRNGOptional99
Loop MOAMOAOptional99
MOAMOAMandatory1
RNGRNGOptional99
DTMDTMOptional99
Loop TAXTAXOptional99
TAXTAXMandatory1
MOAMOAOptional99
Loop PRIPRIOptional99
PRIPRIMandatory1
APRAPROptional99
RNGRNGOptional99
CUXCUXOptional99
DTMDTMOptional99
Loop TODTODOptional99
TODTODMandatory1
LOCLOCOptional99
Loop PACPACOptional99
PACPACMandatory1
MEAMEAOptional99
Loop PCIPCIOptional99
PCIPCIMandatory1
RFFRFFOptional99
DTMDTMOptional99
GINGINOptional99
Loop NADNADOptional99
NADNADMandatory1
GEIGEIOptional99
FIIFIIOptional99
MOAMOAOptional99
TAXTAXOptional99
RFFRFFOptional99
UNTUNTMandatory1