Global Differences In Expiration Date Encoding

Last week the European Medicines Verification Organisation (EMVO) sent a letter to all of their “Onboarding Partners” (OBPs), or drug marketing authorisation holders (MAHs) informing them of a problem EMVO is seeing with many of the expiration dates on drugs being uploaded.  The problem they highlighted in the letter has been recognized by people around the world, and each country has decided to handle it slightly differently.  Drug manufacturers should be aware of these differences to ensure compliance and avoid false failed verifications.  Let’s take a closer look at the issue and what each country expects you to do about it.

The problem comes from the history of human readable expiration dates on many products, including drugs, showing only a month and year.  For example, the expiration date shown in human readable on an OTC bottle of Advil I have here on my desk is shown as “08/20”, meaning August of 2020.  Which exact day in August is that expiration date?  Does it really matter?  The manufacturer has used scientific methods to determine that this Advil will still have the identified potency and other characteristics through the end of August 2020.  After that, they can’t guarantee it will continue to be as effective as specified on the label.  I have intuited that the expiration date is the last day of August 2020 rather than any other day in that month because the last day of the month is still August 2020, so the drug should still be valid (unexpired).  The next day—September 1, 2020—will after August 2020 so it is after the expiration date.

The problem is, computers need to know an exact date when the product transitions from unexpired to expired.  From saleable to unsaleable.  From verifiable to unverifiable.  Computers need an exact date.  Because of pharma serialization and traceability regulations, the expiration date must now be encoded into a barcode and stored or transmitted as data for the first time.  So the day of the month is now needed.  For drugs where only the month and year (no day) are shown in the human readable expiration date, companies have to decide what day of the month is sent to the EU Hub, and encoded into the Data Matrix barcode expiration date field (which must have the format “YYMMDD” due to the use of GS1 standards).  Do you encode “00” for the “DD” in the expiration date field, or do you fill it in with the last day of the month?  Or do you fill it in with the first day of the month, since the last day of the month is kind of hard to calculate (that is to say, you have to calculate the last day of each month, which takes some effort, while filling in “00” or “01” is very simple).

This problem exists everywhere, but with this letter from the EMVO (available here), we now have indications for how to handle it in the EU.  We have existing documents that tell us how to handle it US and Russia.  Unfortunately, they are not all in perfect alignment, so companies marketing drugs in these markets will need to adjust the way they fill in these fields in the barcode and in the data sent to the government or stored in EPCIS repositories and transmitted to trading partners.  What may be correct in one market may not be correct in other markets.  Here is a table showing the requirements and the sources of those requirements for these three markets.

Click image to enlarge. See text below for the hyperlinks shown in the table.

Hyperlinks shown in the table above:
FDA (human readable only),
GS1 US DSCSA Guide (see,
HDA Barcode Guide

The mismatch problem has been understood and discussed in the US industry for a few years now but the FDA doesn’t appear to be aware of it.  So far the only guidance to address the issue comes from the HDA and GS1 US.  The problem may be recognized in Russia but I don’t have access to the data communications specification currently in use for the pilot so I can’t confirm one way or the other.  At least government decree 1556 specifies that the optional expiration date field in the barcode should use the exact date of the product expiration, or either the first or last day of the month if the exact date is not known.  That does not explicitly say you can’t use “00” but it does not seem to include it either.  Certainly the best practice is to never use “00” in the barcode, even though GS1 specifications allow it. 

For data storage and transmission, most modern data description languages are “strongly typed”.  That means when a data element is a “date”, then the contents of those elements must conform to a valid calendar date.  XML is an example of a modern data description language and a zero day of the month is not allowed.  That is, a “00” for a day of the month would be rejected by any XML validator.  This is why GS1’s Electronic Product Code Information Services (EPCIS) events will reject any expiration date containing a “00” for the day.  So even though you can successfully encode a GS1 Datamatrix barcode with a “00” day in the expiration date, don’t do it because then the EPCIS expiration date cannot match it, whether you are transmitting it or just storing it locally.

Russia appears to be using GS1 standard encoding for the Data Matrix barcodes on drug packages but they are not using EPICS format for their government reporting (that much I am confident in).

The bottom line is, to use a single approach that conforms to all of these regulations, always encode, transmit and store the exact date of the product expiration.  If that date is the last day of the month, then calculate it.  If it’s the first day of the month, use “01”.  If it is some time in the middle of the month, then make sure you include that day in barcode, the transmitted, stored data AND in the human readable.  Never use “00” anywhere.