Devolução Pix
Criar devolução PIX
Cria uma devolução PIX a partir do chargeId da cobrança paga. A devolução pode ser parcial ou total.
POST
/v1/wallet/refundsBase URL Produção:
https://api.validapay.com.brBase URL Sandbox:
https://sandbox.validapay.com.br⚠️ Atenção: o campo
reason(motivo da devolução) é obrigatório.
Valores aceitos para reason:
CUSTOMER_REQUEST— solicitação do clienteFRAUD— suspeita de fraudeBANK_ERROR— erro bancárioPIX_CHANGE_ERROR— erro na transação
A devolução nasce em geral como PROCESSING. Guarde o refundId retornado e acompanhe a confirmação pela rota Consultar status da devolução PIX (GET /v1/wallet/refunds).
Authorizations
bearer
Authorization
string obrigatório
Cabeçalho de autenticação Bearer no formato Bearer {{token}} onde {{token}} é o seu token OAuth2.
Escopos requeridos
wallet/write
Body
application/json
Content-Type:application/json
JSON
{
"chargeId": "cha_1774437468463_4hj927ips",
"amount": 1.00,
"reason": "CUSTOMER_REQUEST"
}Schema
chargeIdstringobrigatórioID da cobrança Pix a devolver. O endToEndId do pagamento é obtido da própria cobrança.
amountnumberobrigatórioValor da devolução (parcial ou total).
reasonstringobrigatórioUm de: BANK_ERROR, FRAUD, CUSTOMER_REQUEST, PIX_CHANGE_ERROR.
const url = 'https://sandbox.validapay.com.br/v1/wallet/refunds';
const options = {
method: 'POST',
headers: {
'Authorization': 'Bearer {{token}}',
'Content-Type': 'application/json'
},
body: JSON.stringify({
"chargeId": "cha_1774437468463_4hj927ips",
"amount": 1.00,
"reason": "CUSTOMER_REQUEST"
})
};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error(err));Response Examples
201Sucesso▾
JSON
{
"refundId": "ref_1774437918293_jm2hen5y7",
"status": "PROCESSING",
"amount": 1,
"reason": "CUSTOMER_REQUEST",
"endToEndId": "E003603052026032511186a4f4cdf139",
"chargeId": "cha_1774437468463_4hj927ips",
"createdAt": "2026-03-25T11:25:18.293Z"
}400REFUND_AMOUNT_EXCEEDED▾
JSON
{
"error": {
"message": "Valor excede o disponível para devolução. Original: R$1, já devolvido: R$0, restante: R$1",
"code": "REFUND_AMOUNT_EXCEEDED",
"details": null,
"timestamp": "2026-09-27T19:24:05.256Z"
}
}400CHARGE_WITHOUT_END_TO_END_ID▾
JSON
{
"error": {
"message": "Cobrança SANDBOX_cha_1790549943254_iv2glkbjy não possui endToEndId: o pagamento Pix ainda não foi confirmado ou a cobrança não é Pix",
"code": "CHARGE_WITHOUT_END_TO_END_ID",
"details": null,
"timestamp": "2026-09-27T22:59:54.549Z"
}
}404CHARGE_NOT_FOUND▾
JSON
{
"error": {
"message": "Cobrança não encontrada",
"code": "CHARGE_NOT_FOUND",
"details": null,
"timestamp": "2026-09-27T23:31:36.345Z"
}
}