Skip to main content
POST
/
transparents
/
refund
Reembolsar Checkout Transparente
curl --request POST \
  --url https://api.abacatepay.com/v2/transparents/refund \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "id": "bill_abc123xyz",
  "reason": "Pedido cancelado pelo cliente."
}
'
{
  "data": {
    "refundPublicId": "tran_refund789xyz"
  },
  "error": null,
  "success": true
}

Documentation Index

Fetch the complete documentation index at: https://docs.abacatepay.com/llms.txt

Use this file to discover all available pages before exploring further.

Reembolsa integralmente um pagamento transparente (PIX QR Code ou Cartão). O valor reembolsado é igual ao valor original da transação — não há reembolso parcial.

Obrigatório

Apenas id é obrigatório — o ID público do recurso a reembolsar.
O campo id aceita:
PrefixoRecurso
pix_char_...ID público da cobrança PIX transparente
card_...ID público da cobrança no cartão
char_...ID público do payment intent (genérico)
Exemplo mínimo:
{
  "id": "pix_char_abc123xyz"
}
Exemplo com motivo:
{
  "id": "pix_char_abc123xyz",
  "reason": "Cliente pagou em duplicidade."
}
Resposta:
{
  "data": { "refundPublicId": "tran_refund789xyz" },
  "success": true,
  "error": null
}
Chamar o endpoint para o mesmo id retorna sempre o mesmo refundPublicId — não cria reembolsos duplicados.

Regras de negócio

  • Reembolso total apenas — o valor é sempre igual ao valor original da transação.
  • Métodos suportadosPIX, PIX_QRCODE e CARD. Boletos transparentes não são reembolsáveis via API.
  • Estado exigido:
    • PIX / PIX_QRCODE — transação precisa estar COMPLETE.
    • CARD — transação precisa estar APPROVED ou COMPLETE.
  • Disputas — transações em disputa (UNDER_DISPUTE ou metadata.underDispute=true) não podem ser reembolsadas por este endpoint.
  • Saldo — o valor é debitado do saldo available da loja (ou pending, em casos específicos de CARD). Sem saldo, retorna INSUFFICIENT_FUNDS.
  • Modo dev (sandbox) — em devMode o reembolso é confirmado instantaneamente, sem chamar o provider real.
  • Status final após o reembolso:
    • A transação original vira REFUNDED.
    • O payment intent vira REFUNDED.
    • É criada uma nova transação WITHDRAW representando o reembolso (retornada em refundPublicId).
Ao concluir, é disparado o webhook transparent.refunded (ou checkout.refunded quando houver um billing associado à cobrança). Configure seu endpoint em Webhooks para receber a notificação.

Códigos de erro

CódigoSignificado
LOCK_NOT_ACQUIREDOutra operação está em andamento para esta loja — tente novamente em instantes.
TRANSACTION_NOT_FOUNDO id informado não existe ou não pertence à loja.
TRANSACTION_NOT_REFUNDABLEA transação não está em um estado reembolsável (precisa estar COMPLETE, ou APPROVED/COMPLETE para CARD).
TRANSACTION_UNDER_DISPUTETransação em disputa — não pode ser reembolsada.
INVALID_METHODApenas PIX, PIX_QRCODE e CARD podem ser reembolsados.
INSUFFICIENT_FUNDSSaldo da loja menor que o valor da transação.
STORE_NOT_FOUNDLoja não encontrada.
REFUND_REQUEST_FAILEDFalha ao criar a transação no ledger ou ao acionar o provider.
REFUND_CONFIRMATION_FAILEDFalha ao confirmar o reembolso após a criação.
Exemplo de erro:
{
  "data": null,
  "success": false,
  "error": "TRANSACTION_NOT_REFUNDABLE"
}

Exemplo cURL

curl -X POST https://api.abacatepay.com/v2/transparents/refund \
  -H "Authorization: Bearer $ABACATE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "id": "pix_char_abc123xyz",
    "reason": "Cliente pagou em duplicidade."
  }'

Authorizations

Authorization
string
header
required

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

application/json
id
string
required

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).

Example:

"bill_abc123xyz"

reason
string

Motivo do reembolso. Aparece no histórico da transação.

Maximum string length: 500
Example:

"Pedido cancelado pelo cliente."

Response

Reembolso criado com sucesso.

data
object
error
string | null
Example:

null

success
boolean

Se a requisição obteve sucesso ou não.

Example:

true