Filing a SAM or SDM when you have no software for it
Filing a SAM or SDM when you have no software for it
Customs publishes the SACHM23 message and a door to upload it to. It publishes nothing that
writes one: ICEGATE's own free data-entry utilities cover six other SCMTR messages and never the
SAM or SDM. So the official path for a small agent has been to hand-write the JSON from the
message guide, sign it, upload it, and read the errors one acknowledgement at a time.
Every other way into a manifest here starts with a file somebody else's software made — which is no help at all if nobody's software made one. Since 21 September 2026 you can start one from nothing. Open Shipping line filing and take the card Start one from scratch.
Who is this for?
The agent or carrier of a ship whose manifest no liner system produces: bulk, tanker, break-bulk, project cargo, a tramp call. One bill of lading, or a few. Cargo loose in the hold or in tanks, with no container numbers to quote.
A container ship is a different job, and mostly a different one for us. A container manifest's
lines are the forwarders' own CSNs, already filed and already on the call. Building them by hand
would be typing out other people's filings and inviting the very disagreements customs cross-checks
for (164, 232, 233). So for a container call the wizard says so and points you at Add a line
from a CSN in the editor, which takes everything the CSN states — the bill and its date, parties,
goods, ports, packages, items, containers and route — and quotes its MCIN or PCIN, as the lines of an
accepted container SAM do. Whatever the CSN leaves out is asked for in one form before the line is added.
What do I need before I start?
Five things. None of them is the manifest.
| What | Where it comes from | |
|---|---|---|
| The ship's IMO number | Seven digits | The bill of lading, the agency nomination, or VCN search by name |
| The VCN, applied for | You do not apply for it — the terminal or port does, and customs derives the rotation number from it | Ask the terminal whether the VCN is in. Until it exists, no manifest can be filed at all |
| Your SCMTR registration | ASC if you operate the vessel, ASA if you are its agent | Your ICEGATE registration. See Registering for SCMTR |
| The terminal operator code the port declared on the VCN | Port code plus terminal, e.g. INNSA1NSI1 | The terminal. No list of these codes is published anywhere — not in the message guide, not on the VCN feed |
| The crew list, already on e-Sanchit | Upload it as document type 745000 and keep the Image Reference Number (IRN) it gives back | e-Sanchit. Crew effects go in as 744000 and the ship's stores as 799000 |
The terminal operator code is worth a moment, because it is the one value here that customs
checks and nobody publishes. A code that disagrees with the port's VCN is refused with error 13,
Invalid Terminal Operator Code. Since there is nowhere to look it up, the app does not pretend
otherwise: it asks for it plainly, and remembers the one customs accepted at that port — read from
customs' reply, not from the upload, and a code a reply refused with 13 is forgotten rather than
offered again — so the question is asked once per port rather than once per call. Record the reply
on the send (drop the _ACK on it) and the next manifest at that port offers the right one.
The crew is one reference, not twenty-two people. ICES Advisory 30/2023 lets the crew list, the crew effects and the ship's stores each go to e-Sanchit as a PDF, and the manifest carries the IRN in place of the details. Every real manifest on record declares its crew that way, and so does this one — you are asked for the IRN, not for dates of birth. An arrival manifest asks for the crew list's reference alone; a departure manifest and an entry inward ask for all three, because every real one of each carries the crew effects and the stores too (as references, or listed by name), whatever the guide's field table says about the entry inward.
Your own filing identity — submitter type and code, representative, shipping line code (BLK for a
bulk or tramp call), sea carrier code, bond — is filled in from Settings, where an Org Admin types
it once on the Shipping line filing card; change it there and every later manifest follows. The
ship's type, purpose of call and usual master are remembered against its IMO number, so the second
call for the same hull asks almost nothing.
What order do the four filings go in?
One vessel call, four messages, in this order:
| What it says | Old name | |
|---|---|---|
SAM Arrival manifest | Everything the ship is bringing into this port | the import IGM |
SEI Entry inward | The application for entry inwards, carrying what the terminal counted — people, boxes and contracts — and the crew list, crew effects and ship's stores as e-Sanchit references. The guide has it filed around arrival; the four real SEIs on record went in five days after their SAM, the day after arrival, and — from another line — six hours after a nil SAM and ten to twelve days after the arrival customs had listed | — |
SDM Departure manifest | Everything the ship is taking out of this port | the export EGM |
SDN Departure notification | That the ship has sailed, and the final counts for the call | — |
And the CSNs come before the SAM. ICES Advisory 37/2026 (18 September 2026) has the cargo
summary notifications filed first and the manifest referring to them; where a house bill was never
covered by a CSN, the line adds it by amending the manifest (SAA) rather than waiting for a CSN
that is not coming.
When is each one actually due?
This is the question a bulk filer asks first, and the published answer is kinder to you than to a container line.
- The arrival manifest. For containerised cargo it must be delivered before the vessel leaves
its last port of call. For non-containerised cargo it may be filed at any point in time,
before the vessel arrives at the Indian port — CBIC Circular 43/2020 §6.1, repeated word for
word in ICEGATE's SCMTR FAQ 2.0 at Q20.The departure notification. After departure: within 24 hours for containerised cargo and 72
hours for other cargo, "which otherwise may attract late filing penalty" (Circular 43/2020
§7.1). The departure manifest itself may be updated within the same 24 and 72 hours after
departure — Regulation 5(3), as amended by Notification 54/2019.The departure manifest is due before the vessel departs the port, and Circular 43/2020 says it
"can be updated any time before SDN is filed without the approval of the officer".
These are the published rules, and they are not your customs station's word. Ports differ in what they will take late and what they ask for first; confirm the timings for your call with the customs station you are filing at. The amendment windows, what changes at entry inward and the ₹50,000 penalty are in SCMTR at your port.
What does it ask me, and what does it fill in?
It starts with the ship, because everything else follows from it. Give the IMO number and one lookup against customs' own record answers the VCN, the rotation number, the rotation date, the port and the expected arrival. Those are five values otherwise copied off an e-mail, and five chances to file against the wrong voyage. You pick which call at which port, and which of the four filings this is — named as a steamer agent names them, not by reporting event.
Then the steps, which are the questions in the order you can answer them: the ship, who is filing, where it came from, the cargo, who is on board, then check and file. An entry inward or a departure notification carries no cargo at all, so those two skip straight from who is filing to the call's own counts.
The route numbers itself. Stops are numbered backwards from this port, which is always 0 — that
is what the message means by the sequence, and getting it wrong is what customs refuses as errors
101 and 102. You add the port before this one; you never type a number.
So does the job number. ICEGATE builds the file's name out of six parts and the job number is one of them, so a manifest without one cannot be named at all — and that is discovered at the very end, after the file has been signed. It is your organisation's own counter, so the wizard suggests one past the highest you have used for this sender id, the same way the amendment builder does. It is only a suggestion: your own system numbers its jobs too, and anything it has sent since is invisible here, so check it on the last step before you file.
The ten questions per bill of lading
On an arrival manifest (SAM), for a bulk, tanker or break-bulk line you are asked ten things,
all of them off the bill:
the bill of lading number and its date, the shipper, the consignee, what the cargo is, its HS code, how many units, the gross weight, where it loaded, and whether it is dry bulk, liquid bulk or packaged/break-bulk.
A departure manifest (SDM) is not built from these questions. Its lines are export lines: the
one real departure manifest on record declares every line as export cargo moving to a foreign port
of discharge, accepted at this port, with each house bill quoting the PCIN customs gave its shipping
bill — and the ten questions write an arrival line, which customs' own table of combinations calls
impossible when stamped as an export. So on a departure manifest the wizard builds everything else
and says so on the cargo step; you add the lines in the editor, with Add a line or Add a line
from a CSN (which offers your accepted export CSNs and quotes the CSN — compare the result with
what your own system files before relying on it).
A manifest line has about forty fields. The other thirty are conventions, and asking for them is why this job is done in spreadsheets and by bureaus. They are written for you:
| What is written | Value | Why it is not a guess |
|---|---|---|
| The "container" of break-bulk cargo | equipment type BB, with the bill of lading number as the equipment id | All five lines of the two real bulk arrival manifests on record (a real break-bulk departure manifest numbers each coil instead); and customs' own SCMTR clarifications say a berth or tank number may stand in as an equipment id for bulk |
| Package type | BLK, at both document and item level | All five |
| Weight unit | MTS — metric tonnes | All five |
| Nature of cargo | DB dry bulk / LB liquid bulk | DB on all five; LB is its published counterpart |
| Consolidation and prior declaration | S straight bill, N nothing declared before | All five |
| Dangerous goods | ZZZZZ UN number, ZZZ IMDG class — the guide's "not applicable" values | All five |
| Marks and numbers | NA | All five |
| Split indicator | N — the bill is filed whole | All five |
| Itinerary | One leg: loaded abroad → this port, by sea | All five |
Measured, not assumed. Those are the two real bulk arrival manifests in our sample corpus — five lines between them, filed by a real steamer agent — agreeing with each other on every one. A liquid bulk parcel also carries a gross volume, because the guide makes it mandatory for liquid bulk and only then.
Everything above is editable afterwards. The manifest opens in the editor when the wizard finishes, and every one of these values can be changed there. A value the app chose is shown with the reason it chose it and is never locked.
What can I get wrong here, and what can I not?
Three of the things customs refuses a manifest for are made unreachable by construction, because the file counts itself rather than asking you:
- Error
279 — Total Lines and Equipment Not Found in SAM/SDM — is customs comparing the
declared totals against what the file actually holds. Both totals, every sequence number, and the
vessel's whole container list are worked out from the cargo lines you entered. The vessel list
is the boxes your lines name, listed once — measured that way across every real manifest on record
that carries cargo, 812 of 812 boxes on a 238-line arrival manifest, 750 of 750 on a 559-line
Kolkata one customs accepted, 397 of 397 on a 284-line departure manifest, and every one of the
smaller ones. A box no line claims — an empty being repositioned — is legitimate and is kept.
A box two bills share (two shipping bills stuffed in one container, or two consignments
under one line each) is listed once with the two lines' packages and weights added up — the
accepted Kolkata manifest does that on all nineteen of its shared boxes, and the departure
manifest on its one. Its load status is the lines' own when they all agree, LCL otherwise (customs
accepted a departure manifest with a shared box FCL on both lines and on the list); the rest of the row
is taken from the first line that names it.Error 350 — CB Flag Should be N for Non Containerized Equipment. A break-bulk parcel
cannot move under a container bond, so a non-container box gets bond flag N. A flag you set
yourself is left alone: this fills, it does not correct.Errors 101 and 102 — the itinerary numbering, above.What you can still get wrong is what only you know: the bill, the parties, the cargo, the weights, the terminal operator code. The last step lists what the app can see before you go on, and the editor checks it again.
The last step holds you to the same floor as the rest. You can jump between steps in any order from the row of step names, so it is possible to reach the end without having passed through the middle. "Check it and file it" is therefore gated on every step's required fields, not just the last one's — and where something is outstanding it names the fields and gives you a button straight to the step that asks for each.
Continue is blocked only for a question the message itself requires. The wizard holds you to the
fields ICEGATE's own per-event message schema marks required, and says which they are rather than
greying a button. Everything else the guide's field table marks mandatory is a warning, in amber —
because no customs refusal of a SACHM23 for a field-table rule has ever been read here, and red is
kept for what a refusal proves. What the checks mean sets out the two
tiers.
Can I list the crew and passengers one by one instead?
Yes, in the Shipping line filing editor, on the Voyage tab under Persons on board. The e-Sanchit reference above is how every real manifest on record declares its people, and it is what the wizard asks for. But the manifest also allows each person as their own entry — one line names its master, chief officer and cook that way on every entry inward, beside the crew list's IRN — and since 25 September 2026 the editor has every field ICEGATE's own schemas define for one:
- The person: what the entry is (
FM a crew member, FL a passenger, DEE a stowaway — the
guide's own list), name, gender (1 male, 2 female, 0 not known, 9 not applicable), date and
place of birth, nationality, a crew member's rank (in words and as the guide's code —
MASTER, CHIEFOFF, COOK on the real filings; CAPTAIN, CHIEFENG, ABLESEAM and a hundred
more), and a passenger's ports of embarkation and disembarkation.The identity document, with the guide's document types (passport, seaman's book, identity
card…).The visa, with its number and the booking (PNR) reference. Both are needed once a visa is
given.Crew effects, as before — or item by item, coded 099 (miscellaneous) with the thing in words
and a quantity in PCS or KGS, which is how the same line lists a phone and charger or a pen
drive. The guide publishes no list of units for crew effects or stores; customs refuses one it does
not know (198, 203), so the field offers the units real filings use and takes what you type.Documents and statements about the manifest as a whole have their own lists at the end of the
Voyage tab (Supporting documents and Additional declarations for the manifest). On an
amendment (SAA or SDA) the vessel section also takes the ship's registry details: vessel code,
flag, port and date of registry, registry number, and gross and net tonnage. ICEGATE's schemas carry
those on amendments only.
No manifest we have seen lists people one by one, so these fields are built to ICEGATE's schemas rather than proven against an accepted filing.
What does the wizard not do?
It creates the manifest. It does not check it, sign it or send it. Those three have lived in the Shipping line filing editor since 12 September 2026, behind the gate that stops the same file going to customs twice — and a second answer to "is this sendable" would be a worse answer. So the last step hands the finished manifest to the editor, where the Checks tab runs over it, you can ask ICEGATE about the bills it quotes, and you sign it with your own DSC and upload it. Nothing reaches customs until you sign.
And no manifest built here has been accepted by customs yet, because none has been sent. The checks on the review screen are this app's, over the file: they say the manifest does not contradict itself. Customs is the authority on whether a manifest is accepted, and we will say so on the screen where you are about to file rather than imply otherwise. The conventions above are drawn from real bulk filings a real agent made; that is the strongest evidence available short of our own acceptance, and it is not the same thing.
It also does not build amendments. A manifest customs has already accepted is corrected with an
SAA or an SDA, built from the accepted file rather than re-answered —
see How do I amend a shipping line filing?.
Where to go next
- Working with a shipping line filing (SAM / SDM) — the
editor the wizard hands over to: the checks, saving, signing, uploading, and reading customs'
reply.Customs rejected my SAM — which bills, and why? — a refusal
read line by line against customs' own record.How do I amend a shipping line filing (SAA or SDA)? — the
approval windows, and building the amendment from the manifest you already hold.Which SCMTR message am I supposed to file? — the six events and
when each is due.
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.