Skip to content

Webhook Payloads

Examples of payloads sent for each event type. All webhooks are sent as HTTP POST with Content-Type: application/json.

Security headers

Each notification includes the headers X-Owem-Signature, X-Owem-Timestamp, X-Owem-Event-Id, and X-Owem-Event-Type. See Webhooks -- Overview for validation details.


pix.received

Sent when a PIX is received in the account (cash-in confirmed).

json
{
  "event": "pix.received",
  "event_id": "evt_a1b2c3d4e5f6g7h8",
  "timestamp": "2026-03-07T15:30:02Z",
  "data": {
    "transaction_id": "PIXIN20260307a1b2c3d4e5f6",
    "end_to_end_id": "E37839059202603071530000001",
    "amount": 10000,
    "status": "completed",
    "payer_name": "Maria Santos",
    "payer_document": "***456.789-**",
    "description": "Payment order #1234"
  }
}
FieldTypeDescription
data.transaction_idStringTransaction ID at Owem Pay
data.end_to_end_idStringBACEN E2E ID
data.amountIntegerAmount received in cents
data.statusStringAlways completed
data.payer_nameStringPayer name
data.payer_documentStringPayer CPF/CNPJ (partially masked)
data.descriptionStringDescription provided by the payer

pix.completed

Sent when a PIX transfer (cash-out) is completed successfully.

json
{
  "event": "pix.completed",
  "event_id": "evt_e5f6g7h8i9j0k1l2",
  "timestamp": "2026-03-07T15:30:05Z",
  "data": {
    "transaction_id": "PIXOUT20260307a1b2c3d4e5f6",
    "end_to_end_id": "E37839059202603071530000002",
    "amount": 5000,
    "status": "completed",
    "recipient_key": "12345678901",
    "recipient_name": "Joao Silva"
  }
}
FieldTypeDescription
data.transaction_idStringTransaction ID at Owem Pay
data.end_to_end_idStringBACEN E2E ID
data.amountIntegerAmount sent in cents
data.statusStringAlways completed
data.recipient_keyStringRecipient PIX key
data.recipient_nameStringRecipient name

pix.failed

Sent when a PIX transfer fails.

json
{
  "event": "pix.failed",
  "event_id": "evt_i9j0k1l2m3n4o5p6",
  "timestamp": "2026-03-07T15:30:05Z",
  "data": {
    "transaction_id": "PIXOUT20260307x9y8z7w6v5u4",
    "amount": 10000,
    "status": "failed",
    "error_reason": "Recipient account not found"
  }
}
FieldTypeDescription
data.transaction_idStringTransaction ID at Owem Pay
data.amountIntegerAttempted amount in cents
data.statusStringAlways failed
data.error_reasonStringError description

pix.refund

Sent when a PIX refund is processed.

json
{
  "event": "pix.refund",
  "event_id": "evt_m3n4o5p6q7r8s9t0",
  "timestamp": "2026-03-07T15:30:10Z",
  "data": {
    "refund_id": "PIXRET20260307a1b2c3d4e5f6",
    "original_transaction_id": "PIXIN20260307a1b2c3d4e5f6",
    "amount": 10000,
    "status": "completed",
    "return_code": "MD06"
  }
}
FieldTypeDescription
data.refund_idStringRefund ID
data.original_transaction_idStringOriginal PIX transaction ID
data.amountIntegerRefunded amount in cents
data.statusStringRefund status
data.return_codeStringBACEN refund code

pix.med

Sent when a MED notification is received from BACEN.

json
{
  "event": "pix.med",
  "event_id": "evt_q7r8s9t0u1v2w3x4",
  "timestamp": "2026-03-07T18:00:00Z",
  "data": {
    "med_id": "MED20260307001",
    "type": "FRAUDE",
    "amount": 50000,
    "original_end_to_end_id": "E37839059202603071530000001",
    "status": "pending"
  }
}
FieldTypeDescription
data.med_idStringMED process ID
data.typeStringType: FRAUDE or FALHA_OPERACIONAL
data.amountIntegerAmount in cents
data.original_end_to_end_idStringE2E of the original PIX transaction
data.statusStringInitial MED status

Common Structure

All payloads follow the same base structure:

json
{
  "event": "event.type",
  "event_id": "evt_unique_identifier",
  "timestamp": "2026-03-07T15:30:00Z",
  "data": { }
}
FieldTypeDescription
eventStringEvent type
event_idStringUnique ID for deduplication
timestampStringEvent timestamp (ISO 8601, UTC)
dataObjectEvent-specific data

Owem Pay Instituição de Pagamento — ISPB 37839059