Skip to content

Webhook Events

This page documents all event types sent via webhook by the FluxiQ NPC platform.

Payload Format

All webhooks follow the same base format:

json
{
  "event": "event_type",
  "timestamp": "2026-02-03T14:30:00Z",
  "data": {
    // Event-specific data
  }
}
FieldTypeDescription
eventstringEvent type (e.g., boleto_paid)
timestampstringEvent date/time in ISO 8601 format (UTC)
dataobjectEvent-specific data

Boleto Events

boleto_created

Sent when a new boleto is created in the system.

json
{
  "event": "boleto_created",
  "timestamp": "2026-02-03T14:30:00Z",
  "data": {
    "nosso_numero": "00000000000000001",
    "codigo_barras": "23793.38128 60000.000003 00000.000406 1 84660000010000",
    "linha_digitavel": "23793381286000000000300000004061846600000100 00",
    "valor": 10000,
    "vencimento": "2026-03-15",
    "status": "draft",
    "pagador": {
      "nome": "Joao Silva",
      "documento": "12345678901",
      "tipo_documento": "cpf"
    },
    "beneficiario": {
      "nome": "Empresa LTDA",
      "documento": "12345678000190"
    },
    "created_at": "2026-02-03T14:30:00Z"
  }
}

Event fields:

FieldTypeDescription
nosso_numerostringUnique boleto identifier
codigo_barrasstring44-digit barcode
linha_digitavelstring47-digit typeable line
valorintegerValue in cents
vencimentostringDue date (YYYY-MM-DD)
statusstringBoleto status (draft)
pagadorobjectPayer data
beneficiarioobjectBeneficiary data
created_atstringCreation date/time

boleto_registered

Sent when the boleto is successfully registered with Nuclea (PCR).

json
{
  "event": "boleto_registered",
  "timestamp": "2026-02-03T14:35:00Z",
  "data": {
    "nosso_numero": "00000000000000001",
    "codigo_barras": "23793.38128 60000.000003 00000.000406 1 84660000010000",
    "linha_digitavel": "23793381286000000000300000004061846600000100 00",
    "valor": 10000,
    "vencimento": "2026-03-15",
    "status": "registered",
    "pcr_protocol": "PCR2026020312345678",
    "registered_at": "2026-02-03T14:35:00Z",
    "pagador": {
      "nome": "Joao Silva",
      "documento": "12345678901",
      "tipo_documento": "cpf"
    },
    "beneficiario": {
      "nome": "Empresa LTDA",
      "documento": "12345678000190"
    }
  }
}

Additional fields:

FieldTypeDescription
statusstringUpdated status (registered)
pcr_protocolstringNuclea registration protocol
registered_atstringRegistration date/time

boleto_paid

Sent when a payment is confirmed for the boleto.

json
{
  "event": "boleto_paid",
  "timestamp": "2026-02-04T09:15:00Z",
  "data": {
    "nosso_numero": "00000000000000001",
    "codigo_barras": "23793.38128 60000.000003 00000.000406 1 84660000010000",
    "valor_original": 10000,
    "valor_pago": 10000,
    "valor_desconto": 0,
    "valor_juros": 0,
    "valor_multa": 0,
    "status": "paid",
    "data_pagamento": "2026-02-04",
    "data_credito": "2026-02-05",
    "canal_pagamento": "internet_banking",
    "banco_pagador": "001",
    "agencia_pagador": "1234",
    "settlement_id": "stl_abc123def456",
    "paid_at": "2026-02-04T09:15:00Z"
  }
}

Specific fields:

FieldTypeDescription
valor_originalintegerOriginal boleto value (cents)
valor_pagointegerAmount actually paid (cents)
valor_descontointegerDiscount applied (cents)
valor_jurosintegerInterest charged (cents)
valor_multaintegerPenalty charged (cents)
data_pagamentostringPayment date (YYYY-MM-DD)
data_creditostringExpected credit date (YYYY-MM-DD)
canal_pagamentostringPayment channel used
banco_pagadorstringPayer bank code (COMPE)
agencia_pagadorstringPayer branch
settlement_idstringSettlement cycle ID

Payment channels:

ValueDescription
internet_bankingInternet Banking
mobile_bankingBank app
atmATM
branchBank branch
lotteryLottery outlet
correspondentBanking correspondent

boleto_cancelled

Sent when a boleto is cancelled.

json
{
  "event": "boleto_cancelled",
  "timestamp": "2026-02-03T16:00:00Z",
  "data": {
    "nosso_numero": "00000000000000001",
    "codigo_barras": "23793.38128 60000.000003 00000.000406 1 84660000010000",
    "valor": 10000,
    "vencimento": "2026-03-15",
    "status": "cancelled",
    "motivo_cancelamento": "solicitacao_cliente",
    "cancelled_at": "2026-02-03T16:00:00Z",
    "cancelled_by": "admin@empresa.com.br"
  }
}

Specific fields:

FieldTypeDescription
motivo_cancelamentostringCancellation reason
cancelled_atstringCancellation date/time
cancelled_bystringUser who requested cancellation

Cancellation reasons:

ValueDescription
solicitacao_clienteCustomer request
erro_emissaoIssuance error
duplicidadeDuplicate boleto
acordoNegotiation/agreement
outrosOther reasons

Settlement Events

settlement_completed

Sent when a settlement cycle is successfully processed.

json
{
  "event": "settlement_completed",
  "timestamp": "2026-02-04T08:45:00Z",
  "data": {
    "settlement_id": "stl_abc123def456",
    "cycle_date": "2026-02-04",
    "cycle_type": "morning",
    "total_boletos": 47,
    "total_valor": 1523450,
    "arquivo_acmp615": "ACMP615.20260204.083000",
    "status": "completed",
    "started_at": "2026-02-04T08:35:00Z",
    "completed_at": "2026-02-04T08:45:00Z",
    "summary": {
      "pagos": 45,
      "valor_pagos": 1485000,
      "rejeitados": 2,
      "valor_rejeitados": 38450
    }
  }
}

Event fields:

FieldTypeDescription
settlement_idstringUnique settlement cycle ID
cycle_datestringCycle date (YYYY-MM-DD)
cycle_typestringCycle type (morning or afternoon)
total_boletosintegerTotal boletos processed
total_valorintegerTotal value processed (cents)
arquivo_acmp615stringACMP615 file name processed
summaryobjectSummary by status

Cycle types:

ValueTimeDescription
morning08:30Morning cycle
afternoon16:30Afternoon cycle

payment_received

Sent for each individual payment received during settlement processing. This event complements boleto_paid and provides additional information from the ACMP615 file.

json
{
  "event": "payment_received",
  "timestamp": "2026-02-04T08:40:00Z",
  "data": {
    "settlement_id": "stl_abc123def456",
    "nosso_numero": "00000000000000001",
    "codigo_barras": "23793.38128 60000.000003 00000.000406 1 84660000010000",
    "valor_pago": 10000,
    "data_pagamento": "2026-02-04",
    "data_credito": "2026-02-05",
    "banco_recebedor": "237",
    "agencia_recebedora": "1234",
    "tipo_liquidacao": "normal",
    "sequencial_arquivo": 15,
    "acmp615_record": {
      "tipo_registro": "20",
      "codigo_movimento": "06"
    }
  }
}

Specific fields:

FieldTypeDescription
settlement_idstringSettlement cycle ID
banco_recebedorstringBank that received the payment
agencia_recebedorastringBranch that received
tipo_liquidacaostringSettlement type
sequencial_arquivointegerPosition in ACMP615 file
acmp615_recordobjectRaw ACMP615 record data

Settlement types:

ValueDescription
normalStandard D+1 settlement
expressExpress D+0 settlement
ddaVia Direct Debit Authorization

Event Summary

EventTriggerKey Fields
boleto_createdBoleto created in systemnosso_numero, valor, status
boleto_registeredRegistration confirmed at Nucleanosso_numero, pcr_protocol, status
boleto_paidPayment confirmednosso_numero, valor_pago, settlement_id
boleto_cancelledBoleto cancellednosso_numero, motivo_cancelamento
settlement_completedSettlement cycle finishedsettlement_id, total_boletos, summary
payment_receivedIndividual payment processedsettlement_id, nosso_numero, valor_pago

Testing Events

Sandbox Environment

In sandbox, you can trigger test events to validate your integration:

bash
# Trigger boleto paid event
curl -X POST "https://sandbox.pixconnect.com.br/api/v1/central/webhooks/test" \
  -H "X-API-Key: pk_test_abc123def456" \
  -H "Content-Type: application/json" \
  -d '{
    "event_type": "boleto_paid",
    "nosso_numero": "00000000000000001"
  }'

Event types available for testing:

event_typeDescription
boleto_createdSimulates boleto creation
boleto_registeredSimulates Nuclea registration
boleto_paidSimulates payment
boleto_cancelledSimulates cancellation
settlement_completedSimulates settlement cycle
payment_receivedSimulates individual payment

Using webhook.site

For development and debugging, we recommend using webhook.site:

  1. Go to webhook.site
  2. Copy the unique URL generated
  3. Configure as webhook_url in the portal (sandbox)
  4. Execute actions or trigger test events
  5. View payloads in real-time

Inspecting Payloads

webhook.site allows you to see all headers, request body, and metadata. This is useful for debugging signature or format issues.

Local Simulator

For local development, you can use ngrok to expose your machine:

bash
# Start ngrok
ngrok http 3000

# Output:
# Forwarding: https://abc123.ngrok.io -> http://localhost:3000

# Configure URL in portal
curl -X PUT "https://sandbox.pixconnect.com.br/api/v1/central/config/central" \
  -H "X-API-Key: pk_test_abc123def456" \
  -H "Content-Type: application/json" \
  -d '{
    "webhook_url": "https://abc123.ngrok.io/webhooks/pixconnect"
  }'

Next Steps

Documentação da API FluxiQ NPC