Vendas do PDV
Registra vendas numa sessão aberta (com baixa de estoque e NFC-e opcionais), lista as vendas e lê o recibo.
Listar vendas
/api/v1/vendor/erp/pdv/salesSellerLista as vendas do PDV
Parâmetros de consulta
session_iduuidregister_iduuidfromstringtostringpageintegerpadrão: 1per_pageintegerpadrão: 50Exemplo de requisição: Listar vendas
curl "$BASE_URL/api/v1/vendor/erp/pdv/sales?session_id=f403dacc-b763-4866-bf47-a5caee6319f8" \
-H "Authorization: Bearer $TOKEN"Resposta: Listar vendas
{
"sales": [
{
"id": "2b3c4d5e-6f70-4812-93a4-b5c6d7e8f901",
"vendor_id": "94bd7e9a-fdad-4d01-8fc2-ba9d677d8b36",
"session_id": "f403dacc-b763-4866-bf47-a5caee6319f8",
"total_cents": 11980,
"payment_method": "pix",
"created_at": "2026-10-11T14:30:00Z",
"establishment_id": "9e8d7c6b-5a49-4837-a6b5-c4d3e2f1a0b9",
"order_id": "87fdfd05-07bf-4031-a468-219fc35e4e39",
"nfe_record_id": "5a6b7c8d-9e0f-4102-a3b4-c5d6e7f80912",
"emission_status": "authorized"
}
],
"total": 1
}Campos da resposta
salesarrayVendas da página, da mais nova para a mais antiga.
iduuidvendor_iduuidsession_iduuidtotal_centsintegerpayment_methodstringcashcreditdebitpixothercreated_atdatetimestock_appliedintegeritemsarraySó na criação: o carrinho. A listagem não traz itens.
product_iduuidproduct_namestringwarehouse_iduuidquantityintegerunit_price_centsintegerline_total_centsintegerestablishment_iduuidorder_iduuidnfe_record_iduuidemission_statusstringpendingauthorizedfailedfiscal_errorstringfailed.totalintegerErros: Listar vendas
| 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 sales","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"} |
Registrar venda
Grava uma venda numa sessão aberta. Com items, o total é calculado pelo servidor a partir das linhas (e o total_cents enviado é ignorado, exceto na emissão fiscal, veja o aviso). Sem itens, vale o total_cents informado, útil para venda avulsa sem carrinho. Dois comportamentos opcionais: baixar estoque e emitir a NFC-e (nota fiscal de consumidor).
/api/v1/vendor/erp/pdv/salesSellerRegistra uma venda no PDV
Corpo da requisição
session_iduuidobrigatóriopayment_methodstringobrigatóriocashcreditdebitpixothertotal_centsintegeritems com preço.itemsarrayCarrinho.
product_iduuidobrigatórioquantityintegerobrigatóriounit_price_centsintegerproduct_namestringwarehouse_iduuidemit_fiscalbooleanpadrão: falsetrue pede a emissão da NFC-e. Exige establishment_id e itens com produto e preço.establishment_iduuidcustomer_cpfstringcustomer_namestringExemplo de requisição: Registrar venda
curl -X POST "$BASE_URL/api/v1/vendor/erp/pdv/sales" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"session_id": "f403dacc-b763-4866-bf47-a5caee6319f8",
"payment_method": "pix",
"total_cents": 11980,
"items": [
{
"product_id": "94e6917e-8733-4ddc-b446-ed85977117e8",
"product_name": "Camiseta Básica Preta M",
"quantity": 2,
"unit_price_cents": 5990,
"warehouse_id": "8204b8b8-e7e2-4b96-bba8-5a937fe001c8"
}
],
"emit_fiscal": true,
"establishment_id": "9e8d7c6b-5a49-4837-a6b5-c4d3e2f1a0b9",
"customer_cpf": "123.456.789-09"
}'Resposta: Registrar venda
{
"id": "2b3c4d5e-6f70-4812-93a4-b5c6d7e8f901",
"vendor_id": "94bd7e9a-fdad-4d01-8fc2-ba9d677d8b36",
"session_id": "f403dacc-b763-4866-bf47-a5caee6319f8",
"total_cents": 11980,
"payment_method": "pix",
"created_at": "2026-10-11T14:30:00Z",
"stock_applied": 1,
"items": [
{
"product_id": "94e6917e-8733-4ddc-b446-ed85977117e8",
"product_name": "Camiseta Básica Preta M",
"warehouse_id": "8204b8b8-e7e2-4b96-bba8-5a937fe001c8",
"quantity": 2,
"unit_price_cents": 5990,
"line_total_cents": 11980
}
],
"establishment_id": "9e8d7c6b-5a49-4837-a6b5-c4d3e2f1a0b9",
"order_id": "87fdfd05-07bf-4031-a468-219fc35e4e39",
"nfe_record_id": "5a6b7c8d-9e0f-4102-a3b4-c5d6e7f80912",
"emission_status": "authorized"
}Campos da resposta
iduuidvendor_iduuidsession_iduuidtotal_centsintegerpayment_methodstringcashcreditdebitpixothercreated_atdatetimestock_appliedintegeritemsarraySó na criação: o carrinho. A listagem não traz itens.
product_iduuidproduct_namestringwarehouse_iduuidquantityintegerunit_price_centsintegerline_total_centsintegerestablishment_iduuidorder_iduuidnfe_record_iduuidemission_statusstringpendingauthorizedfailedfiscal_errorstringfailed.Erros: Registrar venda
| 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 | session_id em branco. | {"error":"vendorerp: session_id required"} |
| 400 | Forma de pagamento inválida. | {"error":"vendorerp: payment_method must be cash|credit|debit|pix|other"} |
| 400 | Item sem produto. | {"error":"vendorerp: item product_id required"} |
| 400 | Item com quantidade <= 0. | {"error":"vendorerp: item quantity must be > 0"} |
| 400 | Preço negativo. | {"error":"vendorerp: item unit_price_cents must be >= 0"} |
| 400 | Total final menor ou igual a zero. | {"error":"vendorerp: total_cents must be > 0"} |
| 400 | A sessão está fechada. | {"error":"session is not open"} |
| 400 | emit_fiscal sem establishment_id. | {"error":"vendorerp: estabelecimento obrigatório para emissão fiscal"} |
| 400 | emit_fiscal sem item com preço. | {"error":"vendorerp: emissão fiscal exige itens com produto e preço unitário"} |
| 400 | O ambiente não tem emissão fiscal configurada. | {"error":"vendorerp: emissão fiscal indisponível neste ambiente"} |
| 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"} |
Recibo
Devolve os dados para imprimir o comprovante: caixa, sessão, total, pagamento e o vínculo fiscal quando houve emissão. Não traz as linhas do carrinho.
/api/v1/vendor/erp/pdv/sales/{id}/receiptSellerRecibo de uma venda
Parâmetros de caminho
iduuidobrigatórioExemplo de requisição: Recibo
curl "$BASE_URL/api/v1/vendor/erp/pdv/sales/3f6c1c1e-8d0b-4a55-9a52-1d6f6a4a7b10/receipt" \
-H "Authorization: Bearer $TOKEN"Resposta: Recibo
{
"sale_id": "2b3c4d5e-6f70-4812-93a4-b5c6d7e8f901",
"vendor_id": "94bd7e9a-fdad-4d01-8fc2-ba9d677d8b36",
"register_name": "Caixa 01",
"session_id": "f403dacc-b763-4866-bf47-a5caee6319f8",
"total_cents": 11980,
"payment_method": "pix",
"customer_cpf": "123.456.789-09",
"emission_status": "authorized",
"nfe_record_id": "5a6b7c8d-9e0f-4102-a3b4-c5d6e7f80912",
"order_id": "87fdfd05-07bf-4031-a468-219fc35e4e39",
"created_at": "2026-10-11T14:30:00Z"
}Campos da resposta
sale_iduuidvendor_iduuidregister_namestringsession_iduuidtotal_centsintegerpayment_methodstringcustomer_cpfstringcustomer_namestringemission_statusstringnfe_record_iduuidorder_iduuidcreated_atdatetimeErros: Recibo
| Status | Quando | Corpo |
|---|---|---|
| 404 | A venda não existe ou é de outro seller. | {"error":"venda não encontrada"} |
| 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"} |