Devoluções
Como funciona uma devolução (RMA) do pedido ao reembolso, os estados, a logística reversa e o mapa de todas as rotas do administrador.
Uma devolução (também chamada de RMA, de "return merchandise authorization") é o pedido que o cliente faz para devolver, trocar ou ser reembolsado por um item de um pedido já comprado. O Código de Defesa do Consumidor garante esse direito, e por isso a plataforma tem um fluxo próprio: o cliente abre o pedido de devolução, a loja analisa, aprova ou recusa, recebe o produto de volta e devolve o dinheiro.
Estas são as rotas do administrador da loja. O cliente abre a devolução pela API da vitrine e o seller acompanha pelo painel dele; aqui você analisa, decide e acompanha tudo.
Como funciona
O ciclo da devolução
Pelo caminho de recusa: Solicitada > Recusada > Encerrada. O cliente também pode cancelar enquanto a devolução está solicitada.
status | Significado | Próximos estados possíveis |
|---|---|---|
requested | O cliente abriu o pedido e aguarda análise. | approved, rejected, cancelled |
approved | A loja aprovou. A logística reversa pode ser emitida. | item_received, cancelled |
item_received | O produto devolvido chegou à loja. | refunded |
refunded | O dinheiro foi devolvido. | closed |
rejected | A loja recusou. | closed |
closed | Encerrada. Estado final. | nenhum |
cancelled | Cancelada. Estado final. | nenhum |
Resolução
O campo resolution diz o que o cliente quer receber: refund (dinheiro de volta), replacement (troca por outro item) ou store_credit (crédito na loja). Ao processar a devolução você pode sobrescrevê-lo.
Logística reversa
É o caminho de volta do produto. Quando o recurso está ligado no módulo, aprovar uma devolução pede ao transportador uma autorização de postagem (um código e uma etiqueta que o cliente leva à agência). O andamento aparece em reverse_status e na linha do tempo da logística reversa.
reverse_status | Significado |
|---|---|
none | Nunca houve logística reversa. |
requested | Autorização pedida ao transportador. |
authorized | Autorização emitida (código, etiqueta e custo disponíveis). |
failed | O transportador recusou ou falhou. Pode ser reemitida. |
posted, in_transit, delivered | O objeto foi postado, está a caminho ou chegou. Não pode mais ser cancelada. |
cancelled | Autorização cancelada. |
Destino do reembolso
O cliente escolhe refund_destination: original (volta ao meio de pagamento usado) ou wallet (crédito na carteira da loja). No reembolso por wallet não há estorno no gateway; o valor é creditado na carteira do cliente.
Conceitos importantes
Quem enxerga o quê
Estas rotas veem todas as devoluções da loja. O seller só vê as devoluções dos próprios pedidos, por rotas dele. O cliente vê as suas.
Motivos e regras
Os motivos são as opções que o cliente escolhe ("Produto com defeito", "Desisti da compra"). As regras por categoria definem prazo, exigência de fotos e aprovação automática para cada categoria de produto. Os dois são configuráveis nas páginas Motivos e Regras por categoria.
Triagem das fotos
Quando o cliente envia fotos de evidência, a plataforma pode analisá-las automaticamente e, em categorias configuradas para isso, aprovar sozinha casos de baixo valor. O resultado aparece no campo triage da devolução (status, classification, confidence, rationale, auto_approved). Trate-o como apoio à decisão, não como veredicto.
Endpoints
| Método e caminho | Para que serve | Auth | Página |
|---|---|---|---|
GET /api/v1/admin/returns | Lista devoluções com filtros | admin | Solicitações |
GET /api/v1/admin/returns/{id} | Detalha uma devolução | admin | Solicitações |
GET /api/v1/admin/returns/stats | Contadores e total reembolsado | admin | Solicitações |
PUT /api/v1/admin/returns/{id} | Avança o estado (recebido, reembolsado, encerrado...) | admin | Decisões |
POST /api/v1/admin/returns/{id}/process | Aprova ou recusa | admin | Decisões |
POST /api/v1/admin/returns/{id}/reverse | Emite (ou reemite) a logística reversa | admin | Logística reversa |
DELETE /api/v1/admin/returns/{id}/reverse | Cancela a autorização ainda não postada | admin | Logística reversa |
GET /api/v1/admin/returns/{id}/reverse-events | Linha do tempo do rastreio reverso | admin | Logística reversa |
GET /api/v1/admin/returns/reasons | Lista os motivos | admin | Motivos |
POST /api/v1/admin/returns/reasons | Cria um motivo | admin | Motivos |
PUT /api/v1/admin/returns/reasons/{id} | Altera um motivo | admin | Motivos |
DELETE /api/v1/admin/returns/reasons/{id} | Exclui um motivo | admin | Motivos |
GET /api/v1/admin/returns/rules | Lista as regras por categoria | admin | Regras por categoria |
POST /api/v1/admin/returns/rules | Cria ou atualiza uma regra | admin | Regras por categoria |
PUT /api/v1/admin/returns/rules | Igual ao POST | admin | Regras por categoria |
DELETE /api/v1/admin/returns/rules/{ruleId} | Remove uma regra | admin | Regras por categoria |
Erros comuns
- Tentar reembolsar com
refund_amountzerado. A transição pararefundedé recusada. Defina o valor ao processar a devolução. - Usar
PUTpara aprovar. OPUTsó troca o estado. Para aprovar com valor, resolução e logística reversa, usePOST /process. - Pular etapas. Não se vai de
requesteddireto arefunded. A resposta400dizinvalid status transition from 'x' to 'y'. - Filtrar por
statuscom texto desconhecido. Em vez de erro, o filtro virarequested. Confira a grafia. - Esperar
404em id mal formado.GET /returns/abcdevolve500(não é um UUID); um UUID válido que não existe devolve404. - Esperar que a logística reversa sempre emita. Se o transportador não estiver configurado ou recusar o pedido, a chamada devolve
502 reverse_failede oreverse_statusficafailed. - Repetir o reembolso após
502. O502significa que nada foi marcado; é seguro tentar de novo ou reembolsar manualmente no gateway.