GS1 Sunrise 2027: Umstellung auf 2D-Barcodes für den globalen Handel

Blog-Kategorie: Barcode.NET

07.08.2025

GS1 Sunrise 2027 ist ein globales Projekt zur Umstellung von traditionellen eindimensionalen (1D) EAN/UPC-Barcodes auf zweidimensionale (2D) Barcodes, um die Produkttransparenz, Rückverfolgbarkeit und Sicherheit zu verbessern. Bis Ende 2027 werden Einzelhändler, Gesundheitsunternehmen und andere Branchen weltweit voraussichtlich verpflichtet sein, neue Standards zur Produktidentifizierung an ihren Verkaufsstellen (POS) und Servicestellen (POC) zu implementieren. Die Initiative Sunrise 2027, die bereits in 48 Ländern getestet wird und 88% des globalen BIP abdeckt, entwickelt sich zum neuen Standard im Welthandel.

VintaSoft, der Entwickler eines spezialisierten Tools zur Barcode-Erkennung - VintaSoft Barcode .NET SDK -, sieht diese Veränderungen als strategische Chance, die Geschäftsprozesse seiner Kunden zu modernisieren und die Fähigkeiten des SDK im neuen regulatorischen Umfeld zu erweitern.



Was ist GS1 Sunrise 2027?

Sunrise 2027 ist eine GS1-Initiative, die in den 2020er-Jahren offiziell angekündigt wurde. Ziel ist es, sicherzustellen, dass Einzelhandels- und Logistiksysteme weltweit bis 2027 neben den bekannten 1D-Barcodes auch 2D-Barcodes scannen und interpretieren können. Das Hauptziel ist jedoch die Ablösung von 1D-Formaten durch vielseitigere 2D-Formate, die nicht nur ein Produkt identifizieren, sondern auch zusätzliche Daten wie Verfallsdatum, Chargennummer, Herkunftsland, Qualitätszertifikate usw. übermitteln können.


Warum die gesamte Branche umstellt

Das alte EAN/UPC-Format erwies sich als begrenzt:

2D-Barcodes wie GS1 DataMatrix und GS1 Digital Link QR lösen diese Probleme, indem sie Folgendes ermöglichen:


Wie wird sich dies auf die Marktteilnehmer auswirken?

Die von GS1 initiierte Umstellung auf 2D-Barcodes wird nahezu alle Akteure der Warenkette betreffen - von Herstellern bis hin zu Softwareentwicklern. Diese Änderungen sind nicht als einfaches technisches Upgrade zu betrachten - es geht um die Umstrukturierung grundlegender Prozesse in Logistik, Einzelhandel und Kundeninteraktion.

Fertigungsunternehmen werden zu den ersten gehören, die die Auswirkungen des neuen Standards spüren. Sie müssen Produktionslinien und Verpackungsprozesse anpassen, um die neuen Barcodes drucken zu können. Während es bisher ausreichte, einen linearen Barcode mit GTIN auf die Verpackung aufzubringen, muss das 2D-Format nun deutlich mehr Informationen enthalten: Verfallsdatum, Chargennummer, Zusammensetzungsangaben und mitunter sogar einen Link zu einem digitalen Zertifikat oder einer Website. All dies erfordert eine Modernisierung sowohl der Geräte als auch der IT-Infrastruktur, die die Generierung und Verwaltung der neuen Barcodes gewährleistet.

Für Einzelhändler und Logistikunternehmen besteht die größte Herausforderung in der Anpassung von Kassen- und Lagerscannern. Obwohl die meisten modernen Scanner bereits 2D-Barcodes unterstützen, sind nicht alle für die GS1-Standards optimiert. Das bedeutet, dass nicht nur die Geräte aktualisiert, sondern auch die Software angepasst werden muss, um die neuen Datenfelder korrekt zu erkennen und zu verarbeiten.

Softwareentwickler,Auch Entwickler von Buchhaltungssystemen, ERP-Systemen, Kassenanwendungen und mobilen Lösungen müssen sich auf die Umstellung der Barcode-Formate vorbereiten. Es ist nicht nur notwendig, neue Symbolsysteme zu unterstützen, sondern auch die korrekte Interpretation der Datenstruktur gemäß den GS1-Standards zu implementieren. Dies umfasst die Verarbeitung von Anwendungskennungen (AI), das Parsen verschachtelter Felder und, im Falle der Verwendung des GS1 Digital Link-Formats, die Interaktion mit externen Webdiensten. Hierbei ist die Genauigkeit der Erkennung besonders wichtig, da ein Fehler bei der Dateninterpretation zu Problemen in der Logistik, Retouren und sogar rechtlichen Konsequenzen führen kann.


Was macht einen 2D-Barcode so besonders?

2D-Barcodes sind die nächste Evolutionsstufe in automatischen Identifikationssystemen. Sie ersetzen nicht nur lineare Barcodes, sondern eröffnen durch ihre Vielseitigkeit und ihren Informationsreichtum auch neue Möglichkeiten für Wirtschaft, Produktion und Logistik.

Im Gegensatz zu 1D-Barcodes (z. B. EAN/UPC), die nur eine grundlegende Produktkennung (GTIN) enthalten können, sind 2D-Barcodes in der Lage, eine ganze Reihe von Parametern zu übermitteln, die für moderne Lieferketten und digitale Dienste erforderlich sind.

Die Hauptvorteile von 2D-Barcodes sind:

Die Umstellung auf ein neues Barcode-System ermutigt Unternehmen nicht nur zur Einhaltung von Standards, sondern auch zum Aufbau digitaler Ökosysteme, die physische Verpackungen und Online-Erlebnisse miteinander verbinden.


Implementierungsphasen von GS1 Sunrise 2027

Informations- und Freiwilligkeitsphase

Wissensverbreitung, Pilotprojekte, Anpassung interner Systeme, Test von Dual Labeling (1D + 2D). Unternehmen erhalten Zeit, Technologien zu modernisieren und zu testen.


Verpflichtende Implementierung nach Branche und Region

Umstellung auf die verpflichtende Verwendung von 2D-Barcodes für bestimmte Produktkategorien und Gebiete. Der Schwerpunkt liegt auf der Aktualisierung von Kassensystemen, der Schulung von Mitarbeitern und der Sicherstellung der Kompatibilität der Lieferketten.


Vollständige Konformität und Integration

Bis Ende 2027 müssen alle unter den Standard fallenden Unternehmen vollständig auf 2D-Barcodes umstellen - bis hin zur Ablösung klassischer EAN/UPC-Codes, wo immer möglich. Die Standards und deren Support werden kontinuierlich aktualisiert.


Herausforderungen und Lösungen während der Umstellung

Die Umstellung von traditionellen linearen Barcodes auf 2D-Formate ist nicht nur ein technologisches Upgrade, sondern auch eine organisatorische Herausforderung. Unternehmen stehen vor einer Reihe praktischer, technischer und regulatorischer Herausforderungen, insbesondere wenn ihre Infrastruktur noch von älteren Scan-, Druck- oder Barcode-Verarbeitungslösungen dominiert wird.

Zu den häufigsten Schwierigkeiten gehören:

Trotz dieser Herausforderungen können eine sorgfältige Planung und die Auswahl der richtigen Tools den Übergang deutlich erleichtern.

Wichtige Lösungen, die in der Praxis empfohlen werden:

Die Umstellung auf 2D-Barcodes ist ein Projekt, das einen umfassenden Ansatz erfordert. Mit modernen Tools und Partnern wird es jedoch nicht nur realisierbar, sondern auch im Hinblick auf die Geschäftsentwicklung rentabel.


Wie das VintaSoft Barcode .NET SDK Unternehmen bei der Einhaltung von GS1 Sunrise 2027 unterstützt

Das Produkt von VintaSoft - VintaSoft Barcode .NET SDK - löst Probleme der schnellen und präzisen Erkennung von ein- und zweidimensionalen Barcodes, einschließlich DataMatrix- und QR-Code-Barcodes. Dies ermöglicht Unternehmen Folgendes:

Der Übergang zu GS1 Sunrise 2027 fördert Digitalisierung, Transparenz und Sicherheit in der modernen Lieferkette. Es ist wichtig, sich jetzt auf die Veränderungen vorzubereiten und Kennzeichnungs- und Erkennungswerkzeuge zu modernisieren - durch Investitionen in Lösungen wie das VintaSoft Barcode .NET SDK für das effiziente Lesen und Verarbeiten neuer 2D-Barcodes.


Hier ist ein C#-Code, der zeigt, wie ein GS1 Digital Link-Barcode generiert und erkannt wird.
using System;
using System.Text;

using Vintasoft.Barcode;
using Vintasoft.Barcode.BarcodeInfo;
using Vintasoft.Barcode.SymbologySubsets;
using Vintasoft.Barcode.GS1;
using Vintasoft.Imaging;

/// <summary>
/// Test that shows how to encode the barcode data in GS1 Digital Link format,
/// create image with GS1 Digital Link barcode,
/// read GS1 Digital Link barcode from image and print data stored in GS1 format.
/// </summary>
class GS1DigitalLinkExample
{

    /// <summary>
    /// Runs the test (available barcode types QR, DataMatrix).
    /// </summary>
    public static void TestGS1DigitalLink(BarcodeType digitalLinkBarcodeType)
    {
        // GS1 Digital Link barcode
        GS1DigitalLinkBarcodeSymbologySubset barcodeSubset;
        if (digitalLinkBarcodeType == BarcodeType.QR)
            barcodeSubset = BarcodeSymbologySubsets.GS1DigitalLinkQR;
        else if (digitalLinkBarcodeType == BarcodeType.DataMatrix)
            barcodeSubset = BarcodeSymbologySubsets.GS1DigitalLinkDataMatrix;
        else
            throw new NotSupportedException();

        // form the GS1 Application identifiers
        //
        GS1ApplicationIdentifierValue[] aiValues = new GS1ApplicationIdentifierValue[4];
        GS1ApplicationIdentifier ai;
        // 01 - Global Trade Item Number
        ai = GS1ApplicationIdentifiers.FindApplicationIdentifier("01");
        aiValues[0] = new GS1ApplicationIdentifierValue(ai, "0123456789123C");
        // 310 - Net weight, kilograms
        ai = GS1ApplicationIdentifiers.FindApplicationIdentifier("310");
        aiValues[1] = new GS1ApplicationIdentifierValue(ai, "0012.55");
        // 30 - Count of Items
        ai = GS1ApplicationIdentifiers.FindApplicationIdentifier("30");
        aiValues[2] = new GS1ApplicationIdentifierValue(ai, "10");
        // 90 - Company Internal Information
        ai = GS1ApplicationIdentifiers.FindApplicationIdentifier("90");
        aiValues[3] = new GS1ApplicationIdentifierValue(ai, "ABCabc12345");
        // create GS1 value item
        GS1DigitalLinkValueItem gs1DigitalLinkValue = new GS1DigitalLinkValueItem(new GS1DigitalLink("vintasoft.com", aiValues));

        // create the barcode writer
        using (BarcodeWriter writer = new BarcodeWriter())
        {
            // specify that writer must create output image as 24-bpp image
            writer.Settings.PixelFormat = BarcodeImagePixelFormat.Bgr24;

            // encode GS1 Digital Link barcode
            barcodeSubset.Encode(gs1DigitalLinkValue, writer.Settings);

            // create image with barcode
            using (VintasoftBitmap barcodeImage = writer.GetBarcodeAsVintasoftBitmap())
            {
                // delete aiValues array
                aiValues = null;

                // read barcode with GS1 value

                // create barcode reader
                using (BarcodeReader reader = new BarcodeReader())
                {
                    // specify that reader must search for GS1 Digital Link barcodes only

                    reader.Settings.ScanBarcodeTypes = BarcodeType.None;
                    reader.Settings.ScanBarcodeSubsets.Add(barcodeSubset);

                    // read barcode from image
                    IBarcodeInfo[] infos = reader.ReadBarcodes(barcodeImage);

                    // gets GS1 value from barcode value
                    gs1DigitalLinkValue = (GS1DigitalLinkValueItem)(infos[0].ValueItems[0]);

                    // print barcode type
                    Console.WriteLine("Barcode Type: {0}", infos[0].BarcodeType);
                    Console.WriteLine();

                    // print GS1 Digital Link URI value
                    Console.WriteLine("GS1 Digital Link URI:\n{0}", gs1DigitalLinkValue.DigitalLink.DigitalLinkUri);
                    Console.WriteLine();

                    // gets a GS1 Application identifiers from barcode value
                    aiValues = gs1DigitalLinkValue.ApplicationIdentifierValues;

                    StringBuilder printableValue = new StringBuilder();
                    // print Application identifiers values
                    for (int i = 0; i < aiValues.Length; i++)
                    {
                        GS1ApplicationIdentifierValue aiValue = aiValues[i];
                        ai = aiValue.ApplicationIdentifier;
                        Console.WriteLine(string.Format("[{0}] {1}", i + 1, aiValue));
                        Console.WriteLine(string.Format("Application identifier   : {0}", ai.ApplicationIdentifier));
                        Console.WriteLine(string.Format("Value                    : {0}", aiValue.Value));
                        Console.WriteLine(string.Format("Data title               : {0}", ai.DataTitle));
                        Console.WriteLine(string.Format("Data content             : {0}", ai.DataContent));
                        Console.WriteLine(string.Format("Format                   : {0}", ai.Format));
                        Console.WriteLine(string.Format("Is contains decimal point: {0}", ai.IsContainsDecimalPoint));
                        Console.WriteLine(string.Format("Is variable length       : {0}", ai.IsVariableLength));
                        Console.WriteLine();
                        printableValue.Append(aiValue.ToString());
                    }

                    // print GS1 printable value
                    Console.WriteLine("Printable GS1 value: " + printableValue.ToString());
                }
            }
        }
    }
}