START A CONVERSATION

Let’s talk about your next build.

Prepare your brief below, then review and send it in your email app to sales@nextlabsonline.com.

THE FIRST CONVERSATION

Your product idea, AI opportunity or automation challenge—and a useful first milestone.

All fields are required.

A few sentences about the problem, your users and timing are enough.

We’ll use your details to respond to your enquiry. Please don’t include patient records, passwords or confidential information. Privacy Policy · Website Terms.

Logistics & supply chain / EDI & Message Standards

EDI 323 Vessel Schedule Data for Cutoff and Rollover Planning

By Vikasraj YadavPublished 9 min read

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 — Two supply chain IT and finance staff sitting at a wooden table with two side-by-side out-of-focus monitors, two closed laptops, a blank ruled clipboard, and a plain cream folder, overlooking a warehouse floor with pallet racking and an orange forklift.

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.

At a glance · Quick answer

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.

Segments of the 4010 vessel schedule message and how to store them
SegmentUsage and repeatsKey elementsHow to store it
V1 Vessel IdentificationMandatory, onceV101 vessel code, V102 name, V104 voyage, V105 SCAC, V108 code sourceVoyage header keyed on V101 plus V104, never on the name
K1 RemarksOptional, up to 2Free textKeep verbatim; route to a person when it mentions omissions or delays
R4 Port or TerminalMandatory, loop up to 999R401 function (L loading, D discharge, T transshipment, Y relay), R402 qualifier such as UN, R403 location, R406 terminalOne port-call row per R4, with UN/LOCODE and terminal
DTM Date/Time ReferenceOptional, up to 15 per R4Qualifier, date, timeOne row per qualifier, with the revision received time
V9 Event DetailMandatory, up to 5 per R4V901 event code, V903 date, V904 timeEvent 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.

From a 323 revision to re-tested bookings: schedule change handling Step 1, Receive and match: Voyage found by code, not by name. V101 with V108 source plus V104; Name change logged, no new voyage; Acknowledge the interchange. Step 2, Store the revision: Port calls and dates kept as history. One row per R4 with UN/LOCODE; DTM and V9 values with received time; Omitted ports and COC flagged. Step 3, Re-derive cutoffs: Offsets applied to new departure. Yard, document and VGM cutoffs; US EEI deadline from loading; Compare with any DTM 311 sent. Step 4, Alert and decide: Exposed bookings to a planner. Slack under 6 hours raises alert; Expedite or next sailing costed; Manifest and filings checked. From a 323 revision to re-tested bookings: schedule change handling Match the voyage on codes, store every revision, re-derive cutoffs, then alert planners on exposed bookings 1 · RECEIVE AND MATCH Voyage found by code, not by name • V101 with V108 source plus V104 • Name change logged, no new voyage • Acknowledge the interchange 2 · STORE THE REVISION Port calls and dates kept as history • One row per R4 with UN/LOCODE • DTM and V9 values with received time • Omitted ports and COC flagged 3 · RE-DERIVE CUTOFFS Offsets applied to new departure • Yard, document and VGM cutoffs • US EEI deadline from loading • Compare with any DTM 311 sent 4 · ALERT AND DECIDE Exposed bookings to a planner • Slack under 6 hours raises alert • Expedite or next sailing costed • Manifest and filings checked

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.

Ownership of voyage schedule, cutoff and filing records for export bookings
RecordSourceMaintained byApproves changes
Voyage header and port callsCarrier 323, or a schedule APIEDI or integration analystOcean procurement manager
Cutoff offsets per terminal and serviceTerminal notices and carrier advisoriesExport documentation leadLogistics manager
Booking-to-voyage linkCarrier 301 or booking portalExport coordinatorExport documentation lead
Stuffing and trucking planWMS loading plan and drayage or trailer bookingWarehouse shift supervisorSite operations manager
EEI filing (US) or shipping bill and LEO (India)AES or ICEGATE through the broker or customs brokerCustoms broker or CHATrade compliance manager
Verified gross mass declarationWeighbridge ticket or approved calculation methodDispatch clerkShipper'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.

Illustrative cost of expediting versus accepting the next sailing for two exposed containers
Cost lineUS 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,880Not 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 discrepancyNot 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.

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.

Vessel schedule tasks: fixed rules, software assistance and planner decisions
TaskHandled byReason
Matching a 323 to a voyage by V101, V108 and V104Fixed rule in the integration layerNames change between revisions; codes do not
Re-deriving yard, document and VGM cutoffs from a changed DTM 369Fixed rule using the offset tableSame arithmetic for every booking
Raising an alert when slack falls under 6 hoursFixed ruleThreshold 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 confirmsFree text has no code list
Estimating further delay from the vessel's current positionPrediction model shows a range; the planner decides whether to actEstimates are probabilistic and can lag
Choosing to expedite or accept the next sailingPlanner, with contract terms and the cost modelDepends on penalties, credit terms and the customer
Correcting the Indian departure manifest after a vessel changeCarrier's manifest filer, prompted by the exporter's CHAStatutory 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.

Implementation checklist for a vessel schedule feed, with the test for each item
ItemTest before go-livePass condition
Envelope and acknowledgementExchange test interchanges with the carrierControl numbers unique; acknowledgements returned
Voyage matchingReplay a revision with a changed vessel nameSame voyage record updated, no duplicate
Port-call storageLoad a voyage with a transshipment and a relay portEvery R4 stored with function code and UN/LOCODE
Date historyLoad three revisions of one voyageAll values kept with received time; latest flagged
Cutoff recalculationAdvance DTM 369 by 24 hoursAll bookings on the voyage re-derived within 5 minutes
Slack alertSeed a booking ready 2 hours after the new cutoffAlert reaches the planner queue with booking numbers
Port omissionRemove one R4 in a revisionAffected bookings listed for carrier follow-up
Filing clocksCheck EEI and VGM deadlines after a changeDeadlines shown beside cutoffs for each booking
API alternativeCompare API schedule dates with the 323 for 20 voyagesDifferences 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.

START A CONVERSATION

Let’s talk about your next build.

Prepare your brief below, then review and send it in your email app to sales@nextlabsonline.com.

SELECTED INDUSTRYLogistics & supply chain

Article: EDI 323 Vessel Schedule Data for Cutoff and Rollover Planning · EDI & Message Standards

THE FIRST CONVERSATION

Your product idea, AI opportunity or automation challenge—and a useful first milestone.

All fields are required.

A few sentences about the problem, your users and timing are enough.

We’ll use your details to respond to your enquiry. Please don’t include patient records, passwords or confidential information. Privacy Policy · Website Terms.

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?
The 323 describes a vessel voyage: its port rotation and estimated or actual dates, shared by every booking aboard. The 301 is a carrier's confirmation of one booking, with the vessel, voyage and cutoffs assigned to it. A 323 revision often arrives first, so it is the earlier warning that cutoffs have moved.
Which DTM qualifiers in a 323 carry departure and arrival dates?
The X12 date qualifier list includes 369 Estimated Departure Date, 370 Actual Departure Date, 371 Estimated Arrival Date, 372 Actual Arrival Date and 311 Latest Receiving Date/Cutoff Date. Which ones a carrier actually sends inside each R4 port-call loop is set by its implementation guide, so map from the guide rather than the dictionary.
Does a 323 tell me my container has been rolled?
No. The 323 reports the vessel's schedule, not your booking's status. A pulled-forward departure, a missing port call or a cancellation event signals rollover risk, but only the carrier's booking confirmation or notice confirms a roll. Use the 323 to re-plan stuffing and trucking while the new cutoffs can still be met.
How does a vessel schedule change affect Indian export filings?
The carrier must deliver the departure manifest before the vessel departs under regulation 5(1) of the Sea Cargo Manifest and Transhipment Regulations, 2018. CGST rule 96(1)(a) makes the IGST refund depend on a manifest covering the shipping bill, so cargo moved to another voyage must appear on the manifest of the vessel that sails.

References

Sources checked 13 November 2026. US and India statutory authorities and vendor documentation support platform facts; the worked examples and diagrams are original.

About the author

Vikasraj Yadav writes about operational decisions, software and automation for NextEdge Labs.