Sessões de caixa
Abre e fecha o turno do caixa, lista as sessões e confere o dinheiro esperado na gaveta.
Listar sessões
Uma sessão (turno de caixa) vai da abertura ao fechamento do caixa. Todas as vendas e movimentações de dinheiro pertencem a uma sessão. A lista vem da mais recente para a mais antiga, sem paginação.
/api/v1/vendor/erp/pdv/sessionsSellerLista as sessões de caixa
Parâmetros de consulta
register_iduuidstatusstringopenclosedExemplo de requisição: Listar sessões
curl "$BASE_URL/api/v1/vendor/erp/pdv/sessions?status=open" \
-H "Authorization: Bearer $TOKEN"Resposta: Listar sessões
{
"sessions": [
{
"id": "f403dacc-b763-4866-bf47-a5caee6319f8",
"vendor_id": "94bd7e9a-fdad-4d01-8fc2-ba9d677d8b36",
"register_id": "db8100b6-51bf-488e-8d77-810d6e7002b4",
"register_name": "Caixa 01",
"opened_by": "b00d3e7c-d5b4-4942-827a-06e2c43645af",
"opened_at": "2026-10-11T14:30:00Z",
"opening_cents": 10000,
"status": "open"
}
],
"total": 1
}Campos da resposta
sessionsarraySessões.
iduuidvendor_iduuidregister_iduuidregister_namestringopened_byuuidopened_atdatetimeclosed_atdatetimeopening_centsintegerclosing_centsintegerexpected_cash_centsintegerdifference_centsintegerstatusstringopenclosedtotalintegerErros: Listar sessões
| Status | Quando | Corpo |
|---|---|---|
| 500 | Um filtro de id não é um UUID válido (a plataforma devolve 500, não 400). | {"error":"failed to list sessions","detail":"o valor \"xyz\" não é um uuid válido. Envie o identificador completo, com os 36 caracteres e os hífens. Corrija o campo e reenvie."} |
| 401 | Cabeçalho Authorization ausente, token inválido, expirado ou revogado. | {"error":"missing authorization header"} |
| 403 | O token não é de um usuário seller (por exemplo, é de administrador). | {"error":"insufficient permissions"} |
| 403 | O usuário não está vinculado a um seller, ou o cadastro do seller ainda está em análise (vendor_pending_review). | {"error":"no vendor account associated with this user"} |
Abrir sessão
/api/v1/vendor/erp/pdv/sessions/openSellerAbre uma sessão de caixa
Corpo da requisição
register_iduuidobrigatórioopening_centsintegerpadrão: 0Exemplo de requisição: Abrir sessão
curl -X POST "$BASE_URL/api/v1/vendor/erp/pdv/sessions/open" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"register_id": "db8100b6-51bf-488e-8d77-810d6e7002b4",
"opening_cents": 10000
}'Resposta: Abrir sessão
{
"id": "f403dacc-b763-4866-bf47-a5caee6319f8",
"vendor_id": "94bd7e9a-fdad-4d01-8fc2-ba9d677d8b36",
"register_id": "db8100b6-51bf-488e-8d77-810d6e7002b4",
"register_name": "Caixa 01",
"opened_by": "b00d3e7c-d5b4-4942-827a-06e2c43645af",
"opened_at": "2026-10-11T14:30:00Z",
"opening_cents": 10000,
"status": "open"
}Campos da resposta
iduuidvendor_iduuidregister_iduuidregister_namestringopened_byuuidopened_atdatetimeclosed_atdatetimeopening_centsintegerclosing_centsintegerexpected_cash_centsintegerdifference_centsintegerstatusstringopenclosedErros: Abrir sessão
| Status | Quando | Corpo |
|---|---|---|
| 400 | Corpo não é um JSON válido. | {"error":"invalid request body","detail":"invalid character 'b' looking for beginning of object key string"} |
| 400 | register_id em branco. | {"error":"vendorerp: register_id required"} |
| 400 | Valor negativo. | {"error":"vendorerp: opening_cents must be >= 0"} |
| 400 | O caixa está inativo. | {"error":"register is inactive"} |
| 400 | O caixa já tem uma sessão aberta. | {"error":"register already has an open session"} |
| 404 | O caixa não existe ou é de outro seller. | {"error":"register not found"} |
| 401 | Cabeçalho Authorization ausente, token inválido, expirado ou revogado. | {"error":"missing authorization header"} |
| 403 | O token não é de um usuário seller (por exemplo, é de administrador). | {"error":"insufficient permissions"} |
| 403 | O usuário não está vinculado a um seller, ou o cadastro do seller ainda está em análise (vendor_pending_review). | {"error":"no vendor account associated with this user"} |
Fechar sessão
Encerra o turno. Você informa o dinheiro que contou na gaveta; a plataforma calcula o que deveria haver (abertura + vendas em dinheiro + suprimentos - sangrias) e grava a diferença, a quebra de caixa. Fechar não pode ser desfeito.
/api/v1/vendor/erp/pdv/sessions/{id}/closeSellerFecha uma sessão de caixa
Parâmetros de caminho
iduuidobrigatórioCorpo da requisição
closing_centsintegerobrigatórioExemplo de requisição: Fechar sessão
curl -X POST "$BASE_URL/api/v1/vendor/erp/pdv/sessions/3f6c1c1e-8d0b-4a55-9a52-1d6f6a4a7b10/close" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"closing_cents": 48500
}'Resposta: Fechar sessão
{
"id": "f403dacc-b763-4866-bf47-a5caee6319f8",
"vendor_id": "94bd7e9a-fdad-4d01-8fc2-ba9d677d8b36",
"register_id": "db8100b6-51bf-488e-8d77-810d6e7002b4",
"register_name": "Caixa 01",
"opened_by": "b00d3e7c-d5b4-4942-827a-06e2c43645af",
"opened_at": "2026-10-11T14:30:00Z",
"opening_cents": 10000,
"status": "closed",
"closed_at": "2026-10-11T22:00:00Z",
"closing_cents": 48500,
"expected_cash_cents": 49000,
"difference_cents": -500
}Campos da resposta
iduuidvendor_iduuidregister_iduuidregister_namestringopened_byuuidopened_atdatetimeclosed_atdatetimeopening_centsintegerclosing_centsintegerexpected_cash_centsintegerdifference_centsintegerstatusstringopenclosedErros: Fechar sessão
| Status | Quando | Corpo |
|---|---|---|
| 400 | Corpo não é um JSON válido. | {"error":"invalid request body","detail":"invalid character 'b' looking for beginning of object key string"} |
| 400 | Valor negativo. | {"error":"vendorerp: closing_cents must be >= 0"} |
| 404 | A sessão não existe ou já foi fechada. | {"error":"open session not found"} |
| 401 | Cabeçalho Authorization ausente, token inválido, expirado ou revogado. | {"error":"missing authorization header"} |
| 403 | O token não é de um usuário seller (por exemplo, é de administrador). | {"error":"insufficient permissions"} |
| 403 | O usuário não está vinculado a um seller, ou o cadastro do seller ainda está em análise (vendor_pending_review). | {"error":"no vendor account associated with this user"} |
Conferir gaveta
Calcula o dinheiro esperado de uma sessão sem fechá-la, para conferir antes do fechamento. Só vendas pagas em cash entram; cartão e PIX não passam pela gaveta. A rota também responde para uma sessão já fechada.
/api/v1/vendor/erp/pdv/sessions/{id}/drawerSellerPrévia do dinheiro esperado na gaveta
Parâmetros de caminho
iduuidobrigatórioExemplo de requisição: Conferir gaveta
curl "$BASE_URL/api/v1/vendor/erp/pdv/sessions/3f6c1c1e-8d0b-4a55-9a52-1d6f6a4a7b10/drawer" \
-H "Authorization: Bearer $TOKEN"Resposta: Conferir gaveta
{
"opening_cents": 10000,
"cash_sales_cents": 35000,
"supply_cents": 5000,
"withdrawal_cents": 1000,
"expected_cash_cents": 49000
}Campos da resposta
opening_centsintegercash_sales_centsintegersupply_centsintegerwithdrawal_centsintegerexpected_cash_centsintegerErros: Conferir gaveta
| Status | Quando | Corpo |
|---|---|---|
| 404 | A sessão não existe ou é de outro seller. | {"error":"session not found"} |
| 401 | Cabeçalho Authorization ausente, token inválido, expirado ou revogado. | {"error":"missing authorization header"} |
| 403 | O token não é de um usuário seller (por exemplo, é de administrador). | {"error":"insufficient permissions"} |
| 403 | O usuário não está vinculado a um seller, ou o cadastro do seller ainda está em análise (vendor_pending_review). | {"error":"no vendor account associated with this user"} |