Skip to main content
POST
Informar dados bancários do reembolso
POST /refunds/:id/bank-details Faz parte do recurso Reembolsos — o objeto, os status e o ciclo estão lá. Boleto não estorna pela bandeira: o valor volta por transferência, e é preciso saber para qual conta. Enquanto ninguém informa esse destino, o reembolso fica em awaiting_bank_details. Este endpoint registra a conta e leva o reembolso a bank_details_received, disparando o webhook refund.bank_details_received. Por padrão quem pergunta ao comprador somos nós, por e-mail, e você não precisa fazer nada — mas a sua conta pode ser configurada, no painel, para que esse e-mail não seja enviado. É o caso de quem já atende o próprio comprador e prefere coletar a conta pelo canal dele. Aí este endpoint passa a ser o caminho: sem ele, o reembolso esperaria um e-mail que não sai. Com o e-mail ligado ele também funciona — vale quem responder primeiro, você ou o comprador.
Cada método de transferência exige os seus campos, e a falta deles é 400. Com transferMethod: "pix", pixKeyType e pixKey são obrigatórios. Com "bank_account", são bankCode, branch, accountNumber, accountDigit e accountType. Não há preenchimento parcial: uma conta sem destino utilizável seria um reembolso marcado como pronto que nunca liquida.
Chave Pix só é aceita quando é a sua conta que devolve o dinheiro. Quando a devolução é executada pela plataforma — o padrão —, o destino tem de ser conta bancária, e "pix" responde 400. Quem executa a devolução é definido em contrato; a sua tela de configurações de reembolso mostra qual dos dois vale para a sua conta.
A conta é conferida antes de ser aceita, e as pendências vêm todas de uma vez. São recusadas com 400: banco fora dos que atendemos, agência ou conta fora do formato daquele banco, valores que não podem ser reais (0000, 99999) e tipo de conta que não recebe crédito de terceiros — conta salário não recebe. Leia error.issues[]: cada item traz o campo e o motivo, para você corrigir a conta inteira numa rodada em vez de descobrir um problema por tentativa.
O dígito da agência não se inventa. Ele é exigido nos bancos cuja agência tem dígito — Banco do Brasil e Bradesco, entre outros; Itaú e Nubank não têm — e o valor é conferido contra a agência informada, não apenas a presença. Preencher 0 para “passar” acerta em cerca de um caso em onze; nos outros dez a transferência era recusada pelo banco dias depois, com o reembolso já registrado como pronto e o comprador esperando. O campo aceita um único caractere: 0-9, ou X/P nos bancos que usam letra no lugar do dez. O dígito está impresso no extrato.
Reembolso que já tem destino registrado responde 409, e reenviar não corrige. O endpoint não sobrescreve conta: se os dados estiverem errados, fale com o nosso time — a operação invalida o registro, o reembolso volta para awaiting_bank_details e aí a conta certa é aceita. Não há caminho automático para isso.
Endpoint idempotente. Envie o header Idempotency-Key para que um retry por timeout não registre a conta duas vezes. Veja Convenções.

Exemplo

Authorizations

x-api-key
string
header
required

API Key da Credential (gerada no Backoffice)

Headers

Idempotency-Key
string

Chave única para garantir idempotência da requisição

Path Parameters

id
string
required

ID do refund

Body

application/json
transferMethod
enum<string>
required

Destino do dinheiro: bank_account (TED) ou pix. pix só é aceito quando a devolução é executada pela própria conta, não pela plataforma.

Available options:
pix,
bank_account
holderName
string
required

Nome do titular da conta, como consta no banco.

Minimum string length: 3
holderDocument
string
required

CPF ou CNPJ do titular da conta, somente dígitos.

Required string length: 11 - 14
pixKeyType
enum<string>
Available options:
cpf,
email,
phone,
random
pixKey
string
bankCode
string

Código COMPE do banco, três dígitos (ex: 341).

branch
string

Agência sem o dígito, somente números.

branchDigit
string

Dígito da agência. Obrigatório nos bancos que o emitem — o valor é conferido, então não preencha com 0 para "passar".

accountNumber
string

Número da conta sem o dígito, somente números.

accountDigit
string

Dígito verificador da conta.

accountType
enum<string>

checking (corrente) ou savings (poupança). Conta salário não recebe crédito.

Available options:
checking,
savings

Response

Dados bancários registrados