Ativação
Visão Geral
O modo PIX Bacen tem duas partes independentes:
- Endpoints BACEN: endpoints compatíveis com a especificação do Banco Central. Estão disponíveis para qualquer conta autenticada, sem ativação: basta usar o mesmo token Bearer da API padrão.
- Webhooks V2: formato de notificação com envelope
{type, data}. É escolhido por webhook (por URL cadastrada), pelo próprio cliente.
Mudar um webhook para V2 é uma breaking change para quem consome aquela URL: o payload passa a ter um formato completamente diferente. Atualize o handler antes de trocar a versão.
Como Ativar os Webhooks V2
1. Pelo painel
No Painel FyPay, acesse Configurações → Webhooks, cadastre (ou recadastre) a URL do evento desejado e em Versão do payload, selecione PIX BACEN (V2). A versão é configurada somente pelo painel.
2. Teste a integração
Depois de trocar a versão:
- Faça uma cobrança de teste via
PUT /api/cob/:txid - Verifique se o webhook V2 chegou corretamente
- Confirme que sua aplicação processou o novo formato
O que muda?
Endpoints
Os endpoints BACEN equivalem às seguintes operações da API padrão:
| API padrão | API PIX Bacen |
|---|---|
POST /api/pix/cash-in | PUT /api/cob/:txid |
POST /api/pix/cash-out | POST /api/dict/pix |
POST /api/pix/refund-in/:id | PUT /api/pix/:e2eid/devolucao/:id |
GET /api/balance | GET /api/accounts/balances |
Os endpoints da API padrão continuam funcionando. Você pode usar ambas as APIs simultaneamente.
Webhooks
O formato de webhook muda completamente:
{
"event": "CashIn",
"status": "CONFIRMED",
"transactionId": "12345",
"movementType": "CREDIT",
"originalAmount": 100.00,
"finalAmount": 100.00,
"counterpart": {
"name": "João Silva",
"document": "123.xxx.xxx-xx"
}
}{
"type": "RECEIVE",
"data": {
"id": 123,
"txId": "abc123",
"status": "LIQUIDATED",
"payment": {
"amount": "100.00",
"currency": "BRL"
},
"creditDebitType": "CREDIT",
"debtorAccount": {
"name": "João Silva",
"document": "123.xxx.xxx-xx"
},
"creditorAccount": {...}
}
}Principais diferenças nos Webhooks
| Aspecto | V1 | V2 |
|---|---|---|
| Estrutura | Campos na raiz | Envelope {type, data} |
| Tipo de evento | event: "CashIn" | type: "RECEIVE" |
| Status sucesso | CONFIRMED | LIQUIDATED |
| Status refund | CONFIRMED | REFUNDED |
| Valores | number (100.00) | string ("100.00") |
| Contraparte | counterpart | debtorAccount / creditorAccount |
Preparando sua integração
1. Atualize o handler de webhooks
// ANTES (V1)
function handleWebhookV1(payload: any) {
if (payload.event === 'CashIn' && payload.status === 'CONFIRMED') {
processPayment(payload.transactionId, payload.finalAmount);
}
}
// DEPOIS (V2)
function handleWebhookV2(payload: any) {
if (payload.type === 'RECEIVE' && payload.data.status === 'LIQUIDATED') {
const amount = parseFloat(payload.data.payment.amount);
processPayment(payload.data.id, amount);
}
}2. Atualize os tipos/interfaces
// V2 Types
interface WebhookV2Payload {
type: 'RECEIVE' | 'TRANSFER' | 'REFUND';
data: WebhookV2Data;
}
interface WebhookV2Data {
id: number | null;
txId: string | null;
status: 'PENDING' | 'LIQUIDATED' | 'REFUNDED' | 'ERROR';
payment: {
amount: string; // Note: string, não number!
currency: string;
};
creditDebitType: 'CREDIT' | 'DEBIT';
debtorAccount: AccountInfo;
creditorAccount: AccountInfo;
endToEndId: string | null;
refunds: RefundInfo[];
// ... outros campos
}3. Teste com uma URL adicional
Antes de trocar a versão das URLs que já estão em uso:
- Cadastre no mesmo evento uma URL de teste adicional com a versão PIX BACEN (cada evento aceita até 3 URLs e cada URL tem sua própria versão)
- Execute testes completos de Cash-In, Cash-Out e Refund
- Valide que todos os webhooks são processados corretamente
Rollback
A versão pode ser trocada de volta para V1 a qualquer momento, pelo painel (Configurações → Webhooks), selecionando a versão Padrão (V1) na URL.
Recomendamos manter suporte a ambas as versões durante a transição:
function handleWebhook(payload: any) {
// Detecta versão pelo formato
if (payload.type && payload.data) {
return handleWebhookV2(payload);
} else if (payload.event) {
return handleWebhookV1(payload);
}
throw new Error('Formato de webhook desconhecido');
}Checklist de Ativação
Atualize seu código para processar o formato envelope {type, data}
Cadastre uma URL de teste com a versão PIX BACEN e execute testes completos
Teste: RECEIVE, TRANSFER, REFUND com status LIQUIDATED, REFUNDED e ERROR
Em Configurações → Webhooks, selecione a versão de payload PIX BACEN para as URLs desejadas
Acompanhe as primeiras transações após a troca para garantir o funcionamento