Events for Automatic Pix
You can use Webhooks so that your system is notified whenever changes occur to Automatic Pix instructions and authorizations. The events notified by Asaas are:
PIX_AUTOMATIC_RECURRING_ELIGIBILITY_UPDATED- Account eligibility updated (for subaccount operations).PIX_AUTOMATIC_RECURRING_AUTHORIZATION_CREATED- Authorization created.PIX_AUTOMATIC_RECURRING_AUTHORIZATION_ACTIVATED- Authorization activated.PIX_AUTOMATIC_RECURRING_AUTHORIZATION_CANCELLED- Authorization cancelled.PIX_AUTOMATIC_RECURRING_AUTHORIZATION_EXPIRED- Authorization expired due to lack of payment.PIX_AUTOMATIC_RECURRING_AUTHORIZATION_REFUSED- Authorization refused by the bank.PIX_AUTOMATIC_RECURRING_PAYMENT_INSTRUCTION_CREATED- Payment instruction created.PIX_AUTOMATIC_RECURRING_PAYMENT_INSTRUCTION_SCHEDULED- Payment instruction scheduled.PIX_AUTOMATIC_RECURRING_PAYMENT_INSTRUCTION_REFUSED- Payment instruction refused.PIX_AUTOMATIC_RECURRING_PAYMENT_INSTRUCTION_CANCELLED- Payment instruction cancelled.
How to use
To receive these events, you must have a Webhook configured in your account.
We recommend:
- using an
authTokento validate the origin of requests; - responding quickly with HTTP
200after persisting the event; - implementing idempotency using the event identifier (
id); - preparing your application to accept new attributes without throwing exceptions.
Asaas Webhooks follow the at least once delivery model, so the same event may be resent in exceptional situations.
Example JSON received [POST]
Notifications are sent through POST requests containing a JSON payload, as shown below.
Account eligibility
The same payload structure is used for the PIX_AUTOMATIC_RECURRING_ELIGIBILITY_UPDATED event. The eligibility.status field can have two possible values: ELIGIBLE and INELIGIBLE.
ImportantIf an account that was previously eligible (
ELIGIBLE) becomes ineligible (INELIGIBLE) and later returns toELIGIBLE, it is not necessary to reconfigure the Automatic Pix Webhook events. Events will resume being sent normally.
{
"id": "evt_ID",
"event": "PIX_AUTOMATIC_RECURRING_ELIGIBILITY_UPDATED",
"dateCreated": "2026-03-05 08:24:11",
"account": {
"id": "accountId",
"ownerId": null
},
"eligibility": {
"status": "INELIGIBLE",
"ineligibleReasons": []
}
}
ineligibleReasonsfieldThe
ineligibleReasonsarray contains the list of reasons why the account is ineligible.
Authorization
For these events, the payload is the same. The authorization.status field may assume the following values:
CREATEDACTIVECANCELLEDEXPIREDREFUSED
{
"event": "PIX_AUTOMATIC_RECURRING_AUTHORIZATION_ACTIVATED",
"authorization": {
"id": "d51008fa-e28e-4823-82b4-4b1fcf485229",
"status": "ACTIVE",
"customerId": "cus_000006869125",
"frequency": "MONTHLY",
"value": 2.00,
"startDate": "2025-08-01",
"finishDate": "2028-01-01",
"immediateQrCode": {
"conciliationIdentifier": "ASAAS000000000000000000000000550ASA",
"expirationDate": "2025-07-24 18:00:20"
}
}
}Payment instruction
For these events, the payload is also the same. The paymentInstruction.status field may assume the following values:
AWAITING_REQUESTSCHEDULEDREFUSEDCANCELLED
{
"event": "PIX_AUTOMATIC_RECURRING_PAYMENT_INSTRUCTION_SCHEDULED",
"paymentInstruction": {
"id": "f6559451-cb41-4ec6-8487-2cda59a5f184",
"status": "SCHEDULED",
"dueDate": "2024-10-04",
"payment": "pay_080225913252",
"authorization": {
"id": "c6b180f0-2196-454c-ac7e-72d662286bd1"
}
}
}Important fields
Event
id: unique identifier of the event. Must be used for idempotency.event: type of event received.dateCreated: event creation date.
Eligibility
eligibility.status: current account eligibility status.eligibility.ineligibleReasons: list of reasons for ineligibility.
Authorizations
authorization.id: authorization identifier.authorization.status: current authorization state.authorization.customerId: associated customer.authorization.frequency: recurrence frequency.authorization.value: recurring amount.
Payment instructions
paymentInstruction.id: payment instruction identifier.paymentInstruction.status: current instruction state.paymentInstruction.payment: related payment.paymentInstruction.authorization.id: associated authorization.
Important behaviors
- Events are delivered following the at least once principle.
- The same event may be resent in case of failures.
- Idempotency should be implemented using the
idfield. - The endpoint should respond with HTTP
200as quickly as possible. - New attributes may be added to the payload without prior notice.
- Asynchronous processing is recommended to avoid synchronization queue interruptions.
Best practices
- Persist the event before processing it.
- Implement logging and monitoring.
- Validate the request origin using an
authToken. - Ignore unknown fields.
- Process events asynchronously.
- Use the event identifier to prevent duplicate processing.
Attention
- As new products and features are introduced into Asaas, new attributes may be added to Webhooks. It is very important that your code is prepared not to throw exceptions when Asaas returns new attributes that are not handled by your application, as this may interrupt the synchronization queue.
- We will send an email and announce it on our Discord whenever new fields are added to the Webhook. Notifications will be sent to the email configured in the Webhook settings.
Operational impact
If the endpoint is unavailable or returns errors, events may be resent. The absence of idempotency may lead to duplicate processing of authorizations or payment instructions.
For this reason, we recommend continuously monitoring Webhooks and maintaining high endpoint availability.
Related content
- Receive Asaas events on your Webhook endpoint;
- How to implement idempotency in Webhooks;
- Webhook Events;
- Webhook Logs;
- Paused Queue;
- Official Asaas IP addresses;
- Automatic Pix.
