Skip to Content
docs

Activación

Descripción General

El modo PIX Bacen tiene dos partes independientes:

  1. Endpoints BACEN: endpoints compatibles con la especificación del Banco Central. Están disponibles para cualquier cuenta autenticada, sin activación: basta con usar el mismo token Bearer de la API estándar.
  2. Webhooks V2: formato de notificación con envelope {type, data}. Se elige por webhook (por URL registrada), por el propio cliente.

Cambiar un webhook a V2 es un breaking change para quien consume esa URL: el payload pasa a tener un formato completamente diferente. Actualice el handler antes de cambiar la versión.

Cómo Activar los Webhooks V2

1. Desde el dashboard

En el Dashboard de Gateways, acceda a Configuración → Webhooks, registre (o vuelva a registrar) la URL del evento deseado y, en Versión del payload, seleccione PIX BACEN (V2). La versión se configura solo desde el dashboard.

2. Pruebe la integración

Después de cambiar la versión:

  1. Haga un cobro de prueba vía PUT /api/cob/:txid
  2. Verifique que el webhook V2 llegó correctamente
  3. Confirme que su aplicación procesó el nuevo formato

¿Qué cambia?

Endpoints

Los endpoints BACEN equivalen a las siguientes operaciones de la API estándar:

API estándarAPI PIX Bacen
POST /api/pix/cash-inPUT /api/cob/:txid
POST /api/pix/cash-outPOST /api/dict/pix
POST /api/pix/refund-in/:idPUT /api/pix/:e2eid/devolucao/:id
GET /api/balanceGET /api/accounts/balances

Los endpoints de la API estándar siguen funcionando. Puede usar ambas APIs simultáneamente.

Webhooks

El formato del webhook cambia completamente:

Principales diferencias en los Webhooks

AspectoV1V2
EstructuraCampos en la raízEnvelope {type, data}
Tipo de eventoevent: "CashIn"type: "RECEIVE"
Estado de éxitoCONFIRMEDLIQUIDATED
Estado de devoluciónCONFIRMEDREFUNDED
Valoresnumber (100.00)string ("100.00")
ContrapartecounterpartdebtorAccount / creditorAccount

Preparando su integración

1. Actualice el handler de webhooks

// ANTES (V1)
function handleWebhookV1(payload: any) {
  if (payload.event === 'CashIn' && payload.status === 'CONFIRMED') {
    processPayment(payload.transactionId, payload.finalAmount);
  }
}

// DESPUÉS (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. Actualice los 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;  // Nota: string, no number!
    currency: string;
  };
  creditDebitType: 'CREDIT' | 'DEBIT';
  debtorAccount: AccountInfo;
  creditorAccount: AccountInfo;
  endToEndId: string | null;
  refunds: RefundInfo[];
  // ... otros campos
}

3. Pruebe con una URL adicional

Antes de cambiar la versión de las URLs que ya están en uso:

  1. Registre en el mismo evento una URL de prueba adicional con la versión PIX BACEN (cada evento acepta hasta 3 URLs y cada URL tiene su propia versión)
  2. Ejecute pruebas completas de Cash-In, Cash-Out y Refund
  3. Valide que todos los webhooks se procesan correctamente

Rollback

La versión puede volver a V1 en cualquier momento, desde el dashboard (Configuración → Webhooks), seleccionando la versión Estándar (V1) en la URL.

Recomendamos mantener soporte para ambas versiones durante la transición:

function handleWebhook(payload: any) {
  // Detectar versión por formato
  if (payload.type && payload.data) {
    return handleWebhookV2(payload);
  } else if (payload.event) {
    return handleWebhookV1(payload);
  }
  throw new Error('Formato de webhook desconocido');
}

Checklist de Activación

Actualice su código para procesar el formato envelope {type, data}

Registre una URL de prueba con la versión PIX BACEN y ejecute pruebas completas

Pruebe: RECEIVE, TRANSFER, REFUND con estado LIQUIDATED, REFUNDED y ERROR

En Configuración → Webhooks, seleccione la versión de payload PIX BACEN para las URLs deseadas

Acompañe las primeras transacciones después del cambio para garantizar el funcionamiento

Preguntas Frecuentes

Próximos Pasos

On this page