Refusal Reasons

Interpret Automatic Pix refusals

When an Automatic Pix payment instruction is refused, use the returned reason to define how your application handles it.

Refusals may occur during the scheduling or settlement of the charge and may originate from Asaas or from the payer's financial institution.

When to use

See this page when:

  • an instruction returns REFUSED;
  • the PIX_AUTOMATIC_RECURRING_PAYMENT_INSTRUCTION_REFUSED event is received;
  • your application needs to identify the cause of the refusal;
  • you need to decide whether the flow can proceed to a retry or requires another action.

How to identify the refusal

When the instruction has REFUSED status, check the refusalReason field to identify the reason.

Store the original code returned by the API and map it to the corresponding message or action in your application.

See the endpoint Retrieve a single payment instruction.

📘

Important

A refusal does not necessarily mean an integration failure.

The reason may be related to the payer's account, the authorization, the recurrence rules, or the financial institution's processing.

Refusal identified by Asaas

ReasonDescription
PAYMENT_OVERDUECharge overdue due to insufficient balance or limit at the time of the debit

Refusals returned by the paying institution

ReasonDescription
EXTERNAL_INSTITUTION_ERRORError at the payer's financial institution
ACCOUNT_CLOSEDTransactional account closed
ACCOUNT_BLOCKEDTransactional account blocked
SAME_INSTITUTION_ERRORScheduling cannot be requested for accounts that use the same SPI settlement participant
MAXIMUM_AMOUNT_EXCEEDEDAmount higher than the limit set by the payer
AMOUNT_MISMATCHAmount different from what was expected in the recurrence
RECEIVER_CPF_CNPJ_MISMATCHPayee's CPF/CNPJ does not match the recurrence data
PAYER_CPF_CNPJ_MISMATCHPayer's CPF/CNPJ does not match the authorization data
PARTICIPANT_NOT_REGISTEREDParticipant not registered or unavailable in the SPI
DUE_DATE_MISMATCHDue date incompatible with the recurrence rules
POST_DUE_DATE_ATTEMPT_NOT_ALLOWEDAttempt made outside the allowed window after the due date
RECEIVED_TOO_EARLYRequest sent earlier than allowed
RECEIVED_TOO_LATERequest sent later than allowed
OTHERReason not specified by the institution
OUT_OF_TIME_FRAME_FOR_RETRYThe charge is outside the allowed window for a new attempt
INVALID_RECURRING_PAYMENT_IDRecurrence identifier nonexistent or invalid
RECURRING_PAYMENT_NOT_CONFIRMEDThe recurrence was not confirmed by the payer
PAYMENT_ALREADY_SCHEDULEDThere is already a pending settlement request for the charge
PAYMENT_ALREADY_DONEThe charge has already been settled
PAYMENT_INSTRUCTION_WITHOUT_AUTHORIZATIONThe instruction does not have a valid associated authorization
EXCEEDED_MAXIMUM_RETRY_ATTEMPTSMaximum number of retries exceeded
PARTICIPANT_ISPB_INVALIDFinancial institution's ISPB invalid or nonexistent
INVALID_CUSTOMER_CPF_CNPJInvalid CPF/CNPJ
INCORRECT_CUSTOMER_CPF_CNPJIncorrect CPF/CNPJ

How to handle the refusal

Use refusalReason to direct the application's behavior.

ScenarioHandling
Charge already paid or scheduledDo not create a new instruction without confirming the current state of the charge
Invalid or unconfirmed authorizationCheck the authorization before continuing the recurrence
Data mismatchCorrect the data before a new attempt
Request outside the allowed windowReview the date and processing rules
Insufficient balance or limitCheck whether the scenario allows a retry
Retry limit exceededDo not request a new retry for the same charge
Financial institution errorPreserve the returned reason and handle the scenario according to the instruction's state

Do not present the enum directly to the payer. Map it to a message appropriate to your application's context.

Retries after a refusal

Not every refusal allows a new attempt.

When the charge is eligible for a retry, follow the specific Automatic Pix rules.

⚠️

Attention

Extra-day retries require the authorization to have been created with the corresponding retry policy.

Check the rules before requesting a new attempt.

See the Automatic Pix retry process.

Track the result

Use Webhooks to track the instruction lifecycle and identify changes after the refusal.

To understand the sequence of events, see Automatic Pix Webhook Flows.

To see the available payloads and events, go to Events for Automatic Pix.

Next steps


Did this page help you?