---
title: "Create a new order"
method: POST
path: "/Order/Factory/saveOrder"
tags: ["Order"]
---

# Create a new order

`POST /Order/Factory/saveOrder`

Creates an order to which positions can be added later.

## Request body

- SaveOrder
  - `order` ModelOrder, required — Order model
    - `id` integer — The order id
    - `objectName` string — The order object name
    - `mapAll` boolean, required
    - `create` string, date-time — Date of order creation
    - `update` string, date-time — Date of last order update
    - `orderNumber` string, required — The order number
    - `contact` object, required — The contact used in the order
      - `id` integer, required — Unique identifier of the contact
      - `objectName` string, required — Model name, which is 'Contact'
    - `orderDate` string, date-time, required — Needs to be provided as timestamp or dd.mm.yyyy
    - `status` 100 | 200 | 300 | 500 | 750 | 1000, required — Please have a look in <a href='#tag/Order/Types-and-status-of-orders'>status of orders</a> to see what the different status codes mean
    - `header` string, required — Normally consist of prefix plus the order number
    - `headText` string, nullable — Certain html tags can be used here to format your text
    - `footText` string, nullable — Certain html tags can be used here to format your text
    - `addressCountry` object, required — Can be omitted as complete address is defined in address attribute
      - `id` integer, required — Unique identifier of the country
      - `objectName` string, required — Model name, which is 'StaticCountry'
    - `deliveryTerms` string, nullable — Delivery terms of the order
    - `paymentTerms` string, nullable — Payment terms of the order
    - `version` integer, required — Version of the order.<br> Can be used if you have multiple drafts for the same order.<br> Should start with 0
    - `smallSettlement` boolean — Defines if the client uses the small settlement scheme. If yes, the order must not contain any vat
    - `contactPerson` object, required — The user who acts as a contact person for the order
      - `id` integer, required — Unique identifier of the user
      - `objectName` string, required — Model name, which is 'SevUser'
    - `taxRate` number, required — This is not used anymore. Use the taxRate of the individual positions instead.
    - `taxRule` object, required — **Use this in sevdesk-Update 2.0 (replaces taxType / taxSet).** See [list of available VAT rules](#section/sevdesk-Update-2.0/Tax-Rules).
      - `id` '1' | '2' | '3' | '4' | '5' | '11' | '17' | '18' | '19' | '20' | '21', required
      - `objectName` 'TaxRule', required — Name of the object. Must always be TaxRule
    - `taxSet` object, nullable — **Use this in sevdesk-Update 1.0 (instead of taxRule).** Tax set of the order. Needs to be added if you chose the tax type custom
      - `id` integer, required — Unique identifier of the object
      - `objectName` string, required — Model name, which is 'TaxSet'
    - `taxText` string, required — A common tax text would be 'Umsatzsteuer 19%'
    - `taxType` string, required — **Use this in sevdesk-Update 1.0 (instead of taxRule).** Tax type of the order. There are four tax types: 1. default - Umsatzsteuer ausweisen 2. eu - Steuerfreie innergemeinschaftliche Lieferung (Europäische Union) 3. noteu - Steuerschuldnerschaft des Leistungsempfängers (außerhalb EU, z. B. Schweiz) 4. custom - Using custom tax set 5. ss - Not subject to VAT according to §19 1 UStG Tax rates are heavily connected to the tax type used.
    - `orderType` 'AN' | 'AB' | 'LI' — Type of the order. For more information on the different types, check <a href='#tag/Order/Types-and-status-of-orders'>this</a>
    - `sendDate` string, date-time, nullable — The date the order was sent to the customer
    - `address` string, nullable — Complete address of the recipient including name, street, city, zip and country.<br> Line breaks can be used and will be displayed on the invoice pdf.
    - `currency` string, required — Currency used in the order. Needs to be currency code according to ISO-4217
    - `customerInternalNote` string, nullable — Internal note of the customer. Contains data entered into field 'Referenz/Bestellnummer'
    - `showNet` boolean — If true, the net amount of each position will be shown on the order. Otherwise gross amount
    - `sendType` 'VPR' | 'VPDF' | 'VM' | 'VP', nullable — Type which was used to send the order. IMPORTANT: Please refer to the order section of the * API-Overview to understand how this attribute can be used before using it!
    - `origin` object, nullable — Object from which the order was created. For example an offer.
      - `id` integer, required — Unique identifier of the object
      - `objectName` string, required — Model name of the object. Could be 'Order'.
  - `orderPosSave` ModelOrderPos[]
    - `id` integer — The order position id
    - `objectName` string — The order position object name
    - `create` string — Date of order position creation
    - `update` string — Date of last order position update
    - `order` object — The order to which the position belongs.
      - `id` integer, required — Unique identifier of the order
      - `objectName` string, required — Model name, which is 'Order'
    - `part` object — Part from your inventory which is used in the position.
      - `id` integer, required — Unique identifier of the part
      - `objectName` string, required — Model name, which is 'Part'
    - `quantity` number, required — Quantity of the article/part
    - `price` number, nullable — Price of the article/part. Is either gross or net, depending on the sevdesk account setting.
    - `priceNet` number, nullable — Net price of the part
    - `priceTax` number, nullable — Tax on the price of the part
    - `priceGross` number, nullable — Gross price of the part
    - `name` string, nullable — Name of the article/part.
    - `unity` object, required — The unit in which the positions part is measured
      - `id` integer, required — Unique identifier of the unit
      - `objectName` string, required — Model name, which is 'Unity'
    - `sevClient` object — Client to which order position belongs. Will be filled automatically
      - `id` integer, required — Unique identifier of the client
      - `objectName` string, required — Model name, which is 'SevClient'
    - `positionNumber` integer, nullable — Position number of your position. Can be used to order multiple positions.
    - `text` string, nullable — A text describing your position.
    - `discount` number, nullable — An optional discount of the position.
    - `optional` boolean, nullable — Defines if the position is optional.
    - `taxRate` number, required — Tax rate of the position.
    - `sumDiscount` number, nullable — Discount sum of the position
  - `orderPosDelete` object
    - `id` integer, required — Id of order position
    - `objectName` string, required — Object name of order position

## Response `201`

Created - Returns created voucher

- SaveOrderResponse
  - `order` ModelOrderResponse — Order model
    - `id` string — The order id
    - `objectName` string — The order object name
    - `create` string, date-time — Date of order creation
    - `update` string, date-time — Date of last order update
    - `orderNumber` string — The order number
    - `contact` object — The contact used in the order
      - `id` string, required — Unique identifier of the contact
      - `objectName` string, required — Model name, which is 'Contact'
    - `orderDate` string, date-time — Needs to be provided as timestamp or dd.mm.yyyy
    - `status` '100' | '200' | '300' | '500' | '750' | '1000' — Please have a look in <a href='#tag/Order/Types-and-status-of-orders'>status of orders</a> to see what the different status codes mean
    - `header` string — Normally consist of prefix plus the order number
    - `headText` string, nullable — Certain html tags can be used here to format your text
    - `footText` string, nullable — Certain html tags can be used here to format your text
    - `addressCountry` object, nullable — Can be omitted as complete address is defined in address attribute
      - `id` string, required — Unique identifier of the country
      - `objectName` string, required — Model name, which is 'StaticCountry'
    - `createUser` object — Will be filled automatically by our system and can't be changed
      - `id` string, required — Unique identifier of the user
      - `objectName` string, required — Model name, which is 'SevUser'
    - `sevClient` object — Client to which order belongs. Will be filled automatically
      - `id` string, required — Unique identifier of the client
      - `objectName` string, required — Model name, which is 'SevClient'
    - `deliveryTerms` string, nullable — Delivery terms of the order
    - `paymentTerms` string, nullable — Payment terms of the order
    - `origin` object, nullable — Object from which the order was created. For example an offer.
      - `id` string, required — Unique identifier of the object
      - `objectName` string, required — Model name of the object. Could be 'Order'.
    - `version` string — Version of the order.<br> Can be used if you have multiple drafts for the same order.<br> Should start with 0
    - `smallSettlement` boolean — Defines if the client uses the small settlement scheme. If yes, the order must not contain any vat
    - `contactPerson` object — The user who acts as a contact person for the order
      - `id` string, required — Unique identifier of the user
      - `objectName` string, required — Model name, which is 'SevUser'
    - `taxRate` string — This is not used anymore. Use the taxRate of the individual positions instead.
    - `taxRule` object — **Use this in sevdesk-Update 2.0 (replaces taxType / taxSet).** See [list of available VAT rules](#section/sevdesk-Update-2.0/Tax-Rules).
      - `id` '1' | '2' | '3' | '4' | '5' | '11' | '17' | '18' | '19' | '20' | '21', required
      - `objectName` 'TaxRule', required — Name of the object. Must always be TaxRule
    - `taxSet` object, nullable — **Use this in sevdesk-Update 1.0 (instead of taxRule).** Tax set of the order. Needs to be added if you chose the tax type custom
      - `id` string, required — Unique identifier of the object
      - `objectName` string, required — Model name, which is 'TaxSet'
    - `taxText` string — A common tax text would be 'Umsatzsteuer 19%'
    - `taxType` string — **Use this in sevdesk-Update 1.0 (instead of taxRule).** Tax type of the order. There are four tax types: 1. default - Umsatzsteuer ausweisen 2. eu - Steuerfreie innergemeinschaftliche Lieferung (Europäische Union) 3. noteu - Steuerschuldnerschaft des Leistungsempfängers (außerhalb EU, z. B. Schweiz) 4. custom - Using custom tax set 5. ss - Not subject to VAT according to §19 1 UStG Tax rates are heavily connected to the tax type used.
    - `orderType` 'AN' | 'AB' | 'LI' — Type of the order. For more information on the different types, check <a href='#tag/Order/Types-and-status-of-orders'>this</a>
    - `sendDate` string, date-time, nullable — The date the order was sent to the customer
    - `address` string, nullable — Complete address of the recipient including name, street, city, zip and country.<br> Line breaks can be used and will be displayed on the invoice pdf.
    - `currency` string — Currency used in the order. Needs to be currency code according to ISO-4217
    - `sumNet` string — Net sum of the order
    - `sumTax` string — Tax sum of the order
    - `sumGross` string — Gross sum of the order
    - `sumDiscounts` string — Sum of all discounts in the order
    - `sumNetForeignCurrency` string — Net sum of the order in the foreign currency
    - `sumTaxForeignCurrency` string — Tax sum of the order in the foreign currency
    - `sumGrossForeignCurrency` string — Gross sum of the order in the foreign currency
    - `sumDiscountsForeignCurrency` string — Discounts sum of the order in the foreign currency
    - `customerInternalNote` string, nullable — Internal note of the customer. Contains data entered into field 'Referenz/Bestellnummer'
    - `showNet` boolean — If true, the net amount of each position will be shown on the order. Otherwise gross amount
    - `sendType` 'VPR' | 'VPDF' | 'VM' | 'VP', nullable — Type which was used to send the order. IMPORTANT: Please refer to the order section of the * API-Overview to understand how this attribute can be used before using it!
  - `orderPos` ModelOrderPosResponse[]
    - `id` string — The order position id
    - `objectName` string — The order position object name
    - `create` string, date-time — Date of order position creation
    - `update` string, date-time — Date of last order position update
    - `order` object — The order to which the position belongs.
      - `id` string, required — Unique identifier of the order
      - `objectName` string, required — Model name, which is 'Order'
    - `part` object — Part from your inventory which is used in the position.
      - `id` string, required — Unique identifier of the part
      - `objectName` string, required — Model name, which is 'Part'
    - `quantity` string — Quantity of the article/part
    - `price` string, nullable — Price of the article/part. Is either gross or net, depending on the sevdesk account setting.
    - `priceNet` string, nullable — Net price of the part
    - `priceTax` string, nullable — Tax on the price of the part
    - `priceGross` string, nullable — Gross price of the part
    - `name` string, nullable — Name of the article/part.
    - `unity` object — The unit in which the positions part is measured
      - `id` string, required — Unique identifier of the unit
      - `objectName` string, required — Model name, which is 'Unity'
    - `sevClient` object — Client to which order position belongs. Will be filled automatically
      - `id` string, required — Unique identifier of the client
      - `objectName` string, required — Model name, which is 'SevClient'
    - `positionNumber` string, nullable — Position number of your position. Can be used to order multiple positions.
    - `text` string, nullable — A text describing your position.
    - `discount` string, nullable — An optional discount of the position.
    - `optional` boolean, nullable — Defines if the position is optional.
    - `taxRate` string — Tax rate of the position.
    - `sumDiscount` string, nullable — Discount sum of the position

## Other responses

- `400` — Bad request
- `401` — Authentication required
- `500` — Server Error

---

[API](https://skmtc.net/sevdesk/apis/sevdesk-api.md) · [All operations](https://skmtc.net/sevdesk/apis/sevdesk-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/sevdesk/sevdesk-api/revisions/a32cec0fecea/schema)
