Atualizado em 29/10/2026
Para códigos de verificação e avisos no Brasil, o WhatsApp costuma ser a primeira escolha, e o SMS, o plano B. O WhatsApp entrega mensagens com botões, informa quando a mensagem foi entregue e lida, e tem tarifa oficial publicada pela Meta. O SMS alcança qualquer celular, inclusive quem não tem WhatsApp. A estratégia que funciona melhor é combinada: tente o WhatsApp e, se ele não entregar em alguns segundos, mande SMS.
Este artigo compara os dois canais em alcance, recursos, custo e segurança, e mostra como montar o fallback com código.
Comparação rápida
| Critério | WhatsApp (API oficial) | SMS |
|---|---|---|
| Alcance | Só quem tem conta no WhatsApp | Qualquer celular com linha ativa |
| Exige internet | Sim | Não |
| Status de entrega | sent, delivered, read, failed via webhook | Relatório de entrega da operadora, quando disponível |
| Confirmação de leitura | Sim, quando disponível | Não |
| Formato | Texto, mídia, botões, listas | Texto curto, dividido em segmentos |
| Identificação do remetente | Nome de exibição aprovado pela Meta | Número curto ou longo, conforme a operadora |
| Preço | Tabela oficial da Meta por categoria e país | Varia por fornecedor e operadora |
| Iniciar contato | Template aprovado | Texto livre (sujeito às regras do fornecedor) |
| Fraude típica | Abuso de formulário (pedidos em massa) | SMS pumping |
Alcance: quem recebe cada canal
O SMS chega em qualquer celular com linha ativa e sinal, sem depender de aplicativo ou dados móveis. Essa é a vantagem que nenhum app supera.
O WhatsApp só entrega para números com conta ativa no WhatsApp. Se o número não tem WhatsApp, a API aceita a chamada, mas o webhook de status traz failed, geralmente com o código 131026, que a Meta descreve como “Unable to deliver message”. A explicação completa do erro está em erro 131026 na API do WhatsApp.
Por isso, para OTP de cadastro, que precisa funcionar para 100% dos usuários, o SMS continua importante como fallback.
Quer testar enquanto lê? Crie sua conta na Vectalk e envie a primeira mensagem pela API oficial. Criar conta grátis →
Recursos: o que o WhatsApp faz que o SMS não faz
Templates de autenticação
A Meta tem uma categoria própria de template para códigos de verificação. Pela documentação, esse template tem texto fixo, definido pela Meta, e um único botão, que pode ser:
- copiar código: o usuário toca e o código vai para a área de transferência;
- preenchimento com um toque (one-tap): no Android, o botão abre o seu app e entrega o código;
- zero-tap: só no Android, sem botão; o app recebe o código automaticamente.
O template pode ter um aviso de segurança (“não compartilhe este código”) e um aviso de validade de 1 a 90 minutos. A Meta também envia códigos de autenticação apenas para o dispositivo principal do usuário, não para aparelhos vinculados. O passo a passo de criação está em OTP pelo WhatsApp com template de autenticação.
Envio de um código com botão de copiar:
{
"messaging_product": "whatsapp",
"to": "5511999999999",
"type": "template",
"template": {
"name": "codigo_verificacao",
"language": { "code": "pt_BR" },
"components": [
{
"type": "body",
"parameters": [{ "type": "text", "text": "482913" }]
},
{
"type": "button",
"sub_type": "url",
"index": "0",
"parameters": [{ "type": "text", "text": "482913" }]
}
]
}
}
Avisos com ação
Para notificações (pedido enviado, consulta amanhã, fatura disponível), o WhatsApp aceita imagem ou documento no cabeçalho e botões de resposta ou de link. O cliente confirma a consulta com um toque, e a resposta chega no seu webhook. No SMS, a mesma ação depende de o cliente abrir um link ou responder um texto.
Status de entrega e leitura
Cada mensagem pela API gera eventos no webhook. Isso permite medir entrega e leitura por template, e disparar o fallback quando a entrega não acontece. Veja status de mensagem via webhook.
Custo
A Meta cobra por mensagem entregue, com tarifa definida por categoria e país. Para destinatários no Brasil, desde 1º/10/2026:
| Categoria | Uso típico | Tarifa Meta |
|---|---|---|
| Autenticação | Código de verificação, login | R$ 0,0350 |
| Utilidade | Pedido, entrega, lembrete de consulta, fatura | R$ 0,0350 |
| Marketing | Oferta, novidade | R$ 0,3217 |
Alguns pontos práticos:
- mensagem que não é entregue não é cobrada, o que inclui números sem WhatsApp;
- desde 1º/10/2026, templates de utilidade enviados dentro da janela de atendimento também são cobrados;
- em alguns países, a Meta aplica tarifa de autenticação internacional, mais alta que a local;
- utilidade e autenticação têm descontos por volume; veja como funcionam as faixas.
Os detalhes de cobrança no Brasil estão em quanto custa a API do WhatsApp no Brasil.
SMS
O preço do SMS depende do fornecedor, do volume, do tipo de rota e da operadora de destino. Não existe uma tabela pública única como a da Meta. Para comparar, peça a cada fornecedor o preço por segmento entregue para o Brasil e pergunte se a cobrança é por envio ou por entrega.
Lembre que uma mensagem SMS longa é dividida em segmentos: o padrão GSM-7 comporta 160 caracteres por mensagem simples; com caracteres fora do alfabeto GSM-7 (como ã, õ, á, ê e emojis), o texto passa a usar codificação Unicode e o limite cai para 70 caracteres. Em português, um aviso com acento pode virar dois ou três segmentos cobrados.
Fraude: SMS pumping
SMS pumping (também chamado de tráfego artificialmente inflado) é uma fraude em que robôs usam o seu formulário de cadastro ou de login para pedir códigos para faixas de números controladas por quem lucra com a terminação das mensagens. Você paga cada SMS, e ninguém real recebe. O Twilio, por exemplo, documenta esse ataque e oferece ferramentas próprias para bloqueá-lo.
No WhatsApp, a mensagem não passa pela cobrança de terminação das operadoras e só é cobrada quando entregue a uma conta do WhatsApp, o que tira o incentivo financeiro desse tipo de fraude. Isso não elimina abuso: robôs ainda podem pedir códigos em massa para números válidos. As defesas valem para os dois canais:
- limite de pedidos por número, por IP e por dispositivo;
- CAPTCHA ou verificação invisível antes de enviar o código;
- bloqueio de prefixos de países onde você não atua;
- alerta quando a taxa de conversão do código (pedidos x validações) cai de repente.
Estratégia combinada: WhatsApp primeiro, SMS de fallback
O fluxo mais comum para OTP:
- O usuário informa o número.
- Seu sistema envia o template de autenticação pelo WhatsApp e guarda o ID da mensagem (
wamid). - Se o webhook trouxer
deliveredem poucos segundos, aguarde o código. - Se trouxer
failed(por exemplo,131026) ou nada chegar dentro do prazo, envie o mesmo código por SMS. - Mostre na tela por onde o código foi enviado e ofereça “reenviar por SMS”.
Exemplo em Node.js:
const VECTALK = 'https://apis.vectalk.com.br/api/messages';
const PRAZO_MS = 8000;
async function enviarOtp(numero, codigo, { aguardarStatus, enviarSms }) {
const r = await fetch(VECTALK, {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.VECTALK_TOKEN}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
messaging_product: 'whatsapp',
to: numero,
type: 'template',
template: {
name: 'codigo_verificacao',
language: { code: 'pt_BR' },
components: [
{ type: 'body', parameters: [{ type: 'text', text: codigo }] },
{ type: 'button', sub_type: 'url', index: '0', parameters: [{ type: 'text', text: codigo }] },
],
},
}),
});
if (r.ok) {
const { messages } = await r.json();
// aguardarStatus resolve quando o webhook trouxer delivered/failed para esse wamid
const status = await aguardarStatus(messages[0].id, PRAZO_MS);
if (status === 'delivered' || status === 'read') return 'whatsapp';
}
await enviarSms(numero, `Seu código: ${codigo}`);
return 'sms';
}
A função aguardarStatus lê os eventos que o seu webhook grava (por exemplo, numa fila ou no Redis) e devolve o primeiro status do wamid dentro do prazo. Ajuste o prazo medindo o tempo real até o delivered nos seus usuários.
Para avisos que não são urgentes, como lembrete de consulta para amanhã, o prazo pode ser de minutos, e o SMS só sai para quem não recebeu no WhatsApp.
E o RCS?
O RCS é a evolução do SMS, com recursos parecidos com os do WhatsApp dentro do app de mensagens do celular. Ele tem disponibilidade e regras próprias. A comparação está em RCS x WhatsApp.
Como fazer isso com a Vectalk
A Vectalk é um proxy da WhatsApp Cloud API oficial. Você cria o template de autenticação ou de utilidade no painel (há uma Biblioteca de Modelos para partir de exemplos), envia pelo endpoint POST https://apis.vectalk.com.br/api/messages com o payload da Meta e recebe os status no seu webhook, no formato da documentação da Meta. A cobrança é por saldo pré-pago: cada mensagem entregue desconta do saldo, e você não cadastra cartão na Meta.
A Vectalk não envia SMS. O fallback por SMS fica com o fornecedor de SMS que você já usa, acionado pelo seu sistema quando o status do WhatsApp não chega. Veja o guia da API oficial do WhatsApp, a documentação ou crie sua conta.
Perguntas frequentes
WhatsApp ou SMS: qual é mais barato?
Depende do fornecedor de SMS e do tamanho da mensagem. No WhatsApp, a tarifa da Meta para autenticação e utilidade no Brasil é de R$ 0,0350 por mensagem entregue desde 1º/10/2026. Compare com o preço por segmento entregue que o seu fornecedor de SMS cobra.
O WhatsApp cobra quando o número não tem WhatsApp?
Não. A Meta cobra só mensagens entregues. Se o número não tem WhatsApp, o status volta como failed, sem cobrança da Meta.
Posso mandar código de verificação em template de utilidade?
Não. Códigos de verificação têm categoria própria, a de autenticação, com texto fixo definido pela Meta. Usar outra categoria para OTP leva à reprovação ou reclassificação do template.
Quanto tempo esperar antes de mandar o SMS?
Não há número oficial. Meça o tempo até o delivered nos seus usuários e escolha um prazo que cubra a maior parte deles, oferecendo sempre o botão “reenviar por SMS”.
O WhatsApp acaba com o SMS pumping?
Ele tira o incentivo financeiro dessa fraude, porque a mensagem não gera receita de terminação para operadoras. Mas robôs ainda podem abusar do formulário, então mantenha limites por número e por IP.
Fontes oficiais consultadas em 29/10/2026: templates de autenticação, códigos de erro da Cloud API, preços da Cloud API, Twilio: proteção contra SMS pumping, documentação da Vectalk.
Coloque o WhatsApp oficial da sua empresa para funcionar
Crie sua conta, conecte seu número à API oficial (dá para manter o app com coexistência) e comece a atender e enviar mensagens.
