Dígito verificador UPC-A
O número de produto 01234567890 recebe o dígito verificador 5, e o UPC-A completo fica 012345678905. Cole um código inteiro de doze dígitos vindo de um parceiro ou leitor para ver se o último dígito está certo. Grátis no seu navegador.
- Grátis
- Funciona no seu navegador
- Sem cadastro
- Seus dados não saem do seu aparelho
Executar grátis
Exemplo resolvido
- Número
- 01234567890
- Modo de cálculo
- Compute
- Entrada
- 01234567890
- Dígito verificador
- 5
- Com dígito verificador
- 012345678905
Os números de produto no varejo na América do Norte quase sempre terminam com um dígito verificador UPC-A: onze dígitos de carga que identificam o fabricante e o item, mais um dígito final que prova que toda a cadeia foi digitada ou lida sem um erro de um único dígito. Esta capacidade implementa a regra padrão GTIN-12 mod-10 usada em todo UPC-A de doze dígitos: posições ímpares da esquerda são ponderadas por três, pares por um, e o dígito verificador é o valor necessário para alcançar o próximo múltiplo de dez. Use o modo compute quando você tiver apenas o número de produto de onze dígitos e precisar do dígito para etiqueta, banco de dados ou gerador de código de barras; use o modo validate quando um parceiro, leitor ou formulário enviar um código completo de doze dígitos e você precisar de um indicador valid claro mais o dígito esperado para mensagens de erro.
Como o dígito verificador UPC-A é calculado
Um código UPC-A tem sempre doze dígitos. Os primeiros onze formam o número do produto (muitas vezes um prefixo de empresa GS1 mais uma referência de item); o décimo segundo é o dígito verificador. Para calculá-lo, percorra os onze dígitos de carga da esquerda para a direita com posições baseadas em 1: multiplique cada dígito em posição ímpar por três e cada dígito em posição par por um, some esses produtos e obtenha o dígito verificador como (10 menos essa soma módulo 10) módulo 10.
De forma equivalente, a cadeia completa de doze dígitos incluindo o verificador deve ter soma ponderada múltiplo de dez sob os mesmos pesos de posição. É a mesma família de regras mod-10 usada em GTIN-8, GTIN-12, GTIN-13 e GTIN-14; UPC-A é especificamente a forma de doze dígitos comum em embalagens dos EUA e do Canadá. O algoritmo é determinístico e local: sem consulta a catálogo, sem chamada de rede e sem relógio.
Esta ferramenta não expande UPC-E, não inventa prefixos de país EAN-13 e não afirma que um checksum válido signifique autorização de venda do produto — apenas prova que a cadeia de dígitos está bem formada sob a regra UPC-A. Em comparação com validadores multi-simbologia, a intenção de busca aqui é estreita: quem precisa da calculadora de dígito verificador UPC-A para cargas de onze dígitos, não um verificador geral de EAN ou ISBN.
Onde dígitos verificadores UPC-A cabem em fluxos reais
Equipes de catálogo e PIM recebem números internos de produto de onze dígitos e precisam acrescentar o dígito verificador UPC-A oficial antes de imprimir etiquetas de prateleira ou publicar em marketplaces que rejeitam GTIN inválidos. Leitores de armazém e apps de recebimento validam códigos de doze dígitos na doca para que uma única transposição não crie um SKU fantasma nem divergência de estoque.
Jobs de qualidade de dados percorrem cada coluna UPC em uma exportação CSV, chamam o modo validate e colocam em quarentena linhas em que valid é false — capturando edições humanas e bugs de geradores. Não trate um UPC-A que passa a verificação como prova de propriedade da marca ou registro GS1; só prova que o dígito mod-10 é consistente com a carga sob os pesos padrão.
Casos de uso
Auditar colunas UPC em exportações de catálogo
Valide em lote cada UPC de doze dígitos em um CSV de PIM ou parceiro e coloque em quarentena as linhas cujo dígito verificador não coincida mais com o valor esperado recalculado.
Perguntas frequentes
O que é um dígito verificador UPC-A?
É o décimo segundo dígito de um código UPC-A, calculado com uma soma ponderada mod-10 para que erros de um dígito na digitação ou leitura costumem ser detectados antes de armazenar ou imprimir o código.
O que acontece com comprimento errado, letras ou hífens?
Tarefas de validação com falha não são cobradas.
A ferramenta de dígito verificador UPC-A é gratuita?
A ferramenta do navegador é gratuita e roda localmente.
Como é calculado o dígito verificador UPC-A?
Lendo os onze dígitos da esquerda, multiplique os de posição ímpar por 3 e os de posição par por 1 e some tudo. O dígito verificador é o que leva essa soma ao próximo múltiplo de dez, ou 0 se ela já for um.
UPC-A é o mesmo que EAN-13?
Fazem parte da mesma família de regras de verificação, mas o UPC-A é a forma de doze dígitos, também chamada GTIN-12, comum em embalagens dos Estados Unidos e do Canadá. Esta ferramenta trata só essa forma, não EAN-13 nem ISBN.
Ferramentas relacionadas
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
curl -X POST https://api.kit.forhosting.com/enc/upc-check \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"number":"01234567890"}'const res = await fetch("https://api.kit.forhosting.com/enc/upc-check", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"number": "01234567890"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/enc/upc-check",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"number": "01234567890"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/enc/upc-check", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"number":"01234567890"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"number":"01234567890"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/enc/upc-check", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemplo de requisição
{
"number": "01234567890"
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.upc_check",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |
Notas técnicas
Entrada não numérica e comprimentos incorretos falham com invalid_input em vez de remoção silenciosa, para que você nunca armazene um código pela metade. A mesma aritmética pura roda grátis no navegador e no preço publicado da API.
Contrato de entrada, modos e comportamento de erro
Envie um campo number que contenha apenas caracteres de zero a nove. Comprimento errado é um erro explícito que nomeia o modo e o comprimento enviado — onze para compute, doze para validate — para que formulários cliente mostrem «precisam de onze dígitos» sem adivinhar. Strings vazias, number ausente e valores de mode inválidos falham antes de qualquer soma ponderada e não são cobrados. Prefira compute ao criar ou completar números de produto; prefira validate ao condicionar uma consulta ou importação a um código completo de um usuário ou arquivo de parceiro. Espaços, hífens, letras e pontos decimais são rejeitados como entrada não numérica com invalid_input para que um valor removido em silêncio nunca chegue ao armazenamento. O modo compute é o padrão: o motor exige exatamente onze dígitos, devolve check_digit como string de um caractere e devolve with_check como o UPC-A de doze dígitos que você pode imprimir ou persistir. O modo validate exige exatamente doze dígitos; a resposta reporta valid true quando o dígito final coincide com o expected_check_digit recalculado, e sempre inclui payload (os primeiros onze dígitos), check_digit, expected_check_digit e length doze. Alias como digits, upc e code são aceitos para o mesmo campo de carga, para que integrações que já falam «upc» não precisem renomear. Como o caminho é parse puro sem relógio, fonte aleatória ou rede, o mesmo corpo JSON sempre produz o mesmo resultado JSON na ferramenta gratuita do navegador e na API a US$ 0,002 por solicitação bem-sucedida.
Onde dígitos verificadores UPC-A cabem em fluxos reais
Formulários de onboarding de e-commerce podem recalcular expected_check_digit e mostrar uma correção amigável quando um vendedor cola um código com o último dígito errado. Em todo fluxo o contrato é o mesmo: apenas dígitos, comprimento fixo por modo, JSON estruturado que você pode testar com goldens, comportamento idêntico no navegador gratuito e na API pré-paga, e invalid_input honesto quando a string não é uma sequência pura de dígitos no comprimento certo.
Casos de integração
Completar um número de produto de 11 dígitos para etiquetas
Chame o modo compute com a carga de onze dígitos, armazene with_check e envie o UPC-A de doze dígitos à impressora de código de barras ou ao anúncio no marketplace.
Validar UPC-A lido ou digitado na entrada
Quando um leitor ou formulário enviar doze dígitos, chame o modo validate e bloqueie a consulta se valid for false, mostrando expected_check_digit para corrigir um erro de um dígito.
Perguntas técnicas
Como calculo um dígito verificador UPC-A com esta API?
Faça POST com number em exatamente onze dígitos e mode compute (ou omita mode). A resposta inclui check_digit e with_check (o UPC-A completo de doze dígitos).
Como valido um UPC-A completo de doze dígitos?
Faça POST com a string de doze dígitos e mode validate. A resposta inclui valid, check_digit, expected_check_digit e payload (dígitos sem o último).