Pular para o conteúdo principal

Pix Automático errors

Routes: POST|GET /v1/pix/automatic/recurrences, GET /v1/pix/automatic/recurrences/{id}, POST /v1/pix/automatic/recurrences/{id}/cancel, POST /v1/pix/automatic/recurrences/{id}/schedules, GET /v1/pix/automatic/schedules, GET /v1/pix/automatic/schedules/{id}, POST /v1/pix/automatic/schedules/{id}/cancel, POST /v1/pix/automatic/schedules/{id}/post-due-retries

Response format​

Pix Automático uses its own error envelope:

{
"error": {
"type": "pixAutomaticError",
"code": "AMOUNT_OUT_OF_RANGE",
"message": "amount must be between BRL 1.00 and BRL 1,000,000.00",
"retryable": false
}
}
FieldDescription
typepixAutomaticError (business rule), invalidRequestError (validation/transport, code is HTTP_<status>) or apiError (unexpected, HTTP 500)
codeStable code — use it for deterministic branching
messageHuman-readable; on HTTP_400 validation failures it is an array of strings
retryablefalse when retrying the same request will not succeed

Validation is strict: unknown body properties are rejected (property X should not exist).

BAD_REQUEST (400)​

Error codeDescription
HTTP_400Malformed body (see message array).
INVALID_RECEIVER_CNPJreceiverCnpj is not a valid CNPJ (numeric or alphanumeric; check digits are validated).
INVALID_PAYER_TAX_IDexpectedPayer.taxId is not a valid CPF or CNPJ, numeric or alphanumeric (check digits are validated).
INVALID_AMOUNTamount is not an integer in centavos.
INVALID_DATEDate not in YYYY-MM-DD format or invalid.

UNAUTHORIZED (401)​

Error codeDescription
HTTP_401Bearer token missing, invalid or expired.

FORBIDDEN (403)​

Error codeDescription
RECURRENCE_ACCESS_DENIEDThe recurrence belongs to another wallet.
SCHEDULE_ACCESS_DENIEDThe schedule belongs to another wallet.

NOT_FOUND (404)​

Error codeDescription
RESOURCE_MISSINGRecurrence, schedule or location token not found.

CONFLICT (409)​

Error codeDescription
RECENT_PAYER_JOURNEY_EXISTSA pending or payer-rejected journey for this payer already exists in the last 30 days.
INVALID_RECURRENCE_STATEThe recurrence is in a state that does not allow the transition (e.g. cancelling a terminal recurrence).
AUTHORIZED_RECURRENCE_REQUIREDCycle charges require an AUTHORIZED recurrence with VALIDATION_SUCCEEDED.
CYCLE_ALREADY_EXISTSAn AGND charge already exists for this cycle.
SCHEDULE_NOT_CANCELABLESchedule status no longer allows cancellation (only CREATED, PENDING, SCHEDULED).
IDEMPOTENCY_ERRORThe externalId was already used with a different body.

UNPROCESSABLE_ENTITY (422)​

Error codeDescription
AMOUNT_OUT_OF_RANGEAmount outside R$ 1,00 – R$ 1.000.000,00.
AMOUNT_MODEL_CONFLICTamount and minimumAmount are mutually exclusive (fixed vs variable model).
FIRST_PAYMENT_AMOUNT_REQUIREDVariable recurrences must declare firstPaymentAmount.
FIRST_PAYMENT_AMOUNT_NOT_ALLOWEDFixed recurrences charge amount on the first payment — do not send firstPaymentAmount.
INVALID_EXPIRATIONexpiresIn below 60 seconds or produces a non-future expiration.
EXPIRATION_EXCEEDS_LIMITExpiration beyond 30 calendar days.
DATE_FIRST_RECURRENCE_LOWER_THAN_EXPIRATIONfirstPaymentDate must be at least 2 calendar days after the expiration.
INVALID_TOTAL_CHARGEStotalCharges outside 1–999.
RISK_ASSESSMENT_REJECTEDThe recurrence was rejected by risk policy.
CANCELLATION_CUTOFF_EXCEEDEDSchedule cancellation past 22:00 (America/Sao_Paulo) of the day before the due date.
INVALID_CYCLE_NUMBERcycleNumber must be between 2 and totalCharges (cycle 1 is the first payment).
FIXED_AMOUNT_MISMATCHSchedule amount must equal the recurrence amount (fixed-amount phase).
INVALID_SCHEDULE_WINDOWdueDate outside the 2–10 calendar days window from today.
BEFORE_RECURRENCE_START / AFTER_RECURRENCE_ENDdueDate outside the recurrence period.
SCHEDULE_OUTSIDE_RECURRENCE_CYCLEdueDate does not fall inside the requested cycle's window.
MUNICIPALITY_REQUIREDThe recurrence has no accepted authorization data yet (pain.012 pending).
POST_DUE_RETRY_NOT_ALLOWEDThe recurrence was created with allowPostDuePayment=false.
INVALID_POST_DUE_RETRY_DATERetry date must be within 7 calendar days after the original due date.
POST_DUE_RETRY_LIMIT_EXCEEDEDAt most 3 distinct retry dates per charge.
POST_DUE_RETRY_CROSSES_CYCLERetry cannot reach the next cycle or exceed the recurrence end.
POST_DUE_RETRY_CUTOFF_EXCEEDEDRetry must be commanded by 23:59 of the day before the retry date.

SERVICE_UNAVAILABLE (503)​

Error codeDescription
HTTP_503Pix Automático not yet enabled for your organization (rollout), or the authentication service is unavailable.
(varies)External dependency failure with retryable: true — retry with backoff.

Scheme rejection codes (rejectionCode)​

When the payer PSP rejects a charge (pain.014), the schedule carries the scheme code verbatim in rejectionCode. Meanings below are transcribed from the official SPI Message Catalog (Banco Central) and the ISO 20022 External Code Sets. "Terminal" means the recurring charge is rejected for good — do not retry the same charge; a post-due retry (NTAG) is only possible for non-terminal failures when allowPostDuePayment is enabled.

CodeMeaningTerminal?
AB10Error at the payer's PSP (ISO ErrorInstructedAgent). Also currently used when the receiver CNPJ in the instruction diverges from the authorized recurrenceno
AC05Payer's account is closedyes
AC06Payer's account is blocked (including judicial blocks)no
AM02Amount exceeds the maximum set by the payer in the authorizationno
AM09Amount does not match the fixed amount of the recurrenceyes
DENCPayer CPF/CNPJ does not match the recurrence/authorizationyes
DS27Payer PSP not registered or not yet operating in the SPIyes
DTEDDue date diverges from the recurrence periodicity/product rulesyes
DTNTPost-due retry beyond the allowed window (from D+8 counting the due date as D0)no
FBRDBusiness-rule deadline not met (instruction received out of window)¹no
IRNTThe recurrence does not allow post-due retriesno
MIDIRecurrence id nonexistent or incorrectyes
MSUCRecurrence not in payer-confirmed statusyes
NIECA payment order for this charge is already scheduled and pending (NTAG/RIFL)no
NIPAPayment already settled — new instruction invalid (NTAG/RIFL)no
NITXNew instruction does not match a previously issued charge (reconciliationId differs; NTAG/RIFL only)yes
QUNTPost-due retry count exceeds the limit (3 attempts within 7 days)no
RC09Payer PSP ISPB invalid or nonexistentyes
UDEIUltimate-debtor CPF/CNPJ incorrect²no²

¹ FBRD: official name FailureToComplyBusinessRuleDeadline; its pain.014 description was removed from the current SPI catalog (it remains in the API enum) — meaning shown follows the previous catalog wording.

² UDEI: the BACEN API spec does not list it as terminal, but the Manual de Padrões para Iniciação do Pix v2.9.0 marks it as rejecting the charge — treat it as potentially terminal.

LB Pay-generated codes (PAYER_RESPONSE_TIMEOUT, RIFL_CUTOFF_EXCEEDED, REGULATORY_SEND_FAILED) are documented in the status machine. Primary sources: Catálogo de Mensagens do SPI (PAIN014), Guia de Implementação do Pix Automático, ISO 20022 External Code Sets.

See also Common errors and Status Machine — Pix Automático.