Bill of Lading

Author: Accord Project

bill-of-lading@0.2.0 Clause ^0.26.0 fd10e0b48621533bbf38d577b4df4e9e2d70d80e9fb26ec0e4cdcca6a22bb44a

Bill of Lading for transport of goods via ocean vessel

Download Archive Download Compiled Archive Open in Template Playground Open in VSCode Web

Bill of Lading

This clause defines a Bill of Lading for the transport of goods via an ocean vessel.

References:

  • https://www.icecargo.com.au/bill-of-lading/
  • https://www.advancedontrade.com/2015/03/how-to-complete-consignee-and-notify-fields-of-a-bill-of-lading.html

Template Text

"MAERSK LINE"

Bill of Lading for Ocean Transport or Multimodal Transport

Non-negotiable unless consigned TO ORDER

ORIGINAL

SCAC: "MAEU"

B/L Number: "MAEU-ABC12345678"

Booking Number: "2021030264747"

Shipper

"CLAUSE TECHNOLOGIES"

Consignee

"TO ORDER"

Notify Party

"SAME AS CONSIGNEE"

Exporter References: ""
Onward Instructions: ""

Vessel: "Lagua"
Voyage number: "725"

Port of Loading: "Shanghai, China"
Port of Discharge: "Brisbane, Australia"

Place of Receipt: "Brisbane, Australia"
Place of Delivery: "Brisbane, Australia"

Freight

  1. Amount: 15 TONNE Package: CONTAINER Description: "Corn" NMFC: "" Freight Class: CLASS_400 Hazardous: NO

  2. Amount: 35 TONNE Package: CONTAINER Description: "Wheat" NMFC: "" Freight Class: CLASS_400 Hazardous: NO

Declared value: 2500.00 USD.

# "MAERSK LINE"

## Bill of Lading for Ocean Transport or Multimodal Transport
### Non-negotiable unless consigned TO ORDER
## ORIGINAL

SCAC: "MAEU"

B/L Number: "MAEU-ABC12345678"

Booking Number: "2021030264747"

### Shipper

"CLAUSE TECHNOLOGIES"

### Consignee

"TO ORDER"

### Notify Party

"SAME AS CONSIGNEE"

Exporter References: ""  
Onward Instructions: ""

Vessel: "Lagua"  
Voyage number: "725"

Port of Loading: "Shanghai, China"  
Port of Discharge: "Brisbane, Australia"

Place of Receipt: "Brisbane, Australia"  
Place of Delivery: "Brisbane, Australia"

### Freight

1. Amount: 15 TONNE Package: CONTAINER Description: "Corn" NMFC: "" Freight Class: CLASS_400 Hazardous: NO
1. Amount: 35 TONNE Package: CONTAINER Description: "Wheat" NMFC: "" Freight Class: CLASS_400 Hazardous: NO

### Declared value: 2500.00 USD.
# {{accountName}}

## Bill of Lading for Ocean Transport or Multimodal Transport
### Non-negotiable unless consigned TO ORDER
## ORIGINAL

SCAC: {{scac}}

B/L Number: {{bolNumber}}

Booking Number: {{bookingNumber}}

### Shipper

{{shipper}}

### Consignee

{{#optional consignee}}{{this}}{{/optional}}

### Notify Party

{{#optional notifyParty}}{{this}}{{/optional}}

Exporter References: {{#optional exportReferences}}{{this}}{{/optional}}  
Onward Instructions: {{#optional onwardInstructions}}{{this}}{{/optional}}

Vessel: {{vessel}}  
Voyage number: {{voyageNumber}}

Port of Loading: {{portOfLoading}}  
Port of Discharge: {{portOfDischarge}}

Place of Receipt: {{#optional placeOfReceipt}}{{this}}{{/optional}}  
Place of Delivery: {{#optional placeOfDelivery}}{{this}}{{/optional}}

### Freight

{{#olist commodities}}
Amount: {{quantity}} {{unitOfMass}} Package: {{packageType}} Description: {{description}}{{#optional nmfcCode}} NMFC: {{this}}{{/optional}}{{#optional freightClass}} Freight Class: {{this}}{{/optional}}{{#optional hazmat}} Hazardous: {{this}}{{/optional}}
{{/olist}}

### Declared value: {{declaredValue}}.
{
  "$class": "org.accordproject.billoflading@0.1.0.TemplateModel",
  "accountName": "MAERSK LINE",
  "scac": "MAEU",
  "bolNumber": "MAEU-ABC12345678",
  "bookingNumber": "2021030264747",
  "exportReferences": "",
  "onwardInstructions": "",
  "shipper": "resource:org.accordproject.organization.Organization#CLAUSE%20TECHNOLOGIES",
  "consignee": "resource:org.accordproject.organization.Organization#TO%20ORDER",
  "notifyParty": "resource:org.accordproject.organization.Organization#SAME%20AS%20CONSIGNEE",
  "vessel": "Lagua",
  "voyageNumber": "725",
  "portOfLoading": "Shanghai, China",
  "portOfDischarge": "Brisbane, Australia",
  "placeOfReceipt": "Brisbane, Australia",
  "placeOfDelivery": "Brisbane, Australia",
  "commodities": [
    {
      "$class": "org.accordproject.billoflading@0.1.0.Commodity",
      "quantity": 15,
      "unitOfMass": "TONNE",
      "packageType": "CONTAINER",
      "description": "Corn",
      "nmfcCode": "",
      "freightClass": "CLASS_400",
      "hazmat": "NO"
    },
    {
      "$class": "org.accordproject.billoflading@0.1.0.Commodity",
      "quantity": 35,
      "unitOfMass": "TONNE",
      "packageType": "CONTAINER",
      "description": "Wheat",
      "nmfcCode": "",
      "freightClass": "CLASS_400",
      "hazmat": "NO"
    }
  ],
  "declaredValue": {
    "$class": "org.accordproject.money.MonetaryAmount",
    "doubleValue": 2500,
    "currencyCode": "USD"
  },
  "clauseId": "8b089844-c8dc-41fe-93bb-2d4bf1f85a71",
  "$identifier": "8b089844-c8dc-41fe-93bb-2d4bf1f85a71"
}

Template Model

namespace org.accordproject.billoflading@0.1.0

import org.accordproject.contract@0.2.0.Clause from https://models.accordproject.org/accordproject/contract@0.2.0.cto

enum PackageType {
  o BAG
  o BALE
  o BARREL
  o BASKET
  o BATTERY_CORROSIVE_WET
  o BIN
  o BOX
  o BUNCH
  o BUNDLE
  o CABINET
  o CAN
  o CARBOY
  o CARRIER
  o CARTON
  o CASE
  o CASK
  o CONTAINER
  o CRATE
  o CYLINDER
  o DRUM
  o LOOSE
  o OTHER
  o PACKAGE
  o PAIL
  o PALLET
  o PIECES
  o PIPE_LINE
  o RACK
  o REEL
  o ROLL
  o SKID
  o SPOOL
  o TANK
  o TUBE
  o UNIT
  o VAN_PACK
  o WRAPPED
}

enum FreightClass {
  o CLASS_50
  o CLASS_55
  o CLASS_60
  o CLASS_65
  o CLASS_70
  o CLASS_775
  o CLASS_85
  o CLASS_925
  o CLASS_100
  o CLASS_110
  o CLASS_125
  o CLASS_150
  o CLASS_175
  o CLASS_200
  o CLASS_250
  o CLASS_300
  o CLASS_400
  o CLASS_500
}

enum Hazardous {
  o YES
  o NO
}

/**
 * Unit of mass - inlined from org.accordproject.value to avoid dependency
 */
enum UnitOfMass {
  o KG
  o TONNE
  o LB
  o OZ
  o STONE
}

concept Commodity {
  o Integer quantity
  o UnitOfMass unitOfMass
  o PackageType packageType
  o String description
  o String nmfcCode optional
  o FreightClass freightClass optional
  o Hazardous hazmat optional
}

/**
 * An (To Order) Bill of Lading is a legal document that gives the
 * holder of the bill of lading legal title to the goods described.
 * Refs: https://www.icecargo.com.au/bill-of-lading/
 * https://www.advancedontrade.com/2015/03/how-to-complete-consignee-and-notify-fields-of-a-bill-of-lading.html
 *
 * Note: shipper, consignee and notifyParty are String fields in v0.25
 * (Party relationships are not supported in the new format)
 */
@template
asset TemplateModel extends Clause {

  o String accountName

  o String scac
  o String bolNumber
  o String bookingNumber
  o String exportReferences optional
  o String onwardInstructions optional

  o String shipper
  o String consignee optional
  o String notifyParty optional

  o String vessel
  o String voyageNumber

  o String portOfLoading
  o String portOfDischarge

  o String placeOfReceipt optional
  o String placeOfDelivery optional

  o Commodity[] commodities
  o Double declaredValue
  o String declaredValueCurrency optional
}

Model Dependencies

Template Logic

Find the full logic for this template on on GitHub.

State Types

Type Sample JSON
org.accordproject.runtime@0.2.0.State
{
    "$class": "org.accordproject.runtime@0.2.0.State",
    "$identifier": "77b14180-50a4-11f1-a498-6b6dff021a96"
}

Request Types

Type Sample JSON
org.accordproject.runtime@0.2.0.Request
{
    "$class": "org.accordproject.runtime@0.2.0.Request",
    "$timestamp": "2026-05-15T21:24:33.816Z"
}

Response Types

Type Sample JSON
org.accordproject.runtime@0.2.0.Response
{
    "$class": "org.accordproject.runtime@0.2.0.Response",
    "$timestamp": "2026-05-15T21:24:33.816Z"
}

Events Types

Type Sample JSON

Technical Integration

Please refer to the Accord Project documentation for how to use a template or integrate it within your application.

View the Latest code for this template on GitHub.