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 / Logistics Data & Tech Standards

DCSA Track & Trace and eBL APIs for Ocean Visibility

By Vikasraj YadavPublished 8 min read

For supply chain it architects and product owners · Compare approaches

DCSA Track & Trace and eBL APIs for Ocean Visibility — Two logistics systems engineers reviewing dual monitors at a warehouse IT operations desk overlooking a high-bay pallet racking floor.

DCSA Track & Trace and eBL APIs for Ocean Visibility: Illustrative logistics integration monitoring and event-queue reconciliation desk; not a client facility.

At a glance · Quick answer

Quick answer: dcsa track and trace api

The DCSA Track & Trace API publishes shipment, transport and equipment events, each tagged ACT, EST or PLN, through GET /v2/events or signed subscription callbacks. Version 2.2 is public; 3.0.0 sits behind member and partner access. Separate eBL APIs move shipping instructions, transport document approval, issuance and surrender, so store their response codes beside the events.

TL;DR — what you’ll learn

  • Track & Trace 2.2 defines 11 equipment codes, 2 transport codes and 15 shipment codes, and every event carries ACT, EST or PLN; only ACT equipment events should move a container clock.
  • Subscriptions push events to your callbackUrl with a Notification-Signature header, a sha256 value over the exact UTF-8 body, so verify it before parsing and reject any mismatch.
  • The eBL set is four APIs: shipping instructions and transport document 3.0.x, issuance (ISSU, BREQ, REFU), surrender (SREQ, AREQ answered by SURR or SREJ) and platform interoperability with 7 response codes.
  • DCSA's conformance page lists 6 carriers as confirmed for Track & Trace 2.x and 4 more as unverified legacy entries, so test each carrier's coverage on your own lanes before switching off EDI 315.

Topics: dcsa track and trace api · dcsa event model · dcsa carrier adoption · dcsa ebl api · ocean visibility api

All quantities, amounts, product codes and events are illustrative teaching examples.

Three carriers on your tender all say they "support DCSA". The first exposes Track & Trace 2.2 with subscriptions, the second offers polling only and fills half the fields, and the third points you to an eBL platform whose API returns a code your ERP has never seen. Six weeks into the build, the visibility screen shows a container as discharged in Colombo while the dray desk is waiting for it in Nhava Sheva.

The DCSA specifications are precise enough to avoid that, provided you treat each one as a separate contract with its own keys, response codes and owner. This guide maps the event model and the electronic bill of lading APIs to the records your TMS and ERP keep, so that events are verified before use, duplicates are ignored and every title change in an eBL is stored as evidence.

  • What this guide covers: which DCSA standards a project touches, the three event families and their classifier, polling versus signed subscriptions, journey keys, the shipping instructions and transport document API, issuance, surrender and platform transfer, and carrier adoption.
  • What it adds: a sample event with its signature check, a failure trace at a transhipment port, ownership and rules tables, and a cost model in dollars and rupees.

Which DCSA specifications an ocean visibility build actually uses

A visibility and eBL programme normally touches five DCSA APIs, each versioned on its own. The Digital Container Shipping Association is an industry body formed by container carriers; its standards are voluntary interface contracts, not US or Indian regulation, so availability depends on each carrier's choice of version.

Scroll horizontally to see all columns.

DCSA interfaces relevant to container visibility and electronic bills, with the version published on SwaggerHub at the time of writing
InterfacePublished version checkedMain endpointsTypical consumer
Track & Trace2.2.0 public; v3.0.0 via member and partner accessGET /v2/events, /v2/event-subscriptionsShipper, forwarder, visibility platform
Shipping Instructions and Transport Document3.0.3/v3/shipping-instructions, /v3/transport-documentsShipper or forwarder documentation team
eBL Issuance3.0.3PUT /v3/ebl-issuance-requests, POST /v3/ebl-issuance-responsesCarrier and eBL platform
eBL Surrender3.0.3POST /v3/ebl-surrender-requests, /v3/ebl-surrender-responseseBL platform and carrier
eBL Platform Interoperability3.0.0POST /v3/envelopes, finish-transfer, receiver-validationOne eBL platform to another

Most shippers consume only the first two directly. Issuance, surrender and interoperability run between carriers and eBL platforms, yet their outcomes decide when your consignee can take delivery, so you need their response codes even if you never call those endpoints. The legal side of electronic bills, including control under UCC 7-106 and India's position, is covered in our electronic bill of lading guide.

Shipment, transport and equipment events and the ACT, EST, PLN tag

Track & Trace 2.2 has three event families, and every event carries an eventClassifierCode of ACT (actual), EST (estimated) or PLN (planned). Only actual equipment events should move a container clock; estimates and plans feed forecasting and nothing else.

  • Equipment events: LOAD, DISC, GTIN, GTOT, STUF, STRP, PICK, DROP, INSP, RSEA and RMVD, with emptyIndicatorCode EMPTY or LADEN and the container in equipmentReference.
  • Transport events: ARRI and DEPA for a transport call, the vessel or other mode arriving at or leaving a location, with optional delay reason and schedule change remarks.
  • Shipment events: the document lifecycle, such as RECE, DRFT, APPR, ISSU, SURR, HOLD and RELS, pointing at a document type such as BKG, SHI, TRD or VGM.

The specification adds one rule that trips up data teams: for shipment events, eventDateTime must equal eventCreatedDateTime. A shipment event therefore records when the document status changed in the carrier's system, never a forecast. Equipment and transport events, by contrast, can describe the future, so the same DISC code can arrive three times for one box: PLN at booking, EST when the vessel is a day out and ACT after the crane move.

DCSA Track & Trace 2.2 separates 11 equipment event codes, 2 transport event codes and 15 shipment event codes, and tags each event ACT, EST or PLN. A container milestone in the TMS should accept only ACT equipment events, keyed to the transport call, while EST and PLN values update forecasts without touching free-time clocks.

Teams that also receive X12 feeds will want a crosswalk. DISC with ACT corresponds to a 315 UV, GTOT with LADEN at the discharge terminal to an OA, and GTIN with EMPTY at a depot to an empty return. Our article on EDI 315 container status codes sets out which of those X12 events start and stop each free-time clock; the same clock logic applies once the DCSA events are mapped.

Polling GET /v2/events or subscribing with a signed callback

Subscriptions are the primary path and polling is the recovery path; a production integration needs both. Track & Trace 2.2 supports polling on GET /v2/events with filters and a cursor, and a push model in which you register a callbackUrl and a shared secret through POST /v2/event-subscriptions.

Paged responses carry Current-Page, Next-Page, Prev-Page, First-Page and Last-Page headers, and each response states its API-Version. Each callback carries the Subscription-ID and a Notification-Signature header of the form sha256=hex. The specification says the signature must cover the entire request body, whitespace and newlines included, decoded as UTF-8 bytes, and that neither headers nor the URL are covered.

POST /dcsa/callbacks/tnt HTTP/1.1
Content-Type: application/json
Subscription-ID: 6c1e0d4a-2b71-4c4e-9a43-0f5d6f2b9e11
Notification-Signature: sha256=<64 hex characters>
API-Version: 2.2.0

[{
  "eventID": "8f2d1c90-5e41-4b6f-a0a7-3c9b72e1d054",
  "eventCreatedDateTime": "2026-11-21T16:09:12+05:30",
  "eventType": "EQUIPMENT",
  "eventClassifierCode": "ACT",
  "eventDateTime": "2026-11-21T16:05:00+05:30",
  "equipmentEventTypeCode": "DISC",
  "equipmentReference": "NXEU5520314",
  "ISOEquipmentCode": "45G1",
  "emptyIndicatorCode": "LADEN",
  "transportCall": {
    "transportCallSequenceNumber": 2,
    "UNLocationCode": "INNSA",
    "exportVoyageNumber": "418W",
    "importVoyageNumber": "419E",
    "modeOfTransport": "VESSEL",
    "vessel": { "vesselIMONumber": "9321483" }
  },
  "documentReferences": [
    { "documentReferenceType": "BKG", "documentReferenceValue": "EXBK5530921" },
    { "documentReferenceType": "TRD", "documentReferenceValue": "EXCRNSA7712044" }
  ]
}]

Receiver check, in order:
1. raw = request body bytes exactly as received (UTF-8, no re-serialising)
2. expected = HMAC-SHA256(secret stored for Subscription-ID, raw), hex encoded
3. if "sha256=" + expected != Notification-Signature: reply 4xx, store nothing
4. for each event: skip if eventID already stored; else insert raw JSON + parsed fields

The sample is illustrative. Step 2 shows the common keyed-hash construction; confirm the exact algorithm in each carrier's implementation note, because the specification names the signature type as sha256 and leaves the shared-secret mechanics to the parties. Run a daily poll with eventCreatedDateTime filters to catch callbacks lost during your own outages.

Journey keys that keep one container's moves apart

A container number is not a key. The same box can be discharged at a transhipment port and again at destination within one bill of lading, and it will be reused on another booking next month. Key each milestone on the container, the event code, the classifier and the transport call, and deduplicate only on eventID.

  • Transport call: UNLocationCode plus transportCallSequenceNumber, which the specification says distinguishes two separate calls at the same location within one voyage.
  • Voyage numbers: exportVoyageNumber and importVoyageNumber, because carrierVoyageNumber is marked deprecated in the 2.2 transport call object.
  • Vessel: vesselIMONumber, the seven-digit IMO number, rather than the vessel name, which carriers spell differently.
  • Documents: documentReferences with BKG and TRD values, which tie an equipment event to your booking and transport document.

The trace below is illustrative and shows what happens when a feed is keyed on container and event code alone. Times are India Standard Time.

  1. 14 Nov 03:10: DISC, ACT, NXEU5520314 at LKCMB (Colombo), transportCallSequenceNumber 3 on the mother vessel. The integration upserts milestone "Discharged" for the box.
  2. 14 Nov 03:12: the TMS computes a destination last free day of 28 Nov from that event and clears the destination ETA, because the box "has arrived".
  3. 16 Nov 09:30: trailer TRL-7781 reaches the Nhava Sheva terminal for collection under transport order TO-26-44871 and is turned away; the box is still in Colombo. The wasted trip costs ₹6,500.
  4. 21 Nov 16:05: DISC, ACT at INNSA, transportCallSequenceNumber 2 on the feeder. The upsert treats it as a duplicate of the Colombo DISC and discards it. The real discharge never reaches the free-time engine.
  5. 27 Nov 11:00: the line's detention desk emails a reminder. The fix keys milestones on box, code, classifier, UN/LOCODE and call sequence, and reprocesses the stored raw events.

The broader principle, that planned, estimated and actual records for one journey must remain distinct, is set out in our guide to container tracking API events. That article works from a generic internal model; this one applies the DCSA field names and the transhipment case that most often breaks a DCSA feed.

From shipping instructions to an issued transport document

The Shipping Instructions and Transport Document API is asynchronous: posting instructions returns 202 Accepted with a shippingInstructionsReference, and every later status arrives by notification or by polling. Your documentation system should never assume a submission was accepted until the RECEIVED status comes back.

The transport document then moves through eight statuses that version 3.0.3 defines: DRAFT, APPROVED, ISSUED, PENDING_SURRENDER_FOR_AMENDMENT, SURRENDERED_FOR_AMENDMENT, PENDING_SURRENDER_FOR_DELIVERY, SURRENDERED_FOR_DELIVERY and VOIDED. The consumer approves a draft with PATCH on /v3/transport-documents/{transportDocumentReference}, setting the status to APPROVED, which is the only value the consumer may set there.

  • Document type: transportDocumentTypeCode is BOL for a bill of lading or SWB for a sea waybill; a waybill must have isToOrder set to false.
  • Negotiability: isToOrder true makes the bill negotiable, with an endorsee party or blank endorsement; false makes it a straight bill.
  • Platform choice: for an electronic BOL, sendToPlatform names the holder's eBL platform from a fixed code list, and the field must be absent for paper bills.
  • Cancellation: shippingInstructionsStatus can be set to CANCELLED, and updatedShippingInstructionsStatus to UPDATE_CANCELLED; those are the only values the consumer can set on the two fields.

Issuance, surrender and platform transfer: responses to store

Possession and title changes happen between carriers and eBL platforms, but you need their outcomes in your own records because delivery, payment and letters of credit depend on them. Store each response code with its timestamp and the transport document reference.

  • Issuance responses: ISSU means the platform issued the document and delivered it to the first holder; BREQ means the platform found a content problem; REFU means issuance was rejected for a reason the platform cannot resolve, such as a failed interoperable transfer.
  • Surrender requests: SREQ asks to surrender for delivery and AREQ for amendment; the specification treats a switch to paper as an amendment.
  • Surrender responses: SURR means the carrier accepted and now holds the bill; SREJ returns the eBL to the party that asked.
  • Platform transfer responses: RECE, DUPE, BSIG, BENV, INCD, MDOC and DISE, covering received, duplicate, bad signature, bad envelope, inconclusive, missing document and disputed envelope.

Integrity is handled with signatures rather than trust. The issuance request carries an issuance manifest as a JWS in compact serialisation, signed by the carrier or its agent, and the interoperability API checks a SHA-256 checksum of the transport document so that a receiving platform can detect a replayed or altered envelope.

DCSA eBL Issuance API 3.0.3 records issuance as ISSU only when the eBL platform has delivered the document to its first holder, and the Surrender API answers SREQ or AREQ requests with SURR or SREJ. The release desk should treat SURR for delivery, stored with the transport document reference, as the release trigger.

Carrier adoption: what the conformance list proves and what it does not

Adoption is uneven, so plan for a mixed estate of DCSA APIs, EDI and portals for several years. DCSA's standard conformance page lists CMA CGM, ONE, Evergreen, ZIM, Yang Ming and PIL as confirmed for Track & Trace 2.x, and MSC, Maersk, Hapag-Lloyd and HMM as unverified legacy entries that are not DCSA-certified.

On electronic bills, nine DCSA member carriers committed on 15 February 2023 to convert 50% of original bills of lading to electronic form within five years and to reach 100% eBL adoption based on DCSA standards by 2030. A commitment is not coverage on your lane, and conformance for one version does not mean every field is populated for every port.

  • Version check: ask each carrier which Track & Trace version and which optional fields it sends on your trade lanes, in writing.
  • Coverage test: run a 30-day shadow feed and count ACT DISC and GTOT events received within six hours of the event time.
  • Fallback: keep EDI 315 or portal data for carriers below your coverage threshold, mapped to the same milestone keys.
  • India lanes: customs milestones at INNSA or INMUN, such as the carrier's arrival manifest on ICEGATE, are not DCSA events and still come through your customs broker.

Who owns each DCSA record and who signs off on it

The carrier owns the event; you own the milestone you derive from it and the decision you take on it. Write that split down, because a disputed demurrage bill or a delayed release will turn on which record each party relied on.

Scroll horizontally to see all columns.

Ownership of DCSA event and eBL records between carrier, platform and shipper, and the approver for decisions based on each
RecordCreated byOwner inside your companyApproves decisions based on it
Raw Track & Trace event with signatureCarrier APIIntegration platform teamEnterprise architect (retention and access)
Derived container milestoneYour milestone serviceVisibility product ownerImport or export operations manager
Subscription, callbackUrl and secretYour team, registered with the carrierIntegration platform teamInformation security lead
Shipping instructions and approved draftYour documentation desk and carrierExport documentation managerTrade compliance lead
Issuance and surrender responsesCarrier and eBL platformDocumentation and treasury jointlyTreasury or letter of credit manager
eBL platform code per counterpartyCustomer and bank onboardingCustomer master data stewardCredit control manager
DCSA events and eBL responses flowing into one shipment record Step 1, Subscribe or poll: Carrier events reach your endpoint. Callback with signature header; Cursor polling as the backstop; eBL notifications on own path. Step 2, Verify and dedupe: Signature, eventID and version. sha256 over raw UTF-8 body; Repeat eventID ignored; API-Version header logged. Step 3, Key the journey: Transport call, box and document. Call sequence number kept; Booking and TD reference; ACT, EST and PLN stay apart. Step 4, Decide: Milestone, release or dispute. Only ACT moves a clock; ISSU or SURR updates title; Gaps routed to the desk. DCSA events and eBL responses flowing into one shipment record Events and document responses are verified, keyed and stored before any milestone or release decision uses them 1 · SUBSCRIBE OR POLL Carrier events reach your endpoint • Callback with signature header • Cursor polling as the backstop • eBL notifications on own path 2 · VERIFY AND DEDUPE Signature, eventID and version • sha256 over raw UTF-8 body • Repeat eventID ignored • API-Version header logged 3 · KEY THE JOURNEY Transport call, box and document • Call sequence number kept • Booking and TD reference • ACT, EST and PLN stay apart 4 · DECIDE Milestone, release or dispute • Only ACT moves a clock • ISSU or SURR updates title • Gaps routed to the desk

Worked cost model in dollars and rupees for a DCSA connection

A DCSA subscription pays for itself through fewer late discharge signals and, where counterparties accept it, through eBL surrender replacing couriered originals. The figures below are illustrative assumptions for one importer, before tax, showing that the same build can pay in one market and not in another.

Scroll horizontally to see all columns.

Illustrative monthly benefit and payback of DCSA event subscriptions and eBL surrender for a US and an Indian import flow
LineLos Angeles imports (USD)Nhava Sheva imports (INR)
Import boxes per month on DCSA-capable carriers280 of 400180 of 300
ACT DISC received over 6 hours late, before9% = 25 boxes10% = 18 boxes
Same measure after subscriptions2% = 6 boxes3% = 5 boxes
Late signals avoided1913
Avoidable charge per late signal1.2 days x $175 = $2101 day x ₹1,800 = ₹1,800
Charges avoided per month$3,990₹23,400
eBL surrenders replacing couriered originals30 x $65 = $1,95040 x ₹2,200 = ₹88,000
Run cost per month$900₹45,000
Net monthly benefit$3,990 + $1,950 - $900 = $5,040₹23,400 + ₹88,000 - ₹45,000 = ₹66,400
One-off build$32,000₹6,00,000
Payback32,000 / 5,040 = 6.3 months6,00,000 / 66,400 = 9.0 months

Without the eBL line, the Indian case loses ₹21,600 a month, because rupee detention rates are lower than US demurrage and the run cost is similar. That is why Indian importers often start with eBL surrender and add event subscriptions later, while US importers on congested terminals usually start with events. The number that matters most is the late-signal rate, so measure it before building.

Rules in the integration layer and calls left to the visibility desk

Signature checks, deduplication and keying are fixed rules that must never be overridden by hand. Judgement belongs in interpreting gaps, conflicting carrier statements and the timing of a release, where software can rank cases but a person decides.

Scroll horizontally to see all columns.

DCSA handling tasks split between fixed integration rules and decisions that software prepares for a person
TaskFixed ruleSoftware assists, a person decides
Verifying the Notification-Signature on a callbackReject on mismatch, store nothingNone
Dropping a repeated eventID after a carrier retryIgnore silently and countNone
Choosing which DISC is the destination discharge on a transhipmentMatch UN/LOCODE to the bill's port of dischargeDesk resolves when the bill shows an inland place of delivery
Reading a vesselScheduleChangeRemark or delay reasonStore verbatim with the transport eventLanguage model may summarise; planner decides re-booking
Releasing cargo after an eBL surrenderBlock release until SURR for delivery is storedRelease desk confirms consignee identity
Escalating a carrier whose coverage falls below targetWeekly coverage report per carrierProcurement raises it at the business review

DCSA Track & Trace integrations should enforce three fixed rules in code: Notification-Signature verification on the raw UTF-8 body, deduplication on eventID and milestone keys built from UN/LOCODE plus transportCallSequenceNumber. A 30-day shadow run targeting at least 95% of actual discharge events within six hours shows whether a carrier is ready.

Before go-live, confirm each item below for every carrier and eBL platform you connect.

Scroll horizontally to see all columns.

Go-live checklist for a carrier's DCSA event subscription and eBL document flow
ItemEvidence requiredOwner
Version and optional fields agreedCarrier's written statement per laneVisibility product owner
Signature verification liveTest callback with a wrong secret rejectedIntegration platform team
Polling backstop scheduledDaily job with eventCreatedDateTime filter and alert on gapsIntegration platform team
Transhipment keying testedReplay of a two-discharge journey yields two milestonesVisibility product owner
eBL platform codes capturedsendToPlatform code for every consignee and bankCustomer master data steward
Issuance and surrender codes mappedISSU, BREQ, REFU, SURR and SREJ each drive a defined taskExport documentation manager
Coverage target met30-day shadow report per carrierImport operations manager

If you are choosing between building on DCSA APIs and buying a visibility or eBL service, put the checklist and the transhipment test into your tender; our RFP builder turns them into vendor questions. Related guides on ocean documents and container events are collected on the logistics and supply chain hub.

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: DCSA Track & Trace and eBL APIs for Ocean Visibility · Logistics Data & Tech 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 dcsa track and trace api in logistics & supply chain.

Which version of the DCSA Track & Trace API should a shipper build against?
Build against the version each carrier actually exposes, which for public implementations is usually 2.2, last updated on SwaggerHub in October 2021. The DCSA reference site lists Track & Trace v3.0.0 as the latest release, but its full documentation sits behind member and partner access, so confirm availability carrier by carrier.
How do I verify that a DCSA event callback really came from the carrier?
Share a secret when creating the subscription with POST /v2/event-subscriptions. Each callback then carries a Notification-Signature header in the form sha256=hex, computed over the entire request body as UTF-8 bytes. Recompute it with the stored secret before parsing, and reject the callback if the values differ.
Is a DCSA DISC event the same as an EDI 315 UV status?
Both report a container discharged from a vessel, but check the classifier. DCSA DISC with eventClassifierCode ACT matches an actual UV; DISC with EST or PLN is only a forecast. Also read emptyIndicatorCode, EMPTY or LADEN, which plays the role of the 315's B409 equipment status.
Does the DCSA eBL API make an electronic bill legally valid?
No. The APIs move data, signatures and possession between carriers and eBL platforms; legal effect depends on the governing law and the platform rulebook. The issuance API returns ISSU only when the platform delivered the document to its first holder, so treat that response, not the API call, as the issuance record.

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.