Seu sistema.
O Pix da sua loja.
Crie cobranças, receba o QR Code e acompanhe a venda. Integre pela API REST ou conecte seu agente com MCP.
/v1/integration/sales{
"sale_id": "0123456789ABCDEFGHJKM",
"amount_cents": 8990,
"reference": "Pedido 1042"
}QR Code + Copia e Cola + venda
Da sua loja à primeira chamada.
Prepare sua loja
Crie sua conta e cadastre a chave Pix da loja. As vendas da integração aparecem no mesmo portal.
Gere sua chave
Como proprietário, abra Ajustes → API e MCP. Copie a API key na emissão e guarde no servidor.
Crie e acompanhe
Escolha um exemplo abaixo. Guarde o ID, crie a cobrança e consulte o estado ou receba um webhook.
A API key permite criar e consultar vendas da própria loja. Use-a somente no backend ou no processo local do MCP. O portal permite substituir ou desativar a chave; a anterior deixa de funcionar imediatamente.
Abrir configurações de API e MCP →Escolha sua linguagem.
O mesmo fluxo de criação e consulta em oito linguagens. Baixe o arquivo, configure as variáveis de ambiente e execute no seu servidor.
Seleção: oito linguagens mais usadas por contribuidores mensais no GitHub Octoverse 2025 ↗. Shell está representado por Bash. Esse recorte não é um ranking universal de uso.
Uma venda, um identificador.
Defina PIX_API_KEY no ambiente privado do seu servidor. Defina PIX_SALE_ID com um ID de 21 caracteres Crockford e guarde-o junto aos dados do pedido antes da primeira chamada.
Os exemplos criam uma venda real de R$ 89,90. Edite o valor e a referência antes de usar. Uma nova execução de create com o mesmo ID e corpo repete a mesma venda. Após timeout, consulte ou repita sem trocar o ID.
Sem dependências adicionais.
// Node.js 22.18+ (TypeScript nativo). Execute somente no servidor.
const key: string | undefined = process.env.PIX_API_KEY;
const id: string | undefined = process.env.PIX_SALE_ID;
const operation: string | undefined = process.argv[2];
if (!key || !id || !/^[0123456789ABCDEFGHJKMNPQRSTVWXYZ]{21}$/.test(id))
throw new Error("Configure PIX_API_KEY e PIX_SALE_ID (21 caracteres Crockford).");
if (operation !== "create" && operation !== "get") throw new Error("Use: node sale.ts create|get");
// Persista ID e corpo antes do POST; preserve ambos em toda retentativa.
const body = { sale_id: id, amount_cents: 8990, reference: "Pedido 1042" };
const url = "https://pixlojista.com.br/v1/integration/sales";
const response = await fetch(operation === "create" ? url : `${url}/${id}`, {
method: operation === "create" ? "POST" : "GET",
headers: { Authorization: `Bearer ${key}`, "Content-Type": "application/json" },
body: operation === "create" ? JSON.stringify(body) : undefined,
redirect: "error",
signal: AbortSignal.timeout(15000),
});
if (!response.ok) throw new Error(`HTTP ${response.status}: ${await response.text()}`);
const data: unknown = await response.json();
process.stdout.write(JSON.stringify(data, null, 2) + "\n");
export {};
node sale.ts createnode sale.ts getConfigure as duas variáveis no processo que executa os exemplos. Para consultar uma venda existente, use o ID dela. Os programas encerram com erro em falhas HTTP; eles não repetem chamadas automaticamente.
Duas operações. A mesma venda.
Base de produção: https://pixlojista.com.br/v1. Todas as chamadas usam HTTPS e Authorization: Bearer SUA_API_KEY.
/integration/salesCria uma venda conciliável e retorna QR PNG, Pix Copia e Cola e a venda.
| Campo | Tipo | Regra |
|---|---|---|
sale_id | string · obrigatório | 21 caracteres de 0123456789ABCDEFGHJKMNPQRSTVWXYZ. Gere uma vez e persista antes do POST. |
amount_cents | inteiro · obrigatório | 1 a 100.000.000 centavos. 8990 representa R$ 89,90. |
reference | string · opcional | Até 40 caracteres. Exemplo: Pedido 1042. |
expected_payer_name | string · opcional | Até 120 caracteres, sem quebras de linha. Nome esperado do pagador; auxilia a conciliação, sem confirmar pagamento sozinho. |
Idempotência: nova venda retorna HTTP 201; repetição idêntica retorna 200; mesmo ID com dados diferentes retorna 409. Preserve também os campos opcionais nas retentativas.
/integration/sales/{sale_id}Retorna HTTP 200 com a venda, seu estado e o QR da versão atual, somente para a loja da chave.
{
"sale": {
"sale_id": "0123456789ABCDEFGHJKM",
"status": "ABERTA",
"current_version": 1
},
"brcode": "<Pix Copia e Cola retornado pela API>",
"qr_png_base64": "<PNG codificado em base64>"
}O exemplo acima é abreviado; não é um QR válido. Leia sale.status para acompanhar a venda, brcode para copiar e qr_png_base64 para mostrar a imagem usando o prefixo data:image/png;base64,.
PAGA indica pagamento identificado pelo serviço. CONFIRMADA_MANUAL é confirmação de alguém da loja. A automação depende de um hub ou adaptador configurado e de uma observação elegível.
Estados possíveis: ABERTA, PAGA, CONFIRMADA_MANUAL, NAO_CONCILIADA, EXPIRADA, CANCELADA e ESTORNADA.
Seu sistema pode receber as mudanças.
Webhooks são opcionais. No portal, salve uma URL HTTPS pública e gere o segredo de assinatura. O receptor recebe sale.created e sale.updated das vendas da loja, inclusive as criadas no terminal.
- Leia
X-Pix-Timestamp(Unix, segundos) e rejeite diferença de mais de cinco minutos. - Calcule HMAC-SHA256 hexadecimal de
timestamp + "." + corpo HTTP originalcom seu segredo. Compare comX-Pix-Signatureem tempo constante, antes de confiar no conteúdo. - Persista o evento, deduplicando por
event_id, e responda 2xx. Não serialize o JSON novamente para validar a assinatura. - Eventos podem chegar fora de ordem. Consulte a venda para obter o estado atual. São até seis tentativas de entrega, com espera crescente.
O corpo inclui event_id, type, merchant_id, sale_id, status, current_version, amount_cents, evidence, occurred_at e brcode. O segredo de webhook é diferente da API key.
Conecte seu cliente MCP.
O conector local usa a mesma API key e as mesmas vendas. Funciona por stdio, com Node.js 20 ou superior e sem dependências npm. O cliente MCP precisa permitir executar um processo local.
- Extraia o ZIP. Ele contém
server.mjseREADME.md. - Configure
PIX_API_KEYno ambiente privado herdado pelo processo Node, ou no gerenciador de segredos do seu cliente. - Adicione a configuração abaixo, trocando o caminho pelo local onde você extraiu o arquivo. O formato pode variar entre clientes.
{
"mcpServers": {
"pixlojista": {
"command": "node",
"args": [
"/CAMINHO/ABSOLUTO/server.mjs"
]
}
}
}create_pix_saleRecebe sale_id, amount_cents e, opcionalmente, reference e expected_payer_name. Cria a venda e devolve QR, Copia e Cola e estado.
get_pix_saleRecebe sale_id. Consulta a venda da loja, seu estado e QR atual.
Exemplo de pedido ao assistente: “Crie uma venda de R$ 89,90 para o pedido 1042. Gere e guarde um sale_id único antes de chamar a ferramenta. Depois consulte o estado desse mesmo ID.”
Esta versão não oferece uma URL MCP remota. Uma conexão que aceita somente servidores HTTP não executa este conector. Criar a venda ou exibir o QR não confirma o recebimento.
Trate respostas e retentativas.
| HTTP | O que fazer |
|---|---|
| 400 | Corrija os campos inválidos. Confira centavos, ID e tamanho dos textos. |
| 401 / 403 | Confira a chave ativa e a permissão da operação. Uma chave substituída deixa de funcionar. |
| 404 | Confira o ID e a loja associada à chave. |
| 409 | Há conflito com os dados do mesmo ID. Consulte a venda e recupere o pedido original. |
| 429 | Reduza a frequência e aguarde antes de repetir. Limites: 60 criações e 300 consultas por minuto por loja. |
| 5xx / timeout | O resultado pode ser incerto. Consulte pelo ID; se repetir o POST, preserve ID e corpo. |
Erros retornam error, message e request_id. Guarde o identificador da requisição para diagnóstico, sem registrar sua chave.
Pronto para conectar sua loja?
Uma chave, as vendas da sua loja e a mesma conciliação do Pix Lojista.
Configurar minha integração →