Disputas com o comprador
Lista as disputas abertas contra o seller e envia a proposta de solução.
Diferente do chargeback (o cliente reclama ao banco), a disputa nasce dentro da loja: o comprador reclama de um pedido e a plataforma conduz uma conversa estruturada entre as partes, com prazos. Não há módulo nem privilégio extra para o seller.
Listar disputas
Uma disputa é uma reclamação do comprador depois da compra (produto não chegou, veio diferente, danificado...). O seller tem 48 horas para responder com uma proposta. Esta rota lista as disputas do seller, da mais nova para a mais antiga, até 500, sem paginação.
/api/v1/vendor/disputesSellerDisputas abertas por compradores contra o seller
Cabeçalhos
AuthorizationstringobrigatórioBearer $TOKEN. Token de acesso de um usuário seller (veja Tokens).Parâmetros de consulta
statusstringExemplo de requisição
curl "$BASE_URL/api/v1/vendor/disputes?status=awaiting_seller" \
-H "Authorization: Bearer $TOKEN"Resposta
{
"items": [
{
"id": "9a5f3c1e-7b44-4e0e-8a41-0f6f2b3c9d10",
"order_id": "a8a3c7a3-5f15-45a8-a385-4f20fbf8b722",
"order_item_id": "ccb748c1-a2a4-49a8-b52e-a6db1a989147",
"customer_id": "220b672c-90fe-4841-ae86-bd4f1ace982e",
"vendor_id": "94bd7e9a-fdad-4d01-8fc2-ba9d677d8b36",
"reason": "damaged",
"status": "awaiting_seller",
"amount_cents": 19900,
"seller_deadline_at": "2026-10-13T12:00:00Z",
"created_at": "2026-10-11T12:00:00Z",
"events": [
{
"actor_type": "buyer",
"action": "opened",
"payload": {
"description": "Chegou com a tela trincada."
},
"created_at": "2026-10-11T12:00:00Z"
}
]
}
]
}Campos da resposta
itemsobject[]Disputas.
iduuidorder_iduuidorder_item_iduuidcustomer_iduuidvendor_iduuidreasonstringnot_receiveddifferent_from_descriptiondamagedwrong_itemotherstatusstringopenedawaiting_sellerawaiting_buyerescalatedresolved_refund_fullresolved_refund_partialresolved_reshipresolved_rejectedcanceledamount_centsintegerrefund_centsintegerthread_iduuidseller_deadline_atstringbuyer_deadline_atstringresolution_notestringcreated_atstringeventsobject[]Linha do tempo.
actor_typestringbuyerselleradminsystemactionstringopened, responded, escalated).payloadobjectcreated_atstringErros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 401 | Token ausente, inválido, expirado ou revogado. | {"error":"missing authorization header"} |
| 403 | O token não é de um usuário seller (por exemplo, é de administrador), ou o usuário não está vinculado a nenhum seller. | {"error":"insufficient permissions"} |
| 403 | O usuário não está vinculado a nenhum seller. | {"error":"no vendor account associated with this user"} |
Responder uma disputa
O seller responde a uma disputa que está awaiting_seller com uma proposta: reembolso total, reembolso parcial, reenvio ou recusa. A disputa passa a awaiting_buyer e o comprador tem 72 horas para aceitar (o que encerra a disputa conforme a proposta) ou escalar para a mediação da loja. Um job horário trata os prazos: sem resposta do seller em 48 horas, a disputa é escalada para a loja (ou reembolsada sozinha, se a loja ligou essa opção e o motivo é not_received); sem reação do comprador em 72 horas, a disputa é cancelada.
/api/v1/vendor/disputes/{id}/respondSellerEnviar a proposta do seller ao comprador
Cabeçalhos
AuthorizationstringobrigatórioBearer $TOKEN. Token de acesso de um usuário seller (veja Tokens).Content-Typestringobrigatórioapplication/json.Parâmetros de caminho
iduuidobrigatórioCorpo da requisição
proposalstringobrigatóriorefund_fullrefund_partialreshiprejectrefund_centsintegerrefund_partial. A API não confere se passa do valor da disputa.notestringExemplo de requisição
curl -X POST "$BASE_URL/api/v1/vendor/disputes/9a5f3c1e-7b44-4e0e-8a41-0f6f2b3c9d10/respond" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"proposal": "refund_partial",
"refund_cents": 9900,
"note": "Reembolso de metade e você fica com o produto."
}'Resposta
{
"id": "9a5f3c1e-7b44-4e0e-8a41-0f6f2b3c9d10",
"order_id": "a8a3c7a3-5f15-45a8-a385-4f20fbf8b722",
"order_item_id": "ccb748c1-a2a4-49a8-b52e-a6db1a989147",
"customer_id": "220b672c-90fe-4841-ae86-bd4f1ace982e",
"vendor_id": "94bd7e9a-fdad-4d01-8fc2-ba9d677d8b36",
"reason": "damaged",
"status": "awaiting_buyer",
"amount_cents": 19900,
"seller_deadline_at": "2026-10-13T12:00:00Z",
"created_at": "2026-10-11T12:00:00Z",
"events": [
{
"actor_type": "buyer",
"action": "opened",
"payload": {
"description": "Chegou com a tela trincada."
},
"created_at": "2026-10-11T12:00:00Z"
}
],
"buyer_deadline_at": "2026-10-14T12:00:00Z"
}Campos da resposta
iduuidorder_iduuidorder_item_iduuidcustomer_iduuidvendor_iduuidreasonstringnot_receiveddifferent_from_descriptiondamagedwrong_itemotherstatusstringopenedawaiting_sellerawaiting_buyerescalatedresolved_refund_fullresolved_refund_partialresolved_reshipresolved_rejectedcanceledamount_centsintegerrefund_centsintegerthread_iduuidseller_deadline_atstringbuyer_deadline_atstringresolution_notestringcreated_atstringeventsobject[]Linha do tempo.
actor_typestringbuyerselleradminsystemactionstringopened, responded, escalated).payloadobjectcreated_atstringErros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 400 | Corpo inválido, proposta fora da lista, disputa que não é sua ou que não está awaiting_seller (motivo em detail, em inglês). | {"error":"failed to respond","detail":"cannot respond in status awaiting_buyer"} |
| 401 | Token ausente, inválido, expirado ou revogado. | {"error":"missing authorization header"} |
| 403 | O token não é de um usuário seller (por exemplo, é de administrador), ou o usuário não está vinculado a nenhum seller. | {"error":"insufficient permissions"} |
| 403 | O usuário não está vinculado a nenhum seller. | {"error":"no vendor account associated with this user"} |