Repasses
O histórico de repasses aos sellers, a geração por período e o acompanhamento do estado de cada repasse.
O repasse é o registro de uma transferência do valor devido ao seller. Pode nascer de dois jeitos: o financeiro gera um repasse para um período (abaixo), ou ele é registrado ao concluir um pedido de saque (veja Pedidos de saque). Os valores são inteiros em centavos.
Listar repasses
Lista o histórico de repasses: tanto os gerados por período (veja Gerar repasse, abaixo) quanto os registrados ao concluir um pedido de saque.
/api/v1/admin/vendor-payoutsAdminLista os repasses aos sellers
Autenticação: Authorization: Bearer <token> de um administrador com view_vendors ou manage_vendors (as escritas exigem manage_vendors). Requer o módulo vendor-payouts ativo.
Parâmetros de consulta
vendor_iduuidstatusstringOPCFIO, P, C, F, I. As palavras passam por um mapa genérico em que pending vira P (que aqui é em processamento).searchstringpageintegerpadrão: 1per_pageintegerpadrão: 20Exemplo de requisição
curl "$BASE_URL/api/v1/admin/vendor-payouts?status=O&per_page=20" \
-H "Authorization: Bearer $TOKEN"Resposta
{
"payouts": [
{
"id": "a1f2c3d4-0b1c-4d2e-8f30-5a6b7c8d9e01",
"vendor_id": "94bd7e9a-fdad-4d01-8fc2-ba9d677d8b36",
"amount": 99816,
"commission": 0,
"net_amount": 99816,
"status": "O",
"payout_method": "pix",
"period_start": "2026-09-01",
"period_end": "2026-09-30",
"created_at": "2026-10-01T12:00:00Z"
}
],
"total": 1,
"page": 1,
"per_page": 20,
"total_pages": 1
}Campos da resposta
payoutsarraypayouts[].iduuidpayouts[].vendor_iduuidpayouts[].amountintegernet_amount + commission.payouts[].commissioninteger0, porque a comissão já foi abatida em cada entrada do razão.payouts[].net_amountintegerpayouts[].statusstringOPCFIO pendente, P em processamento, C concluído, F falhou, I cancelado.payouts[].payout_methodstringpix ou bank_transfer.payouts[].referencestring | nullpayouts[].period_startstringYYYY-MM-DD.payouts[].period_endstringYYYY-MM-DD.payouts[].notesstring | nullpayouts[].created_atstringpayouts[].completed_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":"vendor-payouts"} / {"error":"insufficient privileges","required":"manage_vendors"} |
| 500 | vendor_id que não é UUID ou falha na consulta | {"error":"failed to list payouts","detail":"..."} |
Consultar um repasse
Devolve um repasse pelo identificador.
/api/v1/admin/vendor-payouts/{id}AdminConsulta um repasse
Autenticação: Authorization: Bearer <token> de um administrador com view_vendors ou manage_vendors (as escritas exigem manage_vendors). Requer o módulo vendor-payouts ativo.
Parâmetros de caminho
iduuidobrigatórioExemplo de requisição
curl "$BASE_URL/api/v1/admin/vendor-payouts/d5ccd9e1-dd21-458c-90a5-4a7f3c2b9e10" \
-H "Authorization: Bearer $TOKEN"Resposta
{
"id": "a1f2c3d4-0b1c-4d2e-8f30-5a6b7c8d9e01",
"vendor_id": "94bd7e9a-fdad-4d01-8fc2-ba9d677d8b36",
"amount": 99816,
"commission": 0,
"net_amount": 99816,
"status": "O",
"payout_method": "pix",
"period_start": "2026-09-01",
"period_end": "2026-09-30",
"created_at": "2026-10-01T12:00:00Z"
}Campos da resposta
iduuidvendor_iduuidamountintegernet_amount + commission.commissioninteger0, porque a comissão já foi abatida em cada entrada do razão.net_amountintegerstatusstringOPCFIO pendente, P em processamento, C concluído, F falhou, I cancelado.payout_methodstringpix ou bank_transfer.referencestring | nullperiod_startstringYYYY-MM-DD.period_endstringYYYY-MM-DD.notesstring | nullcreated_atstringcompleted_atstringErros
| 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":"vendor-payouts"} / {"error":"insufficient privileges","required":"manage_vendors"} |
| 404 | Repasse inexistente | {"error":"payout not found"} |
| 500 | id que não é UUID | {"error":"failed to get payout","detail":"..."} |
Gerar repasse
Soma as entradas confirmadas do seller criadas no período, cria um repasse pendente (O) com o total do seller e marca essas entradas como liquidadas, tudo na mesma transação. É o caminho "por período", usado quando o financeiro paga todos os seller em ciclos (por exemplo, quinzenal), sem esperar o seller pedir.
/api/v1/admin/vendor-payouts/generateAdminGera o repasse de um seller para um período
Autenticação: Authorization: Bearer <token> de um administrador com view_vendors ou manage_vendors (as escritas exigem manage_vendors). Requer o módulo vendor-payouts ativo.
Corpo da requisição
vendor_iduuidobrigatórioperiod_startstringobrigatórioYYYY-MM-DD.period_endstringobrigatórioYYYY-MM-DD, inclusive. Não pode ser anterior ao início.Exemplo de requisição
curl -X POST "$BASE_URL/api/v1/admin/vendor-payouts/generate" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"vendor_id": "94bd7e9a-fdad-4d01-8fc2-ba9d677d8b36",
"period_start": "2026-09-01",
"period_end": "2026-09-30"
}'Resposta
{
"payout_id": "a1f2c3d4-0b1c-4d2e-8f30-5a6b7c8d9e01",
"vendor_id": "94bd7e9a-fdad-4d01-8fc2-ba9d677d8b36",
"period_start": "2026-09-01",
"period_end": "2026-09-30",
"entries_settled": 22,
"gross_amount": 110907,
"commission_amount": 11091,
"vendor_amount": 99816
}Campos da resposta
payout_iduuidvendor_iduuidperiod_startstringYYYY-MM-DD.period_endstringYYYY-MM-DD.entries_settledintegergross_amountintegercommission_amountintegervendor_amountintegerErros
| 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":"vendor-payouts"} / {"error":"insufficient privileges","required":"manage_vendors"} |
| 400 | vendor_id, period_start ou period_end ausentes; data fora de YYYY-MM-DD; fim antes do início; nenhuma entrada confirmada no período; seller inexistente | {"error":"failed to generate payout","detail":"no confirmed commission entries found for vendor ... in the given period"} |
Alterar o estado de um repasse
Conduz o repasse pelo ciclo de pagamento. As transições permitidas são fixas; qualquer outra é recusada.
/api/v1/admin/vendor-payouts/{id}/statusAdminAltera o estado de um repasse
Autenticação: Authorization: Bearer <token> de um administrador com view_vendors ou manage_vendors (as escritas exigem manage_vendors). Requer o módulo vendor-payouts ativo.
Parâmetros de caminho
iduuidobrigatórioCorpo da requisição
statusstringobrigatórioprocessingcompletedfailedcancelledPCFIprocessing, completed, failed, cancelled (ou pending), ou a letra.referencestringreference.Exemplo de requisição
curl -X PATCH "$BASE_URL/api/v1/admin/vendor-payouts/d5ccd9e1-dd21-458c-90a5-4a7f3c2b9e10/status" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"status": "processing"
}'Resposta
{
"id": "a1f2c3d4-0b1c-4d2e-8f30-5a6b7c8d9e01",
"vendor_id": "94bd7e9a-fdad-4d01-8fc2-ba9d677d8b36",
"amount": 99816,
"commission": 0,
"net_amount": 99816,
"status": "P",
"payout_method": "pix",
"period_start": "2026-09-01",
"period_end": "2026-09-30",
"created_at": "2026-10-01T12:00:00Z"
}Campos da resposta
iduuidvendor_iduuidamountintegernet_amount + commission.commissioninteger0, porque a comissão já foi abatida em cada entrada do razão.net_amountintegerstatusstringOPCFIO pendente, P em processamento, C concluído, F falhou, I cancelado.payout_methodstringpix ou bank_transfer.referencestring | nullperiod_startstringYYYY-MM-DD.period_endstringYYYY-MM-DD.notesstring | nullcreated_atstringcompleted_atstringErros
| 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":"vendor-payouts"} / {"error":"insufficient privileges","required":"manage_vendors"} |
| 400 | Corpo inválido ou status vazio | {"error":"status is required"} |
| 404 | Repasse inexistente (às vezes 500, veja a nota) | {"error":"payout not found"} |
| 500 | Transição inválida ou estado desconhecido (devia ser 400) | {"error":"failed to update payout status","detail":"invalid status transition: C -> P (allowed from C: [])"} |