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"
}
}| Field | Type | Description |
|---|---|---|
data.transaction_id | String | Transaction ID at Owem Pay |
data.end_to_end_id | String | BACEN E2E ID |
data.amount | Integer | Amount received in cents |
data.status | String | Always completed |
data.payer_name | String | Payer name |
data.payer_document | String | Payer CPF/CNPJ (partially masked) |
data.description | String | Description 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"
}
}| Field | Type | Description |
|---|---|---|
data.transaction_id | String | Transaction ID at Owem Pay |
data.end_to_end_id | String | BACEN E2E ID |
data.amount | Integer | Amount sent in cents |
data.status | String | Always completed |
data.recipient_key | String | Recipient PIX key |
data.recipient_name | String | Recipient 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"
}
}| Field | Type | Description |
|---|---|---|
data.transaction_id | String | Transaction ID at Owem Pay |
data.amount | Integer | Attempted amount in cents |
data.status | String | Always failed |
data.error_reason | String | Error 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"
}
}| Field | Type | Description |
|---|---|---|
data.refund_id | String | Refund ID |
data.original_transaction_id | String | Original PIX transaction ID |
data.amount | Integer | Refunded amount in cents |
data.status | String | Refund status |
data.return_code | String | BACEN 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"
}
}| Field | Type | Description |
|---|---|---|
data.med_id | String | MED process ID |
data.type | String | Type: FRAUDE or FALHA_OPERACIONAL |
data.amount | Integer | Amount in cents |
data.original_end_to_end_id | String | E2E of the original PIX transaction |
data.status | String | Initial 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": { }
}| Field | Type | Description |
|---|---|---|
event | String | Event type |
event_id | String | Unique ID for deduplication |
timestamp | String | Event timestamp (ISO 8601, UTC) |
data | Object | Event-specific data |