EANCOM IFTMIN Instruction Message

IFTMIN is the instruction message for transport. Shippers and forwarders send it to a carrier or logistics provider with everything needed to move a consignment. This sample follows EANCOM D96A.

It identifies the parties, the transport stages in TDT groups, the places of loading and delivery, and the goods items with their packages, weights and dangerous goods information.

At a glance

Standard
EANCOM
Version
D96A EAN004
Sent by
Shipper or forwarder to carrier
Responses
CONTRL, IFTSTA
ediFabric .NET template
TSIFTMIN in EdiFabric.Templates.Edifact
OpenEDI definition
View IFTMIN in the spec library

IFTMIN structure

The full EANCOM IFTMIN layout from its OpenEDI definition, the same model ediFabric uses to parse, validate and generate it: 21 loops and 55 segment positions, in file order. Loops are shaded and their segments indented; Max use is how many times a segment or loop may repeat.

Segment / loop Name Usage Max use
UNHMessage headerMandatory1
BGMBeginning of messageMandatory1
DTMDate/time/periodOptional9
TSRTransport service requirementsOptional9
MOAMonetary amountOptional99
FTXFree textOptional99
CNTControl totalOptional9
TOD loopTerms of delivery or transportOptional2
TODTerms of delivery or transportMandatory1
LOCPlace/location identificationOptional9
RFF loopReferenceOptional99
RFFReferenceMandatory1
DTMDate/time/periodOptional9
TDT loopDetails of transportOptional99
TDTDetails of transportMandatory1
DTMDate/time/periodOptional9
LOC loopPlace/location identificationOptional99
LOCPlace/location identificationMandatory1
NAD loopName and addressMandatory99
NADName and addressMandatory1
CTA loopContact informationOptional9
CTAContact informationMandatory1
COMCommunication contactOptional9
DOC loopDocument/message detailsOptional9
DOCDocument/message detailsMandatory1
DTMDate/time/periodOptional1
RFF loopReferenceOptional9
RFFReferenceMandatory1
DTMDate/time/periodOptional9
GID loopGoods item detailsOptional999
GIDGoods item detailsMandatory1
HANHandling instructionsOptional1
TMPTemperatureOptional1
RNGRange detailsOptional1
LOCPlace/location identificationOptional9
MOAMonetary amountOptional9
PIAAdditional product idOptional9
FTXFree textOptional9
NAD loopName and addressOptional9
NADName and addressMandatory1
DTMDate/time/periodOptional1
MEA loopMeasurementsOptional99
MEAMeasurementsMandatory1
EQNNumber of unitsOptional1
DIM loopDimensionsOptional99
DIMDimensionsMandatory1
EQNNumber of unitsOptional1
RFF loopReferenceOptional9
RFFReferenceMandatory1
DTMDate/time/periodOptional9
PCI loopPackage identificationOptional9
PCIPackage identificationMandatory1
GINGoods identity numberOptional10
DOC loopDocument/message detailsOptional9
DOCDocument/message detailsMandatory1
DTMDate/time/periodOptional9
SGP loopSplit goods placementOptional999
SGPSplit goods placementMandatory1
DGS loopDangerous goodsOptional9
DGSDangerous goodsMandatory1
FTXFree textOptional99
CTA loopContact informationOptional9
CTAContact informationMandatory1
COMCommunication contactOptional9
MEA loopMeasurementsOptional9
MEAMeasurementsMandatory1
EQNNumber of unitsOptional1
EQD loopEquipment detailsOptional999
EQDEquipment detailsMandatory1
MEAMeasurementsOptional9
DIMDimensionsOptional9
SELSeal numberOptional99
NAD loopName and addressOptional9
NADName and addressMandatory1
DTMDate/time/periodOptional1
UNTMessage trailerMandatory1

Mandatory segments must be sent, Optional ones only when the data applies. Trading partners often add their own rules in companion guides - ediFabric templates can be adjusted to match. Open the element-level definition in the EdiNation spec library.

Sample IFTMIN file

An EANCOM transport instruction for one consignment. Paste it into EdiNation to see every element named and validated.

UNB+UNOA:2+SID+RID+20130430:1159+I-EX1/1+++++T01'
UNH+ME000001+IFTMIN:D:96A:UN:EAN004'
BGM+610+569952+9'
DTM+137:20020301:102'
DTM+2:200203081100:203'
CNT+11:1'
RFF+CU:TI1284'
TDT+20++30+31'
DTM+133:200203051100:203'
LOC+9+5412345678908::9'
NAD+CZ+5412345123453::9'
NAD+CA+5411234512309::9'
NAD+CN+5411234444402::9'
NAD+DP+5412345145660::9'
GID+1+1:09::9+14:PK'
HAN+EAT::9'
TMP+2+000:CEL'
RNG+5+CEL:-5:5'
MOA+44:45000:EUR'
PIA+5+5410738377117:SRV'
MEA+AAE+X7E+KGM:250'
PCI+33E'
GIN+BJ+354123450000000014'
UNT+23+ME000001'
UNZ+1+I-EX1/1'

The same IFTMIN as JSON

ediFabric turns every loop, segment and element into a named field. This is the transaction from the sample, in the JSON that ediFabric Native and Cloud return and accept.

{
  "UNH": {
    "MessageReferenceNumber_01": "ME000001",
    "MessageIdentifier_02": {
      "MessageType_01": "IFTMIN",
      "MessageVersionNumber_02": "D",
      "MessageReleaseNumber_03": "96A",
      "ControllingAgencyCoded_04": "UN",
      "AssociationAssignedCode_05": "EAN004"
    }
  },
  "BGM": {
    "DOCUMENTMESSAGENAME_01": {
      "Documentmessagenamecoded_01": "610"
    },
    "DOCUMENTMESSAGENUMBER_02": "569952",
    "MESSAGEFUNCTIONCODED_03": "9"
  },
  "DTM": [
    {
      "DATETIMEPERIOD_01": {
        "Datetimeperiodqualifier_01": "137",
        "Datetimeperiod_02": "20020301",
        "Datetimeperiodformatqualifier_03": "102"
      }
    },
    {
      "DATETIMEPERIOD_01": {
        "Datetimeperiodqualifier_01": "2",
        "Datetimeperiod_02": "200203081100",
        "Datetimeperiodformatqualifier_03": "203"
      }
    }
  ],
  "CNT": [
    {
      "CONTROL_01": {
        "Controlqualifier_01": "11",
        "Controlvalue_02": "1"
      }
    }
  ],
  "RFFLoop": [
    {
      "RFF": {
        "REFERENCE_01": {
          "Referencequalifier_01": "CU",
          "Referencenumber_02": "TI1284"
        }
      }
    }
  ],
  "TDTLoop": [
    {
      "TDT": {
        "TRANSPORTSTAGEQUALIFIER_01": "20",
        "MODEOFTRANSPORT_03": {
          "Modeoftransportcoded_01": "30"
        },
        "TRANSPORTMEANS_04": {
          "Typeofmeansoftransportidentification_01": "31"
        }
      },
      "DTM": [
        {
          "DATETIMEPERIOD_01": {
            "Datetimeperiodqualifier_01": "133",
            "Datetimeperiod_02": "200203051100",
            "Datetimeperiodformatqualifier_03": "203"
          }
        }
      ],
      "LOCLoop": [
        {
          "LOC": {
            "PLACELOCATIONQUALIFIER_01": "9",
            "LOCATIONIDENTIFICATION_02": {
              "Placelocationidentification_01": "5412345678908",
              "Codelistresponsibleagencycoded_03": "9"
            }
          }
        }
      ]
    }
  ],
  "NADLoop": [
    {
      "NAD": {
        "PARTYQUALIFIER_01": "CZ",
        "PARTYIDENTIFICATIONDETAILS_02": {
          "Partyididentification_01": "5412345123453",
          "Codelistresponsibleagencycoded_03": "9"
        }
      }
    },
    {
      "NAD": {
        "PARTYQUALIFIER_01": "CA",
        "PARTYIDENTIFICATIONDETAILS_02": {
          "Partyididentification_01": "5411234512309",
          "Codelistresponsibleagencycoded_03": "9"
        }
      }
    },
    {
      "NAD": {
        "PARTYQUALIFIER_01": "CN",
        "PARTYIDENTIFICATIONDETAILS_02": {
          "Partyididentification_01": "5411234444402",
          "Codelistresponsibleagencycoded_03": "9"
        }
      }
    },
    {
      "NAD": {
        "PARTYQUALIFIER_01": "DP",
        "PARTYIDENTIFICATIONDETAILS_02": {
          "Partyididentification_01": "5412345145660",
          "Codelistresponsibleagencycoded_03": "9"
        }
      }
    }
  ],
  "GIDLoop": [
    {
      "GID": {
        "GOODSITEMNUMBER_01": "1",
        "NUMBERANDTYPEOFPACKAGES_02": {
          "Numberofpackages_01": "1",
          "Typeofpackagesidentification_02": "09",
          "Codelistresponsibleagencycoded_04": "9"
        },
        "NUMBERANDTYPEOFPACKAGES_03": {
          "Numberofpackages_01": "14",
          "Typeofpackagesidentification_02": "PK"
        }
      },
      "HAN": {
        "HANDLINGINSTRUCTIONS_01": {
          "Handlinginstructionscoded_01": "EAT",
          "Codelistresponsibleagencycoded_03": "9"
        }
      },
      "TMP": {
        "TEMPERATUREQUALIFIER_01": "2",
        "TEMPERATURESETTING_02": {
          "Temperaturesetting_01": "000",
          "Measureunitqualifier_02": "CEL"
        }
      },
      "RNG": {
        "RANGETYPEQUALIFIER_01": "5",
        "RANGE_02": {
          "Measureunitqualifier_01": "CEL",
          "Rangeminimum_02": "-5",
          "Rangemaximum_03": "5"
        }
      },
      "MOA": [
        {
          "MONETARYAMOUNT_01": {
            "Monetaryamounttypequalifier_01": "44",
            "Monetaryamount_02": "45000",
            "Currencycoded_03": "EUR"
          }
        }
      ],
      "PIA": [
        {
          "PRODUCTIDFUNCTIONQUALIFIER_01": "5",
          "ITEMNUMBERIDENTIFICATION_02": {
            "Itemnumber_01": "5410738377117",
            "Itemnumbertypecoded_02": "SRV"
          }
        }
      ],
      "MEALoop": [
        {
          "MEA": {
            "MEASUREMENTAPPLICATIONQUALIFIER_01": "AAE",
            "MEASUREMENTDETAILS_02": {
              "Measurementdimensioncoded_01": "X7E"
            },
            "VALUERANGE_03": {
              "Measureunitqualifier_01": "KGM",
              "Measurementvalue_02": "250"
            }
          }
        }
      ],
      "PCILoop": [
        {
          "PCI": {
            "MARKINGINSTRUCTIONSCODED_01": "33E"
          },
          "GIN": [
            {
              "IDENTITYNUMBERQUALIFIER_01": "BJ",
              "IDENTITYNUMBERRANGE_02": {
                "Identitynumber_01": "354123450000000014"
              }
            }
          ]
        }
      ]
    }
  ],
  "UNT": {
    "NumberofSegmentsinaMessage_01": "23",
    "MessageReferenceNumber_02": "ME000001"
  }
}

Parse and validate an IFTMIN file

Read the file into typed objects with ediFabric .NET, or post it to the ediFabric Cloud REST API from any language and get JSON back.

using EdiFabric.Templates.EdifactD96A;

License.SetSerial("YOUR_SERIAL_KEY");

using (var stream = File.OpenRead(@"C:\edi\Instruction.txt"))
using (var reader = new EdifactReader(stream, "EdiFabric.Templates.Edifact"))
{
    var items = await reader.ReadToEndAsync();
    foreach (var transaction in items.OfType<TSIFTMIN>())
    {
        if (transaction.IsValid(out MessageErrorContext errors))
            Console.WriteLine($"{transaction.UNH.MessageReferenceNumber_01} is valid");
        else
            Console.WriteLine(string.Join(Environment.NewLine, errors.Flatten()));
    }
}
curl -X POST 'https://api.edination.com/v2/edifact/read' \
-H 'Ocp-Apim-Subscription-Key: YOUR_SERIAL_KEY' \
-H 'Content-Type: application/octet-stream' \
--data-binary '@Instruction.txt'

Generate an IFTMIN file

Populate a TSIFTMIN object in .NET, or post JSON in the shape shown above to ediFabric Cloud, and get a valid IFTMIN file back.

using EdiFabric.Templates.EdifactD96A;

License.SetSerial("YOUR_SERIAL_KEY");

var transaction = new TSIFTMIN();

//  Message header
transaction.UNH = new UNH();
transaction.UNH.MessageReferenceNumber_01 = "0001";
transaction.UNH.MessageIdentifier_02 = new S009();
transaction.UNH.MessageIdentifier_02.MessageType_01 = "IFTMIN";
transaction.UNH.MessageIdentifier_02.MessageVersionNumber_02 = "D";
transaction.UNH.MessageIdentifier_02.MessageReleaseNumber_03 = "96A";
transaction.UNH.MessageIdentifier_02.ControllingAgencyCoded_04 = "UN";

//  Transport instruction number 
transaction.BGM = new BGM();
transaction.BGM.DOCUMENTMESSAGENAME_01 = new C002();
transaction.BGM.DOCUMENTMESSAGENAME_01.Documentmessagenamecoded_01 = "610";
transaction.BGM.Documentmessagenumber_02 = "569952";
transaction.BGM.Messagefunctioncoded_03 = "9";

//  Repeating DTM
transaction.DTM = new List<DTM>();

// ... set the remaining loops and segments the same way

// SegmentBuilders is in the Common project of the example repository
using (var stream = new MemoryStream())
{
    using (var writer = new EdifactWriter(stream))
    {
        writer.Write(SegmentBuilders.BuildUnb("1"));
        writer.Write(transaction);
    }
    Console.WriteLine(Encoding.UTF8.GetString(stream.ToArray()));
}
# the JSON returned by /read, edited or produced by your application
curl -X POST 'https://api.edination.com/v2/edifact/write' \
-H 'Ocp-Apim-Subscription-Key: YOUR_SERIAL_KEY' \
-H 'Content-Type: application/json' \
--data-binary '@Instruction.json' \
-o 'Instruction.txt'

IFTMIN questions

Is IFTMIN a booking?

It is the firm instruction. Some partners use IFTMBF or IFTMBC for booking requests and confirmations, and IFTMIN once the shipment is ready.

How does the carrier report progress?

With IFTSTA status reports for each event.

What is the X12 equivalent?

The 204 motor carrier load tender, or the 404 for rail.

How do I parse and generate EANCOM IFTMIN files in .NET?

In .NET, install EdiFabric and EdiFabric.Templates.Edifact, read the file with EdifactReader into TSIFTMIN objects and write them back with EdifactWriter. From any other language, post the file to the ediFabric Cloud REST API, which returns the same structure as JSON and converts JSON back to EANCOM.

Related transactions

Parse your first IFTMIN in five minutes

The Community plan is free forever and needs no credit card. It includes ediFabric .NET, Native and Cloud.