PIX Confirm API PIX Confirm

Visão geral

A API do PIX Confirm é REST, recebe e devolve JSON, e é a superfície contra a qual seu ERP, PDV ou e-commerce integra para gerar cobranças PIX, acompanhar pagamentos e cadastrar clientes.

Base URLhttps://pixconfirm.com.br/api

Toda resposta segue o mesmo envelope:

{
  "success": true,
  "message": "Cobranca PIX criada com sucesso.",
  "data": { ... }
}

Em erros, success é false, message traz a descrição e errors (quando houver) o detalhe por campo.

Autenticação

A API usa JWT (Bearer token). Autentique com o e-mail e a senha de um usuário da sua empresa no PIX Confirm — o token já fica vinculado à empresa desse usuário, então todas as cobranças, clientes e pagamentos são automaticamente escopados a ela.

POST https://pixconfirm.com.br/api/login
curl -X POST https://pixconfirm.com.br/api/login \
  -H "Content-Type: application/json" \
  -d '{"email":"voce@suaempresa.com","password":"suaSenha"}'
{
  "success": true,
  "data": {
    "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOi...",
    "token_type": "bearer",
    "expires_in": 3600,
    "user": { "id": "...", "name": "...", "email": "...", "company_id": "..." }
  }
}

Envie o token em toda chamada seguinte:

Authorization: Bearer <access_token>
RotaDescrição
POST /refreshGera um novo token antes do atual expirar (envie o token atual no header).
POST /logoutInvalida o token atual.
GET /profileDados do usuário autenticado.
O login tem limite de 5 tentativas por e-mail/IP a cada 5 minutos. Guarde o token e reutilize até faltar pouco para expirar (expires_in em segundos), então chame /refresh.

Convenções & erros

Paginação

Endpoints de listagem retornam no padrão do Laravel: data.data é o array de itens e data traz current_page, last_page, per_page, total e os links. Use ?page=2 para navegar.

Códigos HTTP

CódigoSignificado
200 / 201Sucesso.
401Token ausente, inválido ou expirado.
403Usuário sem permissão para a ação.
404Recurso não encontrado (ou de outra empresa).
422Falha de validação — veja errors.
429Limite de requisições atingido — aguarde e tente de novo.

Cobranças PIX

Criar cobrança

POST https://pixconfirm.com.br/api/charges
CampoTipoDescrição
amount obrigatórionúmeroValor em reais, mínimo 0.01 (ex.: 149.90).
descriptionstringDescrição que aparece para o pagador. Até 255 caracteres.
customer_iduuidCliente já cadastrado. Se ausente, informe customer_name.
customer_namestringObrigatório quando não há customer_id — cria/associa o cliente na hora.
customer_phonestringWhatsApp do cliente (com DDI/DDD, ex.: 5511999999999).
integration_iduuidForça um gateway/banco específico. Sem isso, usa o gateway padrão da empresa.
due_datedataYYYY-MM-DD. Informativo para o pagador.
expiration_secondsinteiroTempo até a cobrança expirar (60 a 604800). Sem isso, usa o padrão do gateway.
order_numberstringNúmero do pedido/venda no seu sistema.
external_referencestringSua referência livre — volta igual no webhook, ideal para conciliação.
custom_fieldobjetoPares chave/valor livres que você quer guardar junto da cobrança.
payer_name / payer_document / payer_emailstringDados do pagador, exigidos por alguns bancos (ex.: Asaas exige CPF/CNPJ).
curl -X POST https://pixconfirm.com.br/api/charges \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{
    "amount": 149.90,
    "description": "Venda 10432 - Farmácia",
    "customer_name": "Maria Souza",
    "customer_phone": "5577999998888",
    "order_number": "10432",
    "external_reference": "PDV-10432"
  }'
{
  "success": true,
  "message": "Cobranca PIX criada com sucesso.",
  "data": {
    "id": "9b2f...-uuid",
    "status": "pending",
    "amount": "149.90",
    "public_token": "Xy3k...32chars",
    "pix_copy_paste": "00020126...5204000053039865802BR...6304ABCD",
    "qr_code_base64": "data:image/png;base64,iVBORw0KGgo...",
    "order_number": "10432",
    "external_reference": "PDV-10432",
    "expires_at": "2026-09-10T13:00:00-03:00",
    "created_at": "2026-09-10T12:00:00-03:00"
  }
}
Mostre o qr_code_base64 na tela do caixa e/ou o pix_copy_paste para o cliente copiar. A página pública de pagamento também fica em https://pixconfirm.com.br/pay/<public_token>.

Listar cobranças

GET https://pixconfirm.com.br/api/charges

Filtros via query string: status, customer_id, search, date_from, date_to (datas em YYYY-MM-DD), page.

Consultar uma cobrança

GET https://pixconfirm.com.br/api/charges/{id}

Retorna a cobrança com customer e payments aninhados. Use para conferir o status se você não quiser depender só do webhook.

Cancelar / reenviar / excluir

POST /charge/{id}/cancelCancela a cobrança no gateway.
POST /charge/{id}/resendDevolve whatsapp_message (texto pronto) e public_url para reenviar ao cliente.
DELETE /charges/{id}Remove a cobrança do PIX Confirm.

Clientes

GET /customersLista (filtro ?search=), paginado.
POST /customersCria. Campos: name (obrigatório), email, phone, document, document_type (cpf/cnpj), notes e endereço (address_street, address_number, address_complement, address_neighborhood, address_city, address_state, address_zip).
GET /customers/{id}Detalhe.
PUT /customers/{id}Atualiza (mesmos campos).
DELETE /customers/{id}Remove.

Pagamentos

GET https://pixconfirm.com.br/api/payments

Lista os pagamentos confirmados, cada um com a charge aninhada. Filtros: date_from, date_to (por paid_at), page. Ordenado do mais recente para o mais antigo.

Dashboard

GET https://pixconfirm.com.br/api/dashboard

Métricas consolidadas da empresa (totais recebidos, cobranças por status, etc.) — as mesmas do painel web.

Configurações

GET /settingsLê as configurações da empresa (pares key/value/type).
POST /settingsGrava uma configuração (key + value).
GET /webhooksLog dos webhooks recebidos dos gateways (para diagnóstico).

Webhook de saída (notificações para o seu ERP)

Em vez de ficar consultando a API, cadastre uma URL de webhook em Configurações → Empresa no painel. Sempre que uma cobrança muda de status (principalmente ao ser paga), o PIX Confirm faz um POST nessa URL:

POST https://seu-erp.com.br/webhooks/pixconfirm
X-PixConfirm-Signature: <hmac_sha256_do_corpo>
Content-Type: application/json

{
  "event": "charge.paid",
  "charge": {
    "id": "9b2f...-uuid",
    "public_token": "Xy3k...",
    "amount": "149.90",
    "status": "paid",
    "order_number": "10432",
    "external_reference": "PDV-10432",
    "paid_at": "2026-09-10T12:04:31-03:00"
  }
}

Validando a assinatura

O header X-PixConfirm-Signature é o HMAC-SHA256 do corpo bruto da requisição, usando como chave o Webhook Secret da sua empresa (mostrado no painel). Compare antes de confiar no payload:

// PHP
$payload   = file_get_contents('php://input');
$expected  = hash_hmac('sha256', $payload, $webhookSecret);
$received  = $_SERVER['HTTP_X_PIXCONFIRM_SIGNATURE'] ?? '';
if (! hash_equals($expected, $received)) {
    http_response_code(401);
    exit;
}
$data = json_decode($payload, true);
Responda 2xx rápido. Se a sua URL falhar, o PIX Confirm reenvia até 5 vezes com espera crescente (10s, 30s, 1min, 5min, 15min). Use external_reference / order_number para casar com a venda no seu sistema e trate reentregas de forma idempotente.

Status da cobrança

statusSignificado
pendingAguardando pagamento.
paidPaga e confirmada.
expiredExpirou sem pagamento.
cancelledCancelada (por você ou pela API).
refundedEstornada.

Suporte

Dúvidas de integração: contato@pixconfirm.com.br · WhatsApp (77) 98106-8852.

Base URL de produção: https://pixconfirm.com.br/api. Todos os horários em ISO 8601 no fuso da empresa.