Comissões por plano
Fluxo manual de aprovação e pagamento das comissões calculadas com a taxa do plano de cada seller.
Além do razão por item, a plataforma mantém um segundo livro: as comissões por plano. Cada pedido concluído de um seller gera uma linha, com a taxa do plano contratado pelo seller. O operador confere a linha e a leva por pendente > aprovada > paga. Esse fluxo é de conferência; ele não movimenta saldo.
Listar comissões por plano
Lista as comissões do fluxo de aprovação: uma linha por pedido de seller, calculada com a taxa do plano do seller (commission_bps e taxa fixa) no dia da conclusão do pedido. A linha nasce pendente e passa pelas etapas manuais de aprovar e pagar, descritas abaixo.
/api/v1/admin/commissionsAdminLista as comissões por plano
Autenticação: Authorization: Bearer <token> de um administrador com o privilégio view_vendors ou manage_vendors (as escritas exigem manage_vendors). O módulo commissions precisa estar ativo na loja; com o módulo desligado a resposta é 403.
Parâmetros de consulta
vendor_idstringstatusstringpendingapprovedpaidcancelledOACIpending, approved, paid, cancelled ou a letra O, A, C, I.date_fromstringYYYY-MM-DD, inclusive. Formato diferente dá 500.date_tostringYYYY-MM-DD, inclusive (o dia inteiro entra).pageintegerpadrão: 1per_pageintegerpadrão: 20Exemplo de requisição
curl "$BASE_URL/api/v1/admin/commissions?status=pending&date_from=2026-10-01&per_page=20" \
-H "Authorization: Bearer $TOKEN"Resposta
{
"commissions": [
{
"id": 36975,
"order_id": "4d4d79f4-f71b-4706-a303-bc79d48df101",
"vendor_id": "94bd7e9a-fdad-4d01-8fc2-ba9d677d8b36",
"vendor_name": "Loja Seller Teste",
"plan_id": 8,
"order_amount": 129990,
"commission_bps": 700,
"fixed_fee_cents": 0,
"commission_amount": 9099,
"status": "O",
"created_at": "2026-10-11T21:02:32.618401Z",
"updated_at": "2026-10-11T21:02:32.618401Z"
}
],
"total": 36927,
"page": 1,
"per_page": 20,
"total_pages": 1847
}Campos da resposta
commissionsarraycommissions[].idintegercommissions[].order_iduuidcommissions[].vendor_iduuidcommissions[].vendor_namestringcommissions[].plan_idintegercommissions[].order_amountintegercommissions[].commission_bpsinteger700 = 7%).commissions[].fixed_fee_centsintegercommissions[].commission_amountintegerorder_amount * commission_bps / 10000 + fixed_fee_cents, em centavos.commissions[].statusstringOACIO pendente, A aprovada, C paga, I cancelada.commissions[].paid_atstringcommissions[].created_atstringcommissions[].updated_atstringtotalintegerpageintegerper_pageintegertotal_pagesintegerErros
| Status | Quando | Corpo |
|---|---|---|
| 401 | Sem token ou token inválido | {"error":"missing authorization header"} |
| 403 | Sem o privilégio exigido, ou módulo desligado | {"error":"module_disabled","module":"commissions"} / {"error":"insufficient privileges","required":"manage_vendors"} |
| 500 | date_from/date_to fora de YYYY-MM-DD ou falha na consulta (a mensagem do campo detail pode sugerir outro formato, ignore: vale YYYY-MM-DD) | {"error":"failed to list commissions","detail":"..."} |
Aprovar comissão
Move uma comissão de pending (O) para approved (A). Só funciona a partir de pendente. É o primeiro passo do fluxo manual de conferência.
/api/v1/admin/commissions/{id}/approveAdminAprova uma comissão por plano pendente
Autenticação: Authorization: Bearer <token> de um administrador com o privilégio view_vendors ou manage_vendors (as escritas exigem manage_vendors). O módulo commissions precisa estar ativo na loja; com o módulo desligado a resposta é 403.
Parâmetros de caminho
idintegerobrigatórioid da lista.Exemplo de requisição
curl -X PUT "$BASE_URL/api/v1/admin/commissions/36975/approve" \
-H "Authorization: Bearer $TOKEN"Resposta
{
"status": "approved"
}Erros
| Status | Quando | Corpo |
|---|---|---|
| 401 | Sem token ou token inválido | {"error":"missing authorization header"} |
| 403 | Sem o privilégio exigido, ou módulo desligado | {"error":"module_disabled","module":"commissions"} / {"error":"insufficient privileges","required":"manage_vendors"} |
| 400 | id zero ou negativo, id que não é número, comissão inexistente ou fora do estado pendente | {"error":"invalid id parameter"} / {"error":"invalid commission id"} / {"error":"failed to approve commission","detail":"commission 36975 not found or not in pending status"} |
Marcar como paga
Move de approved (A) para paid (C) e grava paid_at. Só funciona a partir de aprovada: não dá para pular a aprovação.
/api/v1/admin/commissions/{id}/payAdminMarca uma comissão por plano aprovada como paga
Autenticação: Authorization: Bearer <token> de um administrador com o privilégio view_vendors ou manage_vendors (as escritas exigem manage_vendors). O módulo commissions precisa estar ativo na loja; com o módulo desligado a resposta é 403.
Parâmetros de caminho
idintegerobrigatórioExemplo de requisição
curl -X PUT "$BASE_URL/api/v1/admin/commissions/36975/pay" \
-H "Authorization: Bearer $TOKEN"Resposta
{
"status": "paid"
}Erros
| Status | Quando | Corpo |
|---|---|---|
| 401 | Sem token ou token inválido | {"error":"missing authorization header"} |
| 403 | Sem o privilégio exigido, ou módulo desligado | {"error":"module_disabled","module":"commissions"} / {"error":"insufficient privileges","required":"manage_vendors"} |
| 400 | id zero, negativo ou não numérico, comissão inexistente ou fora do estado aprovada | {"error":"invalid id parameter"} / {"error":"failed to mark commission as paid","detail":"commission 36975 not found or not in approved status"} |