API de pagamentos

Crie cobrancas Pix, consulte o status e receba notificacoes automaticas no seu sistema. Base da API: https://wl.axtech.pro/api/v1

Autenticacao

Gere uma chave em Painel da empresa > API e Webhooks e envie no cabecalho x-api-key de cada requisicao. A chave e exibida uma unica vez. Limite: 600 requisicoes por minuto por chave.

x-api-key: sk_live_...

Valores monetarios sao sempre em centavos (inteiros). Ex: R$ 150,00 = 15000.

Criar cobranca

POST/api/v1/charges

CampoTipoDescricao
amountinteiroObrigatorio. Valor em centavos (minimo 100).
descriptiontextoOpcional. Ate 200 caracteres.
customerNametextoOpcional. Nome do pagador.
customerDoctextoOpcional. CPF ou CNPJ do pagador.
customerEmailtextoOpcional.
dueDateAAAA-MM-DDOpcional. Vencimento (a cobranca expira apos esta data).
metadataobjetoOpcional. Dados livres devolvidos nas consultas e webhooks (ex: id do pedido).
curl -X POST https://wl.axtech.pro/api/v1/charges \
  -H "x-api-key: sk_live_..." -H "Content-Type: application/json" \
  -d '{"amount":15000,"description":"Pedido 1042","metadata":{"orderId":"1042"}}'

Resposta (201):

{
  "id": "6f1c...",
  "amount": 15000, "fee": 149, "net": 14851,
  "status": "PENDING",
  "brCode": "00020101021226...",
  "qrImage": "data:image/png;base64,...",
  "checkoutUrl": "https://wl.axtech.pro/pay/6f1c...",
  "metadata": { "orderId": "1042" },
  "createdAt": "2026-11-03T18:00:00.000Z"
}

Mostre o qrImage, ofereca o brCode (copia e cola) ou envie o checkoutUrl ao cliente.

Consultar e listar

GET/api/v1/charges/{id}   GET/api/v1/charges?status=PAID&take=30&skip=0

Status possiveis: PENDING, PAID, EXPIRED, CANCELED.

POST/api/v1/charges/{id}/cancel cancela uma cobranca pendente.

Saldo

GET/api/v1/balance retorna {"available": 123456, "currency": "BRL"}.

Webhooks

Cadastre a URL (https) no painel e escolha os eventos. Cada entrega e um POST JSON:

{
  "id": "evt...",
  "event": "charge.paid",
  "createdAt": "2026-11-03T18:05:00.000Z",
  "data": { "id": "6f1c...", "amount": 15000, "status": "PAID", "paidAt": "...", "metadata": {"orderId":"1042"} }
}
EventoQuando
charge.createdCobranca criada
charge.paidPagamento confirmado
charge.expiredCobranca venceu sem pagamento
charge.canceledCobranca cancelada
pix.sentPix enviado concluido
pix.failedPix enviado recusado e estornado
pix.receivedPix recebido de outro cliente da plataforma

Validando a assinatura

Cabecalhos: X-Webhook-Event, X-Webhook-Id, X-Webhook-Timestamp e X-Webhook-Signature: sha256=<hex>. A assinatura e o HMAC-SHA256 de timestamp + "." + corpo bruto com o segredo exibido ao criar o webhook.

// Node.js
const crypto = require('crypto');
function valido(req, rawBody, secret) {
  const ts = req.headers['x-webhook-timestamp'];
  const esperado = 'sha256=' + crypto.createHmac('sha256', secret).update(ts + '.' + rawBody).digest('hex');
  const a = Buffer.from(esperado), b = Buffer.from(req.headers['x-webhook-signature'] || '');
  return a.length === b.length && crypto.timingSafeEqual(a, b) && Math.abs(Date.now()/1000 - ts) < 300;
}

Responda com HTTP 2xx em ate 10 segundos. Falhas sao reenviadas com espera crescente, ate 8 tentativas. Use X-Webhook-Id para ignorar duplicidades.

Erros

Respostas de erro seguem o formato {"statusCode":400,"message":"..."}. 401: chave invalida. 403: conta bloqueada ou limite de requisicoes. 404: recurso nao encontrado.

AX Tech ยท Tecnologia AX Tech