Pular para o conteúdo
pixlojista/ desenvolvedores
PIX LOJISTA / DEVCENTER

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.

8 linguagensREST + MCPWebhooks assinados
uma venda, do começo ao recebimento
POST /v1/integration/sales
{
  "sale_id": "0123456789ABCDEFGHJKM",
  "amount_cents": 8990,
  "reference": "Pedido 1042"
}
201 Created ✓

QR Code + Copia e Cola + venda

Criar → Cobrar → Consultar
00 / Primeiros passos

Da sua loja à primeira chamada.

01

Prepare sua loja

Crie sua conta e cadastre a chave Pix da loja. As vendas da integração aparecem no mesmo portal.

02

Gere sua chave

Como proprietário, abra Ajustes → API e MCP. Copie a API key na emissão e guarde no servidor.

03

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 →
01 / Código pronto para adaptar

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.

Antes de executar

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.

Gerar o ID não cria uma venda.

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.

Baixar sale.ts ↓
Node.js 22.18+ • TypeScript nativo

Sem dependências adicionais.

sale.ts
// 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 {};
Criar a venda
node sale.ts create
Consultar a mesma venda
node sale.ts get

Configure 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.

Todos os arquivos para download
02 / Contrato

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.

POST/integration/sales

Cria uma venda conciliável e retorna QR PNG, Pix Copia e Cola e a venda.

Corpo JSON para criar a venda
CampoTipoRegra
sale_idstring · obrigatório21 caracteres de 0123456789ABCDEFGHJKMNPQRSTVWXYZ. Gere uma vez e persista antes do POST.
amount_centsinteiro · obrigatório1 a 100.000.000 centavos. 8990 representa R$ 89,90.
referencestring · opcionalAté 40 caracteres. Exemplo: Pedido 1042.
expected_payer_namestring · opcionalAté 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.

GET/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.

Resposta ilustrativa — campos principais
{
  "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,.

QR criado não significa pagamento recebido.

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.

03 / Eventos

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.

  1. Leia X-Pix-Timestamp (Unix, segundos) e rejeite diferença de mais de cinco minutos.
  2. Calcule HMAC-SHA256 hexadecimal de timestamp + "." + corpo HTTP original com seu segredo. Compare com X-Pix-Signature em tempo constante, antes de confiar no conteúdo.
  3. Persista o evento, deduplicando por event_id, e responda 2xx. Não serialize o JSON novamente para validar a assinatura.
  4. 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.

04 / Para agentes e automações

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.

  1. Extraia o ZIP. Ele contém server.mjs e README.md.
  2. Configure PIX_API_KEY no ambiente privado herdado pelo processo Node, ou no gerenciador de segredos do seu cliente.
  3. Adicione a configuração abaixo, trocando o caminho pelo local onde você extraiu o arquivo. O formato pode variar entre clientes.
Configuração MCP — exemplo de cliente stdio
{
  "mcpServers": {
    "pixlojista": {
      "command": "node",
      "args": [
        "/CAMINHO/ABSOLUTO/server.mjs"
      ]
    }
  }
}
create_pix_sale

Recebe sale_id, amount_cents e, opcionalmente, reference e expected_payer_name. Cria a venda e devolve QR, Copia e Cola e estado.

get_pix_sale

Recebe 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.

05 / Operação

Trate respostas e retentativas.

Respostas HTTP e próximos passos
HTTPO que fazer
400Corrija os campos inválidos. Confira centavos, ID e tamanho dos textos.
401 / 403Confira a chave ativa e a permissão da operação. Uma chave substituída deixa de funcionar.
404Confira o ID e a loja associada à chave.
409Há conflito com os dados do mesmo ID. Consulte a venda e recupere o pedido original.
429Reduza a frequência e aguarde antes de repetir. Limites: 60 criações e 300 consultas por minuto por loja.
5xx / timeoutO 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 →