COMPLIANCE / DSCSA / GS1 DATAMATRIX

DSCSA Label Printing: The Product Identifier, Encoded and Readable

Print DSCSA product identifiers: a GS1 DataMatrix with GTIN, serial, lot and expiry plus the human-readable text, from Excel, CSV or your database, on thermal printers.

FREE PLAN · NO CREDIT CARD · WINDOWS / MAC / LINUX / WEB
DSCSA PRODUCT IDENTIFIERGTIN · SN · LOT · EXP
A sample prescription drug label with a GS1 DataMatrix carrying GTIN, serial number, lot and expiry, with the same data in human-readable form — LabelInn
THE CODES ON THIS PAGE ARE REAL Encoded by LabelInn's print path Decoded back with ZXing Exact bytes, right symbology Sample products, fictional makers

Under the Drug Supply Chain Security Act, every package of a prescription drug and every homogeneous case carries a product identifier: the NDC, a serial number, the lot number and the expiration date. It appears twice, as text a person can read and as a code a scanner reads. On a package the code is a 2D DataMatrix; on a homogeneous case it can be a linear barcode or a 2D DataMatrix (FDA: Drug Supply Chain Security Act).

The enhanced, package-level requirements took effect on 27 November 2023. FDA then gave trading partners staged exemptions: manufacturers and repackagers to 27 May 2025, wholesale distributors to 27 August 2025, dispensers with 26 or more full-time employees to 27 November 2025, and small dispensers to 27 November 2027 (FDA: waivers and exemptions beyond the stabilization period). For a label line the date has passed: the identifier has to be right on every package.

01 / DSCSA

What goes into the code

US pharma uses GS1 for the code. The NDC is carried inside the GTIN, not as a field of its own. These are the four Application Identifiers, with the values from the sample label above.

AIData elementIn the sampleFormat
(01)GTIN, which contains the NDC0031234567890614 digits, fixed
(17)Expiration date280531YYMMDD, fixed
(10)Lot numberA12345Up to 20 characters
(21)Serial number100000000001Up to 20 characters

Fixed-length fields need nothing after them. After a variable-length field such as the lot, the symbol needs a separator (FNC1) before the next field. LabelInn places it from the AI catalog, so the order of the rows is yours to choose and the code stays valid.

02 / PRODUCT IDENTIFIER

Print it from your own data

01

Add a GS1 DataMatrix and four AI rows: 01, 17, 10 and 21.

02

Bind each row. The GTIN can be fixed on the design; lot, expiry and serial come from an Excel or CSV column, a database query or an API. Short GTINs are padded with leading zeros, dates and digits are checked as you bind.

03

Add the human-readable lines as text fields bound to the same columns, so the text and the code can never disagree.

04

Preview row by row and print. Every printed label is written to the print history with its data, the printer, the user and the time.

Take the serial numbers from the system that issues them. LabelInn has counters, but for DSCSA the serial has to match what your trading partners receive in the transaction data, so the source of truth should be the system that sends it.

03 / GS1 DATAMATRIX

The check we ran

We built the sample code above from the four AI rows through the same path the print engine uses, drew it, and decoded the image with an independent decoder (ZXing). It returned the symbology identifier ]d2, which means GS1 DataMatrix, and the exact element string 01003123456789061728053110A12345<GS>21100000000001, with the separator after the lot. That proves the encoding. It does not replace grading a printed label on your line with your own verifier.

04 / SERIALIZATION

Where it stops

  • LabelInn prints and records the identifier. It does not exchange transaction information (EPCIS) with your trading partners, answer verification requests (VRS) or keep case-to-package aggregation. Those belong to your serialization or DSCSA data system.
  • No NDCs or GTINs. The NDC comes from FDA listing, the GTIN from GS1 US.
  • Not legal advice. You remain responsible for meeting the Act.

05 / DSCSA

Which plan

Binding Excel, CSV and database columns and the full print history are in Starter ($7.99/mo). The audit log with every printed value exportable as CSV, and e-signatures for FDA 21 CFR Part 11, are in Enterprise. Signing up starts a 14-day trial with everything on.

ANY PRINTER

Design it, bind your data, print on the printer you already own.

Zebra, TSC, Toshiba, Epson and more — over USB, network or Bluetooth, with no driver to install.

LabelInn on a desktop, a tablet and a phone

QUESTIONS / FAQ

Frequently asked questions

What has to be on a DSCSA label?

The product identifier: NDC, serial number, lot number and expiration date, both as human-readable text and in a machine-readable code. On a package the code is a 2D DataMatrix; on a homogeneous case it can be a linear barcode or a DataMatrix.

Is the NDC encoded directly?

No. The code carries a GTIN, and the GTIN contains the NDC. The GTIN goes in AI (01), next to the expiry (17), lot (10) and serial (21).

Can LabelInn print DSCSA labels from our ERP data?

Yes. Each value can come from an Excel or CSV export, a database query or an API, and each printed label is recorded with its data. The serial numbers should come from the system that also sends them to your trading partners.

Does LabelInn send EPCIS data or answer verification requests?

No. LabelInn prints the identifier and records what it printed. Transaction data exchange, verification and aggregation are done by your DSCSA data system.

When do small dispensers have to comply?

FDA extended the exemption for small dispensers (25 or fewer full-time pharmacists and technicians) to 27 November 2027. Manufacturers and repackagers had until 27 May 2025.

PRINTING REGULATED CODES?

Tell us the rule, the code and the printer.

Send us which rule applies, what you label, how many labels a day and where the data comes from. A person replies within 24 hours with what LabelInn covers today and what it does not.