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.
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.
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>
| Rota | Descrição |
|---|---|
| POST /refresh | Gera um novo token antes do atual expirar (envie o token atual no header). |
| POST /logout | Invalida o token atual. |
| GET /profile | Dados do usuário autenticado. |
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ódigo | Significado |
|---|---|
| 200 / 201 | Sucesso. |
| 401 | Token ausente, inválido ou expirado. |
| 403 | Usuário sem permissão para a ação. |
| 404 | Recurso não encontrado (ou de outra empresa). |
| 422 | Falha de validação — veja errors. |
| 429 | Limite de requisições atingido — aguarde e tente de novo. |
Cobranças PIX
Criar cobrança
| Campo | Tipo | Descrição |
|---|---|---|
| amount obrigatório | número | Valor em reais, mínimo 0.01 (ex.: 149.90). |
| description | string | Descrição que aparece para o pagador. Até 255 caracteres. |
| customer_id | uuid | Cliente já cadastrado. Se ausente, informe customer_name. |
| customer_name | string | Obrigatório quando não há customer_id — cria/associa o cliente na hora. |
| customer_phone | string | WhatsApp do cliente (com DDI/DDD, ex.: 5511999999999). |
| integration_id | uuid | Força um gateway/banco específico. Sem isso, usa o gateway padrão da empresa. |
| due_date | data | YYYY-MM-DD. Informativo para o pagador. |
| expiration_seconds | inteiro | Tempo até a cobrança expirar (60 a 604800). Sem isso, usa o padrão do gateway. |
| order_number | string | Número do pedido/venda no seu sistema. |
| external_reference | string | Sua referência livre — volta igual no webhook, ideal para conciliação. |
| custom_field | objeto | Pares chave/valor livres que você quer guardar junto da cobrança. |
| payer_name / payer_document / payer_email | string | Dados 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"
}
}
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
Filtros via query string: status, customer_id, search, date_from, date_to (datas em YYYY-MM-DD), page.
Consultar uma cobrança
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}/cancel | Cancela a cobrança no gateway. |
| POST /charge/{id}/resend | Devolve whatsapp_message (texto pronto) e public_url para reenviar ao cliente. |
| DELETE /charges/{id} | Remove a cobrança do PIX Confirm. |
Clientes
| GET /customers | Lista (filtro ?search=), paginado. |
| POST /customers | Cria. 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
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
Métricas consolidadas da empresa (totais recebidos, cobranças por status, etc.) — as mesmas do painel web.
Configurações
| GET /settings | Lê as configurações da empresa (pares key/value/type). |
| POST /settings | Grava uma configuração (key + value). |
| GET /webhooks | Log 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);
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
| status | Significado |
|---|---|
pending | Aguardando pagamento. |
paid | Paga e confirmada. |
expired | Expirou sem pagamento. |
cancelled | Cancelada (por você ou pela API). |
refunded | Estornada. |
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.