Documentação whitemax
Gere cobranças PIX no seu site em poucos minutos. Sem dependências, sem SDK obrigatório — apenas HTTP.
- 1
- 2
Gere uma chave secreta
Em Painel → Chaves de API, clique em Nova chave, dê um nome (ex: produção) e copie o token
wmx_live_.... Ele só aparece uma vez — guarde em variável de ambiente no seu servidor.# .env do seu site WHITEMAX_API_KEY=wmx_live_sua_chave_aqui - 3
Crie a cobrança PIX no checkout
Quando o cliente clicar em “Pagar com PIX”, seu backend chama
POST /chargescom o valor em centavos e os dados do pagador.// Node.js / Next.js / Express — no servidor const r = await fetch("https://gatewhitemax.site/api/public/v1/charges", { method: "POST", headers: { "Authorization": `Bearer ${process.env.WHITEMAX_API_KEY}`, "Content-Type": "application/json", }, body: JSON.stringify({ amount: 4990, // R$ 49,90 description: "Pedido #1234", external_id: "1234", // seu ID interno customer: { name: "Maria Silva", email: "maria@exemplo.com", document: "12345678900", phone: "11987654321", }, }), }); const charge = await r.json(); // charge.id -> use para consultar o status // charge.pix.qrcode -> string copia-e-cola do PIX - 4
Mostre o QR Code para o cliente
Devolva o
charge.ide ocharge.pix.qrcodeao frontend. Renderize o QR a partir do copia-e-cola e ofereça um botão de copiar.// Frontend (React) — usando a lib qrcode.react import { QRCodeSVG } from "qrcode.react"; <QRCodeSVG value={charge.pix.qrcode} size={220} /> <button onClick={() => navigator.clipboard.writeText(charge.pix.qrcode)}> Copiar código PIX </button> - 5
Acompanhe o status da cobrança
Enquanto o cliente vê o QR, faça polling a cada 3–5 segundos no endpoint
GET /charges/{id}. Pare quando o status virarpaidoufailed.// Frontend — pooling simples async function checkStatus(id) { const r = await fetch(`/api/whitemax-status?id=${id}`); return r.json(); // { status: "pending" | "paid" | "failed" } } const interval = setInterval(async () => { const { status } = await checkStatus(charge.id); if (status === "paid") { clearInterval(interval); onPaid(); } if (status === "failed") { clearInterval(interval); onFailed(); } }, 4000);No backend desse
/api/whitemax-statusvocê chamaGET https://gatewhitemax.site/api/public/v1/charges/{id}com sua chave — nunca exponha a chave no navegador. - 6
Libere o produto após o pagamento
Quando o status for
paid, marque o pedido como pago no seu banco, envie o e-mail de confirmação e redirecione o cliente para a página de sucesso. Pronto — sua integração PIX está no ar. 🎉
Abaixo você encontra a referência completa de cada endpoint, campos aceitos, respostas e códigos de erro.
Acesse Painel → Chaves de API, clique em Nova chave e copie o token gerado. Ele começa com wmx_live_.
Nunca exponha sua chave no frontend. Use sempre no servidor.
https://gatewhitemax.site/api/public/v1Requisição
curl -X POST https://gatewhitemax.site/api/public/v1/charges \
-H "Authorization: Bearer wmx_live_SUA_CHAVE" \
-H "Content-Type: application/json" \
-d '{
"amount": 4990,
"description": "Plano Pro mensal",
"external_id": "pedido-123",
"customer": {
"name": "Maria Silva",
"email": "maria@exemplo.com",
"document": "12345678900",
"phone": "11987654321"
}
}'Resposta (201)
{
"id": "8f3c9b1a-7d22-4c8a-9f1e-1234567890ab",
"status": "pending",
"amount": 4990,
"currency": "BRL",
"external_id": "pedido-123",
"pix": {
"qrcode": "00020126360014BR.GOV.BCB.PIX0114+551198765432105204000053039865802BR...",
"expires_in": 900
},
"created_at": "2026-05-13T15:00:00.000Z"
}Campos do corpo
| Campo | Tipo | Descrição |
|---|---|---|
| amount | int | Valor em centavos (ex: 4990 = R$ 49,90) |
| description | string | Descrição da cobrança (até 140 chars) |
| external_id | string | Opcional. Seu identificador interno do pedido |
| customer.name | string | Nome completo do pagador |
| customer.email | string | E-mail válido |
| customer.document | string | CPF (apenas números ou formatado) |
| customer.phone | string | DDD + número |
curl https://gatewhitemax.site/api/public/v1/charges/8f3c9b1a-7d22-4c8a-9f1e-1234567890ab \
-H "Authorization: Bearer wmx_live_SUA_CHAVE"{
"id": "8f3c9b1a-7d22-4c8a-9f1e-1234567890ab",
"status": "paid",
"amount": 4990,
"currency": "BRL",
"created_at": "2026-05-13T15:00:00.000Z",
"paid_at": "2026-05-13T15:02:31.000Z"
}status pode ser: pending, paid ou failed. Consulte a cada 3-5 segundos enquanto estiver pendente, ou aguarde o webhook (em breve).
const res = await fetch("https://gatewhitemax.site/api/public/v1/charges", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.WHITEMAX_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
amount: 4990,
description: "Plano Pro mensal",
customer: {
name: "Maria Silva",
email: "maria@exemplo.com",
document: "12345678900",
phone: "11987654321",
},
}),
});
const charge = await res.json();
console.log("PIX copia-e-cola:", charge.pix.qrcode);| Status | Código | O que fazer |
|---|---|---|
| 401 | missing_authorization | Inclua o header Authorization: Bearer |
| 401 | invalid_api_key | Chave inválida ou revogada — gere uma nova |
| 400 | invalid_request | Confira os campos obrigatórios e formatos |
| 502 | gateway_error | Tente novamente; se persistir, contate o suporte |

