Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.wepayout.co/llms.txt

Use this file to discover all available pages before exploring further.

Automatic Pix sends webhook notifications to your configured endpoint whenever a relevant status change occurs. There are three distinct webhook types: authorization updates, schedule updates, and payin (transaction) updates.

Authorization Webhook

Sent whenever an authorization transitions to a new status. Your endpoint receives a POST request with the following payload. Trigger statuses:
Status IDStatus NameDescription
1ConfirmedAuthorization approved by the payer
2PendingAuthorization created and awaiting payer confirmation
3CanceledAuthorization was canceled
4RejectedAuthorization was rejected
All authorization status changes trigger a webhook — there are no silenced intermediate statuses.
Payload:
{
  "entity": "authorization",
  "id": 3081,
  "contract_id": "10000:1234:2:aabbccdd112233aabbccdd112233aabb",
  "status": {
    "id": 1,
    "name": "Confirmed"
  },
  "updated_at": "2026-01-15T10:00:00.000-03:00"
}
Field reference:
FieldTypeDescription
entitystringAlways "authorization"
idintegerInternal authorization ID
contract_idstringAuthorization contract identifier
status.idintegerNumeric status code
status.namestringHuman-readable status name
updated_atstringISO 8601 timestamp of the status change

Schedule Webhook

Sent whenever a schedule transitions to a notifiable status. Your endpoint receives a POST request with the following payload. Trigger statuses:
Status IDStatus NameDescription
3ScheduledPayment successfully scheduled
4On RetryPayment failed and is being retried
5CanceledPayment was canceled
6PaidPayment completed successfully
Statuses Pending (1), Sent (2), and Canceled Requested (7) do not trigger a webhook.
Payload:
{
  "entity": "schedule",
  "id": 1042,
  "contract_id": "10000:1234:2:aabbccdd112233aabbccdd112233aabb",
  "status": {
    "id": 6,
    "name": "Paid"
  },
  "metadata": {
    "amount": 150.00,
    "tx_id": "WP01AABBCC112233DDEEFF4455667788"
  },
  "updated_at": "2026-01-15T10:30:00.000-03:00"
}
Field reference:
FieldTypeDescription
entitystringAlways "schedule"
idintegerInternal schedule ID
contract_idstringAuthorization contract identifier
status.idintegerNumeric status code
status.namestringHuman-readable status name
metadata.tx_idstringInternal transaction identifier generated by WEpayments
metadata.amountfloatAmount charged — only present when status.id is 6 (Paid)
sub_statusobjectOptional. Additional context for the transition (e.g., cancellation reason)
updated_atstringISO 8601 timestamp of the status change

Payin Webhook

Sent when an Automatic Pix payin reaches a final or relevant status. All intermediate statuses are silenced — the webhook fires only on the events below. Trigger statuses: 4 — Credited → Payment successfully received Canceled → Payment was canceled Rejected → Payment was rejected Payload:
{
  "id": 200001,
  "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
  "invoice": "10000:1234:2:aabbccdd112233aabbccdd112233aabb-20260115",
  "end_to_end": "E99999999202601151330xXxXxXxXxXx",
  "status": {
    "id": 4,
    "name": "Credited"
  },
  "metadata": {
    "paid_amount": 150.00,
    "payer": {
      "document": "12345678900"
    },
    "contract_id": "10000:1234:2:aabbccdd112233aabbccdd112233aabb",
    "bank_payer": {
      "name": "341 - ITAÚ UNIBANCO S.A.",
      "bank_ispb": "60701190",
      "bank_account": null,
      "bank_branch": null,
      "bank_account_type": null
    }
  },
  "updated_at": "2026-01-15T13:30:00.000000Z"
}
Field reference:
FieldTypeDescription
idintegerInternal payin ID
hashstringSHA-256 fingerprint of this payin, used for signature verification
invoicestringComposed of the contract_id and the payment date (contract_id-YYYYMMDD)
end_to_endstringPIX end-to-end identifier assigned by the Brazilian payment system (SPI) — can be used for reconciliation and dispute resolution
status.idintegerNumeric status code
status.namestringHuman-readable status name
metadata.paid_amountfloatAmount actually received
metadata.payer.documentstringPayer’s CPF/CNPJ
metadata.contract_idstringAuthorization contract identifier
metadata.bank_payerobjectPayer’s bank details — only present when your contract has send_bank_payer_into_webhook enabled
updated_atstringISO 8601 timestamp of when the status was recorded

Signature Verification

All webhook requests include an x-webhook-wp-signature header for authenticity verification. Authorization and Schedule webhooks — signature is computed as:
SHA-256(merchantID | contractID | apiKey)
Payin webhook — signature is computed as:
SHA-256(id | hash | amount | apiKey)
The header value is prefixed with Bearer :
x-webhook-wp-signature: Bearer <hex-encoded-sha256>
Always validate the signature before processing any webhook payload to ensure the request originates from WEpayments.