Eventos de Webhook
Todo evento chega no MESMO envelope — event_type, event_id, occurred_at e
data — e os quatro campos estao SEMPRE presentes, inclusive nas re-entregas.
O event_id e a chave de deduplicacao: a entrega e at-least-once, entao o mesmo
event_id pode chegar mais de uma vez e o consumidor precisa ser idempotente.
Ele tambem viaja no header X-Zemo-Event-Id. O schema completo do envelope e de
cada data esta na secao webhooks do openapi.json.
Os exemplos abaixo detalham o data de cada evento EMITIDO hoje.
Os valores monetarios do data viajam com o nome canonico e o deprecado lado a lado,
sempre com o mesmo numero — opr_net_present_liquid_value acompanha opr_liquid_value, como nos
exemplos abaixo. Leia o canonico; o deprecado continua sendo enviado em toda a serie 1.x — a
politica esta declarada em Versionamento. Na 2.0 os
eventos NOVOS passam a ser emitidos so com os nomes canonicos (eventos antigos que forem
reentregues preservam o shape com que foram gravados). O de-para campo a campo esta em
Valores do Recebivel.
Na janela de re-tentativa (ate ~128 min por evento) pode chegar um evento GERADO antes desta mudanca: o conteudo entregue e o que foi registrado na emissao, e eventos antigos foram registrados so com o nome deprecado — o espelho nao e aplicado retroativamente. Por isso o nome canonico nao e declarado obrigatorio no schema: trate a ausencia dele caindo no nome deprecado.
operation.created
Disparado quando uma operacao e criada (e, quando aplicavel, aguarda aprovacao do Backoffice).
{
"event_type": "operation.created",
"event_id": "793acf45-ac11-4629-acab-5efdd7e84541",
"occurred_at": "2026-06-01T12:00:00Z",
"data": {
"operation_id": "...",
"display_number": "OP-A1B2C3D4-E5F6G7H8",
"opr_liquid_value": "9183.33",
"opr_net_present_liquid_value": "9183.33",
"lifecycle_status": "WAITING_APPROVAL"
}
}
operation.approved
Disparado quando a operacao e aprovada (pelo Backoffice ou automaticamente).
{
"event_type": "operation.approved",
"event_id": "33bff6c8-d396-4eaa-b1fa-6c1b617d1db2",
"occurred_at": "2026-06-01T15:00:00Z",
"data": {
"operation_id": "...",
"display_number": "OP-A1B2C3D4-E5F6G7H8",
"lifecycle_status": "APPROVED_DIRECT",
"approved_at": "2026-06-01T15:00:00Z"
}
}
operation.contract_signed
Todos os signatarios assinaram o contrato via ZapSign.
{
"event_type": "operation.contract_signed",
"event_id": "2c266515-3d55-4278-9f53-1a4649823d78",
"occurred_at": "2026-06-01T14:00:00Z",
"data": {
"operation_id": "...",
"contract_id": "...",
"signed_at": "2026-06-01T14:00:00Z"
}
}
operation.paid
Pagamento PIX enviado ao cedente.
{
"event_type": "operation.paid",
"event_id": "c7f22723-47fc-4c5e-ba06-5b732f9ede9b",
"occurred_at": "2026-06-01T15:30:00Z",
"data": {
"operation_id": "...",
"display_number": "OP-A1B2C3D4-E5F6G7H8",
"opr_liquid_value": "9183.33",
"opr_net_present_liquid_value": "9183.33",
"payment_sent_at": "2026-06-01T15:30:00Z"
}
}
operation.denied
Operacao negada pelo Backoffice.
{
"event_type": "operation.denied",
"event_id": "de5e35da-d35b-4753-a1e9-0aae84374f21",
"occurred_at": "2026-06-01T16:00:00Z",
"data": {
"operation_id": "...",
"reason": "Motivo da negacao"
}
}
operation.cancelled
Operacao cancelada pelo originador.
{
"event_type": "operation.cancelled",
"event_id": "52db7750-9299-4c91-91ec-24d27510ada7",
"occurred_at": "2026-06-01T12:00:00Z",
"data": {
"operation_id": "...",
"cancelled_at": "2026-06-01T12:00:00Z"
}
}
title.paid
Titulo individual totalmente liquidado.
{
"event_type": "title.paid",
"event_id": "357f59e8-5812-47d9-b8c1-2ed2b8277083",
"occurred_at": "2026-08-15T10:00:00Z",
"data": {
"title_id": "...",
"operation_id": "...",
"face_value": "10000.00",
"total_returned_value": "10000.00",
"fully_returned_at": "2026-08-15T10:00:00Z"
}
}
title.partially_paid
Pagamento parcial recebido em um titulo.
{
"event_type": "title.partially_paid",
"event_id": "08d17fdc-adb5-4067-87bf-1c14b0f43fa0",
"occurred_at": "2026-08-10T10:00:00Z",
"data": {
"title_id": "...",
"operation_id": "...",
"payment_amount_brl": "5000.00",
"outstanding_brl": "5000.00"
}
}
operation.overdue
Um ou mais titulos da operacao venceram sem pagamento total.
{
"event_type": "operation.overdue",
"event_id": "697abe45-189a-4314-bd1f-4cbac2ff194c",
"occurred_at": "2026-08-16T03:00:00Z",
"data": {
"operation_id": "...",
"overdue_titles_count": 2,
"total_outstanding_brl": "5000.00"
}
}
stock.item_registered
Recebivel registrado no estoque.
{
"event_type": "stock.item_registered",
"event_id": "81cb6393-f2ea-48a9-82f2-e78c9f3b9015",
"occurred_at": "2026-06-01T09:00:00Z",
"data": {
"stock_item_id": "...",
"external_id": "NF-2026-001",
"face_value": "10000.00"
}
}