Why customs rejects a filing
Why customs rejects a filing, and what to do about it
ICEGATE returns a numeric error code and a terse description. This maps the ones filers actually hit onto what went wrong and what to change. Codes are grouped by cause, because the fix is usually shared across a whole family.
Two levels of rejection exist and they look different:
- Structurally invalid — the file is not a valid SCMTR message at all. Comes back as an
_SFL.json carrying JSON-Schema vocabulary and no error code from this list. Something is
malformed rather than merely wrong.Business validation — the file parsed, and customs disagrees with its contents. That is
everything below.Why would customs reject my CSN? The reasons in plain words
A CSN — or its amendment, or an export's SCX — is refused for one of a handful of reasons. Each has its own section below, with the error codes that name it and what to change:
- The file disagrees with itself. Package counts, weights, the number of containers or the
number of lines do not add up across master bill, house bills and containers. See The
arithmetic ones below.Something is declared twice. The same container twice on one bill, or two master
consignments carrying the same master B/L and the same house bill (
375/376). See
Duplicates.The bill has been filed before. Customs already holds this master or house bill, often from
an earlier filing or from other software (122/123), or the CSN or CIN quoted has already
been referenced by someone else. See Referencing a prior filing.The consolidation shape is one customs does not recognise. Cargo type, cargo movement, the
consolidation indicator and the previous-declaration flag are checked together (115/118);
a master marked consolidated with no house bills under it is 163. See Consolidation shape.The wrong PAN is in the wrong place, or the filer is not allowed to file it. Your PAN goes
on the house bill, the carrier's on the master. See Consolidator PAN and who is allowed to file.A party's country or identity code does not match. See The parties.The cargo movement does not suit the port the goods are received at (365/366). See
Cargo movement against the port of receipt.The amendment points at the wrong CSN, the wrong line, or comes too late. See
Amendments and deletions.The vessel call does not match the carrier's. The conveyance reference or rotation is not
the one the shipping line filed under, or its manifest is not in yet. See Vessel and voyage.Customs gives no reason at all — 700 Error-Refile. See What to do about a 700.The file never reaches validation, and ICEGATE sends an e-mail instead of an
acknowledgement: a control number already processed for that job date, a DSC it will not
accept, a character that is not plain text, or a sender ID it does not know. See Refusals that
arrive by e-mail.Before you send, the platform checks your CSN against the refusals customs has been seen to make
that a file can show in advance, and shows those in red. Some cannot be seen from your file alone
— a bill someone else already filed, a 700. Checks drawn from the published rules alone, with no refusal behind them
yet, show in amber (what the checks mean). After a refusal, drop the
acknowledgement together with the CSN it answers on SCMTR JSON upload. Each error is then
shown on the field it names, beside the value your file actually carries.
The arithmetic ones — the cheapest to prevent
Customs adds up what you declared and checks it against itself. These are the cheapest to prevent, because every one of them can be settled from your own file before it is sent. How often they cause a refusal is not known: none of the refusals we hold is an arithmetic one.
| Code | Description | What it means |
|---|---|---|
85 | Wrong Total Number of Equipment Manifested | totalNoOfTrnsprtEqmtMnfsted does not equal the containers actually in the message |
86 | Invalid Total Number of Lines | totalNmbrOfLines does not equal the consignments actually present |
221 | Total Pckg Mismatch in Transport Doc/Item/Eqmt | The document package count and the container counts disagree. The published wording names the items too, but the replies on record say "Transport Doc and Transport Eqmt", and customs has accepted import bills whose items add up to another count — often each HS line giving the bill's whole count (October 2026). On an export the items' sum is 709 |
225 | Pckg in MC Does Not Match With Total Pckg in HC Ref | The master's package count is not the sum of its house bills' |
231 | Pckt Type Not Match in Transport Document and Item Details | The package type differs between document and item level |
89, 90 | Voyage totals do not match cargo | Vessel-level totals disagree with the consignments |
105 | HC Transport Equipment Not Declared in MC Equipment Details | A container on a house bill is not on its master |
104, 218 | MC equipment not declared at voyage level | The same, one level up |
The fix is nearly always the same: count again and make the three levels agree. A container must exist at every level that mentions it, and the totals must be the real totals.
The wizard keeps 105 from happening on a filing built in it: containers are typed once, on
the master bill, and each house bill ticks the ones it is in, so a house cannot name a box the
master lacks. A draft made before that layout, or an imported file, can still carry one — the
house bill step then shows the box in red with Add it to the master B/L, and the review says
so until it is done.
Duplicates
| Code | Description |
|---|---|
146 | Duplicate Equipment in line+sline |
153, 156 | Duplicate Equipment Id in voyage equipment |
157 | Duplicate HS Code in Cargo Items |
155, 298, 103 | Duplicate sequence or call number in an itinerary |
299 | Duplicate Equipment serial number |
375, 376 | Duplicate Record in MC Ref / MC Transport — MBL+HBL |
Two rows carrying the same container number is the classic one — it happens when a row is duplicated to save typing and the container id is not changed afterwards.
375 and 376 come back on a CSN acknowledgement — an import CSN was refused for them on
23 September 2026 — and are the same mistake one level up: two master consignments carrying the
same master B/L and the same house bill — usually a line copied to start a second and then left.
Customs identifies a record by that pair, reads the two as one record filed twice, and reports
both codes against the voyage rather than either line, which is why the acknowledgement seems to
name nothing. The platform blocks that pair before you file (since 23 September 2026, when an
import was refused for it). The same master B/L with different house bills is declared split
cargo and only warns. Both codes are published in the vessel manifest's shared error list rather
than the CSN guide's own, so looking them up in the CSN MIG finds nothing — but they are returned
to a CSN all the same, not only to a manifest.
Consolidation shape
The combination of consolidation indicator, cargo type, cargo movement and previous-declaration flag is validated as a combination, not field by field. That is why these read so opaquely.
| Code | Description |
|---|---|
115 | Invalid MC CargoType + CargoMvmt + Consolidated + PrevDecl combination |
118 | The same at house level |
56, 116 | Invalid consolidation flag for the CSN, at master / house level |
57, 117 | Invalid previous-declaration value |
159 | Incorrect Cin Type in MC — an export saying it refers to a shipping bill or an earlier CSN (prevDec S, B or Y) without a previous-CSN reference block naming the CIN. Measured on a real refusal (September 2026); the app blocks it before sending |
113 | Cargo Details Missing for Consolidated = S |
163 | Missing House Cargo Details for Given Consolidated Cargo |
263, 264 | Should have Split Cargo = Y |
163 is worth calling out: you marked the master as consolidated and then filed no house bills
under it. Either add the houses, or the master is not consolidated.
115 and 118 are the wider pair and the ones that read as though nothing in particular is
wrong: they say that cargo type, cargo movement, the consolidation indicator and the
prior-declaration flag together are not a combination customs recognises. The MIG publishes
the list of combinations it accepts, and
cargo type, movement and the combination customs checks
has all of it. The single commonest cause is import cargo declared with a transhipment
movement — IM never takes TC, which belongs to TR and EX.
Consolidator PAN and who is allowed to file
| Code | Description |
|---|---|
92, 168 | Invalid consolidator PAN, or invalid PAN format |
329 | Consolidator PAN cannot be blank |
150, 160 | PAN not authorised to submit this declaration / this house B/L |
158 | Consolidator PAN should be the same as the submitter PAN |
169 | ASC not authorised to submit |
170 | Consolidator PAN mismatch |
283 | Carrier ASC/ASA not registered in the SCMTR application |
284 | Invalid carrier / submitter code |
344 | Entity (ASC/ASA/ANC) is not valid |
353 | Only one ASC/ASA's bills are allowed in a single CSN |
The convention that prevents most of these: your PAN goes on the house bill, the carrier's on the master. If your own PAN is on the master consignment, you are claiming to be the carrier.
The parties: a country code that looks right and is refused anyway
"Buyer" means the consignee. ICEGATE's error list uses the trade's word where the message uses the customs one, which is why a filer hunting the CSN for a "buyer" field finds none. Three codes name three fields, each on the party block of the transport document the error hangs off:
| Code | Description | The field it names |
|---|---|---|
43 | Invalid Consignor Country Code | cnsgnrCntryCd — the shipper's country |
44 | Invalid Buyer Country Code | cnsgneCntryCd — the consignee's country |
46 | Invalid Notified Party Country Code | notfdPartyCntryCd |
All three take two characters, ISO 3166-1 alpha-2: IN India, US the United States, CN
China. So a filing refused on a value that is genuinely a two-letter ISO code is being refused for
something other than the country not existing, and re-typing it changes nothing. Work it in this
order.
1. Read the file, not the form. The trade writes countries three letters long — IND, USA,
CHN — and this field is two characters wide. An alpha-3 code, a country name typed in full, a
stray space or an empty value all read as invalid, and the value that was on your screen is not
always the value that reached customs. This is the commonest cause by a distance.
2. Check which bill the error names. The master consignment carries its own consignee, and so does every house bill under it. The acknowledgement hangs the code off one transport document — the value to change is the one on that document, not the one you remember typing.
3. Ask whether the country contradicts the party's own code. On an arrival message the
consignee is the Indian importer: the MIG makes the consignee code mandatory for SCE and SCD,
and every code type customs accepts — IEC, PAN, GSN, GSD, GSG — is an Indian
registration. Inferred, not published: a foreign consignee country sitting against an Indian
PAN or IEC reads as a contradiction, and that is a likelier account of this code than a country
customs does not recognise — but ICEGATE states no such rule, so treat it as the thing to check
rather than as the answer. The other half of the same
check: that the consignor and consignee have not been filled in the export way round, with the
overseas buyer where the Indian importer belongs.
4. Clear an Indian state code from a foreign party. The country subdivision code is the
MIG's Indian state numbering, and nothing else. A foreign party carries its province as a name
with the code left empty — a 07 inherited from a copied address book beside a country of US is
a party block that disagrees with itself. A province name typed into the shipper's code field is
not, on the record, a refusal: customs accepted five import CSNs in September 2026 that carried one
there, some longer than the field's nine characters. Blank is still the clean shape, and SCMTR flags
it in amber rather than blocking the file.
5. If the consignee's country really is right, read the notified party's. Inferred, and worth
knowing: ICEGATE's own published error list gives the description Invalid Buyer Country Code to
both 44 and 46, where the MIG's table gives 46 to the notified party. The notified party
is usually copied from the consignee, and its country is the field most often not carried over.
Is a foreign consignee allowed at all?
Yes — and it is rare enough to be worth checking rather than assuming. In every real arrival
filing we hold, the consignee's country is IN and so is the notified party's: 62 consignee
blocks across fifteen files, IN every time, while the consignor is foreign in 60 of the 62. A
SAM / SDM measured separately came out the same way — 176 consignee blocks, 175 IN and one
US, on a real consignment. A US buyer is legitimate; it is also the shape that gets typed by mistake.
The value the code names looks correct — now what?
That is a family of situation rather than a family of code, and the same three checks resolve nearly all of it, in this order:
- The file does not say what the form says. Codes get truncated, padded, uppercased, pasted
with a trailing space, or typed into the field beside the one you meant.The same field exists at another level. Master and house each carry a full set of parties;
containers are declared at three levels. Being right in one place is not being right in the
place the error names.A second field contradicts the first. Customs validates combinations — country against the
party's identity code, package type against packages, size against the referenced CSN — and
reports the failure on one field of the pair. The other one is often the one to change.
Uploading the declaration and its acknowledgement together does the first two mechanically. SCMTR JSON upload places each error on the block it names and quotes back the value sitting there, so "we entered US" and "the file says USA" stop being the same sentence. Reading a rejection with the declaration to hand is a different job from reading it alone.
A code may arrive zero-padded. Real acknowledgements write "044" where this page and the MIG
table write 44 — the same code, and the padding is not applied to every code in the file. Strip
the leading zeros before looking a code up here.
Cargo movement against the port of receipt
| Code | Description | What it means |
|---|---|---|
365 | Cargo Movement Should be LC As Per Receipt Port | The goods are received at a sea port, so the movement must be LC |
366 | Cargo Movement Can Not Be LC As Per Receipt Port | The goods are received at an ICD or SEZ, so the movement must be TI |
These two check locCstm.crgoMvmt against trnsprtDoc.prtOfReceiptCdd — one field against
another, in a different block. The rejection arrives on the transport document, and the field
to change is in Location & customs, which is why it reads as though it names nothing.
A 365 has two possible fixes and customs cannot tell you which: set the movement to LC, or —
if the cargo really is going inland — correct the receipt port to the ICD's code. Decide from
where the cargo is actually going, not from the error. The full rule, the evidence behind it and
the one shape that has gone both ways are in
cargo type, movement and the combination customs checks.
On an export the same code means the other thing. An export moving on to a foreign port is
TC, and EX + LC is a pair the trade-scenarios table does not list at all (115). So when
365 arrives on an export, it is the port of receipt that is wrong: it named the Indian port
the cargo leaves from, and it should carry the foreign destination's code — where the cargo is
received. One filer collected 365 (Indian receipt port), then 115 (movement changed to LC),
then got the structure through with the foreign port; the app now refuses the first shape before
it is sent. The same filing was refused 091 — Port of Call Can Not Be Same as Next Port of Call
— for an itinerary whose only leg ran from Kattupalli to Kattupalli: an export's leg is the one
to the foreign port. An import's terminal leg may repeat the arrival port, and customs holds an
accepted filing that does.
What else is an export (SCX) refused for — 286, 383/384, 239 with 381, 709?
Four more, all seen on export refusals in September 2026 and all absent from the exports customs accepted that month. It is a small base — three acceptances and the refusals filed beside them — but each refusal is unambiguous about what it objected to. The app checks every one before an export is sent, and the guided export steps build a filing that cannot trip them.
| Code | Customs' wording | What drew it on an export | What to change |
|---|---|---|---|
286 | Invalid Destination Port Code | An Indian port as the destination | The destination — and the port of receipt — is the foreign port of discharge. The Indian load port is the first port of entry and the port of acceptance |
383 | Cin_Type+Cin_No in MC is Referred Multiple Times | One PCIN used twice in the filing, one of them on a master | Each PCIN once. A consolidation's master names no PCIN; customs issues it an MCIN |
384 | Cin_Type+Cin_No in HC is Referred Multiple Times | The same, reported against the line — the two arrive together | One line per shipping bill, each with its own PCIN |
381 | Atlease One Eqmt-Type=CN Should Exists if CargoNature=C/CP for MBL/HBL | A line listing none of the B/L's containers — arrives with 239 | Every line lists its own containers with its share, one of type CN for containerised cargo |
709 | Total Pckg Mismatch in Transport Doc and Transport Item | An item with its package count left blank, so the items fall short of the bill's total | Give every item its count. 221 is the same sum against the containers, 225 a master against its lines |
381, 383, 384 and 709 are in neither the message guide's code table nor the official error
list — like 700, they are known only from real replies. The whole export shape, and where each of
these is prevented in the guided steps, is in
exports: filing an SCX, shipping bills and PCINs.
The CIN, container and weight codes an export can meet — 053, 073, 091, 099, 124, 128, 148/149, 159/161, 220, 221, 225, 237, 239, 251–256
Every code in this table is in ICEGATE's published error list (SCMTR Error Codes & Descriptions),
in the wording shown. A reply prints the two-digit ones with a leading zero — 053, 073, 091,
099 — and the lists write them without. Only some have been seen on real export refusals; the
last column says which, so that a reading of the wording is not mistaken for experience.
| Code | Customs' wording | What it means, and what to change | Seen on a real export refusal? |
|---|---|---|---|
53 | Net Weight Can Not Be -Ve | A net weight of 0 draws it as well as a negative one. Leave net weight out, or give a figure above zero | Yes |
73 | Invalid Load Status | The load status is not one of FCL, LCL, EMP. It means how full the container is | No |
91 | Port of Call Can Not Be Same as Next Port of Call | An itinerary leg that arrives where it started. An export's last leg runs from your port to the foreign port | Yes |
99 | Invalid CIN Type for CSN | The CIN type is not PCIN or MCIN (or CSN, where a previous CSN is being quoted). Pick the type from the list; do not type it | No |
124 | CIN_TYPE+CIN_NO Already Used | The PCIN or MCIN you quoted has already been quoted by another accepted filing — yours or, on an export, possibly the shipping line's departure manifest, since only one party can furnish a bill's details. Look the bill up before refiling; if your own earlier CSN holds it, amend that one | No |
128 | Weight > 0 for Empty Container | A container marked EMP with a weight. Customs' list says an empty box carries no weight; see containers and shared boxes for why the app only warns | No |
148 | Incorrect Cin_Type+Cin_No in MC | The PCIN or MCIN on the master is not one customs holds — a digit slipped, or the number belongs to another custom house's shipping bill. Copy it again from the let-export shipping bill or ICEGATE's PCIN enquiry; it is twenty characters | No |
149 | Incorrect Cin_Type+Cin_No in HC | The same, on a line | No |
159 | Incorrect Cin Type in MC | On an export: a straight bill that says it refers to a shipping bill (S) and names no PCIN, or names something that is not a PCIN. Customs' own CIN table has an S master quote a PCIN | Yes |
161 | Incorrect Cin_Type in HC | The line-level twin of 159. An S line quotes a PCIN. (On a B line customs' table says MCIN while every accepted B line seen quotes a PCIN — see the exports page) | No |
220 | Incorrect Equipment Weight For Container Type CN | A container row of type CN whose weight customs will not take. What exactly draws it is not published; a blank or zero weight on a loaded container is the likeliest reading. Give each loaded container its cargo-plus-packing weight, without tare | No |
221 | Total Pckg Mismatch in Transport Doc/Transport Item/Transport Eqmt | The containers' packages do not add up to the bill's. On a line, the shares typed against each ticked container must add up to that line's packages | No — its sibling 709 was |
225 | Pckg in MC Does Not Match With Total Pckg in HC Ref | The master's package count is not the sum of its lines' | Yes |
237 | Load Status Not Match With Referred Load Status of CSN | Raised against the shipping line's manifest when its load status for a container differs from your CSN's. It is one of seven such cross-checks, 232–238: total packages, number of containers, container type, number, size, load status, shipper-owned flag. Weight is not one of them. If the line is refused 237, one of you changes the status to match — agree which is right for the box | No |
239 | Equipment Details Missing For Given Line+Sline No | A line that lists none of the B/L's containers. Customs' own table lists equipment for every export line, whatever the field table's "optional" suggests. Tick the line's containers and type its share. Arrives with 381 for containerised cargo | Yes |
251 | Cin_Type+Cin_No in MC is Closed/Deleted | The PCIN or MCIN quoted on the master has been closed or deleted at customs — most likely (our reading) a cancelled shipping bill, or cargo already shipped under it. Confirm the shipping bill's status with the customs broker | No |
253 | Cin_Type+Cin_No in HC is Closed/Deleted | The same, on a line | No |
252 | Cin Mentioned in MC is Not Top Most CIN | Our reading of the wording: the CIN quoted has itself been gathered under another, and customs wants the outermost one (for instance the MCIN of a consolidation rather than a PCIN inside it). Rare on a forwarder's first filing; it matters when building on somebody else's | No |
254 | Cin Mentioned in HC is Not Top Most CIN | The same, on a line | No |
255 | Cin_Type+Cin_No in MC Differ Port/Linked | The reference on the master belongs to a different port, or is already linked elsewhere. The message guide's newer table words this pair as "CSN No+Date … Differ Port/Linked". On an export: a shipping bill filed at one custom house quoted on a CSN reported to another port | No |
256 | Cin_Type+Cin_No in HC Differ Port/Linked | The same, on a line | No |
Which export codes are in no published list? 381, 383, 384 and 709 appear in neither
ICEGATE's published error list nor the message guide's code table — they are known only from real
acknowledgements. 365 and 366 are in the message guide's newer table and not in the separately
published list. Every code in the table above is in both. And for none of them does any customs
document say more than the one line of wording: there is no published explanation of 159, 286
or 365, which is why what they mean on an export had to be learned from refusals.
Referencing a prior filing
| Code | Description |
|---|---|
122, 123 | MC/HC bill details already exist — this bill has been filed before |
124, 125 | This CIN or CSN has already been referenced |
164, 165 | The bill quoted does not match the CSN's bill — its number, or its date |
171, 172 | Previous declaration not mentioned in the MC/HC reference |
251, 253 | The CIN referenced is closed or deleted |
255, 256 | CSN number and date differ by port, or are linked elsewhere |
257, 258 | Invalid CSN number + date |
122/123 usually means a duplicate submission rather than anything subtle — the bill went in
already, possibly from other software, and customs still holds it. Look the bill up with Check an
ICEGATE file before re-entering it; the three situations that produce the pair, and the one
measured case where a fresh re-entry was taken, are in
Troubleshooting.
Amendments and deletions
| Code | Description | What it means |
|---|---|---|
301 | Incorrect CSN detail in amendment | The CSN you are amending against is wrong |
316 | CSN No/Date does not exist for amendment request | No such CSN — check both number and date |
303 | Duplicate amendment request for a record | The same amendment is already in |
319 | CSN amendment already pending approval | An earlier amendment has not been decided yet — wait |
320 | CSN is linked to another CSN — amendment not allowed | |
321 | CSN is closed — amendment not allowed | Too late; the CSN has been closed out |
304 | Only Update-U is allowed | The amendment type you used is not permitted here |
305 | Incorrect message type for amendment | |
306 | Line_No + Sline_No does not exist for update/delete | You are updating a record customs has no line number for |
307 | Line_No + Sline_No already exists for addition | You are adding a record on a line number already in use |
318 | Incorrect records in amendment request | |
230 | Entity/Submitter mismatch for amendment message | Amending someone else's filing |
322, 323 | SAM/SDM amendment pending, or SAM/SDM closed |
306 and 307 are the ones to understand, because they explain the whole amendment model:
customs matches amendment records by line number and sub-line number. Those numbers are an
identity, not a position. Renumbering rows after deleting one will point your update at
somebody else's record — which is why line numbers are never rewritten inside an amendment.
Vessel and voyage
| Code | Description |
|---|---|
302 | Incorrect rotation detail in amendment |
317 | Rotation No/Date does not exist |
279 | Total lines and equipment not found in SAM/SDM |
277, 278 | Totals do not match the manifest |
These generally mean the carrier's arrival manifest is not in place yet, or your voyage reference does not match the one it was filed under. Check the conveyance reference number against the carrier's, not against your own paperwork.
One code you should never see
999 is reserved for internal amendment use and should never reach a filer. If it does, it is
not something you can fix by editing the filing.
When the response carries no field detail
Some rejections — notably 700 Error-Refile — come back with no field-level information at
all. There is nothing to read into it: the filing has to be checked over and sent again. The
arithmetic checks at the top of this page are the first place to look — not because they are
known to cause a 700, but because they can be settled entirely from your own file.
What to do about a 700
700 Error-Refile is a refusal without a reason, so work it as a checklist rather than looking
for the field it names — it names none.
Work it by elimination rather than by reading, because these four are not four guesses. Upload the declaration alongside the acknowledgement on SCMTR JSON upload and all four are run against the bytes you actually sent, each answering pass, fail with the offending value quoted, or an honest "this one could not be settled". Three are settled from the file itself — though the duplicate check can only speak where the filing is one recorded here, since a control number is only re-used against transmissions already on record. The fourth, the voyage, is answered from customs' last answer about that ship as it already stands: it can say your VCN was among customs' calls, or that it was not and name what customs listed at your port instead, or that the answer on record is missing or too old to stand for today. What is still open at the end is the short list to work by hand.
The order is the cheapest check first, not a ranking of causes. Nobody outside customs knows
what a 700 usually means: none of the seven on record here names a field, and neither does anything
ICEGATE has published. Treat any claim that one cause is "the usual one" as a guess.
- The arithmetic, in this order: package counts on the boxes against the consignment
total, container weights against the gross weight, each master container's weight and
packages against the house rows carrying that box, and
totalNoOfTrnsprtEqmtMnfsted and
totalNmbrOfLines against what the file actually contains. SCMTR JSON upload runs every
one of these checks on the file for you.Whether it is a duplicate. If you have sent this filing before, send the new transmission
under a fresh sequenceOrControlNumber. That is the safe choice rather than a proven cause:
ICEGATE's published answer to a re-used number is an e-mail, "The Control Number has already
been processed", not a 700 — and the 700 whose resend is held was sent again the same day under
its original control number and job number, and accepted — as was every other 700 on record, seven in all.The consolidation shape — consolidatedIndctr against whether house bills are actually
present, and the consolidator PAN carrying its PAN: prefix.The voyage — the VCN in cnvnceRefNmbr against the call you mean, and the IMO in
trnsprtMeansId against its check digit — or a VCN customs has since replaced because the
vessel changed; the filing page says what customs listed for the ship when you filed, and
whether your VCN was among it. A possibility rather than a diagnosis. Every 700 reply
read here (seven) marked its vessel and voyage blocks 00 Successful, but that is thin evidence
either way: one of them also marked 00 on master-bill blocks that the accepted version of
its filing does not contain at all.The header's indicator is not on this list. It used to be — "it must be P, a T is
test-flagged" — until two filings flagged T came back accepted, each with a CSN issued. Customs
has taken T files as live filings, so the flag is not a reason for a 700, and changing it is not
a fix. Filings made in this app go as P regardless.
Then correct the draft and file it again. A rejected filing never received a CSN number, so this is a fresh filing rather than an amendment — there is nothing yet to amend.
ICEGATE has published no explanation of 700 itself — it is absent from the MIG's table and
from every official list we hold. Its published guidance for the refusals that arrive by e-mail
(below) is the same shape as the checklist above: correct the file and re-file it under a
different job number. Two things have been said about it since, one published: on 12 September
2026 ICEGATE's engineers described a 700 on a large manifest file as database contention that
clears on a later identical send, and ICES Advisory 38/2026 (21 September 2026, Q6) says the
processing of large manifest files has been moved to dedicated schedulers with re-indexed
databases. Neither names 700, so a 700 on a small, correct file is still worth the checklist;
a 700 that clears on an unchanged re-send was most likely load.
Can a timeout, a wrong port code or a wrong PAN cause a 700?
Filers pass round a list of causes for a 700 — a timeout, a port code that is not in customs'
database, or a party's PAN, GSTIN or IE code entered wrongly — with the advice to check the last
two, then regenerate, sign and upload afresh. The list comes from filers' experience, not from
ICEGATE, and none of it is confirmed. What can be said about each:
- A timeout, or a failure on ICEGATE's side. Plausible, since "Error-Refile" reads as an
instruction to send it again rather than as a verdict on your data. But the transient failures
ICEGATE has documented arrive by e-mail — "Something went wrong", "Please try after some
time" — not as a
700 in an acknowledgement. If the checklist above finds nothing wrong,
re-sending the unchanged file under a fresh control number is a reasonable next step. If it is
refused again, stop and raise it with the ICEGATE helpdesk.A port code customs does not know. Less likely to show up as a 700. Customs has
numbered errors for nearly every port field — 37 and 38 for the ports of acceptance and
receipt, 58 first port, 60 destination, 61 next port, 28/29 for the itinerary — so a
port it refuses would normally come back as one of those, naming the field. Checking your port
codes costs nothing, though; see which port goes where.A wrong PAN, GSTIN or IE code for a party. Less likely for the same reason. There are
numbered errors for the consignor's code (40), the notified party's PAN (111, 144), each
party's code type (39, 41, 45, 136), and the consolidator's PAN (92, 168 and
more). ICEGATE's own guidance files a wrong consignee PAN or IE code under 42, Invalid Buyer
Code. It is still worth checking the consignee's code and code type against their GSTIN or IEC
certificate — see party codes and PANs.But a 700 names no numbered check at all, so none of these is ruled out either. One further observation from the single specimen: the refused reply listed the house
bill's reference and location blocks and stopped there. Its transport document (parties and
ports), items, containers and itinerary do not appear, though all four do in the reply that
accepted the same filing. From one file there is no telling whether the refused version lacked
those blocks or ICEGATE simply stopped reading there. It is worth checking that every house bill
carries all four.
Changing the job number by hand. A new transmission needs a new sequenceOrControlNumber in
the header. Changing decRef.jobNo with it, and the job number in the file name, so all three
agree, is harmless, and it is what ICEGATE's e-mailed refusals ask for ("re-file with a different
job number"). Make the change before you sign: editing a signed
file breaks the signature, and ICEGATE refuses it with "DSC Failed". Re-sign after any change —
see signing your filing.
Refusals that arrive by e-mail, with no acknowledgement at all
Some refusals never produce an _ACK or _SFL file. The filing is stopped before validation
and ICEGATE e-mails the registered address instead. Its 2025 FAQ on SCMTR filing names them, and
its answers are quoted here because they are the only official text on the subject:
| The e-mail says | ICEGATE's explanation | What to do |
|---|---|---|
| Header validation failed for Job no. … The Control Number has already been processed | That job number has already been used for a filing with the same job date. Nothing inside the file has to be wrong | Re-file using a different job number and today's date, and sign it afresh — see Reading an acknowledgement |
| DSC Failed (or DSC validation failed … Please use a valid DSC) | The DSC details are invalid, expired or incorrect, or the signature tag is misplaced; the signing DSC must be the one registered at ICEGATE | Drop the signed file on SCMTR JSON upload (or scmtr.io/check): its Digital signature panel checks the causes a file can show and flags the likely one — an unregistered or renewed DSC, a file re-saved after signing, an expired or revoked certificate. Fix it, sign a fresh copy and re-file with a new control number — see Signing your filing |
| Something went wrong | An issue occurred while processing the filing data | Re-file using a different job number; if it persists, send the file and the error to the helpdesk |
| File is not UTF-8 encoded (or failed due to UTF-8 encoding validation) | One value holds a character that is not plain text — usually pasted from a PDF, Word or an email — saved in the wrong encoding; the e-mail names the line and position | Find it by the line (SCMTR JSON upload lists it with its field), retype the value, create and sign the file again and re-file — see Reading an acknowledgement |
| No e-mail and no ACK; status User not Authorized when the helpdesk checks | The sender in the file does not exist in the ICEGATE system | The senderID must be a valid, active ICEGATE ID; re-file with the correct one |
The 2022 message-filing FAQ lists the same silence from the other side — why an acknowledgement
never arrives: the file name does not follow the seven-part convention; the sender ID is not the
entity's registered ICEGATE ID; the DSC is not the one registered; the wrong signing utility was
used; the file was opened after signing; or it was sent from a different computer than the one
that signed it. It adds one case that does produce an ACK: every block reads 00 Successful
while the e-mail says the file failed. That happens when a required object is missing
entirely — the acknowledgement mirrors the objects that were present, so an absent block has
nowhere to show its error. ICEGATE asks for such cases to be reported to its helpdesk.
What ICEGATE itself says to do about the common codes
In the same 2022 document ICEGATE published the sea-message errors it saw most, each with its
own resolution. The wording below is ICEGATE's, lightly trimmed; the code is the number in the
acknowledgement, and the letter prefix ICEGATE attached (HTD111, MTE082) reads as the level
and block — H house, M master; TD transport document, TE equipment, ID items, TR
measures, LC location, CT transhipper, CR consignment reference, VGD voyage.
| Code | Error | ICEGATE's resolution |
|---|---|---|
14 | Invalid Mode of Transport | 1 sea, 2 rail, 3 road, 4 air |
20 | Invalid Voyage Call Number – VCN | Ports issue VCNs in different formats; customs standardises them. Format: location code (6) + year (4) + 4-digit serial — for Nhava Sheva in 2021, INNSA12021XXXX |
30 | Invalid Type of Packet | Give the UQC code — customs' own word here for the package-type code. The field is Type of packages, on the bill and again on each item under it; the codes the form offers and which of them accepted filings carry are in coded values. It is how the goods are packed; a box that is the package — an ISO tank — files as CON with the count equal to the number of tanks, which customs has accepted (see ISO tank containers) |
31 | Invalid HS Code | Up to 8 digits; if you have 6, the last two should be 0 |
32 / 33 | Invalid UNO / IMDG code | The codes are in the MIG |
36 | Invalid Transhipper Code | The transhipper should have registered the new TG bond; give the correct, valid code |
37 / 38 | Invalid Acceptance / Receipt Port Code | A valid port code; an Indian port code is 6 alphanumeric characters |
42 | Invalid Buyer Code | The buyer is the consignee; give the correct PAN or IEC. PAN is to be given for arrival messages |
36 | Invalid Transhipper Code | The transhipper's PAN — for a CFS moving the cargo, the CFS operator's PAN. A CFS code (INMAA1ECC1) in this field is the common slip; no filing we have seen carrying one was accepted |
43 / 44 / 46 | Invalid Consignor / Consignee (buyer) / Notified Party Country Code | Two-character ISO codes — GB for the United Kingdom, never UK |
49 | Invalid Unit of Volume | LTR or USG |
59 | First Port is Not Same as Port of Reporting | The port of reporting should be the first Indian port the vessel enters |
60 | Invalid Destination Port Code | The right port code, per the MIG |
75 | Invalid Seal Type | ESEAL or BTSL |
76 | Invalid SOC Flag | Y if the containers are owned by the shipper, otherwise N |
82 | Container Bond Not Found For the Agent | Give the PAN of the container agent — the agency that owns the containers. Since ICES Advisory 38/2026 (21 September 2026) customs says the container agent PAN is validated on the line's manifest (SAM) only, not on the CSN — whether 82 is that check is our reading, the advisory names no codes; the code stays in this table because ICEGATE publishes it there, and no refusal on record carries it |
111 / 144 | Invalid Notified Party PAN | The PAN in the right format |
119 | Mandatory MC-Object/Attribute Missing | Which objects are required follows the consolidation indicator and the previous-declaration flag — the MIG's Trade Scenarios Mapping Table |
134 / 139 / 143 | Invalid Consignor / Consignee / Notified Party Country Sub Division Code | Indian state codes are in the MIG; ISO two-character codes otherwise. Code 37 was added for Andhra Pradesh |
145 | Goods Description is NULL | Give a goods description; up to 256 characters |
147 | Invalid Transhipper Bond Number | Give the transhipper's PAN; the transhipper should be registered under SCMTR as ATP |
150 | PAN Not Authorised To Submit Declaration | The PAN in the message must be the authorised submitter's |
157 | Duplicate HS Code in Cargo Items | Mention each HS code once per consignment; goods of one HS code in different containers may be clubbed under one item. We have not seen customs return this code: one refused filing listed six items under a single HS code, customs read those items — it added their packages up — and said nothing about the repeat. So the app points a repeated HS code out in amber and does not stop the filing; combining the rows is still the safe course |
168 / 170 | Invalid Consolidator PAN Format / Consolidator PAN Mismatch | The right PAN, in the right format, depending on the consolidation indicator and the previous-declaration flag |
701 | Multiple SealNo for Equipment-Id | One box, one seal number: the same number on every house bill that names the container. Not in any published list; seen on refused CSNs in September 2026 |
703 | BL and HBL SealNo Does Not Match | A container's seal number differs between the bills that name it (read by its words: the master bill and a house bill) — make it the same on every one. Not in any published list; seen on refused CSNs in September 2026 |
221 | Total Pckg Mismatch in Transport Doc / Item / Eqmt | Packages, volume and weight should match across the objects |
225 | Pckg in MC Does Not Match With Total Pckg in HC Ref | Master total = sum of the house totals = the voyage equipment total |
231 | Pckt Type Not Match in Transport Document and Item Details | The same packet type in all related objects — whichever code you pick, the bill and every item under it carry it, and the package counts add up with it (221, 225) |
255 | Cin_Type+Cin_No in MC Differ Port/Linked | The CIN quoted is not part of the consignment on-boarded for this voyage |
264 | Redundant HC-Object/Attribute | The information is not required; it already exists in the system |
280 / 281 / 282 | Consignor / Consignee / Notified Party City Can Not Be Null | Fill in the city |
Three of its answers are worth reading against the MIG and against real filings. On 20, the
format it quotes is 2021's: every VCN on an accepted filing seen here is a four-character port
code, the year, then a six-digit serial — NSA12026081299, fourteen characters — not a
six-character location code and a four-digit serial. Do not "correct" a VCN that customs' own
enquiry lists to match the example; the number the port issued is the one to file. On the
previous-declaration block, the document says: when quoting a CSN number, write csn in
cinTyp; when quoting a PCIN or MCIN, write that in mcinPcin. The MIG's own definition of cinTyp lists MCIN/PCIN, and
every real reference we have measured carried PCIN — so treat csn there as ICEGATE's 2022
advice for the CSN-number case, not as the everyday value. And on SOC, its gloss — owned "by the
Shipping" — is ambiguous where the field name is not: SOC is shipper-owned container, so Y
means the shipper's box, N the line's. Almost every container on a consolidated filing is the
line's, and N is what accepted filings overwhelmingly carry.
How many error codes are there?
453, transcribed from the MIG's own table for SACHM22 v1.5. This page groups the ones that actually occur into families rather than listing all of them, because the great majority never appear in practice.
A code that is not in that table is worth a second look before you search for it. 700
"Error-Refile" appears in real acknowledgements and in no published list. And ICEGATE fronts
several customs systems, each answering from its own list — the Bill of Entry, the legacy Sea
IGM, the custodian messages — so a number that is not a CSN code may simply be another system's:
Which error list does my code come from? tells them apart by the
message id in the reply. 994 has been asked about and, as of September 2026, is in none of
eighteen published lists, the Bill of Entry's included (that one has 995, 998 and 999 — all
system-side errors — but no 994). The same page says what can and cannot be inferred from that,
and what to send the helpdesk.
They are the second level of validation, and that distinction matters when you are reading a rejection:
- Structural validation runs first. A file that is malformed against the schema comes back
as an
_SFL.json carrying JSON-Schema vocabulary — maxLength, pattern, required — and
no error code from the table at all. If you are looking for a numeric code and cannot find
one, this is why.Business validation runs only on a file that passed structurally, and that is where the
452 codes live.How do I read an acknowledgement file?
The acknowledgement mirrors your filing's own structure and hangs the verdict off each block, so read it block by block rather than top to bottom.
headerField.accpStatus is the overall verdict — Accepted or Rejected.headerField.uniqueId is the transmission id ICEGATE assigned. It identifies the
transmission, not the filing, and it is how the platform tells that a CSN number on customs'
public record belongs to this send and not to another filing on the same bill.Each block carries its own errorCode array. {"errorCode": "00", "errorMessage": "Successful"} means that block passed — so a file full of 00s with one real code in
decRef is telling you exactly where the problem is. 00 is not an error.Absent values arrive as the literal string "null", not as JSON null. "csnNmbr": "null"
on a rejection means no CSN was granted, which is what you would expect — a rejected filing
never gets one.master.decRef.csnNmbr and csnDt carry the CSN and its date on an acceptance. Those two
values are what every later amendment or deletion references, so they are the ones worth
keeping.A worked reading: accpStatus: "Rejected", authPrsn and vesselDtls both 00 Successful,
and decRef carrying 700 Error-Refile with csnNmbr: "null" — the message was structurally
fine, the authorised person and the vessel were accepted, no CSN exists, and the refusal is the
reasonless one. Work the 700 checklist above, then file again.
Still stuck on this?
The assistant answers from this exact page and the rest of our reference material, and names the documents behind every answer.
Have the file? Check it free — no sign-in
General information only — not legal or customs-compliance advice, and it may not reflect the most current ICEGATE/CBIC requirements. Verify against the official sources, or a licensed customs broker, before filing.