GS1 Sunrise 2027: Transição para códigos de barras 2D para o comércio global

Categoria do blog: Código de barras.NET

07.08.2025

GS1 Sunrise 2027 é um projeto global para a transição dos tradicionais códigos de barras unidimensionais (1D) EAN/UPC para códigos de barras bidimensionais (2D), visando melhorar a transparência, a rastreabilidade e a segurança dos produtos. Até o final de 2027, espera-se que empresas de varejo, saúde e outros setores em todo o mundo sejam obrigadas a implementar novos padrões de identificação de produtos em seus pontos de venda (PDV) e pontos de atendimento (PA). Já em fase de testes em 48 países, abrangendo 88% do PIB global, a iniciativa Sunrise 2027 está se tornando o novo padrão para o comércio global.

A VintaSoft, desenvolvedora de uma ferramenta especializada para reconhecimento de código de barras - VintaSoft Barcode .NET SDK, vê essas mudanças como uma oportunidade estratégica para modernizar os processos de negócios dos clientes e expandir os recursos do SDK no novo ambiente regulatório.



O que é o GS1 Sunrise 2027?

O Sunrise 2027 é uma iniciativa da GS1 anunciada oficialmente na década de 2020, com o objetivo de garantir que, até 2027, os sistemas de varejo e logística em todo o mundo sejam capazes de ler e interpretar códigos de barras 2D, além dos já conhecidos códigos 1D. No entanto, o principal objetivo é substituir os formatos 1D por formatos 2D mais versáteis, capazes não apenas de identificar um produto, mas também de transmitir dados adicionais - data de validade, número do lote, país de origem, certificados de qualidade, etc.


Por que toda a indústria está migrando

O antigo formato EAN/UPC mostrou-se limitado:

Códigos de barras 2D, como GS1 DataMatrix e GS1 Digital Link QR, resolvem esses problemas permitindo:


Como isso afetará os participantes do mercado?

A transição para códigos de barras 2D, iniciada pela GS1, afetará quase todos os participantes da cadeia de valor, desde fabricantes a desenvolvedores de software. Essas mudanças não podem ser consideradas uma simples atualização técnica; estamos falando da reestruturação de processos fundamentais na logística, no varejo e na interação com os consumidores.

As empresas do setor manufatureiro estarão entre as primeiras a sentir o impacto do novo padrão. Elas precisarão adaptar as linhas de produção e os processos de embalagem para imprimir os novos códigos de barras. Enquanto antes bastava aplicar um código de barras linear com GTIN na embalagem, agora o formato 2D precisará incluir muito mais informações: data de validade, número do lote, informações sobre a composição e, às vezes, até mesmo um link para um certificado digital ou site. Tudo isso exige a modernização tanto dos equipamentos quanto da infraestrutura de TI que garante a geração e o gerenciamento dos novos códigos de barras.

Para varejistas e operadores logísticos, o principal desafio será a necessidade de adaptar os dispositivos de caixa registradora e de leitura de códigos de barras em armazéns. Embora a maioria dos leitores modernos já suporte códigos de barras 2D, nem todos estão otimizados para os padrões GS1. Isso significa que não apenas o equipamento precisará ser atualizado, mas também o software precisará ser modificado para reconhecer e processar corretamente os novos campos de dados.

Os desenvolvedores de soluções de software, incluindo aqueles que criam sistemas de contabilidade, ERP, aplicativos de caixa registradora e soluções móveis, também devem se preparar para a mudança nos formatos de código de barras. É necessário não apenas adicionar suporte para novos sistemas de símbolos, mas também implementar a interpretação correta da estrutura de dados de acordo com os padrões GS1. Isso inclui o processamento de identificadores de aplicação (AI), a análise de campos aninhados e, no caso do uso do formato GS1 Digital Link, a interação com serviços web externos. Aqui, a precisão do reconhecimento é especialmente importante, já que um erro na interpretação dos dados pode levar a falhas na logística, devoluções e até mesmo consequências legais.


O que torna um código de barras 2D especial

Os códigos de barras 2D representam a próxima evolução em sistemas de identificação automática. Eles não apenas substituem os códigos de barras lineares, como também abrem novas oportunidades para negócios, produção e logística devido à sua versatilidade e riqueza de informações.

Ao contrário dos códigos de barras 1D (por exemplo, EAN/UPC), que podem conter apenas um identificador básico do produto (GTIN), os códigos de barras 2D são capazes de transmitir toda uma gama de parâmetros necessários para as cadeias de suprimentos modernas e serviços digitais.

As principais vantagens dos códigos de barras 2D incluem:

A transição para um novo sistema de código de barras incentiva as empresas não apenas a cumprir os padrões, mas também a construir ecossistemas digitais que conectam embalagens físicas e experiências online.


Etapas de implementação do GS1 Sunrise 2027

Etapa de informação e adesão voluntária

Disseminação de conhecimento, projetos-piloto, adaptação de sistemas internos, teste de rotulagem dupla (1D + 2D). As empresas ganham tempo para modernizar e testar as tecnologias.


Implementação obrigatória por setor e região

Transição para o uso obrigatório de códigos de barras 2D para determinadas categorias de produtos e territórios. O foco principal é a atualização de equipamentos de PDV (Ponto de Venda), o treinamento de pessoal e a garantia da compatibilidade das cadeias de suprimentos.


Conformidade e integração totais

Até o final de 2027, todas as empresas abrangidas pela norma devem migrar completamente para códigos de barras 2D, substituindo até mesmo os códigos EAN/UPC clássicos sempre que possível. Atualização constante das normas e seu suporte.


Desafios e soluções durante a transição

A transição dos códigos de barras lineares tradicionais para os formatos 2D não é apenas uma atualização tecnológica, mas também um desafio organizacional. As empresas enfrentam diversos desafios práticos, técnicos e regulatórios, especialmente se sua infraestrutura ainda for dominada por soluções legadas de leitura, impressão ou processamento de códigos de barras.

As dificuldades mais comuns incluem:

Apesar desses desafios, um planejamento adequado e a escolha das ferramentas certas podem facilitar muito a transição.

Principais soluções recomendadas para aplicação prática:

A transição para códigos de barras 2D é um projeto que exige uma abordagem abrangente, mas com ferramentas modernas e parceiros, torna-se não apenas viável, como também rentável em termos de perspectivas de desenvolvimento de negócios.


Como o VintaSoft Barcode .NET SDK ajuda as empresas a cumprirem a norma GS1 Sunrise 2027

O produto da VintaSoft, o VintaSoft Barcode .NET SDK, resolve problemas de reconhecimento rápido e preciso de códigos de barras unidimensionais e bidimensionais, incluindo códigos DataMatrix e QR Code. Isso permite que as empresas:

A transição para o GS1 Sunrise 2027 promove a digitalização, a transparência e a segurança na cadeia de suprimentos moderna. É importante se preparar para as mudanças agora, modernizando as ferramentas de marcação e reconhecimento - investindo em soluções como o VintaSoft Barcode .NET SDK para leitura e processamento eficientes dos novos códigos de barras 2D.


Aqui está um código C# que demonstra como gerar um código de barras GS1 Digital Link e reconhecer o código de barras gerado.
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());
                }
            }
        }
    }
}