Vendas / Pedidos
Pedidos são representados como vendas (Sale). Rascunho → itens → finalizar. Uma venda pode vir de OS via POST /service-orders/:id/to-sale; nesse caso o detalhe inclui serviceOrder e o finalize marca a OS como INVOICED.
Base: https://api.nivesistemas.com.br · 58 endpoints
GET /sales
Seção intitulada “GET /sales”Listar vendas
Query params
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
status |
string | não | DRAFT | COMPLETED | CANCELLED | DRAFT_CANCELLED. CANCELLED inclui também rascunhos cancelados |
q |
string | não | Busca (nº pedido, cliente, CPF, vendedor) |
customerId |
uuid | não | Filtrar por cliente |
sellerId |
string | não | Filtrar por vendedor(es) (UUIDs separados por vírgula) |
withoutSeller |
boolean | não | true = vendas sem vendedor |
productId |
uuid | não | Filtrar vendas que contenham o produto |
variantId |
uuid | não | Filtrar por grade/variante específica |
campaignId |
string | não | UUID da campanha, ou “none” para vendas sem item de campanha |
paymentMethodId |
string | não | Filtrar por forma(s) da venda (IDs separados por vírgula) |
receivablePaymentMethodId |
string | não | Filtrar por forma(s) das baixas do crediário (IDs separados por vírgula) |
page |
integer | não | Página |
pageSize |
integer | não | Itens por página (máx. 100) |
completedFrom |
date | não | YYYY-MM-DD — filtro completedAt (finalizadas/canceladas) |
completedTo |
date | não | YYYY-MM-DD — filtro completedAt |
updatedFrom |
date | não | YYYY-MM-DD — filtro updatedAt (rascunhos) |
updatedTo |
date | não | YYYY-MM-DD — filtro updatedAt (rascunhos) |
nfcePending |
boolean | não | true = COMPLETED com NFC-e EMIT_LATER sem documento |
paidViaPaymentLink |
boolean | não | true = pagas via link de pagamento |
sortBy |
string | não | Coluna de ordenação (ex.: updatedAt, completedAt, order) |
sortDir |
string | não | asc | desc |
curl -X GET "https://api.nivesistemas.com.br/sales" \ -H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \ -H "X-Store-Slug: loja-demo"const res = await fetch("https://api.nivesistemas.com.br/sales", { method: "GET", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },});const data = await res.json();import requests
res = requests.request( "GET", "https://api.nivesistemas.com.br/sales", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },)print(res.json())GET /sales/summary
Seção intitulada “GET /sales/summary”Resumo para dashboard de vendas (rascunhos, hoje, NFC-e pendente)
Query params
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
q |
string | não | Mesma busca textual da listagem |
customerId |
uuid | não | Filtrar por cliente |
sellerId |
string | não | Filtrar por vendedor(es) (UUIDs separados por vírgula) |
withoutSeller |
boolean | não | true = vendas sem vendedor |
productId |
uuid | não | Filtrar vendas que contenham o produto |
variantId |
uuid | não | Filtrar por grade/variante específica |
campaignId |
string | não | UUID da campanha ou “none” |
paymentMethodId |
string | não | Filtrar por forma(s) de pagamento (IDs separados por vírgula) |
receivablePaymentMethodId |
string | não | Filtrar por forma(s) das baixas do crediário (IDs separados por vírgula) |
Resposta: draftCount, draftTotalCash, completedTodayCount, completedTodayRevenue, nfcePendingCount, paidViaPaymentLinkCount, ecommerceOrdersActive, ecommerceAFaturarCount
curl -X GET "https://api.nivesistemas.com.br/sales/summary" \ -H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \ -H "X-Store-Slug: loja-demo"const res = await fetch("https://api.nivesistemas.com.br/sales/summary", { method: "GET", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },});const data = await res.json();import requests
res = requests.request( "GET", "https://api.nivesistemas.com.br/sales/summary", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },)print(res.json())POST /sales
Seção intitulada “POST /sales”Criar venda em rascunho
Corpo (JSON)
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
customerId |
uuid | não | Cliente (opcional) |
sellerId |
uuid | não | Vendedor legado (opcional) |
sellerIds |
uuid[] | não | Vendedores (comissão rateada) |
priceListId |
uuid | não | Tabela de preços |
pendingInstagramHandle |
string | não | Instagram pendente (@usuario) quando ainda não há cliente |
Resposta: 201 Created — venda com status DRAFT
curl -X POST "https://api.nivesistemas.com.br/sales" \ -H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \ -H "X-Store-Slug: loja-demo" \ -H "Content-Type: application/json" \ -d '{"customerId":"00000000-0000-0000-0000-000000000000","sellerId":"00000000-0000-0000-0000-000000000000","sellerIds":null,"priceListId":"00000000-0000-0000-0000-000000000000","pendingInstagramHandle":""}'const res = await fetch("https://api.nivesistemas.com.br/sales", { method: "POST", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", "Content-Type": "application/json", }, body: JSON.stringify({ "customerId": "00000000-0000-0000-0000-000000000000", "sellerId": "00000000-0000-0000-0000-000000000000", "sellerIds": null, "priceListId": "00000000-0000-0000-0000-000000000000", "pendingInstagramHandle": "" }),});const data = await res.json();import requests
res = requests.request( "POST", "https://api.nivesistemas.com.br/sales", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", }, json={ "customerId": "00000000-0000-0000-0000-000000000000", "sellerId": "00000000-0000-0000-0000-000000000000", "sellerIds": None, "priceListId": "00000000-0000-0000-0000-000000000000", "pendingInstagramHandle": "" },)print(res.json())GET /sales/:id
Seção intitulada “GET /sales/:id”Detalhe da venda com itens e pagamentos
Parâmetros de rota: id
Resposta: Inclui serviceOrder ({ id, orderNumber, status }) quando a venda fatura uma OS.
curl -X GET "https://api.nivesistemas.com.br/sales/{id}" \ -H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \ -H "X-Store-Slug: loja-demo"const res = await fetch("https://api.nivesistemas.com.br/sales/{id}", { method: "GET", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },});const data = await res.json();import requests
res = requests.request( "GET", "https://api.nivesistemas.com.br/sales/{id}", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },)print(res.json())GET /sales/:id/non-fiscal-receipt-html
Seção intitulada “GET /sales/:id/non-fiscal-receipt-html”Cupom não fiscal 80 mm (somente venda sem NFC-e emitida)
Parâmetros de rota: id
curl -X GET "https://api.nivesistemas.com.br/sales/{id}/non-fiscal-receipt-html" \ -H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \ -H "X-Store-Slug: loja-demo"const res = await fetch("https://api.nivesistemas.com.br/sales/{id}/non-fiscal-receipt-html", { method: "GET", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },});const data = await res.json();import requests
res = requests.request( "GET", "https://api.nivesistemas.com.br/sales/{id}/non-fiscal-receipt-html", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },)print(res.json())GET /sales/:id/order-pdf
Seção intitulada “GET /sales/:id/order-pdf”PDF A4 do pedido (somente venda sem NFC-e emitida)
Parâmetros de rota: id
curl -X GET "https://api.nivesistemas.com.br/sales/{id}/order-pdf" \ -H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \ -H "X-Store-Slug: loja-demo"const res = await fetch("https://api.nivesistemas.com.br/sales/{id}/order-pdf", { method: "GET", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },});const data = await res.json();import requests
res = requests.request( "GET", "https://api.nivesistemas.com.br/sales/{id}/order-pdf", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },)print(res.json())POST /sales/:id/notify-receipt
Seção intitulada “POST /sales/:id/notify-receipt”Enviar conferência da venda por e-mail ao cliente
Parâmetros de rota: id
Corpo (JSON)
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
email |
string | sim | E-mail de destino |
curl -X POST "https://api.nivesistemas.com.br/sales/{id}/notify-receipt" \ -H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \ -H "X-Store-Slug: loja-demo" \ -H "Content-Type: application/json" \ -d '{"email":""}'const res = await fetch("https://api.nivesistemas.com.br/sales/{id}/notify-receipt", { method: "POST", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", "Content-Type": "application/json", }, body: JSON.stringify({ "email": "" }),});const data = await res.json();import requests
res = requests.request( "POST", "https://api.nivesistemas.com.br/sales/{id}/notify-receipt", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", }, json={ "email": "" },)print(res.json())POST /sales/:id/send-fiscal-email
Seção intitulada “POST /sales/:id/send-fiscal-email”Enviar XML e PDF das notas autorizadas da venda (NFC-e/NF-e e/ou NFS-e)
Parâmetros de rota: id
Corpo (JSON)
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
email |
string | sim | E-mail de destino |
curl -X POST "https://api.nivesistemas.com.br/sales/{id}/send-fiscal-email" \ -H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \ -H "X-Store-Slug: loja-demo" \ -H "Content-Type: application/json" \ -d '{"email":""}'const res = await fetch("https://api.nivesistemas.com.br/sales/{id}/send-fiscal-email", { method: "POST", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", "Content-Type": "application/json", }, body: JSON.stringify({ "email": "" }),});const data = await res.json();import requests
res = requests.request( "POST", "https://api.nivesistemas.com.br/sales/{id}/send-fiscal-email", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", }, json={ "email": "" },)print(res.json())PATCH /sales/:id/completed-at
Seção intitulada “PATCH /sales/:id/completed-at”Alterar data de conclusão de venda importada (LEGACY_IMPORT)
Parâmetros de rota: id
Corpo (JSON)
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
saleDate |
string | sim | AAAA-MM-DD |
curl -X PATCH "https://api.nivesistemas.com.br/sales/{id}/completed-at" \ -H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \ -H "X-Store-Slug: loja-demo" \ -H "Content-Type: application/json" \ -d '{"saleDate":""}'const res = await fetch("https://api.nivesistemas.com.br/sales/{id}/completed-at", { method: "PATCH", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", "Content-Type": "application/json", }, body: JSON.stringify({ "saleDate": "" }),});const data = await res.json();import requests
res = requests.request( "PATCH", "https://api.nivesistemas.com.br/sales/{id}/completed-at", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", }, json={ "saleDate": "" },)print(res.json())PATCH /sales/:id
Seção intitulada “PATCH /sales/:id”Atualizar venda (cliente, vendedor, observações, descontos)
Parâmetros de rota: id
Corpo (JSON)
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
customerId |
uuid | não | Cliente |
sellerId |
uuid | não | Vendedor |
sellerIds |
uuid[] | não | Vendedores (comissão rateada) |
notes |
string | não | Observações |
shippingAmount |
number | não | Valor de entrega (frete financeiro) |
priceListId |
uuid | não | Tabela de preços |
pendingInstagramHandle |
string | não | Instagram pendente |
discountType |
string | não | NONE | PERCENT | FIXED |
discountValue |
number | não | Valor do desconto |
couponId |
uuid | não | Cupom aplicado |
curl -X PATCH "https://api.nivesistemas.com.br/sales/{id}" \ -H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \ -H "X-Store-Slug: loja-demo" \ -H "Content-Type: application/json" \ -d '{"customerId":"00000000-0000-0000-0000-000000000000","sellerId":"00000000-0000-0000-0000-000000000000","sellerIds":null,"notes":"","shippingAmount":0,"priceListId":"00000000-0000-0000-0000-000000000000","pendingInstagramHandle":"","discountType":"","discountValue":0,"couponId":"00000000-0000-0000-0000-000000000000"}'const res = await fetch("https://api.nivesistemas.com.br/sales/{id}", { method: "PATCH", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", "Content-Type": "application/json", }, body: JSON.stringify({ "customerId": "00000000-0000-0000-0000-000000000000", "sellerId": "00000000-0000-0000-0000-000000000000", "sellerIds": null, "notes": "", "shippingAmount": 0, "priceListId": "00000000-0000-0000-0000-000000000000", "pendingInstagramHandle": "", "discountType": "", "discountValue": 0, "couponId": "00000000-0000-0000-0000-000000000000" }),});const data = await res.json();import requests
res = requests.request( "PATCH", "https://api.nivesistemas.com.br/sales/{id}", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", }, json={ "customerId": "00000000-0000-0000-0000-000000000000", "sellerId": "00000000-0000-0000-0000-000000000000", "sellerIds": None, "notes": "", "shippingAmount": 0, "priceListId": "00000000-0000-0000-0000-000000000000", "pendingInstagramHandle": "", "discountType": "", "discountValue": 0, "couponId": "00000000-0000-0000-0000-000000000000" },)print(res.json())POST /sales/:id/payment-link
Seção intitulada “POST /sales/:id/payment-link”Gerar link de pagamento para venda em rascunho
Parâmetros de rota: id
Resposta: 201 — { link, url } com token e expiresAt
curl -X POST "https://api.nivesistemas.com.br/sales/{id}/payment-link" \ -H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \ -H "X-Store-Slug: loja-demo"const res = await fetch("https://api.nivesistemas.com.br/sales/{id}/payment-link", { method: "POST", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },});const data = await res.json();import requests
res = requests.request( "POST", "https://api.nivesistemas.com.br/sales/{id}/payment-link", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },)print(res.json())POST /sales/:id/items
Seção intitulada “POST /sales/:id/items”Adicionar item à venda
Parâmetros de rota: id
Corpo (JSON)
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
variantId |
uuid | sim | ID da variante do produto |
quantity |
integer | sim | Quantidade |
unitPriceCash |
number | não | Preço à vista manual |
unitPriceCredit |
number | não | Preço a prazo manual |
lineNotes |
string | não | Observação do item |
discountType |
string | não | NONE | PERCENT | FIXED |
discountValue |
number | não | Desconto do item |
curl -X POST "https://api.nivesistemas.com.br/sales/{id}/items" \ -H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \ -H "X-Store-Slug: loja-demo" \ -H "Content-Type: application/json" \ -d '{"variantId":"00000000-0000-0000-0000-000000000000","quantity":1,"unitPriceCash":0,"unitPriceCredit":0,"lineNotes":"","discountType":"","discountValue":0}'const res = await fetch("https://api.nivesistemas.com.br/sales/{id}/items", { method: "POST", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", "Content-Type": "application/json", }, body: JSON.stringify({ "variantId": "00000000-0000-0000-0000-000000000000", "quantity": 1, "unitPriceCash": 0, "unitPriceCredit": 0, "lineNotes": "", "discountType": "", "discountValue": 0 }),});const data = await res.json();import requests
res = requests.request( "POST", "https://api.nivesistemas.com.br/sales/{id}/items", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", }, json={ "variantId": "00000000-0000-0000-0000-000000000000", "quantity": 1, "unitPriceCash": 0, "unitPriceCredit": 0, "lineNotes": "", "discountType": "", "discountValue": 0 },)print(res.json())POST /sales/:id/items/bulk-remove
Seção intitulada “POST /sales/:id/items/bulk-remove”Remover vários itens da venda (rascunho)
Parâmetros de rota: id
Corpo (JSON)
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
itemIds |
uuid[] | sim | IDs dos itens do carrinho a remover |
curl -X POST "https://api.nivesistemas.com.br/sales/{id}/items/bulk-remove" \ -H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \ -H "X-Store-Slug: loja-demo" \ -H "Content-Type: application/json" \ -d '{"itemIds":null}'const res = await fetch("https://api.nivesistemas.com.br/sales/{id}/items/bulk-remove", { method: "POST", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", "Content-Type": "application/json", }, body: JSON.stringify({ "itemIds": null }),});const data = await res.json();import requests
res = requests.request( "POST", "https://api.nivesistemas.com.br/sales/{id}/items/bulk-remove", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", }, json={ "itemIds": None },)print(res.json())PATCH /sales/:id/items/:itemId
Seção intitulada “PATCH /sales/:id/items/:itemId”Alterar item (quantidade, preços, desconto, notas)
Parâmetros de rota: id, itemId
Corpo (JSON)
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
quantity |
integer | não | Nova quantidade |
unitPriceCash |
number | não | Preço à vista |
unitPriceCredit |
number | não | Preço a prazo |
lineNotes |
string | não | Observação do item |
discountType |
string | não | NONE | PERCENT | FIXED |
discountValue |
number | não | Desconto do item |
curl -X PATCH "https://api.nivesistemas.com.br/sales/{id}/items/{itemId}" \ -H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \ -H "X-Store-Slug: loja-demo" \ -H "Content-Type: application/json" \ -d '{"quantity":1,"unitPriceCash":0,"unitPriceCredit":0,"lineNotes":"","discountType":"","discountValue":0}'const res = await fetch("https://api.nivesistemas.com.br/sales/{id}/items/{itemId}", { method: "PATCH", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", "Content-Type": "application/json", }, body: JSON.stringify({ "quantity": 1, "unitPriceCash": 0, "unitPriceCredit": 0, "lineNotes": "", "discountType": "", "discountValue": 0 }),});const data = await res.json();import requests
res = requests.request( "PATCH", "https://api.nivesistemas.com.br/sales/{id}/items/{itemId}", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", }, json={ "quantity": 1, "unitPriceCash": 0, "unitPriceCredit": 0, "lineNotes": "", "discountType": "", "discountValue": 0 },)print(res.json())POST /sales/:id/items/:itemId/campaign-price
Seção intitulada “POST /sales/:id/items/:itemId/campaign-price”Aplicar preço de campanha ao item
Parâmetros de rota: id, itemId
curl -X POST "https://api.nivesistemas.com.br/sales/{id}/items/{itemId}/campaign-price" \ -H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \ -H "X-Store-Slug: loja-demo"const res = await fetch("https://api.nivesistemas.com.br/sales/{id}/items/{itemId}/campaign-price", { method: "POST", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },});const data = await res.json();import requests
res = requests.request( "POST", "https://api.nivesistemas.com.br/sales/{id}/items/{itemId}/campaign-price", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },)print(res.json())DELETE /sales/:id/items/:itemId/campaign-price
Seção intitulada “DELETE /sales/:id/items/:itemId/campaign-price”Remover preço de campanha do item
Parâmetros de rota: id, itemId
curl -X DELETE "https://api.nivesistemas.com.br/sales/{id}/items/{itemId}/campaign-price" \ -H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \ -H "X-Store-Slug: loja-demo"const res = await fetch("https://api.nivesistemas.com.br/sales/{id}/items/{itemId}/campaign-price", { method: "DELETE", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },});const data = await res.json();import requests
res = requests.request( "DELETE", "https://api.nivesistemas.com.br/sales/{id}/items/{itemId}/campaign-price", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },)print(res.json())DELETE /sales/:id/items/:itemId
Seção intitulada “DELETE /sales/:id/items/:itemId”Remover item da venda
Parâmetros de rota: id, itemId
Resposta: 204 No Content
curl -X DELETE "https://api.nivesistemas.com.br/sales/{id}/items/{itemId}" \ -H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \ -H "X-Store-Slug: loja-demo"const res = await fetch("https://api.nivesistemas.com.br/sales/{id}/items/{itemId}", { method: "DELETE", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },});const data = await res.json();import requests
res = requests.request( "DELETE", "https://api.nivesistemas.com.br/sales/{id}/items/{itemId}", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },)print(res.json())DELETE /sales/:id
Seção intitulada “DELETE /sales/:id”Excluir venda em rascunho
Parâmetros de rota: id
Resposta: 204 No Content — apaga o registro. Prefira POST /cancel-draft para manter histórico.
curl -X DELETE "https://api.nivesistemas.com.br/sales/{id}" \ -H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \ -H "X-Store-Slug: loja-demo"const res = await fetch("https://api.nivesistemas.com.br/sales/{id}", { method: "DELETE", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },});const data = await res.json();import requests
res = requests.request( "DELETE", "https://api.nivesistemas.com.br/sales/{id}", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },)print(res.json())POST /sales/:id/cancel-draft
Seção intitulada “POST /sales/:id/cancel-draft”Cancelar rascunho/condicional sem excluir
Parâmetros de rota: id
Corpo (JSON)
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
reason |
string | não | Motivo opcional (máx. 500) |
Resposta: 200 — { id, status: DRAFT_CANCELLED, cancelledAt, orderNumber, itemCount }. Peças voltam à loja; o pedido permanece na aba Canceladas.
curl -X POST "https://api.nivesistemas.com.br/sales/{id}/cancel-draft" \ -H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \ -H "X-Store-Slug: loja-demo" \ -H "Content-Type: application/json" \ -d '{"reason":""}'const res = await fetch("https://api.nivesistemas.com.br/sales/{id}/cancel-draft", { method: "POST", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", "Content-Type": "application/json", }, body: JSON.stringify({ "reason": "" }),});const data = await res.json();import requests
res = requests.request( "POST", "https://api.nivesistemas.com.br/sales/{id}/cancel-draft", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", }, json={ "reason": "" },)print(res.json())POST /sales/:id/finalize
Seção intitulada “POST /sales/:id/finalize”Finalizar venda (baixa estoque, registra pagamentos). Se a venda veio de OS (to-sale), marca a OS como INVOICED, vincula NFS-e à OS/venda e cancela recebíveis abertos da OS.
Parâmetros de rota: id
Corpo (JSON)
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
priceBasis |
string | não | CASH | CREDIT | MIXED (opcional) |
payments |
array | sim | Lista: paymentMethodId, amount, installments?, amountTendered?, pixChargeId?, cardPaymentId?, storeCreditId?, … |
customerId |
uuid | não | Cliente |
sellerId |
uuid | não | Vendedor legado |
sellerIds |
uuid[] | não | Vendedores (comissão rateada) |
discountType |
string | não | NONE | PERCENT | FIXED |
discountValue |
number | não | Valor do desconto |
skipCashTableDiscount |
boolean | não | Pular desconto da tabela à vista |
useCashPriceOnCredit |
boolean | não | Crediário usando preço à vista |
notes |
string | não | Observações |
nfceIntent |
string | não | Intent do documento de mercadoria (NFC-e 65 ou NF-e 55): EMIT_NOW | EMIT_LATER | NON_TAXABLE | SKIP |
nfseIntent |
string | não | Intent da NFS-e (serviço): EMIT_NOW | EMIT_LATER | SKIP. Se a OS vinculada já tiver NFS-e autorizada/pendente, não reemite. |
goodsDocumentType |
string | não | Override do tipo documental de mercadoria: NFCE_65 | NFE_55 | NONE. Sem override, usa a preferência do cliente e em seguida o resolver (canal / contribuinte). |
transactionIntermediary |
object | não | Intermediador da transação (NT 2020.006). Omitido = sem marketplace (balcão/remessa). indIntermed: 0 | 1; se 1, informe cnpj e registrationId (idCadIntTran). |
nonTaxableReason |
string | não | Motivo da não tributação |
nonTaxableTaxId |
string | não | CPF/CNPJ para não tributável |
loyaltyRedeemPoints |
integer | não | Pontos de fidelidade a resgatar |
settleReceivables |
object | não | { amount, paymentMethodId, discountAmount?, cardPaymentId?, installments?, notes? } — baixa de crediário junto com a venda |
notifyCustomerWhatsApp |
boolean | não | Enviar comprovante ao cliente no WhatsApp. Omitido mantém o envio automático. |
customerWhatsAppPhone |
string | não | WhatsApp informado no PDV quando o cliente ainda não tem número |
nfeExtras |
object | null | não | NF-e 55: transporte e dados opcionais { freightMode?, vehicle?, trailers?, volumes?, insurance?, otherExpenses?, taxpayerNote?, fiscoNote? }. Só vale com goodsDocumentType NFE_55; ignorado na NFC-e. |
curl -X POST "https://api.nivesistemas.com.br/sales/{id}/finalize" \ -H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \ -H "X-Store-Slug: loja-demo" \ -H "Content-Type: application/json" \ -d '{"priceBasis":"","payments":[],"customerId":"00000000-0000-0000-0000-000000000000","sellerId":"00000000-0000-0000-0000-000000000000","sellerIds":null,"discountType":"","discountValue":0,"skipCashTableDiscount":true,"useCashPriceOnCredit":true,"notes":"","nfceIntent":"","nfseIntent":"","goodsDocumentType":"","transactionIntermediary":null,"nonTaxableReason":"","nonTaxableTaxId":"","loyaltyRedeemPoints":1,"settleReceivables":null,"notifyCustomerWhatsApp":true,"customerWhatsAppPhone":"","nfeExtras":null}'const res = await fetch("https://api.nivesistemas.com.br/sales/{id}/finalize", { method: "POST", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", "Content-Type": "application/json", }, body: JSON.stringify({ "priceBasis": "", "payments": [], "customerId": "00000000-0000-0000-0000-000000000000", "sellerId": "00000000-0000-0000-0000-000000000000", "sellerIds": null, "discountType": "", "discountValue": 0, "skipCashTableDiscount": true, "useCashPriceOnCredit": true, "notes": "", "nfceIntent": "", "nfseIntent": "", "goodsDocumentType": "", "transactionIntermediary": null, "nonTaxableReason": "", "nonTaxableTaxId": "", "loyaltyRedeemPoints": 1, "settleReceivables": null, "notifyCustomerWhatsApp": true, "customerWhatsAppPhone": "", "nfeExtras": null }),});const data = await res.json();import requests
res = requests.request( "POST", "https://api.nivesistemas.com.br/sales/{id}/finalize", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", }, json={ "priceBasis": "", "payments": [], "customerId": "00000000-0000-0000-0000-000000000000", "sellerId": "00000000-0000-0000-0000-000000000000", "sellerIds": None, "discountType": "", "discountValue": 0, "skipCashTableDiscount": True, "useCashPriceOnCredit": True, "notes": "", "nfceIntent": "", "nfseIntent": "", "goodsDocumentType": "", "transactionIntermediary": None, "nonTaxableReason": "", "nonTaxableTaxId": "", "loyaltyRedeemPoints": 1, "settleReceivables": None, "notifyCustomerWhatsApp": True, "customerWhatsAppPhone": "", "nfeExtras": None },)print(res.json())GET /sales/:id/nfe-checkout
Seção intitulada “GET /sales/:id/nfe-checkout”Prévia do checkout da NF-e 55 (frete, volumes, duplicatas, avisos)
Parâmetros de rota: id
Resposta: { saleId, shippingAmount, carrier, calculatedVolume, effectiveVolume, extras, duplicates[{ number, dueDate, amount }], hazardItems[{ description, text, warnings }], warnings[], locked }. Funciona com a venda em rascunho; locked = NF-e já autorizada.
curl -X GET "https://api.nivesistemas.com.br/sales/{id}/nfe-checkout" \ -H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \ -H "X-Store-Slug: loja-demo"const res = await fetch("https://api.nivesistemas.com.br/sales/{id}/nfe-checkout", { method: "GET", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },});const data = await res.json();import requests
res = requests.request( "GET", "https://api.nivesistemas.com.br/sales/{id}/nfe-checkout", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },)print(res.json())PUT /sales/:id/nfe-extras
Seção intitulada “PUT /sales/:id/nfe-extras”Gravar transporte e dados opcionais da NF-e 55 (venda finalizada, NF-e ainda não autorizada)
Parâmetros de rota: id
Corpo (JSON)
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
nfeExtras |
object | null | sim | freightMode (0|1|2|3|4|9), vehicle { plate, uf, rntc? }, trailers[] (até 5), volumes { quantity, species, brand, number, netWeight, grossWeight, seals[] }, insurance e otherExpenses (R$, fatias do frete cobrado), taxpayerNote e fiscoNote (até 2000). null limpa tudo. |
Resposta: { nfeExtras }. 409/400 com error em português quando a NF-e não pode mais ser alterada ou os dados são inválidos.
curl -X PUT "https://api.nivesistemas.com.br/sales/{id}/nfe-extras" \ -H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \ -H "X-Store-Slug: loja-demo" \ -H "Content-Type: application/json" \ -d '{"nfeExtras":null}'const res = await fetch("https://api.nivesistemas.com.br/sales/{id}/nfe-extras", { method: "PUT", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", "Content-Type": "application/json", }, body: JSON.stringify({ "nfeExtras": null }),});const data = await res.json();import requests
res = requests.request( "PUT", "https://api.nivesistemas.com.br/sales/{id}/nfe-extras", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", }, json={ "nfeExtras": None },)print(res.json())PATCH /sales/:id/customer
Seção intitulada “PATCH /sales/:id/customer”Alterar cliente da venda
Parâmetros de rota: id
curl -X PATCH "https://api.nivesistemas.com.br/sales/{id}/customer" \ -H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \ -H "X-Store-Slug: loja-demo"const res = await fetch("https://api.nivesistemas.com.br/sales/{id}/customer", { method: "PATCH", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },});const data = await res.json();import requests
res = requests.request( "PATCH", "https://api.nivesistemas.com.br/sales/{id}/customer", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },)print(res.json())PATCH /sales/bulk/seller
Seção intitulada “PATCH /sales/bulk/seller”Alterar vendedor
curl -X PATCH "https://api.nivesistemas.com.br/sales/bulk/seller" \ -H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \ -H "X-Store-Slug: loja-demo"const res = await fetch("https://api.nivesistemas.com.br/sales/bulk/seller", { method: "PATCH", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },});const data = await res.json();import requests
res = requests.request( "PATCH", "https://api.nivesistemas.com.br/sales/bulk/seller", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },)print(res.json())GET /sales/bulk/seller/apply-defaults/jobs
Seção intitulada “GET /sales/bulk/seller/apply-defaults/jobs”Listar jobs
curl -X GET "https://api.nivesistemas.com.br/sales/bulk/seller/apply-defaults/jobs" \ -H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \ -H "X-Store-Slug: loja-demo"const res = await fetch("https://api.nivesistemas.com.br/sales/bulk/seller/apply-defaults/jobs", { method: "GET", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },});const data = await res.json();import requests
res = requests.request( "GET", "https://api.nivesistemas.com.br/sales/bulk/seller/apply-defaults/jobs", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },)print(res.json())DELETE /sales/bulk/seller/apply-defaults/jobs/:jobId
Seção intitulada “DELETE /sales/bulk/seller/apply-defaults/jobs/:jobId”Cancelar / remover job
Parâmetros de rota: jobId
curl -X DELETE "https://api.nivesistemas.com.br/sales/bulk/seller/apply-defaults/jobs/{jobId}" \ -H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \ -H "X-Store-Slug: loja-demo"const res = await fetch("https://api.nivesistemas.com.br/sales/bulk/seller/apply-defaults/jobs/{jobId}", { method: "DELETE", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },});const data = await res.json();import requests
res = requests.request( "DELETE", "https://api.nivesistemas.com.br/sales/bulk/seller/apply-defaults/jobs/{jobId}", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },)print(res.json())POST /sales/bulk/seller/apply-defaults
Seção intitulada “POST /sales/bulk/seller/apply-defaults”Aplicar vendedor padrão em lote
curl -X POST "https://api.nivesistemas.com.br/sales/bulk/seller/apply-defaults" \ -H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \ -H "X-Store-Slug: loja-demo"const res = await fetch("https://api.nivesistemas.com.br/sales/bulk/seller/apply-defaults", { method: "POST", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },});const data = await res.json();import requests
res = requests.request( "POST", "https://api.nivesistemas.com.br/sales/bulk/seller/apply-defaults", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },)print(res.json())GET /sales/bulk/seller/recalc-commissions/jobs
Seção intitulada “GET /sales/bulk/seller/recalc-commissions/jobs”Listar jobs
curl -X GET "https://api.nivesistemas.com.br/sales/bulk/seller/recalc-commissions/jobs" \ -H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \ -H "X-Store-Slug: loja-demo"const res = await fetch("https://api.nivesistemas.com.br/sales/bulk/seller/recalc-commissions/jobs", { method: "GET", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },});const data = await res.json();import requests
res = requests.request( "GET", "https://api.nivesistemas.com.br/sales/bulk/seller/recalc-commissions/jobs", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },)print(res.json())DELETE /sales/bulk/seller/recalc-commissions/jobs/:jobId
Seção intitulada “DELETE /sales/bulk/seller/recalc-commissions/jobs/:jobId”Cancelar / remover job
Parâmetros de rota: jobId
curl -X DELETE "https://api.nivesistemas.com.br/sales/bulk/seller/recalc-commissions/jobs/{jobId}" \ -H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \ -H "X-Store-Slug: loja-demo"const res = await fetch("https://api.nivesistemas.com.br/sales/bulk/seller/recalc-commissions/jobs/{jobId}", { method: "DELETE", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },});const data = await res.json();import requests
res = requests.request( "DELETE", "https://api.nivesistemas.com.br/sales/bulk/seller/recalc-commissions/jobs/{jobId}", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },)print(res.json())POST /sales/bulk/seller/recalc-commissions
Seção intitulada “POST /sales/bulk/seller/recalc-commissions”Recalcular comissões em lote
curl -X POST "https://api.nivesistemas.com.br/sales/bulk/seller/recalc-commissions" \ -H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \ -H "X-Store-Slug: loja-demo"const res = await fetch("https://api.nivesistemas.com.br/sales/bulk/seller/recalc-commissions", { method: "POST", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },});const data = await res.json();import requests
res = requests.request( "POST", "https://api.nivesistemas.com.br/sales/bulk/seller/recalc-commissions", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },)print(res.json())GET /sales/seller-schedules
Seção intitulada “GET /sales/seller-schedules”Listar agendas de vendedor
curl -X GET "https://api.nivesistemas.com.br/sales/seller-schedules" \ -H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \ -H "X-Store-Slug: loja-demo"const res = await fetch("https://api.nivesistemas.com.br/sales/seller-schedules", { method: "GET", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },});const data = await res.json();import requests
res = requests.request( "GET", "https://api.nivesistemas.com.br/sales/seller-schedules", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },)print(res.json())POST /sales/seller-schedules
Seção intitulada “POST /sales/seller-schedules”Criar agenda de vendedor
curl -X POST "https://api.nivesistemas.com.br/sales/seller-schedules" \ -H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \ -H "X-Store-Slug: loja-demo"const res = await fetch("https://api.nivesistemas.com.br/sales/seller-schedules", { method: "POST", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },});const data = await res.json();import requests
res = requests.request( "POST", "https://api.nivesistemas.com.br/sales/seller-schedules", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },)print(res.json())GET /sales/seller-schedules/apply/jobs
Seção intitulada “GET /sales/seller-schedules/apply/jobs”Listar jobs
curl -X GET "https://api.nivesistemas.com.br/sales/seller-schedules/apply/jobs" \ -H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \ -H "X-Store-Slug: loja-demo"const res = await fetch("https://api.nivesistemas.com.br/sales/seller-schedules/apply/jobs", { method: "GET", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },});const data = await res.json();import requests
res = requests.request( "GET", "https://api.nivesistemas.com.br/sales/seller-schedules/apply/jobs", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },)print(res.json())DELETE /sales/seller-schedules/apply/jobs/:jobId
Seção intitulada “DELETE /sales/seller-schedules/apply/jobs/:jobId”Cancelar / remover job
Parâmetros de rota: jobId
curl -X DELETE "https://api.nivesistemas.com.br/sales/seller-schedules/apply/jobs/{jobId}" \ -H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \ -H "X-Store-Slug: loja-demo"const res = await fetch("https://api.nivesistemas.com.br/sales/seller-schedules/apply/jobs/{jobId}", { method: "DELETE", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },});const data = await res.json();import requests
res = requests.request( "DELETE", "https://api.nivesistemas.com.br/sales/seller-schedules/apply/jobs/{jobId}", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },)print(res.json())GET /sales/seller-schedules/:id
Seção intitulada “GET /sales/seller-schedules/:id”Detalhe da agenda
Parâmetros de rota: id
curl -X GET "https://api.nivesistemas.com.br/sales/seller-schedules/{id}" \ -H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \ -H "X-Store-Slug: loja-demo"const res = await fetch("https://api.nivesistemas.com.br/sales/seller-schedules/{id}", { method: "GET", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },});const data = await res.json();import requests
res = requests.request( "GET", "https://api.nivesistemas.com.br/sales/seller-schedules/{id}", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },)print(res.json())PATCH /sales/seller-schedules/:id
Seção intitulada “PATCH /sales/seller-schedules/:id”Atualizar agenda
Parâmetros de rota: id
curl -X PATCH "https://api.nivesistemas.com.br/sales/seller-schedules/{id}" \ -H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \ -H "X-Store-Slug: loja-demo"const res = await fetch("https://api.nivesistemas.com.br/sales/seller-schedules/{id}", { method: "PATCH", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },});const data = await res.json();import requests
res = requests.request( "PATCH", "https://api.nivesistemas.com.br/sales/seller-schedules/{id}", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },)print(res.json())DELETE /sales/seller-schedules/:id
Seção intitulada “DELETE /sales/seller-schedules/:id”Excluir agenda
Parâmetros de rota: id
curl -X DELETE "https://api.nivesistemas.com.br/sales/seller-schedules/{id}" \ -H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \ -H "X-Store-Slug: loja-demo"const res = await fetch("https://api.nivesistemas.com.br/sales/seller-schedules/{id}", { method: "DELETE", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },});const data = await res.json();import requests
res = requests.request( "DELETE", "https://api.nivesistemas.com.br/sales/seller-schedules/{id}", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },)print(res.json())GET /sales/seller-schedules/:id/preview
Seção intitulada “GET /sales/seller-schedules/:id/preview”Prévia da aplicação da agenda
Parâmetros de rota: id
curl -X GET "https://api.nivesistemas.com.br/sales/seller-schedules/{id}/preview" \ -H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \ -H "X-Store-Slug: loja-demo"const res = await fetch("https://api.nivesistemas.com.br/sales/seller-schedules/{id}/preview", { method: "GET", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },});const data = await res.json();import requests
res = requests.request( "GET", "https://api.nivesistemas.com.br/sales/seller-schedules/{id}/preview", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },)print(res.json())POST /sales/seller-schedules/:id/apply
Seção intitulada “POST /sales/seller-schedules/:id/apply”Aplicar
Parâmetros de rota: id
curl -X POST "https://api.nivesistemas.com.br/sales/seller-schedules/{id}/apply" \ -H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \ -H "X-Store-Slug: loja-demo"const res = await fetch("https://api.nivesistemas.com.br/sales/seller-schedules/{id}/apply", { method: "POST", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },});const data = await res.json();import requests
res = requests.request( "POST", "https://api.nivesistemas.com.br/sales/seller-schedules/{id}/apply", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },)print(res.json())PATCH /sales/:id/seller
Seção intitulada “PATCH /sales/:id/seller”Alterar vendedor
Parâmetros de rota: id
curl -X PATCH "https://api.nivesistemas.com.br/sales/{id}/seller" \ -H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \ -H "X-Store-Slug: loja-demo"const res = await fetch("https://api.nivesistemas.com.br/sales/{id}/seller", { method: "PATCH", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },});const data = await res.json();import requests
res = requests.request( "PATCH", "https://api.nivesistemas.com.br/sales/{id}/seller", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },)print(res.json())POST /sales/:id/recalculate-prices
Seção intitulada “POST /sales/:id/recalculate-prices”Recalcular preços
Parâmetros de rota: id
curl -X POST "https://api.nivesistemas.com.br/sales/{id}/recalculate-prices" \ -H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \ -H "X-Store-Slug: loja-demo"const res = await fetch("https://api.nivesistemas.com.br/sales/{id}/recalculate-prices", { method: "POST", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },});const data = await res.json();import requests
res = requests.request( "POST", "https://api.nivesistemas.com.br/sales/{id}/recalculate-prices", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },)print(res.json())POST /sales/:id/recalculate-card-fees
Seção intitulada “POST /sales/:id/recalculate-card-fees”Recalcular taxas de cartão da venda
Parâmetros de rota: id
curl -X POST "https://api.nivesistemas.com.br/sales/{id}/recalculate-card-fees" \ -H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \ -H "X-Store-Slug: loja-demo"const res = await fetch("https://api.nivesistemas.com.br/sales/{id}/recalculate-card-fees", { method: "POST", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },});const data = await res.json();import requests
res = requests.request( "POST", "https://api.nivesistemas.com.br/sales/{id}/recalculate-card-fees", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },)print(res.json())POST /sales/:id/credit-term-printed
Seção intitulada “POST /sales/:id/credit-term-printed”Registrar impressão do carnê/termo de crédito
Parâmetros de rota: id
curl -X POST "https://api.nivesistemas.com.br/sales/{id}/credit-term-printed" \ -H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \ -H "X-Store-Slug: loja-demo"const res = await fetch("https://api.nivesistemas.com.br/sales/{id}/credit-term-printed", { method: "POST", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },});const data = await res.json();import requests
res = requests.request( "POST", "https://api.nivesistemas.com.br/sales/{id}/credit-term-printed", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },)print(res.json())POST /sales/:id/cancel
Seção intitulada “POST /sales/:id/cancel”Cancelar (senha de administrador, usuário liberado ou pedido de aprovação)
Parâmetros de rota: id
Resposta: Mesmas regras do reopen-draft: sem senha de administrador, usuário liberado executa na hora e os demais recebem 202 PENDING_APPROVAL.
curl -X POST "https://api.nivesistemas.com.br/sales/{id}/cancel" \ -H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \ -H "X-Store-Slug: loja-demo"const res = await fetch("https://api.nivesistemas.com.br/sales/{id}/cancel", { method: "POST", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },});const data = await res.json();import requests
res = requests.request( "POST", "https://api.nivesistemas.com.br/sales/{id}/cancel", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },)print(res.json())POST /sales/:id/merge
Seção intitulada “POST /sales/:id/merge”Mesclar rascunhos de venda
Parâmetros de rota: id
curl -X POST "https://api.nivesistemas.com.br/sales/{id}/merge" \ -H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \ -H "X-Store-Slug: loja-demo"const res = await fetch("https://api.nivesistemas.com.br/sales/{id}/merge", { method: "POST", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },});const data = await res.json();import requests
res = requests.request( "POST", "https://api.nivesistemas.com.br/sales/{id}/merge", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },)print(res.json())POST /sales/:id/payment-link/whatsapp
Seção intitulada “POST /sales/:id/payment-link/whatsapp”Enviar link de pagamento por WhatsApp
Parâmetros de rota: id
curl -X POST "https://api.nivesistemas.com.br/sales/{id}/payment-link/whatsapp" \ -H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \ -H "X-Store-Slug: loja-demo"const res = await fetch("https://api.nivesistemas.com.br/sales/{id}/payment-link/whatsapp", { method: "POST", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },});const data = await res.json();import requests
res = requests.request( "POST", "https://api.nivesistemas.com.br/sales/{id}/payment-link/whatsapp", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },)print(res.json())POST /sales/:id/finalize-paid-link
Seção intitulada “POST /sales/:id/finalize-paid-link”Finalizar venda paga por link
Parâmetros de rota: id
curl -X POST "https://api.nivesistemas.com.br/sales/{id}/finalize-paid-link" \ -H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \ -H "X-Store-Slug: loja-demo"const res = await fetch("https://api.nivesistemas.com.br/sales/{id}/finalize-paid-link", { method: "POST", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },});const data = await res.json();import requests
res = requests.request( "POST", "https://api.nivesistemas.com.br/sales/{id}/finalize-paid-link", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },)print(res.json())GET /sales/:id/promotions/eligibility
Seção intitulada “GET /sales/:id/promotions/eligibility”Promoções com brinde que a venda em aberto atinge
Parâmetros de rota: id
curl -X GET "https://api.nivesistemas.com.br/sales/{id}/promotions/eligibility" \ -H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \ -H "X-Store-Slug: loja-demo"const res = await fetch("https://api.nivesistemas.com.br/sales/{id}/promotions/eligibility", { method: "GET", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },});const data = await res.json();import requests
res = requests.request( "GET", "https://api.nivesistemas.com.br/sales/{id}/promotions/eligibility", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },)print(res.json())POST /sales/:id/promotion-gifts
Seção intitulada “POST /sales/:id/promotion-gifts”Adicionar o brinde de uma promoção à venda
Parâmetros de rota: id
Corpo (JSON)
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
promotionId |
uuid | sim | Promoção |
productId |
uuid | sim | Produto brinde |
variantId |
uuid | não | Variante |
curl -X POST "https://api.nivesistemas.com.br/sales/{id}/promotion-gifts" \ -H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \ -H "X-Store-Slug: loja-demo" \ -H "Content-Type: application/json" \ -d '{"promotionId":"00000000-0000-0000-0000-000000000000","productId":"00000000-0000-0000-0000-000000000000","variantId":"00000000-0000-0000-0000-000000000000"}'const res = await fetch("https://api.nivesistemas.com.br/sales/{id}/promotion-gifts", { method: "POST", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", "Content-Type": "application/json", }, body: JSON.stringify({ "promotionId": "00000000-0000-0000-0000-000000000000", "productId": "00000000-0000-0000-0000-000000000000", "variantId": "00000000-0000-0000-0000-000000000000" }),});const data = await res.json();import requests
res = requests.request( "POST", "https://api.nivesistemas.com.br/sales/{id}/promotion-gifts", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", }, json={ "promotionId": "00000000-0000-0000-0000-000000000000", "productId": "00000000-0000-0000-0000-000000000000", "variantId": "00000000-0000-0000-0000-000000000000" },)print(res.json())POST /sales/:id/items/:itemId/gift
Seção intitulada “POST /sales/:id/items/:itemId/gift”Marcar/desmarcar item como brinde (cortesia)
Parâmetros de rota: id, itemId
Corpo (JSON)
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
isGift |
boolean | sim | Brinde |
curl -X POST "https://api.nivesistemas.com.br/sales/{id}/items/{itemId}/gift" \ -H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \ -H "X-Store-Slug: loja-demo" \ -H "Content-Type: application/json" \ -d '{"isGift":true}'const res = await fetch("https://api.nivesistemas.com.br/sales/{id}/items/{itemId}/gift", { method: "POST", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", "Content-Type": "application/json", }, body: JSON.stringify({ "isGift": true }),});const data = await res.json();import requests
res = requests.request( "POST", "https://api.nivesistemas.com.br/sales/{id}/items/{itemId}/gift", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", }, json={ "isGift": True },)print(res.json())POST /sales/:id/reopen-draft
Seção intitulada “POST /sales/:id/reopen-draft”Reabrir venda finalizada como rascunho (senha de administrador, usuário liberado ou pedido de aprovação)
Parâmetros de rota: id
Corpo (JSON)
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
username |
string | não | Usuário administrador (opcional: libera na hora) |
password |
string | não | Senha do administrador (opcional) |
justification |
string | não | Justificativa |
Resposta: Sem credenciais: usuário liberado executa na hora; os demais recebem 202 { status: PENDING_APPROVAL } e o administrador responde em /aprovacoes ou pelo WhatsApp.
curl -X POST "https://api.nivesistemas.com.br/sales/{id}/reopen-draft" \ -H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \ -H "X-Store-Slug: loja-demo" \ -H "Content-Type: application/json" \ -d '{"username":"","password":"","justification":""}'const res = await fetch("https://api.nivesistemas.com.br/sales/{id}/reopen-draft", { method: "POST", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", "Content-Type": "application/json", }, body: JSON.stringify({ "username": "", "password": "", "justification": "" }),});const data = await res.json();import requests
res = requests.request( "POST", "https://api.nivesistemas.com.br/sales/{id}/reopen-draft", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", }, json={ "username": "", "password": "", "justification": "" },)print(res.json())GET /sales/draft-customer-counts
Seção intitulada “GET /sales/draft-customer-counts”Quantidade de rascunhos abertos por cliente
Query params
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
allLocations |
boolean | não | Considera todas as filiais (padrão: só a filial do usuário) |
Resposta: { counts } — mapa customerId para número de vendas em rascunho com cliente.
curl -X GET "https://api.nivesistemas.com.br/sales/draft-customer-counts" \ -H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \ -H "X-Store-Slug: loja-demo"const res = await fetch("https://api.nivesistemas.com.br/sales/draft-customer-counts", { method: "GET", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },});const data = await res.json();import requests
res = requests.request( "GET", "https://api.nivesistemas.com.br/sales/draft-customer-counts", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },)print(res.json())GET /sales/:id/order-html
Seção intitulada “GET /sales/:id/order-html”HTML do pedido (para impressão), servido como text/html
Parâmetros de rota: id
curl -X GET "https://api.nivesistemas.com.br/sales/{id}/order-html" \ -H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \ -H "X-Store-Slug: loja-demo"const res = await fetch("https://api.nivesistemas.com.br/sales/{id}/order-html", { method: "GET", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },});const data = await res.json();import requests
res = requests.request( "GET", "https://api.nivesistemas.com.br/sales/{id}/order-html", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },)print(res.json())GET /sales/:id/nfe-operation
Seção intitulada “GET /sales/:id/nfe-operation”Prévia da natureza da operação que a NF-e 55 da venda vai declarar
Parâmetros de rota: id
Query params
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
customerId |
uuid | não | Cliente a considerar no cálculo (omitido = o da venda; vazio = sem cliente) |
Resposta: { operationType (SALE_INTERNAL ou SALE_INTERSTATE), originUf, destUf, customerUfMissing, contributor, cfops, nature }. Usa o mesmo motor tributário da finalização.
curl -X GET "https://api.nivesistemas.com.br/sales/{id}/nfe-operation" \ -H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \ -H "X-Store-Slug: loja-demo"const res = await fetch("https://api.nivesistemas.com.br/sales/{id}/nfe-operation", { method: "GET", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },});const data = await res.json();import requests
res = requests.request( "GET", "https://api.nivesistemas.com.br/sales/{id}/nfe-operation", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },)print(res.json())POST /sales/:id/duplicate-draft
Seção intitulada “POST /sales/:id/duplicate-draft”Copiar a venda para um novo rascunho (sem pagamentos), sem alterar a original
Parâmetros de rota: id
Resposta: 201 Created — { sale, copiedItems, skippedItems, skippedSellers, droppedCoupon }. Copia cliente, vendedores, lista de preço, canal, itens com preço e descontos, frete e observações. Não copia pagamentos, documentos fiscais, cupom nem fidelidade; itens de produtos inativos e vendedores inativos são ignorados. 400 se a venda não tem itens ou nenhum item pode ser copiado.
curl -X POST "https://api.nivesistemas.com.br/sales/{id}/duplicate-draft" \ -H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \ -H "X-Store-Slug: loja-demo"const res = await fetch("https://api.nivesistemas.com.br/sales/{id}/duplicate-draft", { method: "POST", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },});const data = await res.json();import requests
res = requests.request( "POST", "https://api.nivesistemas.com.br/sales/{id}/duplicate-draft", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },)print(res.json())POST /sales/:id/gift-wraps
Seção intitulada “POST /sales/:id/gift-wraps”Adicionar embalagem para presente à venda em rascunho (a um item ou geral)
Parâmetros de rota: id
Corpo (JSON)
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
saleItemId |
uuid | não | Item da venda; omitido = embalagem geral da venda |
optionId |
uuid | não | Modelo cadastrado em /gift-wraps; sem modelo, use customName e customUnitPrice |
customName |
string | não | Nome livre (até 80; padrão “Embalagem para presente”) |
customUnitPrice |
number | não | Valor unitário livre. Também vale para sobrepor o valor do modelo; exige valor livre habilitado na loja e a permissão sales.gift_wrap_custom_price |
quantity |
integer | não | Quantidade de 1 a 999 (padrão 1) |
Resposta: 201 Created — a venda recalculada. 400 se a venda não é rascunho, o recurso está desligado, o modelo está inativo ou o item não pertence à venda; 403 sem permissão para valor livre.
curl -X POST "https://api.nivesistemas.com.br/sales/{id}/gift-wraps" \ -H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \ -H "X-Store-Slug: loja-demo" \ -H "Content-Type: application/json" \ -d '{"saleItemId":"00000000-0000-0000-0000-000000000000","optionId":"00000000-0000-0000-0000-000000000000","customName":"","customUnitPrice":0,"quantity":1}'const res = await fetch("https://api.nivesistemas.com.br/sales/{id}/gift-wraps", { method: "POST", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", "Content-Type": "application/json", }, body: JSON.stringify({ "saleItemId": "00000000-0000-0000-0000-000000000000", "optionId": "00000000-0000-0000-0000-000000000000", "customName": "", "customUnitPrice": 0, "quantity": 1 }),});const data = await res.json();import requests
res = requests.request( "POST", "https://api.nivesistemas.com.br/sales/{id}/gift-wraps", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", }, json={ "saleItemId": "00000000-0000-0000-0000-000000000000", "optionId": "00000000-0000-0000-0000-000000000000", "customName": "", "customUnitPrice": 0, "quantity": 1 },)print(res.json())PATCH /sales/:id/gift-wraps/:giftWrapId
Seção intitulada “PATCH /sales/:id/gift-wraps/:giftWrapId”Alterar embalagem da venda em rascunho
Parâmetros de rota: id, giftWrapId
Corpo (JSON)
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
optionId |
uuid | não | Outro modelo cadastrado |
customName |
string | não | Nome livre (até 80) |
customUnitPrice |
number | não | Valor unitário livre (mesmas regras de permissão do POST) |
quantity |
integer | não | Quantidade de 1 a 999 |
Resposta: A venda recalculada. 404 se a embalagem não pertence à venda.
curl -X PATCH "https://api.nivesistemas.com.br/sales/{id}/gift-wraps/{giftWrapId}" \ -H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \ -H "X-Store-Slug: loja-demo" \ -H "Content-Type: application/json" \ -d '{"optionId":"00000000-0000-0000-0000-000000000000","customName":"","customUnitPrice":0,"quantity":1}'const res = await fetch("https://api.nivesistemas.com.br/sales/{id}/gift-wraps/{giftWrapId}", { method: "PATCH", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", "Content-Type": "application/json", }, body: JSON.stringify({ "optionId": "00000000-0000-0000-0000-000000000000", "customName": "", "customUnitPrice": 0, "quantity": 1 }),});const data = await res.json();import requests
res = requests.request( "PATCH", "https://api.nivesistemas.com.br/sales/{id}/gift-wraps/{giftWrapId}", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", }, json={ "optionId": "00000000-0000-0000-0000-000000000000", "customName": "", "customUnitPrice": 0, "quantity": 1 },)print(res.json())DELETE /sales/:id/gift-wraps/:giftWrapId
Seção intitulada “DELETE /sales/:id/gift-wraps/:giftWrapId”Remover embalagem da venda em rascunho
Parâmetros de rota: id, giftWrapId
Resposta: A venda recalculada. 404 se a embalagem não pertence à venda.
curl -X DELETE "https://api.nivesistemas.com.br/sales/{id}/gift-wraps/{giftWrapId}" \ -H "Authorization: Bearer sl_live_exemplo_abc123xyz789" \ -H "X-Store-Slug: loja-demo"const res = await fetch("https://api.nivesistemas.com.br/sales/{id}/gift-wraps/{giftWrapId}", { method: "DELETE", headers: { Authorization: "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },});const data = await res.json();import requests
res = requests.request( "DELETE", "https://api.nivesistemas.com.br/sales/{id}/gift-wraps/{giftWrapId}", headers={ "Authorization": "Bearer sl_live_exemplo_abc123xyz789", "X-Store-Slug": "loja-demo", },)print(res.json())
