EPCIS 2.0 Events
EPCIS 2.0 is a major update that introduces many new features to lower barriers to adoption and better enable data sharing across the entire supply chain:
- Native JSON/JSON-LD support (in addition to XML) for REST-based APIs
- A REST API definition (OpenAPI 3.0) alongside the legacy SOAP/AS2 bindings
- The new AssociationEvent event type, to capture associations between objects
- The
sensorElementListelement, to support sensor data to track asset conditions and for use in industrial IoT processes - The
errorDeclarationmechanism, formalized for event correction workflows - The
persistentDispositionelement, for dispositions that persist across events
Document envelope
All EPCIS 2.0 events are transmitted inside an EPCISDocument. The JSON-LD format requires an @context:
{ // JSON-LD context: always include the EPCIS 2.0 context URL. // Additional context entries declare extension namespaces. "@context": "https://ref.gs1.org/standards/epcis/2.0.0/epcis-context.jsonld", // Document type: always "EPCISDocument" for capture payloads "type": "EPCISDocument", // EPCIS schema version "schemaVersion": "2.0", // Timestamp at which this document was created (ISO 8601) "creationDate": "2026-06-12T10:15:30.000Z", // The event payload: a list of one or more EPCIS events "epcisBody": { "eventList": [ // ... events go here ... ] } } Identifier formats
EPCIS 2.0 accepts identifiers as either EPC URIs or GS1 Digital Link URIs:
| Identifier | EPC URI | GS1 Digital link URI |
|---|---|---|
| GTIN (class-level) | urn:epc:idpat:sgtin:4012345.012345.* | https://id.gs1.org/01/04012345123456 |
| LGTIN (lot-level, class) | urn:epc:class:lgtin:4012345.012345.998877 | https://id.gs1.org/01/04012345123456/10/998877 |
| SGTIN (serialized trade item) | urn:epc:id:sgtin:0614141.107346.2018 | https://id.gs1.org/01/00614141107346/21/2018 |
| SGLN (location) | urn:epc:id:sgln:0614141.00777.0 | https://id.gs1.org/414/0614141007772 |
| SSCC (logistic unit) | urn:epc:id:sscc:0614141.1234567890 | https://id.gs1.org/00/106141412345678908 |
Class-level vs. instance-level identification
- Serialized instance-level objects are listed in the
epcList,childEPCs,inputEPCList, andoutputEPCListelements. - Lot- or quantity-based class-level objects are listed in the
quantityList,childQuantityList,inputQuantityList,outputQuantityListelements, usingQuantityElementstructures:
{ // Class-level identifier (typically an LGTIN for lot-managed product) "epcClass": "urn:epc:class:lgtin:4012345.012345.LOT2026A", // Numeric amount of the class-level object "quantity": 200.0, // Unit of measure per UN/CEFACT Rec 20 (e.g., KGM = kilogram). Omit for counts of base items. "uom": "KGM" }
Common event fields
The following fields are shared by all EPCIS 2.0 event types:
| Name | Type | Description | Required or optional | Example |
|---|---|---|---|---|
| type | String | The event type discriminator: ObjectEvent, AggregationEvent, TransformationEvent, or AssociationEvent. | Required | ObjectEvent |
| eventTime | DateTime (ISO 8601) | The date and time at which the event occurred. | Required | 2026-06-12T08:30:00.000Z |
| eventTimeZoneOffset | String | The local time zone offset where the event occurred, format ±HH:MM. | Required | -06:00 |
| recordTime | DateTime | The date and time at which the event was recorded by the EPCIS repository. Set by the capturing system, not the sender. | Optional (system-assigned) | 2026-06-12T08:31:05.000Z |
| eventID | URI | A globally unique identifier for the event. Strongly recommended, and required if the event may later be referenced by an errorDeclaration.Typically an ni-hash URI or UUID URN. | Optional (strongly recommended) | ni:///sha-256;df7bb3c352fef7c93c582...?ver=CBV2.0 or urn:uuid:7e6e36d2-… |
| errorDeclaration | Object | Declares that a previously captured event (with the same eventID) was erroneous. | Optional | Refer to the Error declaration page. |
| certificationInfo | URI or Array of URIs | Reference to certification information relevant to the event. | Optional | https://accreditation.example/cert/123 |
| bizStep | URI or CBV string | The business step taking place (CBV vocabulary or user vocabulary). In JSON, CBV values may be expressed as bare strings, such as shipping. | Optional | shipping |
| disposition | URI or CBV string | The business condition of the objects after the event. | Optional | in_transit |
| persistentDisposition | Object | Sets or unsets dispositions that persist until explicitly changed. Contains set and/or unset arrays. | Optional | { "set": ["completeness_verified"], "unset": ["completeness_inferred"] } |
| readPoint | Object | The specific location at which the event was observed, such as a dock door. | Optional | { "id": "urn:epc:id:sgln:4012345.00011.987" } |
| bizLocation | Object | The location where the objects are assumed to be after the event. | Optional | { "id": "urn:epc:id:sgln:4012345.00011.0" } |
| bizTransactionList | Array of bizTransaction objects | Business transactions associated with the event. Each entry has type (such as po, inv, desadv) and bizTransaction (the transaction identifier). | Optional (Required in TransactionEvent) | [{ "type": "po", "bizTransaction": "urn:epcglobal:cbv:bt:0614141073467:PO1234" }] |
| sourceList | Array of source objects | Identifies the originating party or location of a transfer. Each entry has type (such as owning_party, possessing_party, location) and a source URI. | Optional | [{ "type": "owning_party", "source": "urn:epc:id:pgln:4012345.00001" }] |
| destinationList | Array of destination objects | Identifies the receiving party or location of a transfer. Each entry has type (such as owning_party, possessing_party, location) and a destination URI. | Optional | [{ "type": "owning_party", "destination": "urn:epc:id:pgln:0614141.00001" }] |
| sensorElementList | Array of SensorElement | Sensor metadata and readings captured with the event (temperature, humidity, GPS, and so on). | Optional | Refer to the ObjectEvent page. |
| Custom extensions | Any | Namespace-qualified custom fields, such as custom:myField. | Optional | "custom:batchColor": "blue" |
Updated about 1 hour ago
Did this page help you?

