Crie QR Codes de WhatsApp, Wi-Fi e cartão de visita
Faça QR Codes que abrem uma conversa no WhatsApp com mensagem pronta, compartilham a senha do Wi-Fi ou salvam um contato — e texto, e-mail, telefone e Pix.

Ao final deste guia você sabe qual tipo de QR Code escolher para cada tarefa — conversa no WhatsApp, acesso ao Wi-Fi, cartão de contato, texto, e-mail, telefone ou Pix —, o que quem escaneia vê e como a versão dinâmica e a estática de cada tipo diferem.
Disponibilidade
- Plano: todos os tipos em todos os planos. Os passes de carteira na página do visitante precisam de Pro ou superior.
- Onde: Criar QR Code → Selecione o tipo do QR. Códigos dinâmicos oferecem URL, Texto, Wi-Fi, E-mail, Telefone, WhatsApp e Cartão de Visita; os estáticos acrescentam Pix. A API aceita os mesmos tipos (
url,text,wifi,email,phone,whatsapp,vcard,pix, maissms,crypto,geo,latlog).
Antes de começar
- Decida dinâmico ou estático por tipo: um código dinâmico de Wi-Fi, cartão de visita, e-mail, telefone ou texto abre uma pequena página da CodeQR com o conteúdo e botões de ação, conta leituras e pode ser editado depois; um estático é lido direto pelo celular (a câmera oferece entrar na rede, salvar o contato ou abrir o app de e-mail), mas não pode ser editado nem medido. Veja Escolha entre QR Code dinâmico e estático.
- Um código dinâmico de WhatsApp é a exceção: redireciona direto para o WhatsApp, sem página intermediária.
- Pix é só estático: os apps de pagamento precisam ler o payload Pix da própria imagem.
Passos
- Abra QR Codes, clique em Criar QR Code, escolha Dinâmico ou Estático e clique em Continuar.
- Em Selecione o tipo do QR, escolha o tipo e preencha os campos: - WhatsApp — Número do WhatsApp no formato internacional, só dígitos (
5511999999999), e uma Mensagem (opcional) de até 1.000 caracteres que aparece pronta na conversa. - Wi-Fi — Nome da rede, Senha, Criptografia (Nenhuma, WPA, WPA2 ou WEP) e Rede oculta se o nome da rede não é transmitido. - Cartão de Visita — Nome, Sobrenome, Celular, Telefone, e-mail, website e endereço; o visitante recebe um contato para baixar. - E-mail / Telefone — o endereço ou o número (e assunto e mensagem no e-mail). - Texto — qualquer texto, mostrado como está. - Pix (estático) — Chave PIX, Nome do beneficiário, Cidade e, opcionalmente, Valor, ID da transação e Descrição.


- Defina o Design e, em Opcional, um Título para reconhecer o código na lista (a lista mostra o conteúdo, por exemplo
WiFi SSID: Cafe GuestouWhatsApp: 5511999999999). - Clique em Create QR Code (o botão do painel de visualização aparece em inglês) e depois em Exportar.
O que o visitante vê
A página do visitante aparece no idioma do celular de quem escaneia; os prints abaixo foram feitos num iPhone em inglês.
- WhatsApp (dinâmico): a leitura redireciona para
https://wa.me/5511999999999?text=…e o WhatsApp abre a conversa com a sua mensagem pronta para enviar. - Wi-Fi (dinâmico): uma página com Network Name, Password (oculta até tocar), Security, os passos para conectar, Copy Password, Download e os botões ADD TO WALLET no Pro e acima. O celular não entra na rede sozinho — isso só acontece com um código de Wi-Fi estático.

- Cartão de Visita (dinâmico): uma página com Name, Mobile (Call, Text), Email (Send), Website (Visit), Add to Contacts, Download e os botões de carteira.

- E-mail, Telefone, Texto (dinâmicos): uma página com o conteúdo e botões de ação (ligar, copiar, compartilhar).
- Códigos estáticos: o celular trata o conteúdo nativamente — a câmera propõe entrar na rede, salvar o contato, abrir o app de e-mail ou de telefone, ou mostra o texto; o código Pix abre no app do banco.
Toda leitura de um código dinâmico de qualquer tipo conta em Análise; visitas ao link público da página (https://<domínio>/pass/<chave>) não contam.
O mesmo pela API
Envie o tipo e o objeto correspondente. Exemplos que rodaram (200 OK, respostas resumidas):
WhatsApp:
curl -X POST https://api.codeqr.io/qrcodes \
-H "Authorization: Bearer codeqr_xxxxxxxxxxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"type": "whatsapp",
"whatsapp": { "number": "5511999999999", "message": "Hi! I scanned the QR code at the counter." },
"title": "WhatsApp counter",
"static": false
}'{ "id": "cmsx87izc0005biopy0gtk834", "key": "113HDGTJxMLI-qr", "type": "whatsapp",
"whatsapp": { "number": "5511999999999", "message": "Hi! I scanned the QR code at the counter." },
"shortLink": "https://qrup.link/113HDGTJxMLI-qr" }Wi-Fi: { "type": "wifi", "wifi": { "ssid": "Cafe Guest", "password": "latte2026", "encryption": "WPA" }, "title": "Guest Wi-Fi", "static": false } → "key": "PFd23hLIz7dl-qr". Cartão de visita: { "type": "vcard", "vcard": { "name": "Ana", "surname": "Souza", "phone": "+5511999999999", "email": "ana@example.com", "website": "https://example.com" }, "static": false } → "key": "AJMvBdqPxG6S-qr". Pix: { "type": "pix", "pix": { … }, "static": true } — sempre estático.
Erros de validação que você pode encontrar: 400 "Missing Wi-Fi SSID.", 422 "invalid_string: whatsapp.number: Invalid WhatsApp number (use E.164 digits, e.g. 5511999999999)", 400 "Missing PIX data.". A tool create_qrcode do MCP suporta whatsapp, wifi (ssid, password, encryption WPA/WPA2/WEP/nopass), vcard, email, phone, sms e text — sempre dinâmicos. Mais em Crie QR Codes com a API, o MCP e automações.
Como verificar
curl -sI -A "Mozilla/5.0 (iPhone; CPU iPhone OS 17_5 like Mac OS X)" https://qrup.link/113HDGTJxMLI-qr | grep -iE "^HTTP|^location" # HTTP/2 302 # location: https://wa.me/5511999999999?text=Hi!%20I%20scanned%20the%20QR%20code%20at%20the%20counter. curl -sI -A "Mozilla/5.0 (iPhone; CPU iPhone OS 17_5 like Mac OS X)" https://qrup.link/PFd23hLIz7dl-qr | grep -iE "^HTTP|^x-pathname" # HTTP/2 200 # x-pathname: /qrup.link/pass/PFd23hLIz7dl-qr
O código de WhatsApp responde com um redirecionamento para wa.me; os de Wi-Fi e cartão de visita respondem com a página do visitante. Depois escaneie cada um com um celular: o WhatsApp abre a conversa, a página de Wi-Fi mostra a rede, a página de contato oferece Add to Contacts.
Solução de problemas
O código de Wi-Fi abre uma página em vez de conectar o celular
É o comportamento do dinâmico: a página mostra a rede e a senha para copiar. Se você precisa de conexão em um toque, crie um código de Wi-Fi estático — a câmera então oferece entrar na rede, mas a senha não pode ser trocada depois de impresso.
"Invalid WhatsApp number"
Use o formato internacional só com dígitos: código do país + DDD + número, sem +, espaços, traços nem zero à esquerda (5511999999999).
O WhatsApp abre sem a minha mensagem
A mensagem viaja no link wa.me como parâmetro text, e o WhatsApp a preenche quando a conversa abre. Confira se o campo Mensagem (opcional) foi salvo (até 1.000 caracteres) chamando o link curto — o cabeçalho location precisa conter ?text=.
O contato não salva no iPhone
Use Add to Contacts na página do visitante (código dinâmico) — ele baixa um arquivo .vcf que o iOS importa. Códigos vCard estáticos lidos pela câmera do iPhone têm um problema conhecido com sobrenomes que contêm espaço; um código de cartão de visita dinâmico evita isso.
O app do banco recusa o código Pix
Códigos Pix precisam ser estáticos, e o payload tem limites de campo: nome do beneficiário até 25 caracteres, cidade até 15, valor com ponto como separador decimal (10.00). Recrie o código com valores mais curtos e teste com o seu próprio app de banco antes de imprimir.