Export a full container load by sea¶
Guide information
Requirements
This tutorial requires the installation of the following applications/modules:
Freight Forwarder Management (installs Logistics Accounting automatically)
Freight Sale - required because the shipment in this guide comes from a sales order. It may install automatically when all its dependencies are present; check Installed Apps before starting.
A Full Container Load (FCL) export commits one or more whole containers to a single customer. Every later step - the carrier booking, the Verified Gross Mass (VGM), the House Bill of Lading (HBL) - depends on the route, the container count and the Incoterm you confirm on the shipment, so a mistake found after the carrier booking means cancelling it and starting the schedule again. If a term below is new to you, see the Freight forwarding glossary.
Running scenario: Hai Long Logistics exports 2 x Container 40FT HC (40HC) of footwear (HS 6404) for Nhat Long Footwear from Hai Phong Port to Port of Los Angeles, carrier ONE (Ocean Network Express), Incoterm CFR (Cost and Freight), Port of Los Angeles - Hai Long, the seller’s forwarder, prepays the ocean freight. Buy rate USD 1,850 and sell rate USD 2,150 per container.
Before you start¶
Sales already quoted and confirmed the sales order for Nhat Long Footwear, choosing the sailing ONE COMMITMENT, voyage 026W: see Quote a full container load for sea export and verify that the sales order has created the shipment before Operations starts. This guide picks up from the shipment that confirming the sales order created.
The carrier ONE, the destination agent and both ports already exist: ask your freight Administrator to create the required carrier, agent and port or CFS records before starting.
A buy rate card for ONE Line on Hai Phong Port -> Port of Los Angeles, Container 40FT HC, is set: Maintain carrier rates and vessel schedules.
You are in the User: All Shipments group (ask your freight Administrator to grant this access before starting). User: Own Shipments can only view a shipment - it cannot click Confirm, Booking or any milestone button used in this guide.
Step 1: Confirm the export shipment¶
When Lan (Sales) confirmed the sales order, Viindoo created this export shipment automatically in Draft and copied the customer, the Incoterm, the carrier, the route and the sailing straight from the order, so Operations does not retype them. The shipment still needs a final check and a Confirm before the booking can start.
Go to and open the Nhat Long Footwear shipment (it is already in the list - do not click New). Check the fields that came from the sales order:
Customer: Nhat Long Footwear.
Shipment Type: FCL.
Incoterm: [CFR] COST AND FREIGHT.
Carrier / Route / Sailing: ONE Line, Hai Phong Port -> Port of Los Angeles, ONE COMMITMENT, voyage 026W.
The shipment has no containers yet: they are created from the booking in Step 2, and the cargo and packages are declared on them afterwards (record cargo allocation, actual container numbers and seals on the Cargo & Packages tab).
Click Confirm. After you click it: the status bar moves to Confirmed, the Charges tab and the Bill of Lading section appear, and the Booking button appears in the header.
Tip
Step 1 is done when: the shipment reads Confirmed, the route reads Hai Phong Port -> Port of Los Angeles with carrier ONE Line and Incoterm CFR, and the Charges tab already shows the Ocean Freight - FCL line sold to the customer: Quantity 2 at USD 2,150.
Decide the carrier coverage¶
Option |
Use when |
What changes |
|---|---|---|
Main Only |
The carrier books the ocean leg only (this shipment; the empty container pickup is bought separately from Phuong Nam Transport) |
Only the main carriage leg is booked with ONE Line |
Pickup + Main |
The same booking also covers inland trucking to the port |
A pre-carriage leg must already exist on the shipment |
Main + Delivery |
The same booking also covers delivery at destination |
An on-carriage leg must already exist on the shipment |
Full Route |
The contract is door to door |
Both a pre-carriage and an on-carriage leg must already exist on the shipment |
Choose the coverage agreed with the customer and carrier. If you are not sure which legs this booking includes, confirm with Sales or the booking lead before creating it. Use Main Only only when the carrier booking covers the ocean leg and inland transport is arranged separately.
Step 2: Book the carrier¶
The three cutoff dates on the booking drive every deadline in the rest of this guide - getting one wrong, or entering it late, is the single most common way to miss the vessel.
The full booking procedure is in Book carrier space for a shipment leg; for this shipment:
Click Booking in the shipment header. In the Create Booking window, check Carrier: ONE Line (suggested from the sales order) and Coverage: Main Only (decided above), then click Create.
On the new booking, click Print Booking Request, send the PDF to ONE Line, then click Mark as Requested. Viindoo now creates the 2 Container 40FT HC on the shipment.
When ONE Line’s booking confirmation arrives, fill in Booking Reference: ONEYBK204581, CY Cutoff: 2026-11-04 12:00, SI Cutoff: 2026-11-02 17:00, VGM Cutoff: 2026-11-03 17:00, then click Mark as Confirmed.
CY Cutoff, SI Cutoff and VGM Cutoff are stored as three independent dates on the shipment - none of them is derived from another.
Warning
CY Cutoff is the hardest deadline of the three. A container that reaches the yard after the CY Cutoff is refused for this sailing and rolls over to the next one - exactly what happens later in this shipment (Step 4).
Tip
Step 2 is done when: the booking is Confirmed with Booking Reference ONEYBK204581, the three cutoffs read 2026-11-04 12:00 (CY), 2026-11-02 17:00 (SI) and 2026-11-03 17:00 (VGM), the shipment shows 2 Container 40FT HC, and the Ocean Freight - FCL line now carries a Cost Price of USD 1,850 next to its Unit Price of USD 2,150.
Step 3: Move the containers from empty pickup to gate-in¶
Each container must be marked through its milestones in order - the physical event (the truck leaving the depot, the seal closing, the container crossing the port gate) always happens before the click, never after, so the record stays an honest history for anyone checking it later.
On the Cargo & Packages tab, the Containers list has one inline button per next milestone (no “Mark” prefix on this list - that wording only appears on the container’s own popup form): Empty Picked, Stuffed, Gate-in, Loaded.
Enter the real Container Number and Seal Number of each container first (record cargo allocation, actual container numbers and seals on the Cargo & Packages tab), then, as each event happens:
Container ONEU4567895 (seal OL2604187): Empty Picked at 2026-11-01 08:00; Stuffed at 2026-11-02 14:00; enter VGM Weight 14,940 kg (weighed on a weighbridge) and click Submit VGM at 2026-11-02 16:30 (full procedure in Submit the container’s Verified Gross Mass (VGM)); Gate-in at 2026-11-04 09:00, ahead of the 12:00 CY Cutoff.
Container ONEU4568124 (seal OL2604188): Empty Picked at 2026-11-01 09:30; Stuffed at 2026-11-02 16:00; Submit VGM at 2026-11-02 18:00; Gate-in at 2026-11-04 10:00.
If Container Number or Seal Number is missing when you click a milestone button, Viindoo blocks the move (container name, milestone and missing fields filled in):
Cannot mark container "<container>" as <milestone> yet.
Please fill in: <fields>.
Warning
Both VGM Cutoff (2026-11-03 17:00) and CY Cutoff (2026-11-04 12:00) are hard deadlines: a container submitted or gated-in after its cutoff does not board this sailing.
Tip
Step 3 is done when: both containers show Gate-in before the 2026-11-04 12:00 CY Cutoff and both show VGM Submitted before the 2026-11-03 17:00 VGM Cutoff; container ONEU4567895 shows VGM Weight 14,940 kg.
See also
Track container milestones from empty pickup to return for the full milestone reference (import included) and Submit the container’s Verified Gross Mass (VGM) for VGM methods and rejections.
Step 4: Load the containers and issue the House Bill of Lading¶
The on-board date printed on the HBL has to match the vessel the containers actually sailed on - a bank checking the HBL against the MBL for a Letter of Credit rejects a document that still shows the original booking’s sailing after a rollover.
Before ETD, ONE rolled the whole booking - both containers - from ONE COMMITMENT 026W onto ONE COMPETENCE, voyage 027W (“Space Optimization”, the carrier’s own decision, not a missed cutoff). Recording a rollover and rescheduling a booking is covered in Handle rolled-over and not-loaded containers and is not repeated here; for this shipment, both containers end up Loaded on the new sailing instead of the original one.
Once the containers are physically on board the new sailing, click Loaded for each: ONEU4567895 at 2026-11-12 18:00, ONEU4568124 at 2026-11-12 18:30.
Warning
Viindoo lets you click Loaded on a container whose VGM is still not submitted - it does not check the VGM status. Under SOLAS, a container without a submitted VGM must not be loaded, so check that both containers show VGM Submitted before you click Loaded.
Note
Loaded (container) and ATD (shipment) are two separate clicks - Viindoo does not set one from the other. After marking both containers Loaded, also click Start Transit in the shipment header to record the ATD; skipping it leaves the shipment without a departure date even though every container already shows Loaded.
In the shipment’s Bill of Lading section, fill in HBL No.: HLLHPHLAX2611-001 and MBL No.: ONEY204512367. Then, from the gear (Action) menu, click Print HBL and fill in the print wizard: Ex. Rate: 26,000, Prepaid at: Hai Phong, Payable at: left empty (freight prepaid), No. of Original B(s)/L: 3, Total Prepaid (National Currency): 111,800,000 VND, then click Print.
Before sending the HBL, check it against the MBL: same container numbers (ONEU4567895, ONEU4568124), same seals (OL2604187, OL2604188), and the same on-board date. Viindoo prints the ETD of the Main Carriage leg on the HBL, not the ATD you record with Start Transit - the rollover to voyage 027W already moved that leg’s ETD to 2026-11-12, so the HBL reads the new sailing date, not the original booking’s 2026-11-05 ETD.
Tip
Step 4 is done when: both containers show Loaded, the shipment shows In Transit with an ATD recorded, and HBL No. HLLHPHLAX2611-001 carries the same container numbers, seals and on-board date (2026-11-12) as the MBL - not the original booking date.
See also
Issue an HBL or send an Arrival Notice for the full HBL/MBL/SI document workflow.
Step 5: Invoice the customer and check the gross profit¶
Gross Profit only means something if both sides of every charge are real numbers - a missing Cost Price makes the margin look larger than it is, and Hai Long would only find out at month-end reconciliation.
On the Charges tab, the Ocean Freight - FCL line already carries both prices. Add the two local charge lines - THC at Hai Phong Port (Vendor ONE Line, VND, buy 2,800,000 / sell 3,200,000 per container, Quantity 2) and the D/O fee at Port of Los Angeles (Vendor Pacific Coast Forwarding Agency, Inc., USD, buy 150 / sell 180) - as shown in Charges and Profitability. The three lines add up to the totals below, shown in the company currency (VND) at the scenario rate of VND 26,000 per USD:
Total Revenue: VND 122,880,000.
Total Cost: VND 105,700,000.
Gross Profit: VND 17,180,000.
Then click Create Customer Invoice (visible to the Invoicing group). It creates two draft invoices for Nhat Long Footwear, one per currency: USD 4,480 (ocean freight and D/O fee) and VND 6,400,000 (THC).
Note
If the shipment had been created by hand instead of from a sales order, confirming the booking would have added the Ocean Freight - FCL line with Unit Price 0.00, and the sell price would have to be entered here - see Book carrier space for a shipment leg.
Note
If a yellow banner reads “This gross profit includes an ESTIMATED cost…”, a booking on this shipment was confirmed but its carrier rate could not be resolved, so Viindoo used a cost floor instead of a confirmed buy price. Open the affected charge and enter the real Cost Price before trusting the Gross Profit figure.
Tip
Step 5 is done when: Gross Profit reads VND 17,180,000, every line’s Cost Price is a non-zero number that matches the agreed buy rate (ONE Line for the ocean freight and the THC, Pacific Coast Forwarding Agency, Inc. for the D/O fee) - not just “Gross Profit is positive” - and two draft invoices exist: USD 4,480 and VND 6,400,000.
See also
Charges and Profitability for adding charges manually, editing a posted invoice, and other charge scenarios.
Known limitations¶
Step |
What Viindoo does today |
What you do instead |
|---|---|---|
Export customs declaration (VNACCS) |
No field records the declaration or the customs clearance milestone |
Log the declaration number and clearance date in the shipment’s Chatter |
Shipping Instruction (SI) |
A Blank SI Form (FCL) can be printed to send to the shipper, but there is no field for “SI submitted to the carrier” and no warning against the SI Cutoff |
Log the SI submission date in the Chatter yourself, ahead of the SI Cutoff |
Container Loaded and shipment ATD |
Marking a container Loaded does not set the shipment’s ATD - two separate clicks |
Always click Start Transit after the last container is Loaded |
Container Loaded without a VGM |
Loaded can be clicked while the container’s VGM is still not submitted |
Check VGM Submitted on every container before clicking Loaded |
Container rolled over or not loaded |
Marking a container Rolled Over or Not Loaded keeps it on its current milestone and does not move the booking to a new sailing |
Update the booking’s sailing yourself; see Handle rolled-over and not-loaded containers |
Closing a shipment with costs still pending |
No check blocks closing a shipment while a vendor bill is missing |
Accounting confirms every expected vendor bill exists before treating the shipment as closed |
Troubleshooting¶
A container will not move to the next milestone¶
Symptom: clicking a milestone shows (names filled in):
Cannot move container "<container>" from <current> to <target>.
Cause: the container is not at the milestone that must come immediately before the one you clicked - for example, clicking Loaded while it is still Empty Picked, skipping Stuffed and Gate-in.
Fix: click the milestones in order: Stuffed -> Gate-in -> Loaded.
VGM cannot be submitted¶
Symptom: clicking Submit VGM shows one of these messages:
Cannot submit VGM for container "<container>".
Container must be Stuffed, Gate-in, or Loaded first.
Cannot submit VGM for container "<container>".
Please enter VGM Weight first.
Cause: the container is still Draft or Empty Picked, or VGM Weight is empty.
Fix: click Stuffed first, then enter VGM Weight before clicking Submit VGM.
The booking will not confirm¶
Symptom: clicking Mark as Confirmed shows (booking number filled in):
Booking <booking> must be linked to a shipment leg before it can be confirmed.
Cause: the booking has no Primary Leg - usually because the shipment’s legs changed after the booking was created. Primary Leg is read-only on the booking form.
Fix: cancel this booking and create a new one with the Booking button on the shipment, which links the main carriage leg automatically.
The Gross Profit shows an ESTIMATED cost warning¶
Symptom: yellow banner “This gross profit includes an ESTIMATED cost…” on the Charges tab.
Cause: a confirmed booking’s carrier rate could not be resolved, so a cost floor was used instead of a confirmed buy price.
Fix: open the affected charge line, enter the real Cost Price from the rate card or the carrier’s confirmation, then re-check the Gross Profit.
See also
Related articles
Import a full container load by sea - the reverse operation, receiving an FCL shipment at destination
Consolidate LCL export shipments under a master - grouping several customers’ cargo into one container instead of a full container per customer
Let customers track shipments on the portal - what Nhat Long Footwear sees when tracking this shipment online
Run shipment tasks in a project - turning shipment tasks and timesheets into project costs