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

Refund

Returns a received Pix to the payer, in full or in part. The id is yours. Partial refunds are allowed until their sum reaches the original amount, within 90 days of settlement.

PUT /v2/pix/{e2eId}/devolucao/{id}

Scope: pix.write.

PUT /v2/pix/E12345678202609181200000000000001/devolucao/DEV01J1ZK7M9QW3ERT5TY6UI8O
{
  "valor": "50.00",
  "descricao": "Pedido 4471 cancelado"
}
→ 201
{
  "id": "DEV01J1ZK7M9QW3ERT5TY6UI8O",
  "endToEndId": "E12345678202609181200000000000001",
  "rtrId": "D12345678202609181200000000000001",
  "valor": "50.00",
  "natureza": "ORIGINAL",
  "status": "EM_PROCESSAMENTO",
  "descricao": "Pedido 4471 cancelado",
  "horario": { "solicitacao": "2026-09-18T12:00:00Z" }
}
Field Type Required Description
valor string yes Amount to refund, with two decimal places.
natureza string no ORIGINAL. Default.
descricao string no Text sent with the refund, up to 140 characters, without line breaks, tabs or other control characters. Not every account passes the text on to the payer.
Response field Type Description
status string EM_PROCESSAMENTO, then DEVOLVIDO or NAO_REALIZADO.
rtrId string Identifier of the refund in this API. Depending on the account, the receipt of the payer carries a different one; GET /v2/ex/transacoes/mapear finds the refund by either.

The outcome arrives through the webhook devolucao.concluida or devolucao.nao_realizada. Refunds are free of charge.

Refunds depend on the account that received the Pix: GET /v2/ex/config carries capacidades.devolucao (for a Pix received by a sub-account, ?subconta=). Where it is false, this route responds 503 capacidade_indisponivel, and the detail says which account and why.

On some accounts a refund can only be for the whole amount of the Pix. On those accounts, a valor lower than the amount received responds 422 devolucao_so_integral, and nothing is reserved.

If your account changed institutions after the Pix came in, the refund goes out through the account where the Pix came in. The call is the same. If the balance of the account was transferred from one institution to the other, the refund of a Pix from before the transfer responds 422 devolucao_de_outra_conta, and we make that refund.

Get #

GET /v2/pix/{e2eId}/devolucao/{id}

Scope: pix.read.

GET /v2/pix/E12345678202609181200000000000001/devolucao/DEV01J1ZK7M9QW3ERT5TY6UI8O
→ 200
{
  "id": "DEV01J1ZK7M9QW3ERT5TY6UI8O",
  "endToEndId": "E12345678202609181200000000000001",
  "rtrId": "D12345678202609181200000000000001",
  "valor": "50.00",
  "natureza": "ORIGINAL",
  "status": "EM_PROCESSAMENTO",
  "horario": { "solicitacao": "2026-09-18T12:00:00Z" }
}

GET /v2/ex/devolucoes lists the refunds you requested, with a cursor. The ones we started are not in it: they only arrive through the webhook devolucao.criada, with the motivo, and end in devolucao.concluida. A refund of ours can also end in devolucao.nao_realizada: the Pix did not go back to the payer and was credited to you. Its motivo repeats the one in devolucao.criada: it is the reason the Pix was refused. The pix.creditado of the same Pix arrives separately, before or after it: the order between the two is not guaranteed.

Errors #

Status title When
400 id_invalido id outside the format.
400 valor_invalido Amount outside the format "0.00" or not positive.
400 natureza_invalida natureza outside the list.
400 descricao_invalida descricao longer than 140 characters or with a control character (line break, tab).
409 id_duplicado The same id already exists with a different body.
422 pix_nao_creditado The endToEndId is not of a Pix credited to this account, or the Pix is on hold (ex.situacaoFundos RETIDO).
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 saldo_insuficiente The available balance does not cover the amount.
503 capacidade_indisponivel The account does not have capacidades.devolucao.