Reembolsar um Checkout
Reembolsa integralmente um Checkout pago (PIX ou Cartão). O valor reembolsado é igual ao valor original da transação — reembolsos parciais não são suportados.
Obrigatório
id é obrigatório — o ID público do recurso a reembolsar.id aceita:
| Prefixo | Recurso |
|---|---|
bill_... | ID público do Checkout (billing) — resolve para o payment intent pago |
char_..., pix_char_..., card_... | ID público do payment intent (charge) |
Regras de negócio
- Reembolso total apenas — o valor é sempre igual ao valor original da transação.
- Métodos suportados —
PIX,PIX_QRCODEeCARD. Boleto, TED e movimentações internas não são reembolsáveis via API. - Estado exigido:
PIX/PIX_QRCODE— transação precisa estarCOMPLETE.CARD— transação precisa estarAPPROVEDouCOMPLETE.
- Disputas — transações em disputa (
UNDER_DISPUTEoumetadata.underDispute=true) não podem ser reembolsadas por este endpoint. - Saldo — o valor é debitado do saldo
availableda loja (oupending, em casos específicos deCARD). Sem saldo, retornaINSUFFICIENT_FUNDS. - Modo dev (sandbox) — em
devModeo reembolso é confirmado instantaneamente, sem chamar o provider real. - Status final após o reembolso:
- A transação original vira
REFUNDED. - O billing vira
REFUNDED. - O payment intent vira
REFUNDED. - É criada uma nova transação
WITHDRAWrepresentando o reembolso (retornada emrefundPublicId).
- A transação original vira
checkout.refunded. Configure seu endpoint em Webhooks para receber a notificação.Códigos de erro
| Código | Significado |
|---|---|
LOCK_NOT_ACQUIRED | Outra operação está em andamento para esta loja — tente novamente em instantes. |
TRANSACTION_NOT_FOUND | O id informado não existe ou não pertence à loja. |
TRANSACTION_NOT_REFUNDABLE | A transação não está em um estado reembolsável (precisa estar COMPLETE, ou APPROVED/COMPLETE para CARD). |
TRANSACTION_UNDER_DISPUTE | Transação em disputa — não pode ser reembolsada. |
INVALID_METHOD | Apenas PIX, PIX_QRCODE e CARD podem ser reembolsados. |
INSUFFICIENT_FUNDS | Saldo da loja menor que o valor da transação. |
STORE_NOT_FOUND | Loja não encontrada. |
REFUND_REQUEST_FAILED | Falha ao criar a transação no ledger ou ao acionar o provider. |
REFUND_CONFIRMATION_FAILED | Falha ao confirmar o reembolso após a criação. |
Exemplo cURL
Authorizations
Todas as requisições devem incluir sua chave de API no header Authorization usando o formato Bearer <abacatepay-api-key>. Sem esse header a requisição será rejeitada.
Saiba mais sobre como criar e usar chaves de API na documentação de autenticação.
Body
ID público do recurso a reembolsar. Aceita os prefixos char_ / pix_char_ / card_ (payment intent) ou bill_ (billing — resolvido para o payment intent pago).
"bill_abc123xyz"
Motivo do reembolso. Aparece no histórico da transação.
500"Pedido cancelado pelo cliente."