Files
dashback/docs/api/routes/article/set-prices.md
2026-10-19 02:28:17 +02:00

3.5 KiB

PUT /article/{sku}/prices

Protected. Requires a valid session cookie (credentials: 'include').

Replace POS prices by SKU (net > gross; price=net, tax=taxRate %)

Replace-all prices for the company POS customer group. net takes precedence over price (legacy alias for net) and gross. tax and taxRate both specify the tax rate percentage (e.g. 19 for 19%), not monetary tax. When gross is provided, net price is computed as gross / (1 + taxRate / 100). Prices are strictly scoped to the company's designated POS customer group (customergroupId returned on GET). Empty prices clears all POS prices. Returns the same shape as GET by SKU.

Path parameters

Param Required Type Description
sku yes string

Body (JSON)

Field Required Type Description
prices yes object[]
prices[].net no number Net price (excl. VAT). Either net, gross, or legacy price is required.
prices[].gross no number Gross price (incl. VAT). Net is computed as gross / (1 + taxRate / 100).
prices[].price no number Legacy alias for net.
prices[].taxRate no number Tax rate percentage (e.g. 19 for 19%, 7 for 7%, 0 for 0%).
prices[].tax no number Alias for taxRate percentage.
prices[].minmultiplier no number Defaults to 1; must be unique per request.
{
  "prices": [
    {
      "net": 10.5,
      "taxRate": 19
    },
    {
      "gross": 11.9,
      "taxRate": 19,
      "minmultiplier": 10
    }
  ]
}

Signals

On success, emits SSE signal: article-<sku> (see GET /events).

Response 200

Updated article detail

{
  "article": {
    "id": 1,
    "sku": "…",
    "name": "…",
    "slug": "…",
    "desc": "…",
    "seo": "…",
    "track_stock": true,
    "unitamount": 1,
    "weight": 1,
    "unit": {
      "si": "…",
      "basesi": "…",
      "basesifactor": 1,
      "symbol": "…",
      "name": "…"
    },
    "brand": {
      "id": 1,
      "name": "…",
      "fullHash": "…",
      "thumbW": 1,
      "thumbH": 1,
      "thumbHash": "…"
    },
    "categoryIds": [
      1
    ],
    "photos": [
      {
        "sort": 1,
        "fullHash": "…",
        "fullW": 1,
        "fullH": 1,
        "fullSize": 1,
        "thumbW": 1,
        "thumbH": 1,
        "thumbHash": "…"
      }
    ],
    "eans": [
      "…"
    ],
    "prices": [
      {
        "minmultiplier": 1,
        "net": 1,
        "taxRate": 1,
        "customergroupId": 1
      }
    ],
    "suppliers": [
      {
        "id": 1,
        "articleId": 1,
        "entityId": 1,
        "supplierName": "…",
        "sku": "…",
        "pu": 1,
        "stock": 1,
        "sort": 1,
        "priceId": 1,
        "price": {
          "net": 1,
          "taxId": 1,
          "taxRate": 1
        },
        "incoming": [
          {
            "date": "2026-08-10T00:00:00.000Z",
            "amount": 1
          }
        ]
      }
    ]
  }
}

Errors

Status Description
400 Invalid prices, POS customer group required, or parent article cannot have prices — {"error":"…"}
401 Unauthorized — {"error":"…"}
403 Not authorized — {"error":"…"}
404 Article not found — {"error":"…"}

Generated from @openapi JSDoc. Do not edit by hand — run npm run docs:api.