Verificação de Chave Pix
Este documento irá ajudá-lo a validar chave pix.
Uma chave pix é como se fosse um dominio DNS que aponta para uma conta no banco central, você paga para esta conta, e não diretamente para a chave
Logo é nescessario ter acesso ao numero da conta no banco central para realizar uma transação
Esse endpoint tem a função de validar esse vinculo com o banco central

O endpoint de verificação de chave de pix retornará os dados sobre uma chave de pix. A chave pode ser informada no path (GET) ou no corpo da requisição (POST).
- Usando GET com a chave no path:
curl -X GET "https://api.woovi.com/api/v1/pix-keys/{pix-key}/check" \
-H "Authorization: {APP_ID}"
Você pode acessar aqui a documentação referente a esse endpoint.
- Usando POST com a chave no corpo (útil quando a chave contém caracteres que ficam ruins no path, como e-mails):
curl -X POST "https://api.woovi.com/api/v1/pix-keys/check" \
-H "Authorization: {APP_ID}" \
-H "Content-Type: application/json" \
--data-raw '{
"pixKey": "<chave pix>"
}'
Você pode acessar aqui a documentação referente a esse endpoint.
Limitação de Taxa
- O endpoint tem um limitador de taxa, devido às restrições do Bacen, por isso o Woovi tem um limite de taxa nesse endpoint.
- Quando você recebe um 404 em uma chave de pix, após alguns 404, você receberá um 429 e precisará aguardar o reabastecimento do limitador de taxa.
O que é retornado ?
- O campo
typesegue o enum:CPF,CNPJ,EMAIL,PHONE,RANDOMouEVP. pixKeyvolta na forma normalizada, independente de como você enviou:- CPF / CNPJ → só dígitos (
00000000191,00000000000191) - EMAIL → em lowercase
- PHONE → formato internacional E.164 (
+5511999998888) - RANDOM / EVP → UUID de 36 chars intacto
- CPF / CNPJ → só dígitos (
owner.namevolta inteiro (não mascarado).owner.taxID: para CPF vem parcialmente mascarado, preservando os 3 primeiros e os 2 últimos dígitos (ex:111.***.***-80); para CNPJ vem inteiro e formatado (ex:00.000.000/0001-91).owner.brancheowner.accountvoltam totalmente mascarados (****/********).owner.pspé o código ISPB (8 dígitos) do PSP da chave, não o nome do banco — se precisar exibir o nome, mantenha um mapeamento ISPB → instituição do seu lado.- A cada chamada o DICT é consultado de novo e um novo
pixKeyEndToEndIdé gerado. Esse identificador é o que você precisa guardar e enviar no endpoint de Criar Pagamento.
{
"pixKeyEndToEndId": "E12345678202601011200abcdefghijk",
"pixKey": "00000000191",
"type": "CPF",
"owner": {
"name": "Fulano de Tal",
"taxID": "000.***.***-91",
"psp": "12345678",
"branch": "****",
"account": "********************"
}
}
Erros possíveis
400— chave em formato inválido (não passou emCPF/CNPJ/EMAIL/PHONE/ UUID de 36 chars)404 PIX_KEY_INFO_NOT_FOUND— chave válida mas não cadastrada no DICT400para chave de risco —Pix key related to an account suspected of fraud400para DICT indisponível —Error verifying pix key429— rate limit do Bacen estourado (veja a seção "Limitação de Taxa" acima)403 PIX_KEY_CHECK_NOT_ALLOWED— sua conta não tem a feature liberada
Na rota GET os erros voltam com error + errorCode. Na rota POST apenas error é retornado.
Cobrança
Cada consulta bem-sucedida pode gerar uma tarifa, que vem das configurações de fee da sua conta. A cobrança é idempotente por dia, conta e chave: consultar a mesma chave Pix mais de uma vez na mesma conta no mesmo dia gera só uma cobrança. Erros (chave não encontrada, rate limit, etc.) não geram cobrança.
Prompt para IA
Copie o trecho abaixo numa IA de coding (Claude / Cursor / Gemini / ChatGPT) pra implementar a integração no seu app:
Implemente uma função
checkPixKey(pixKey)que consulta uma chave Pix no DICT do Banco Central via Woovi e devolve nome do titular, banco e identificador necessário pra pagamento.Endpoint:
POST https://api.woovi.com/api/v1/pix-keys/checkHeader:Authorization: <APP_ID>eContent-Type: application/jsonBody:{ "pixKey": "<chave>" }(aceita CPF, CNPJ, email, telefone ou EVP/UUID; não aceita BRcode/copia e cola — use o endpoint de decode/emv pra isso)Resposta de sucesso (200):
{"pixKeyEndToEndId": "E12345678202601011200abcdefghijk","pixKey": "<chave normalizada>","type": "CPF" | "CNPJ" | "EMAIL" | "PHONE" | "RANDOM" | "EVP","owner": {"name": "<nome do titular>","taxID": "<CPF parcialmente mascarado ou CNPJ inteiro>","psp": "<ISPB de 8 dígitos do banco da chave>","branch": "****","account": "********************"}}Erros a tratar: 404
PIX_KEY_INFO_NOT_FOUND(chave não encontrada), 400 (chave inválida ou chave de risco), 429 (rate limit do Bacen), 403PIX_KEY_CHECK_NOT_ALLOWED(feature não liberada).Detalhes importantes:
pspé só o código ISPB (8 dígitos) — pra mostrar nome do banco mantenha um mapeamento ISPB → nome do seu lado.pixKeysempre volta normalizado: telefone em E.164 (+55...), email em lowercase, CPF/CNPJ só dígitos.owner.taxIDde CPF vem mascarado (ex111.***.***-80); de CNPJ vem inteiro.- Cada consulta bem-sucedida pode ter custo, mas é idempotente por dia/conta/chave.
- Guarde o
pixKeyEndToEndIdretornado se for usar pra criar um pagamento depois.