CONTRL: did my file arrive?
You sent an EDI file. Did it arrive? Was it processed? A separate message answers that: CONTRL. It is the EDI equivalent of a read receipt.
What it does and does not do
CONTRL takes no interest in content. It does not say "I accept your order"; it says "I received your file and the syntax is valid". It is a technical acknowledgement, not a commercial one.
Two things not to confuse:
- CONTRL — the file arrived and parses
- ORDRSP — I do or do not accept the order
Receiving a CONTRL does not mean your order was accepted. An order with flawless syntax that will be commercially rejected still gets a positive CONTRL.
Its structure
A CONTRL message shows where the error is, if there is one:
| Segment | Purpose |
|---|---|
UCI | Status at interchange level |
UCM | Status at message level |
UCS | Position of the segment in error |
UCD | The reason and which element |
The status codes are short: 7 accepted, 4 rejected, 8 errors present but processed.
UCI+REF00042+8712345678901:14+8798765432109:14+7'
The trailing 7 says the interchange was accepted without problems. The reference on that line (REF00042) matches the number on the UNB line of the file you sent — that is how you tell which acknowledgement belongs to which file.
When errors come back
On a rejection, UCS gives you the segment position and UCD the reason:
UCS+12'
UCD+13+QTY+2'
That says there is an error in the second data element of the QTY at segment 12. Opening your file and looking at segment 12 shows the problem directly.
Error codes you will see often:
| Code | Meaning |
|---|---|
12 | Invalid value |
13 | Mandatory field missing |
15 | Value not in the code list |
35 | Segment repeated too many times |
36 | Segment missing |
These codes tell you the kind of problem, not the fix. When you get "mandatory field missing", your specification tells you which field is mandatory.
If no CONTRL arrives at all
That is usually a transport problem rather than a content one. Places to look, in order:
1. Did the file reach the other side? Check the SFTP directory, the expiry of the AS2 certificate, and the connection logs. 2. Does your partner send CONTRL at all? Not everyone does. The specification says so; if they do not, waiting is pointless. 3. Did it arrive but sit in a queue? Some systems process in batches and the acknowledgement can be hours behind.
The expected turnaround is also defined in the specification; it usually ranges from a few minutes to a few hours.
Should you send CONTRL yourself?
If you process incoming files, your partner will most likely expect an acknowledgement from you too. This is not a one-way mechanism.
The most common mistake when generating your own CONTRL is returning an unconditional 7 (accepted) for every file. That marks a syntactically broken file as accepted, and the other side only discovers the problem when an invoice goes unpaid.
A practical suggestion
Keep your CONTRL messages. In an argument about an invoice that "never arrived", a dated acknowledgement is the document that settles it fastest. Proving syntactic validity does not resolve a commercial dispute, but it moves the discussion to the right place: if the file arrived, the problem is not transport but a business rule.
When a CONTRL lands on your desk, reading the numbers in its UCS and UCD lines alongside the file you sent is the quickest route to a diagnosis.