Reembolsar uma venda

Reembolsa uma venda sua. Como quem pede é o próprio vendedor, o pedido já nasce aceito: o estorno é enviado ao gateway na hora, a assinatura da venda é cancelada e os acessos do comprador são revogados. Não há como desfazer.

O reembolso é sempre total. Reembolso de alguns itens continua só no painel.

A venda precisa estar paga ou já com um pedido de reembolso aberto; em qualquer outra situação a resposta é 409. Só existe um pedido em andamento por venda.

A resposta traz a situação do pedido: REFUNDING enquanto o gateway não confirma e FAILED quando ele recusa o estorno (por exemplo, por falta de saldo de um co-produtor). A confirmação vem depois pelo webhook TRANSACTION_REFUNDED.

O header Idempotency-Key é obrigatório: reenviar a mesma chave devolve a resposta original, sem pedir um segundo estorno.

Sem campo de autorização: o portal autentica por você com a sua chave de Homologação e as requisições rodam só no ambiente de testes.

POST
/refunds
AuthorizationBearer <token>

Token de acesso devolvido por POST /auth/token. Envie como "Authorization: Bearer ". Vale 24 horas.

In: header

Header Parameters

Idempotency-Keystring
Lengthlength <= 255
sale_identifierstring

Código público da venda a reembolsar — o identifier que vem em GET /sales, na resposta da cobrança e no payload dos webhooks. São só dígitos; o prefixo e a URL do checkout que contenha o código também são aceitos. Não é o id (uuid) da venda: com o uuid a resposta é 404. A venda precisa ser da própria conta da credencial.

Lengthlength <= 255
requested_by?string

Quem pediu o reembolso, para o registro ficar fiel: SELLER quando a decisão foi sua e CLIENT quando o comprador pediu por fora (e-mail, telefone, atendimento). O campo só muda o registro, que volta em requested_by na consulta — o estorno é imediato nos dois casos, porque quem chama a rota é o vendedor.

Default"SELLER"
Value in"SELLER" | "CLIENT"
reason?string

Motivo do reembolso, em texto livre. Fica gravado no pedido e aparece em GET /refunds.

Lengthlength <= 255
customer_observation?string

Observação do comprador, quando houver.

Lengthlength <= 255

Response Body

curl -X POST "https://pagpolar-api.creativecode.dev.br/v1/refunds" \  -H "Idempotency-Key: string" \  -H "Content-Type: application/json" \  -d '{    "sale_identifier": "PPO9876543210",    "reason": "Cliente desistiu da compra"  }'
{
  "data": {
    "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
    "status": "REFUNDED",
    "requested_by": "CLIENT",
    "is_partial": false,
    "refund_amount": null,
    "reason": "Não atendeu às expectativas",
    "customer_observation": null,
    "refused_reason": null,
    "canceled_reason": null,
    "return_tracking": {
      "code": "BR123456789BR",
      "provider": "string",
      "sent_at": "2019-08-24T14:15:22Z",
      "received_at": "2019-08-24T14:15:22Z"
    },
    "sale": {
      "identifier": "PPO9876543210",
      "status": "REFUNDED",
      "payment_method": "PIX",
      "total_amount": 197
    },
    "customer": {
      "id": "e6f7a8b9-c0d1-4e2f-3a4b-5c6d7e8f9a0b",
      "name": "Maria Souza",
      "email": "maria@exemplo.com",
      "document": "***.456.***-**",
      "phone": "****4321",
      "is_active": true,
      "created_at": "2026-01-05T08:00:00.000Z"
    },
    "created_at": "2026-01-25T09:00:00.000Z",
    "updated_at": "2026-01-27T16:20:00.000Z"
  }
}
{
  "error": {
    "code": "invalid_request",
    "message": "string",
    "request_id": "string"
  }
}
{
  "error": {
    "code": "invalid_request",
    "message": "string",
    "request_id": "string"
  }
}
{
  "error": {
    "code": "invalid_request",
    "message": "string",
    "request_id": "string"
  }
}
{
  "error": {
    "code": "invalid_request",
    "message": "string",
    "request_id": "string"
  }
}
{
  "error": {
    "code": "invalid_request",
    "message": "string",
    "request_id": "string"
  }
}
{
  "error": {
    "code": "invalid_request",
    "message": "string",
    "request_id": "string"
  }
}
{
  "error": {
    "code": "invalid_request",
    "message": "string",
    "request_id": "string"
  }
}