Referência da API
Estornar transação
Temporariamente indisponível pela API. Enquanto durar a revisão do fluxo de estorno, este endpoint responde 403 para todas as chaves, mesmo com a permissão createRefund. Para estornar uma transação, abra um chamado no suporte informando o transactionId; a equipe executa o estorno pelo painel interno e o webhook cashin.refunded é disparado normalmente. Quando reativado: estorna uma transação aprovada. Estornos PIX devolvem o valor integral ao pagador imediatamente. Estornos de cartão de crédito são iniciados via adquirente e podem levar até 30 dias úteis para aparecer no extrato do titular.
/transactions/refund/:transactionIdtransactionId Toda chamada retorna 403 Refunds via API are temporarily disabled. Solicite o estorno pelo suporte. Quando o endpoint voltar, lembre: uma vez iniciado, um estorno não pode ser cancelado — confira o ID e o valor antes de chamar em produção.Autenticação
HTTP Basic Auth. Envie sua secret key no header:
Authorization: Basic {base64(secret:SUA_SECRET_KEY)}Parâmetros
transactionIdstring (path)obrigatórioID interno da transação a estornar. Apenas transações com status APPROVED podem ser estornadas.
Exemplo: 1234567
Respostas
Estorno iniciado.
{
"id": "17913320791467683016950003",
"status": "REFUNDED",
"refundedAt": "2026-04-08T16:45:21.501Z",
"message": "Transaction refunded successfully"
}A transação não está em estado estornável (já estornada, nunca aprovada, em chargeback ou marcada como INCOSISTENT).
{
"statusCode": 400,
"message": "Transaction is not in APPROVED status"
}Estorno pela API desativado temporariamente (resposta atual para todas as chaves), ou API key sem a permissão createRefund.
{
"statusCode": 403,
"message": "Refunds via API are temporarily disabled. Request the refund through support."
}Transação não encontrada.
{ "statusCode": 404, "message": "Transaction not found" }Exemplos
curl -X POST "https://api.ihubplay.com/transactions/refund/1234567" \
-H "Authorization: Basic $(echo -n 'secret:SUA_SECRET_KEY' | base64)"const token = Buffer.from("secret:" + process.env.IHUBGAMES_SECRET_KEY).toString("base64");
const res = await fetch("https://api.ihubplay.com/transactions/refund/1234567", {
method: "POST",
headers: { Authorization: `Basic ${token}` },
});
const traceId = res.headers.get("x-trace-id");
const result = await res.json();
if (res.ok) {
console.log("estornada em:", result.refundedAt);
} else {
console.error(`falha no estorno: ${result.message} (trace: ${traceId})`);
}