Skip to content
A AmunPay API PixVersion 3.38 · updated on Pages

Errors

Every error of the /v2/ routes responds with an RFC 7807 body (application/problem+json). POST /oauth/token responds in the format { "error", "error_description" }; see Authentication. title is a contract and does not change; detail is text for people; type is a URL ending in /erros/ followed by the title: compare by the title, never by the domain of the URL. violacoes carries, when present, the field and the number that was missing.

PUT /v2/ex/pix/SAQ03J1ZK7M9QW3ERT5TY6UI8O
{
  "tipo": "SAQUE",
  "valor": "10000.00",
  "solicitadoEm": "2026-09-18T12:00:00Z",
  "favorecido": { "chave": "12345678909", "cpf": "12345678909" }
}
→ 422
{
  "type": ".../erros/saldo_insuficiente",
  "title": "saldo_insuficiente",
  "status": 422,
  "detail": "saldo disponível insuficiente",
  "correlationId": "01M2SX29RA7F19V4Q76VFTSAHS",
  "violacoes": []
}

Handle errors by the title, not by the status. A 4xx does not change by repeating the same request right away. A 429 clears after the Retry-After; the ones that depend on state, such as saldo_insuficiente, limite_excedido, dia_nao_encerrado and reenvio_em_andamento, clear when the state changes. A 5xx or a timeout does not mean the operation failed: look up the resource by its id before creating another one.

Status title When
400 json_invalido The body is not JSON.
400 requisicao_invalida A required field is missing or the body is malformed.
400 campo_desconhecido A field the route does not know, where the route rejects that.
400 valor_invalido Money outside the format "0.00" or outside the range: zero on a charge, payout or refund, or above the maximum.
400 tipo_invalido Payout tipo other than SAQUE or PREMIO.
400 natureza_invalida Refund natureza outside the list.
400 txid_invalido txid outside 26 to 35 alphanumeric characters.
400 id_envio_invalido idEnvio outside the format.
400 id_invalido Refund or sub-account id outside the format.
400 cpf_invalido CPF outside the format.
400 cnpj_invalido CNPJ outside the format: 14 positions without punctuation, the first 12 digits or letters (a lowercase letter is read as uppercase) and the last 2 digits, with the check digits.
400 filtro_invalido Invalid listing filter, such as cpf and cnpj together.
400 documento_invalido The document of the payee is not a valid CPF or CNPJ, or is missing; or the charge carries devedor.cpf and devedor.cnpj together.
400 devedor_obrigatorio Charge without devedor.cpf or devedor.cnpj.
400 devedor_pj_nao_permitido Charge with devedor.cnpj where capacidades.devedorPJ is false.
400 chave_nao_pertence_ao_documento The owner of the key is not the informed CPF or CNPJ.
400 favorecido_pj_nao_permitido A payee that is a legal entity, or a key of a legal entity with favorecido.cpf, where capacidades.favorecidoPJ is false.
400 chave_pix_invalida The key does not have the shape of any key type, or it is a CPF or CNPJ with invalid check digits.
400 solicitado_em_invalido solicitadoEm outside the format or more than 5 minutes in the future.
400 validade_invalida Payout validadeSegundos outside 60 to 10800.
400 periodo_invalido de, ate, inicio or fim outside the format.
400 periodo_obrigatorio Summary without de or without ate.
400 data_invalida Date outside AAAA-MM-DD.
400 cursor_invalido Malformed cursor.
400 limite_invalido limite outside 1 to 200.
400 status_invalido Status filter outside the list.
400 url_invalida Invalid webhook URL or a URL without HTTPS.
400 url_privada Webhook URL on a private network, or a host that does not resolve in DNS.
400 familia_desconhecida Webhook redirect for a family that does not exist.
400 tipos_invalidos tiposHabilitados with a blank item.
400 janela_invalida Resend with fim equal to or before inicio, or inicio in the future.
400 janela_muito_antiga Resend with inicio more than 30 days ago.
401 acesso_negado Call without Authorization: Bearer.
401 token_invalido Invalid or expired token. Renew it.
401 token_revogado Token revoked before it expired. Request another token once; if the request is refused, talk to support.
403 origem_nao_permitida The source IP is not among the IPs registered on the credential.
403 escopo_insuficiente The token does not have the scope of the route.
403 merchant_nao_provisionado The client_id does not have an account.
403 conta_bloqueada The account is not ATIVA.
403 conta_em_abertura The account cannot charge or pay out yet: the institution is defining where it operates. Reads and webhooks work.
403 conta_cnpj_nao_ativo The account's CNPJ is not ATIVA (active) at the Brazilian Federal Revenue: new charges and payouts stay blocked until it is active again. Reads and webhooks work.
403 subconta_indisponivel The sub-account is not ATIVA.
403 subconta_de_outro A sub-account credential asking for another sub-account.
404 nao_encontrado The resource does not exist in this account.
409 txid_duplicado txid reused with a different debtor, amount, ex.subconta or ex.splitConfig.
409 id_envio_duplicado idEnvio reused with a different amount, tipo, payee document, subconta or exigirAprovacao.
409 id_duplicado Id reused with a different body.
409 reenvio_em_andamento There is already a webhook resend in progress.
413 corpo_grande_demais Body larger than 1 MiB.
422 saldo_insuficiente The available balance does not cover the amount. On a payout, the amount plus the fee.
422 saldo_bloqueado_med The available balance does not cover the payout and the account has balance on hold. GET /v2/ex/bloqueios lists each hold.
422 limite_excedido Above a limit. The numbers are in violacoes.
422 favorecido_restrito The CPF of the payee is restricted.
422 chave_sob_reivindicacao The key is under portability or a claim.
422 chave_exige_documento On this account a payout only goes to the key that is the valid CPF or CNPJ of the payee, and the key sent is an email, phone, random key or a document with invalid check digits. See capacidades.saqueQualquerChave in GET /v2/ex/config.
422 documento_exigido_pela_nominal The payout came without the payee document, with the document optional on your account, and the account it goes out through requires the document. Send favorecido.cpf or favorecido.cnpj.
422 valor_abaixo_do_minimo The payout amount is below the minimum payout of the account, or the charge amount is below the minimum charge. The minimum comes in detail, and nothing is created.
422 valor_acima_do_maximo The payout amount is above the maximum per payout Pix of the account, or the charge amount is above the maximum charge. The maximum comes in detail, and nothing is created.
422 pagamento_negado_compliance Rejected by the risk analysis. Do not repeat.
422 cadeia_retry_invalida Invalid idEnvioOriginal for repeating the payout.
422 cobranca_recusada_no_custodiante The institution of the account refused to issue the QR. The charge was not created; do not repeat with the same body.
422 nome_do_pagador_obrigatorio On this account a charge requires devedor.nome, with the first name and the surname where the CPF of the payer arrives masked. See capacidades.cobrancaSemNome in GET /v2/ex/config.
422 titularidade_sem_confirmacao On this account a charge with the payer document is not accepted. Contact support.
422 pix_nao_creditado Refund of a Pix that was not credited or is on hold.
422 devolucao_unica On this account each Pix accepts a single refund, and this one already has one.
422 devolucao_so_integral On this account a refund can only be for the whole amount of the Pix, and the requested valor is lower.
422 devolucao_de_outra_conta The Pix came in before the balance of your account was transferred to another institution. Its refund is made by us: talk to support.
422 devolucao_excede_recebido The sum of the refunds would exceed the amount received.
422 devolucao_prazo_excedido 90 days have passed since settlement.
422 subconta_nao_encontrada The informed sub-account does not exist.
422 split_config_nao_encontrada ex.splitConfig does not exist.
422 dia_nao_encerrado Statement or closing balance of the current day.
422 periodo_nao_encerrado Summary of a period that is still open.
422 periodo_longo_demais Summary longer than 366 days.
422 saque_nao_liquidado Receipt of a payout that is not REALIZADO.
422 webhook_nao_configurado Test without an active webhook.
429 limite_requisicoes Above the request limit. Respect Retry-After.
500 erro_interno An error on our side.
502 custodiante_indisponivel Failure to issue the QR at the custodian institution. The charge was not created; repeat with the same txid. If it responds 502 again without the Retry-After header, create it with a new txid. With Retry-After, repeat with the same txid after the indicated time, in seconds: 1 when the institution was slow and the issuance continues (the QR that arrives is saved, and the retry receives the charge), when the same charge is being issued in another request, or when the institution has too many charges waiting or yours already take half of its slots; the time left in the pause when the institution stopped issuing the QR for your charges and their issuance is paused; and the time the institution asked for when it limited the requests.
503 dict_resolucao_incompleta The directory did not return the account of the payee. Repeat.
503 capacidade_indisponivel The account does not have the capability the route requires. GET /v2/ex/config lists the capabilities of the account and the origin of each one.

Request limits #

The API does not limit requests per second: there is no cap on charges, withdrawals, reads or the event feed.

An account that loops because of a defect may receive a limit from the institution. Only in that case do responses carry x-ratelimit-remaining, and a 429 carries Retry-After.