Hoppa till innehållet

PriceLists

Price lists and their prices per item. Addressed by the price list's code. A line is identified by itemNumber, minQuantity and validFrom, so today's price and a price change from a later date live side by side. The API writes fixed prices only; lines calculated from cost, the item's sales price or another price list are read-only here. The price one customer pays is under GET /preview/items/{itemNumber}/price.

4 calls GET PUT POST Base URL https://api.fluit.cloud/preview

Authentication, error codes, rate limits, idempotency and pagination apply to every call and are documented once under Getting started.

GET /price-lists

List price lists

Returns the price lists with code, name, currency, validity and whether they are active. Inactive lists are included, so a list can be checked before it is switched on. The prices are under GET /preview/price-lists/{code}/lines. Sorted by code.

price-lists:read Paginated

Query parameters

Field Type Description
page integer Page to return, 1-based. Default 1.
pageSize integer Number of records per page. Default 50, max 200.

Responses

200 PagedResult_PublicPriceListResponse

Paginated response: the fields below sit in items[], wrapped in totalCount, page, pageSize, totalPages, hasPreviousPage and hasNextPage. Paginated

Field Type Description
basePriceListCode string · nullable Code of the list this one derives prices from, for lines with the strategy `ParentPriceList`. Null when it has none.
code string · nullable The price list's code. Addresses it in /preview/price-lists/{code}/lines.
currencyCode string · nullable ISO 4217 currency code of every price in the list.
description string · nullable Free-text description.
isActive boolean Whether the list is in use. An inactive list is never applied to an order.
isPriceIncludingTax boolean Whether the prices include VAT.
name string · nullable Display name, e.g. `Gross SEK`.
priority integer Priority when several lists apply to the same customer; the lower number wins.
type enum What a price list is for. Mirrors the domain values name for name. Standard Customer CustomerGroup Campaign Contract
validFrom string(date) · nullable First day the list applies. Null when it has no start date.
validTo string(date) · nullable Last day the list applies. Null when it has no end date.

Standard errors: 401 403 Errors

Examples

curl
curl "https://api.fluit.cloud/preview/price-lists"
Response 200
{
  "hasNextPage": true,
  "hasPreviousPage": true,
  "items": [
    {
      "basePriceListCode": "STD",
      "code": "string",
      "currencyCode": "SEK",
      "description": "string",
      "isActive": true,
      "isPriceIncludingTax": true,
      "name": "Retail 2026",
      "priority": 42,
      "type": "Standard",
      "validFrom": "2026-06-11",
      "validTo": "2026-06-11"
    }
  ],
  "page": 1,
  "pageSize": 50,
  "totalCount": 137,
  "totalPages": 3
}

Base URL https://api.fluit.cloud/preview. The response example is generated from the schema: the shape is right, the values are made up.

GET /price-lists/{code}/lines

List the prices in a price list

Returns the price list's lines: one price per item, quantity break and start date.

Show the full description

A line is identified by itemNumber, minQuantity and validFrom, so an item can have today's price and a price change from a later date as two lines. ?validOn= keeps only the lines that apply on that day, which is how to read the prices in force now. unitPrice is the price that applies: the price as entered on a Fixed line, or the most recently calculated price on a line priced from cost, the item's sales price or another price list (null until it has been calculated). Sorted by item number, minQuantity and validFrom.

price-lists:read Paginated

Path parameters

Field Type Description
code Required string Code of the price list, from GET /preview/price-lists.

Query parameters

Field Type Description
itemNumber string Only lines for this item number.
validOn string(date) Only lines that apply on this date (ISO 8601, e.g. 2026-10-01).
page integer Page to return, 1-based. Default 1.
pageSize integer Number of records per page. Default 50, max 200.

Responses

200 PagedResult_PublicPriceListLineResponse

Paginated response: the fields below sit in items[], wrapped in totalCount, page, pageSize, totalPages, hasPreviousPage and hasNextPage. Paginated

Field Type Description
calculatedAt string(date-time) · nullable When a calculated line's price was last calculated. Null on a fixed price.
fixedAmount decimal · nullable Amount added to the cost price by `CostPlusAmount`. Serialised as a decimal string.
itemName string · nullable Name of the priced item.
itemNumber string · nullable Item number of the priced item.
links Links Hypermedia links for a public API resource. Exposed as a computed `links` property on the public response DTOs so that create and read responses carry the same self-reference — the canonical URL is derived from the business key already present on the DTO and can never drift from the route it points at.
maxQuantity decimal · nullable The price applies up to and including this quantity. Null when there is no upper limit.
minQuantity decimal The price applies from this quantity. 0 means from the first unit. Part of the line's key together with itemNumber and validFrom. Serialised as a decimal string.
percentage decimal · nullable Percentage used by the calculated strategies (markup or discount). Null on a fixed price. Serialised as a decimal string.
strategy enum How a price list line gets its price. Mirrors the domain values name for name. Fixed CostPlusPercent CostPlusAmount BasePriceDiscount ParentPriceList
unitPrice decimal · nullable The price that applies, in the list's currency. For a fixed price it is the price as entered. For a calculated line it is the most recently calculated price, or null when the line has not been calculated yet. Serialised as a decimal string.
validFrom string(date) · nullable First day the price applies. Null when it has no start date. Part of the line's key.
validTo string(date) · nullable Last day the price applies. Null when it has no end date.
404 ProblemDetails No price list with that code.
Field Type
detail string · nullable
instance string · nullable
status integer · nullable
title string · nullable
type string · nullable

Standard errors: 401 403 Errors

Examples

curl
curl "https://api.fluit.cloud/preview/price-lists/{code}/lines"
Response 200
{
  "hasNextPage": true,
  "hasPreviousPage": true,
  "items": [
    {
      "calculatedAt": "2026-06-11T09:24:13.418",
      "fixedAmount": "299.00",
      "itemName": "Widget A",
      "itemNumber": "WIDGET-A",
      "links": {
        "self": "string"
      },
      "maxQuantity": "10",
      "minQuantity": "10",
      "percentage": "12.50",
      "strategy": "Fixed",
      "unitPrice": "299.00",
      "validFrom": "2026-06-11",
      "validTo": "2026-06-11"
    }
  ],
  "page": 1,
  "pageSize": 50,
  "totalCount": 137,
  "totalPages": 3
}

Base URL https://api.fluit.cloud/preview. The response example is generated from the schema: the shape is right, the values are made up.

PUT /price-lists/{code}/lines/{itemNumber}

Set an item's price in a price list

Sets the fixed price for the item in the price list and creates the line if it does not exist.

Show the full description

The line is identified by the item, minQuantity and validFrom: omit both for the item's ordinary price, give minQuantity for a quantity break, and give validFrom for a price change from a later date — that becomes a line of its own and leaves the current price alone. On an existing line, maxQuantity and validTo are replaced by what the request says, so leaving them out removes a limit the line had. Only fixed prices are set here. A line priced from cost, the item's sales price or another price list answers 409 PriceListLine.NotFixedPrice rather than silently becoming a fixed price; change such a line in Fluit. To set many prices in one call, use POST /preview/price-lists/{code}/lines/batch. Known error codes: PriceList.NotFound, Item.NotFound, PriceListLine.QuantityRange.Invalid, PriceListLine.ValidityRange.Invalid, PriceListLine.NotFixedPrice, PriceListLine.Ambiguous.

price-lists:write

Path parameters

Field Type Description
code Required string Code of the price list, from GET /preview/price-lists.
itemNumber Required string Item number of the item to price.

Body required

Field Type Description
maxQuantity decimal · nullable Upper quantity limit. Omit for none; an existing limit is removed.
minQuantity decimal · nullable The price applies from this quantity. Omit for the price from the first unit. Part of the line's key.
unitPrice Required decimal The fixed price, in the price list's currency. Serialised as a decimal string.
validFrom string(date) · nullable First day the price applies. Omit for a price without start date. Part of the line's key, so a price change from a later date becomes a line of its own and leaves today's price alone.
validTo string(date) · nullable Last day the price applies. Omit for none; an existing end date is removed.

Responses

204 Empty body.
400 ProblemDetails unitPrice is missing or negative, minQuantity is greater than maxQuantity, or validFrom is later than validTo.
Field Type
detail string · nullable
instance string · nullable
status integer · nullable
title string · nullable
type string · nullable
404 ProblemDetails No price list with that code, or no item with that item number.
Field Type
detail string · nullable
instance string · nullable
status integer · nullable
title string · nullable
type string · nullable
409 ProblemDetails The line with this key is not a fixed price, or the price list has more than one line with this key.
Field Type
detail string · nullable
instance string · nullable
status integer · nullable
title string · nullable
type string · nullable

Standard errors: 401 403 Errors

Examples

curl
curl -X PUT "https://api.fluit.cloud/preview/price-lists/{code}/lines/{itemNumber}" \
  -H "Content-Type: application/json" \
  -d @body.json
Response 400
{
  "detail": "string",
  "instance": "string",
  "status": 42,
  "title": "string",
  "type": "string"
}

Base URL https://api.fluit.cloud/preview. The response example is generated from the schema: the shape is right, the values are made up.

POST /price-lists/{code}/lines/batch

Set many prices in a price list in one call

Sets up to 500 fixed prices per call, with the same rules as PUT /preview/price-lists/{code}/lines/{itemNumber}. Each line is identified by itemNumber, minQuantity and validFrom; a line that exists gets the new price, maxQuantity and validTo, and a line that does not is created.

Show the full description

The HTTP status describes the request, not the rows: a well-formed batch always answers 200, and every row carries its own `outcome` (`created`, `updated` or `failed`) plus an `error` when it failed. A bad row never blocks the rest — re-send only the failed rows. Row error codes: PriceListLine.UnknownItem, PriceListLine.DuplicateInBatch, PriceListLine.QuantityRange.Invalid, PriceListLine.ValidityRange.Invalid, PriceListLine.NotFixedPrice, PriceListLine.Ambiguous, and with `mode` set PriceListLine.AlreadyExists or PriceListLine.NoSuchLine. `mode` is `upsert` (default), `create` or `update`. An `Idempotency-Key` is required like on every POST under /preview.

price-lists:write Requires Idempotency-Key

Path parameters

Field Type Description
code Required string Code of the price list, from GET /preview/price-lists.

Body required

Field Type Description
lines Required BatchUpsertPriceListLinesLineRow[] The prices to set. At most 500 per call.
mode enum `upsert` (default) creates missing lines and updates existing ones, `create` fails a row whose line already exists, `update` fails a row whose line does not exist. Upsert Create Update

Responses

200 BatchUpsertPriceListLinesResponse
Field Type
createdCount integer
failedCount integer
results BatchUpsertPriceListLinesRowResult[] · nullable
updatedCount integer
400 ProblemDetails The batch is empty or has more than 500 lines, a line lacks itemNumber or unitPrice, a value is negative, or mode is unknown.
Field Type
detail string · nullable
instance string · nullable
status integer · nullable
title string · nullable
type string · nullable
404 ProblemDetails No price list with that code.
Field Type
detail string · nullable
instance string · nullable
status integer · nullable
title string · nullable
type string · nullable

Standard errors: 401 403 Errors

Examples

curl
curl -X POST "https://api.fluit.cloud/preview/price-lists/{code}/lines/batch" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d @body.json
Two prices
{
  "lines": [
    {
      "itemNumber": "670-00001",
      "unitPrice": "249.00"
    },
    {
      "itemNumber": "670-00002",
      "unitPrice": "319.00"
    }
  ]
}
New prices from 1 January, next to today's
{
  "lines": [
    {
      "itemNumber": "670-00001",
      "unitPrice": "259.00",
      "validFrom": "2027-01-01"
    },
    {
      "itemNumber": "670-00001",
      "minQuantity": "10",
      "unitPrice": "239.00",
      "validFrom": "2027-01-01"
    }
  ]
}
Change prices on lines that already exist
{
  "lines": [
    {
      "itemNumber": "670-00001",
      "unitPrice": "255.00"
    }
  ],
  "mode": "update"
}
Response 200
{
  "createdCount": 42,
  "failedCount": 42,
  "results": [
    {
      "error": {
        "code": "string",
        "detail": "string"
      },
      "index": 42,
      "itemNumber": "WIDGET-A",
      "outcome": "string"
    }
  ],
  "updatedCount": 42
}

Base URL https://api.fluit.cloud/preview. The response example is generated from the schema: the shape is right, the values are made up.

Schemas

The objects this group's calls refer to. The field tables above go one level deep and link here rather than repeating the same schema on every endpoint.

BatchUpsertPriceListLinesLineRow

BatchUpsertPriceListLinesLineRow
Field Type Description
itemNumber Required string Item number of the item to price. Part of the line's key.
maxQuantity decimal · nullable Upper quantity limit. Omit for none; an existing limit is removed.
minQuantity decimal · nullable The price applies from this quantity. Omit for the first unit. Part of the key.
unitPrice Required decimal The fixed price, in the price list's currency. Serialised as a decimal string.
validFrom string(date) · nullable First day the price applies. Omit for no start date. Part of the key.
validTo string(date) · nullable Last day the price applies. Omit for none; an existing end date is removed.

BatchUpsertPriceListLinesRowError

BatchUpsertPriceListLinesRowError
Field Type
code string · nullable
detail string · nullable

BatchUpsertPriceListLinesRowResult

BatchUpsertPriceListLinesRowResult
Field Type Description
error BatchUpsertPriceListLinesRowError
index integer
itemNumber string · nullable
outcome string · nullable `created`, `updated` or `failed`.