EDI 323 Vessel Schedule Data for Cutoff and Rollover Planning
For edi and integration analysts, it leads at shippers, 3pls and carriers · Understand the problem

EDI 323 Vessel Schedule Data for Cutoff and Rollover Planning: Illustrative TMS–ERP order and invoice handoff review beside a warehouse floor; not a client facility.
Quick answer: edi 323 vessel schedule
The EDI 323 is the X12 Vessel Schedule and Itinerary (Ocean) message: V1 identifies the vessel and voyage, and each R4 port call carries DTM dates such as 369 estimated departure plus V9 events. Match revisions on vessel code and voyage, re-derive yard, document and VGM cutoffs from each new departure, and alert on bookings with thin slack.
TL;DR — what you’ll learn
- A 323 is voyage-level: one revision can move cutoffs for every booking on the sailing, often before any 301 booking confirmation changes.
- Match revisions on V101 with its V108 source plus V104 voyage, never on vessel name; a renamed vessel created a duplicate voyage and two missed gates in the trace.
- Re-derive cutoffs from each new DTM 369 using a terminal offset table and alert on slack under 6 hours; a 24-hour earlier departure also moves the US EEI deadline 24 hours.
- In India, CGST rule 96(1)(a) ties the IGST export refund to the carrier's manifest; in the worked example, expediting saved $3,310 in the US but only ₹4,591 in India.
Topics: edi 323 vessel schedule · ETA/ETD changes · cutoff recalculation · x12 323 segments · vessel rollover planning
All quantities, amounts, product codes and events are illustrative teaching examples.
The carrier moved the sailing forward by a day on Tuesday morning. The schedule message arrived in the EDI translator within minutes, the voyage record in the TMS showed the new departure date by lunchtime, and on Wednesday evening two containers still reached the terminal gate after the receiving window had closed. Nobody had recalculated the cutoffs, because the cutoff fields were copied from the booking confirmation weeks earlier and never looked at the voyage again.
An X12 323 vessel schedule feed can prevent that, but only if each revision is matched to the right voyage, every cutoff is re-derived from the new dates, and every booking on the voyage is re-tested against its stuffing and filing plan. Done that way, a pulled-forward departure becomes a planner's alert at 09:15 rather than a rolled container at 18:30 the next day.
- What this guide covers: the 323 segment structure in release 4010, how to read port calls and dates, cutoff recalculation, telling a routine revision from a rollover risk, and the US and Indian filing clocks a schedule change can break.
- What you can reuse: an annotated sample message with the recalculation lines, an ownership table, a voyage-level cost comparison in dollars and rupees, and a go-live checklist that includes the DCSA schedule API alternative.
Where the 323 fits beside the 301 booking and 315 status messages
The 323 describes a vessel's voyage, not your cargo. It tells every subscriber where a ship will call and when, so one revision can affect dozens of bookings that no booking-level message mentions.
X12 describes transaction set 323, Vessel Schedule and Itinerary (Ocean), as carrying the information an ocean carrier needs to communicate a vessel's schedule and itinerary. Reference renderings of release 4010 place it in functional group SO. Carriers send it most often; implementation guides published by terminal operators and port bodies also use it.
- Booking level (301): the carrier's confirmation of one booking, with its assigned vessel, voyage and the cutoffs agreed for it; our 300 and 301 guide covers detecting a roll from consecutive 301s.
- Container level (315): events such as gate-in, loaded and discharged for one container, explained in our 315 status code guide.
- Voyage level (323): the port rotation and dates for one vessel voyage, shared by every booking on that sailing.
- Why it matters: a 323 revision often arrives before any 301 change, so it is the earliest machine-readable warning that cutoffs have moved.
The X12 323 Vessel Schedule and Itinerary (Ocean) message describes one vessel voyage: in release 4010 the V1 segment identifies vessel and voyage, and a mandatory R4 port-call loop, repeatable up to 999 times, carries up to 15 DTM dates and up to five V9 events per port.
Reading V1, R4, DTM and V9 in a release 4010 schedule message
Four segments do the work: V1 names the vessel and voyage, R4 names each port call, DTM dates it and V9 labels the event. Store each port call as its own row keyed by vessel identifier, voyage number and location code.
V1 needs either a vessel code (V101, up to eight characters) or a vessel name (V102, up to 28), and it can carry the flag country, the voyage number in V104, the carrier's SCAC in V105 and, in V108, the source of the vessel code. The 4010 qualifier list for V108 has four values: B for US Bureau of Census, C for the ship's radio call sign, L for Lloyd's Register of Shipping and Z for mutually defined.
Scroll horizontally to see all columns.
| Segment | Usage and repeats | Key elements | How to store it |
|---|---|---|---|
| V1 Vessel Identification | Mandatory, once | V101 vessel code, V102 name, V104 voyage, V105 SCAC, V108 code source | Voyage header keyed on V101 plus V104, never on the name |
| K1 Remarks | Optional, up to 2 | Free text | Keep verbatim; route to a person when it mentions omissions or delays |
| R4 Port or Terminal | Mandatory, loop up to 999 | R401 function (L loading, D discharge, T transshipment, Y relay), R402 qualifier such as UN, R403 location, R406 terminal | One port-call row per R4, with UN/LOCODE and terminal |
| DTM Date/Time Reference | Optional, up to 15 per R4 | Qualifier, date, time | One row per qualifier, with the revision received time |
| V9 Event Detail | Mandatory, up to 5 per R4 | V901 event code, V903 date, V904 time | Event history; never overwrite earlier values |
The date qualifiers that matter for planning sit in the X12 code list: 369 Estimated Departure Date, 370 Actual Departure Date, 371 Estimated Arrival Date, 372 Actual Arrival Date and 311 Latest Receiving Date/Cutoff Date. The V9 event list separates SDD Scheduled Departure Date from EDD Estimated Departure Date, and includes SLD Sailed and COC Cancellation of Conveyance. Which of these a carrier actually sends is fixed by its implementation guide, so read the guide before mapping.
Recomputing gate, document and VGM cutoffs when the ETD moves
Cutoffs are offsets from the departure the terminal and carrier plan to, so they must be derived again from every new estimated departure. Copying cutoff timestamps once at booking guarantees they go stale on the first schedule revision.
Keep a reference table of offsets per terminal and per service: container yard receiving, shipping instructions, verified gross mass and hazardous cargo declarations. When a 323 sends DTM 311, store it and compare it with your derived value, because a terminal notice can change before the carrier's EDI does. The sample below shows one revision and the recalculation it should trigger.
ST*323*0001~
V1*9361235*NORTHERN SAMPLE*LR*124W*ABCD***L~
K1*REVISION 3 ETD ADVANCED 24H~
R4*L*UN*INNSA*NHAVA SHEVA*IN*SAMPLE TERMINAL~
DTM*369*20261120*0600~
V9*EDD*ESTIMATED DEPARTURE*20261120*0600~
R4*D*UN*USSAV*SAVANNAH*US*SAMPLE TERMINAL~
DTM*371*20261218*1400~
V9*EAD*ESTIMATED ARRIVAL*20261218*1400~
SE*10*0001~
Recalculation on receipt (illustrative offsets from the terminal table):
new_ETD = 2026-11-20 06:00 (was 2026-11-21 06:00)
CY_cutoff = new_ETD - 36 h = 2026-11-18 18:00
SI_cutoff = new_ETD - 48 h = 2026-11-18 06:00
VGM_cutoff = new_ETD - 40 h = 2026-11-18 14:00
slack(b, k) = cutoff_k - planned_ready(b, k)
alert if slack(b, k) < 6 h for any booking b on voyage 124W
US export voyages also: EEI_latest = planned_load_start - 24 h
The vessel code, name, terminal and SCAC above are invented for illustration; the UN/LOCODEs INNSA and USSAV are real. Offsets differ by terminal and service, which is why they belong in a maintained table rather than in mapping code.
Telling a routine schedule revision from a likely rollover
Most 323 revisions shift times by a few hours and need no action; the dangerous ones pull departure forward, drop a port or change the vessel. Score each revision on those changes before alerting anyone.
Compare each revision with the last stored one, port call by port call, and classify the difference. A later departure usually adds slack. An earlier one removes it from every booking at once, and that is the case where cargo is left behind because nobody can re-plan stuffing and trucking in the hours remaining.
- Departure pulled forward: recalculate all cutoffs and alert on any booking whose slack falls below the buffer.
- Port omitted: an R4 present in the last revision is missing; every booking loading or discharging there needs a carrier answer.
- Vessel code changed: V101 differs on the same service and voyage; treat it as a substitution and check manifests and filings that name the vessel.
- Event COC received: cancellation of conveyance; stop dispatch planning for the voyage until a 301 confirms the new sailing.
- Departure later by under 12 hours: update the record, log the revision, no alert.
The 323 never confirms that your booking was rolled; only the carrier's booking confirmation or notice does that. Our rollover workflow guide covers what to do once a roll is confirmed. A schedule feed earns its keep earlier, by warning while there is still time to stuff, truck and file ahead of the new cutoffs.
Customs and filing clocks a moved sailing can break in each market
A schedule change moves regulatory deadlines as well as terminal cutoffs. In both markets, the filing tied to loading or departure moves with the vessel, and the cut-off times themselves are set by terminals and carriers rather than by statute.
In the United States, 15 CFR 30.4(b)(2)(i) requires the US principal party in interest or its authorised agent to file Electronic Export Information for vessel cargo, and give the carrier the filing citation or exemption legend, 24 hours before the cargo is loaded at the US port. Our EEI filing guide covers the filing itself; the point here is that the deadline follows loading, not the booking.
Under 15 CFR 30.4(b)(2)(i), a US exporter or authorised agent must file vessel Electronic Export Information and give the carrier the filing citation 24 hours before loading at the US port, so a 323 revision that advances departure by 24 hours advances that EEI deadline by the same 24 hours.
Verified gross mass works the same way in both markets. IMO guidance MSC.1/Circ.1475 makes the shipper responsible for providing the verified gross mass of a packed container sufficiently in advance for the stowage plan, says a container without it should not be loaded, and expects the carrier to tell the shipper the specific deadline after discussion with the terminal. That deadline is a carrier rule, so it moves when the carrier's plan moves.
In India, export cargo needs a let export order on the shipping bill before loading, and the carrier files a departure manifest. Regulation 5(1) of the Sea Cargo Manifest and Transhipment Regulations, 2018 requires that manifest to be delivered electronically before the vessel departs, and regulation 5(3) allows updates within 24 hours after departure for containerised cargo. Port and terminal cutoffs at Indian gateways are commercial practice, published by terminals and lines, not a statutory clock.
Regulation 5(1) of India's Sea Cargo Manifest and Transhipment Regulations, 2018 requires the departure manifest before the vessel leaves, and CGST rule 96(1)(a) ties the IGST export refund to a manifest covering the shipping bill number and date, so rolled cargo must appear on the sailing vessel's manifest.
The rupee consequence is cash, not penalty. Rule 96(1) of the CGST Rules, 2017 treats the shipping bill as the refund application for IGST paid on exported goods once the carrier has filed an export manifest or report covering that shipping bill's number and date and the exporter has filed a valid GSTR-3B. A shipping bill that ends up on the wrong voyage's manifest leaves the refund without its trigger.
Who owns the voyage record, the offsets and each sign-off
A schedule feed touches four teams, and each record needs one owner who can correct it. Without named owners, a stale cutoff stays stale because every team assumes another maintains it.
Scroll horizontally to see all columns.
| Record | Source | Maintained by | Approves changes |
|---|---|---|---|
| Voyage header and port calls | Carrier 323, or a schedule API | EDI or integration analyst | Ocean procurement manager |
| Cutoff offsets per terminal and service | Terminal notices and carrier advisories | Export documentation lead | Logistics manager |
| Booking-to-voyage link | Carrier 301 or booking portal | Export coordinator | Export documentation lead |
| Stuffing and trucking plan | WMS loading plan and drayage or trailer booking | Warehouse shift supervisor | Site operations manager |
| EEI filing (US) or shipping bill and LEO (India) | AES or ICEGATE through the broker or customs broker | Customs broker or CHA | Trade compliance manager |
| Verified gross mass declaration | Weighbridge ticket or approved calculation method | Dispatch clerk | Shipper's authorised signatory |
Field mapping to Indian customs data deserves its own line. The departure manifest cargo declaration form under the 2018 regulations asks for the IMO code of the vessel, the vessel call sign, the voyage number and each shipping bill number and date. A 323 carries one vessel code with its source in V108, so whichever identifier the carrier omits must come from vessel master data, not from the message.
A voyage-level worked example in dollars and rupees
When departure moves forward, the choice for each exposed booking is to pull stuffing and trucking forward or accept the next sailing. The arithmetic below uses illustrative figures for one US and one Indian export voyage.
In both cases the 323 revision advanced departure by 24 hours, and six bookings sat on the voyage. Four still had six hours or more of slack after recalculation. Two did not: their containers were planned to gate in after the new container yard cutoff. The table compares the two choices for those two containers.
Scroll horizontally to see all columns.
| Cost line | US export from Savannah (USD) | Indian export from Nhava Sheva (INR) |
|---|---|---|
| Option A: pull stuffing and trucking forward | ||
| Overtime loading labour, 2 containers | $840 | ₹19,000 |
| Short-notice drayage or trailer premium, 2 containers | $620 | ₹13,000 |
| Total, option A | $1,460 | ₹32,000 |
| Option B: accept the next sailing, 7 days later (US) or 6 days later (India) | ||
| Storage at yard or CFS ($95 or ₹1,800 per container per day) | $1,330 | ₹21,600 |
| Chassis or trailer cost while waiting | $560 | ₹6,000 |
| Customer late-delivery credit (1.5% of $96,000 per container) | $2,880 | Not in contract |
| Financing cost of IGST refund delayed 6 days (₹8,64,000 at 10.5% a year) | Not applicable | ₹1,491 |
| Bank fee for a letter-of-credit shipment-date discrepancy | Not applicable | ₹7,500 |
| Total, option B | $4,770 | ₹36,591 |
| Saving from option A | $3,310 | ₹4,591 |
The US case is clear-cut because the customer contract carries a late-delivery credit. The Indian case is close: without the letter-of-credit discrepancy, accepting the next sailing would cost ₹29,091 and be cheaper than expediting. That is why the decision belongs to a planner with the contract terms in front of them, not to the integration layer.
Trace: a revised voyage the TMS filed as a brand-new sailing
The commonest 323 failure is not a missed message but a mis-matched one. In the trace below, every system worked as configured, and two containers still missed the receiving window.
- Tue 09:12, revision received: the translator accepts 323 control number 0417 for voyage 124W; V102 now reads "M/V NORTHERN SAMPLE" instead of "NORTHERN SAMPLE", and DTM 369 at INNSA moves from 21 November 06:00 to 20 November 06:00.
- Tue 09:13, wrong match: the TMS voyage lookup keys on vessel name plus voyage, finds no match and creates voyage record VY-88214; the six bookings stay linked to the old record VY-87790 with its old dates.
- Tue 09:13, silent cutoffs: cutoff recalculation runs only for bookings on VY-88214, which has none, so no alert is raised and the stuffing plan still targets gate-in on 19 November.
- Wed 18:00 to 18:40, gate rejection: containers for bookings BK-55120 and BK-55127 arrive at 18:25 and 18:40, after the new 18:00 receiving cutoff, and the terminal refuses them for voyage 124W.
- Thu 10:30, fix applied: the lookup is changed to V101 with its V108 source plus V104, the duplicate record is merged, and a daily report lists any voyage record created without bookings.
With the corrected match, the same revision would have raised an alert at 09:14 on Tuesday showing two bookings with negative slack, more than 30 hours before the new cutoff.
Which schedule checks run as fixed rules and which need a planner
Matching, recalculation and alerting are rules; choosing what to do about an exposed booking is a planner's decision. Software can help read free text and estimate further slippage, but it should never move a cutoff by itself.
Scroll horizontally to see all columns.
| Task | Handled by | Reason |
|---|---|---|
| Matching a 323 to a voyage by V101, V108 and V104 | Fixed rule in the integration layer | Names change between revisions; codes do not |
| Re-deriving yard, document and VGM cutoffs from a changed DTM 369 | Fixed rule using the offset table | Same arithmetic for every booking |
| Raising an alert when slack falls under 6 hours | Fixed rule | Threshold agreed with the warehouse in advance |
| Reading a K1 remark such as "omitting Colombo due to congestion" | A text classifier tags likely omissions; an analyst confirms | Free text has no code list |
| Estimating further delay from the vessel's current position | Prediction model shows a range; the planner decides whether to act | Estimates are probabilistic and can lag |
| Choosing to expedite or accept the next sailing | Planner, with contract terms and the cost model | Depends on penalties, credit terms and the customer |
| Correcting the Indian departure manifest after a vessel change | Carrier's manifest filer, prompted by the exporter's CHA | Statutory filing with a 24-hour update window |
Go-live checklist for a 323 feed and its API alternative
Test a schedule feed against real revisions before trusting it with cutoffs. The checklist below covers the connection, the matching logic and the planner workflow, and notes where a schedule API can replace the EDI link.
Some carriers now publish schedules through APIs built to Digital Container Shipping Association standards. DCSA released Operational Vessel Schedules 3.0 in January 2024, covering schedule changes and exceptions such as port omissions and blank sailings, together with a Commercial Schedules 1.0 beta offering point-to-point, port and vessel schedule queries. The matching and recalculation rules stay the same whichever channel delivers the dates.
Scroll horizontally to see all columns.
| Item | Test before go-live | Pass condition |
|---|---|---|
| Envelope and acknowledgement | Exchange test interchanges with the carrier | Control numbers unique; acknowledgements returned |
| Voyage matching | Replay a revision with a changed vessel name | Same voyage record updated, no duplicate |
| Port-call storage | Load a voyage with a transshipment and a relay port | Every R4 stored with function code and UN/LOCODE |
| Date history | Load three revisions of one voyage | All values kept with received time; latest flagged |
| Cutoff recalculation | Advance DTM 369 by 24 hours | All bookings on the voyage re-derived within 5 minutes |
| Slack alert | Seed a booking ready 2 hours after the new cutoff | Alert reaches the planner queue with booking numbers |
| Port omission | Remove one R4 in a revision | Affected bookings listed for carrier follow-up |
| Filing clocks | Check EEI and VGM deadlines after a change | Deadlines shown beside cutoffs for each booking |
| API alternative | Compare API schedule dates with the 323 for 20 voyages | Differences explained before either source is retired |
For related EDI and ocean guides, browse the Logistics and Supply Chain hub. If you want help connecting carrier schedules to your TMS, warehouse plan and customs filings so a schedule change becomes a planner alert instead of a rolled container, share your requirements and we will scope it with you.
Discuss this workflow
Describe your current systems, the recurring exception and the outcome you need. Keep shipment, customer and financial records out of the initial message.
Common operational questions
Practical answers for operations, engineering, and finance teams working on edi 323 vessel schedule in logistics & supply chain.
What is the difference between an EDI 323 and an EDI 301?
Which DTM qualifiers in a 323 carry departure and arrival dates?
Does a 323 tell me my container has been rolled?
How does a vessel schedule change affect Indian export filings?
References
Sources checked 13 November 2026. US and India statutory authorities and vendor documentation support platform facts; the worked examples and diagrams are original.
- X12 - Transaction set 323, Vessel Schedule and Itinerary (Ocean)Official title and purpose statement. Accessed 13 November 2026.
- Stedi - X12 release 004010 reference: transaction set 323 structureThird-party rendering of the licensed X12 standard, used for segment order, usage and repeats (V1, K1, R4 loop to 999, DTM up to 15, V9 up to 5) and functional group SO. Accessed 13 November 2026.
- Stedi - X12 release 004010 element dictionary: elements 374, 304, 115, 309 and 897Date qualifiers 311 and 369 to 372, V9 event codes EDD, SDD, SLD and COC, R4 function codes, the UN location qualifier and V108 values B, C, L and Z; element pages checked individually. Accessed 13 November 2026.
- US Code of Federal Regulations - 15 CFR 30.4, Electronic Export Information filing procedures and deadlinesParagraph (b)(2)(i) vessel cargo deadline of 24 hours before loading; text checked against the Cornell LII copy because eCFR blocked automated access. Accessed 13 November 2026.
- IMO - MSC.1/Circ.1475, Guidelines regarding the verified gross mass of a container carrying cargoShipper responsibility, provision sufficiently in advance for the stowage plan, non-loading without a VGM and carrier-communicated deadlines. Accessed 13 November 2026.
- CBIC - Sea Cargo Manifest and Transhipment Regulations, 2018 (Notification 38/2018-Customs (N.T.)), as amendedConsolidated government-hosted copy (Tripura High Court library) used because no CBIC copy was retrievable; regulation 5(1) and 5(3) and Form VIIA field list checked. Accessed 13 November 2026.
- CBIC - Central Goods and Services Tax Rules, 2017, Rule 96 (refund of integrated tax on exported goods)Sub-rule (1) clauses (a) and (b): export manifest covering shipping bill number and date, and a valid GSTR-3B. Accessed 13 November 2026.
- DCSA - Release of Operational Vessel Schedules 3.0 and Commercial Schedules 1.0 Beta 1 (10 January 2024)Scope of the schedule standards, including port omissions, blank sailings and point-to-point, port and vessel schedule queries. Accessed 13 November 2026.
- ASC X12 — EDI Supply Chain & Transportation Transaction Sets (204/210/214/856/940/945)US standard for electronic data interchange across shippers, 3PLs, and motor carriers.
- FMCSA — 49 CFR Part 395 Hours of Service & Electronic Logging Devices (ELD)US federal motor carrier dispatch and driver duty-status compliance mandate.
- ULIP & NIC GST E-Way Bill Portal — Unified Logistics & Rule 138 ComplianceIndian statutory goods-in-transit and multi-modal logistics verification framework.