EDGE ENGINE SUB-2MS DETERMINISTIC V8 EXECUTION • ZERO DATA RETENTION • EXPLORE API SPECS →
21 U.S. Code § 360eee / GS1 EPCIS <2ms Edge Edge Compute

DSCSA 4-Element 2D DataMatrix Barcode & Matrix Specification

Extract and validate all 4 DSCSA product identifier elements and FNC1 group separators in milliseconds. This specification documents the exact field layout, checksum rules, and validation behavior so your integration matches 21 U.S. Code § 360eee / GS1 EPCIS without reading the source standard.

Latency: <2ms Edge Availability: 99.99% Standard: DSCSA Section 582 In-Memory Execution
Interactive Edge Workbench

⚡ Live DSCSA 4-Element 2D DataMatrix Barcode & Matrix Specification Interactive Workbench

Test real-time validation and schema parsing for DSCSA 4-Element 2D DataMatrix Barcode & Matrix Specification directly in your browser. Runs in sub-5ms with zero setup.

32KB Demo Cap 60 req/min Burst <2ms V8 Compute Zero Data Retention
input.txt 0 B
output.json demo-ready
Status: Ready
{
  "status": "Click RUN VALIDATION to execute on the Cloudflare edge..."
}
Sandbox Quota: Free Tier (50 reqs/mo) • Production keys from $29/mo Get Free Sandbox Key →
Need 512KB+ Payloads, High-Throughput & 99.9% Production SLA?
Direct API keys include pooled monthly quotas, zero cold-starts, and HIPAA BAA eligibility on the Mega tier.
Get Production API Key →
LLM / MCP
Prompt-Ready Specification for AI Agents llms.txt
Structured format rules and schemas optimized for LLM coding agents and Model Context Protocol tooling.
Raw .md
Official Standard & Validation Protocol Authority: U.S. Food & Drug Administration (FDA) DSCSA ↗

Quick Summary: Extract and validate all 4 DSCSA product identifier elements and FNC1 group separators in milliseconds. Validates strictly against 21 U.S. Code § 360eee / GS1 EPCIS with sub-5ms in-memory response times.

Latency
<2ms Edge
Standard
DSCSA Section 582
Version
Max Payload
512 KB
Privacy
In-Memory (0 bytes stored)

Specification & Structural Breakdown

Technical Summary: Validates strictly against 21 U.S. Code § 360eee / GS1 EPCIS. Payloads are parsed in memory and return clean, typed JSON in milliseconds with zero data logged.

DSCSA Section 582 mandates that packaging at the unit and case level carry a GS1 2D DataMatrix barcode encoding GTIN, Serial Number, Expiration Date, and Lot Number.

Variable-length Application Identifiers (AI 21 and AI 10) require GS1 FNC1 (<GS> / ASCII 29) group separators when not at the end of the barcode string.

AIData ElementFormatLength
(01)GTIN-14Numeric with Mod-10 Checksum14 digits (Fixed)
(21)Serial NumberAlphanumericUp to 20 chars (Variable + FNC1)
(17)Expiration DateYYMMDD6 digits (Fixed)
(10)Batch / LotAlphanumericUp to 20 chars (Variable + FNC1)

Parsed JSON Response Model

The edge microservice transforms input payloads into strongly-typed hierarchical JSON envelopes with sub-5ms latency:

HTTP 200 JSON Response Envelope
{
  "elements": {
    "gtin": "00301234567896",
    "serial": "123456789012",
    "expiration": "2026-08-31",
    "lot": "LOT99881"
  },
  "syntaxValid": true,
  "fnc1DelimitersPresent": true
}

Copy-Paste Integration Code (6 Languages)

Integrate DSCSA 4-Element 2D DataMatrix Barcode & Matrix Specification directly into your production application with native, zero-dependency code snippets in cURL, Node.js, Python, Go, C#, and a ready-to-paste Claude prompt. Get a free API key → (no credit card required):

curl --request POST \
  --url "https://api.stanzaapi.com/pharma-dscsa/api/v1/dscsa/validate-barcode" \
  --header "Content-Type: application/json" \
  --header "x-api-key: YOUR_API_KEY" \
  --data '{
  "rawBarcode": "010030123456789621123456789012\u001d1726083110LOT99881"
}'
const response = await fetch("https://api.stanzaapi.com/pharma-dscsa/api/v1/dscsa/validate-barcode", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "x-api-key": process.env.API_KEY || "YOUR_API_KEY"
  },
  body: JSON.stringify({
  "rawBarcode": "010030123456789621123456789012\u001d1726083110LOT99881"
})
});

const data = await response.json();
console.log(data);
import requests
import json

url = "https://api.stanzaapi.com/pharma-dscsa/api/v1/dscsa/validate-barcode"
headers = {
    "Content-Type": "application/json",
    "x-api-key": "YOUR_API_KEY"
}
payload = {
    "rawBarcode": "010030123456789621123456789012\u001d1726083110LOT99881"
}

response = requests.post(url, json=payload, headers=headers)
print(response.json())
package main

import (
	"bytes"
	"fmt"
	"io"
	"net/http"
	"os"
)

func main() {
	url := "https://api.stanzaapi.com/pharma-dscsa/api/v1/dscsa/validate-barcode"
	payload := []byte(`{"rawBarcode":"010030123456789621123456789012\u001d1726083110LOT99881"}`)

	req, _ := http.NewRequest("POST", url, bytes.NewBuffer(payload))
	req.Header.Add("Content-Type", "application/json")
	req.Header.Add("x-api-key", os.Getenv("API_KEY"))

	res, err := http.DefaultClient.Do(req)
	if err != nil {
		panic(err)
	}
	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)
	fmt.Println(string(body))
}
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;

class Program
{
    static async Task Main()
    {
        using var client = new HttpClient();
        client.DefaultRequestHeaders.Add("x-api-key", Environment.GetEnvironmentVariable("API_KEY") ?? "YOUR_API_KEY");

        var json = @"{""rawBarcode"":""010030123456789621123456789012\u001d1726083110LOT99881""}";
        var payload = new StringContent(json, Encoding.UTF8, "application/json");

        var response = await client.PostAsync("https://api.stanzaapi.com/pharma-dscsa/api/v1/dscsa/validate-barcode", payload);
        var content = await response.Content.ReadAsStringAsync();
        Console.WriteLine(content);
    }
}
Integrate the StanzaAPI pharma-dscsa micro-API.

Endpoint: POST https://api.stanzaapi.com/pharma-dscsa/api/v1/dscsa/validate-barcode
Auth header: x-api-key: YOUR_API_KEY
Content-Type: application/json
Request body:
{
  "rawBarcode": "010030123456789621123456789012\u001d1726083110LOT99881"
}

Rules:
- Send the request with a 2-second timeout.
- Parse the standard envelope { success, data, meta: { latency_ms, version } }.
- On failure, read { success: false, error, code } and branch on the code.
- Do not retry 4xx responses; surface the error code to the caller.
- Treat invalid-but-well-formed payloads as HTTP 200 with data.valid === false.

Frequently Asked Questions & Technical Notes

Why is the FNC1 delimiter critical in 2D DataMatrix barcodes?

Without FNC1 (<GS>) separators, a barcode scanner cannot distinguish where a variable-length serial number ends and the next element begins.

Related FDA DSCSA & EU FMD Prescription Drug Serialization API Formats

Explore sibling specifications and standards in the same developer cluster:

Complementary Enterprise APIs

Seamlessly orchestrate data pipelines across adjacent financial, regulatory, and supply-chain protocols:

All FDA DSCSA & EU FMD Prescription Drug Serialization API Formats & Specifications (6) Directory Index ↓
GS1 Verification Router Service (VRS) Lightweight Messaging Spec EPCIS 1.2 XML Event Parser & Schema Validator (FDA DSCSA) EPCIS 2.0 JSON-LD Supply Chain Event Parser & Validator FDA 21 CFR 201.25 Barcode Requirement & 2D DataMatrix Spec DSCSA 4-Element 2D DataMatrix Barcode & Matrix Specification DSCSA Section 582 Suspect Product Quarantine & Verification Rules