Skip to main content

Order Fulfillment

How to fulfill a received order via REST API?

Written by Lenka Haringerová

An order can be fulfilled via the REST API in the following ways:

  • issued invoice (faktura-vydana)

  • received invoice (faktura-prijata)

  • stock movement (skladovy-pohyb)

  • sales receipt (prodejka)

You can specify the document type (typDokl) and the warehouse (sklad). If these are not provided, the default document type from the order will be used. The date will always be set to the current date based on the active accounting period; it is not currently possible to specify a different issue date.

It is also possible to set typDoklSkl when fulfilling via an invoice — for example, code:VYDEJPOOBP. This is useful when the typDokl of the invoice being created does not have a stock document type specified.

Fulfilling an order into an existing invoice is only possible if the invoice is unlocked, line-item based, not cancelled, not paid, and not submitted to EET.

You can also specify whether issue requests should be generated when there is insufficient stock (true).

The <zahrnoutSkladoveDoklady>true</zahrnoutSkladoveDoklady> parameter ensures that any linked stock documents that have not yet been invoiced are also included in the invoice. Items from these stock documents are no longer listed in the <polozkyObchDokladu> list.

An order can be fulfilled in multiple steps (e.g. based on stock availability). Information about the fulfillment status can be obtained from the order lines.

Order fulfillment was designed primarily for barcode readers. Therefore, it does not matter whether a serial number or an item (EAN only) is entered. The EAN can be specified either directly or with the ean: prefix. We recommend using this prefix when entering an EAN.

An external identifier can be assigned to the document being created, allowing it to be modified later within the same import. When fulfilling into an invoice (issued or received), it is possible to reference an existing document to which the newly fulfilled items will be added. For all other fulfillment types, a new document is always created, and referencing an existing document will result in an import error.

XML Examples

Basic structure

<?xml version="1.0"?>
<winstrom version="1.0">
<objednavka-prijata>
<id>code:OBP0004/2012</id>
<realizaceObj type="faktura-vydana">
<polozkyObchDokladu>
<polozka>
<cenikNeboVyrobniCislo>123skl</cenikNeboVyrobniCislo>
<mj>1</mj>
</polozka>
</polozkyObchDokladu>
</realizaceObj>
</objednavka-prijata>
</winstrom>

Fulfillment by order line identification (only one identifier is required). The item position can also be used when fulfilling an order:

<?xml version="1.0"?>
<winstrom version="1.0">
<objednavka-prijata>
<id>code:OBP0004/2012</id>
<realizaceObj type="faktura-vydana">
<polozkyObchDokladu>
<polozka>
<!-- číslo řádky v objednávce -->
<cisRad>1</cisRad>
<!-- další možnost identifikace, lze použít libovolný identifikátor -->
<id>extId...</id>
<mj>1</mj>
</polozka>
</polozkyObchDokladu>
</realizaceObj>
</objednavka-prijata>
</winstrom>

Order fulfillment with batch and expiration

<?xml version="1.0"?>
<winstrom version="1.0">
<objednavka-prijata>
<id>code:OBP0004/2012</id>
<realizaceObj type="faktura-vydana">
<polozkyObchDokladu>
<polozka>
<cisRad>1</cisRad>
<!-- lze uvést pouze jeden z údajů (v závislosti nastavení ceníkové položky), je nutno vybírat ze šarží či expirací, co jsou právě na skladě -->
<sarze>XY12345</sarze>
<expirace>2021-12-31</expirace>
<mj>1</mj>
</polozka>
</polozkyObchDokladu>
</realizaceObj>
</objednavka-prijata>
</winstrom>

Example of a complete XML structure

<?xml version="1.0"?>
<winstrom version="1.0">
<objednavka-prijata>
<id>code:OBP0004/2012</id>
<!-- faktura-vydana/prodejka/faktura-prijata/skladovy-pohyb-->
<realizaceObj type="faktura-vydana">
<!-- lze použít libovolný identifikátor-->
<id>ext:...</id>
<typDokl>...</typDokl>
<sklad>...</sklad>
<varSym>...</varSym>
<!-- nepovinné -->
<generovatPozadavky>true</generovatPozadavky>
<!-- u vydané faktury říká zda se mají odpočítat navázané zálohy -->
<zahrnoutSkladoveDoklady>true</zahrnoutSkladoveDoklady>
<!-- u faktury říká zda se mají zahrnout i nevyfakturované navázané skladové doklady -->
<odpocetZaloh>true</odpocetZaloh>
<!-- u přijaté faktury povinné -->
<cisDosle>...</cisDosle>
<!-- u přijaté faktury povinné -->
<datSplat>2013-01-01</datSplat>
<polozkyObchDokladu>
<polozka>
<!-- následují tři způsoby identifikace položky -->
<!-- <id>extId...</id> -->
<!-- <cisRad>1</cisRad> -->
<!-- EAN ceníku nebo výrobní číslo -->
<cenikNeboVyrobniCislo>123skl</cenikNeboVyrobniCislo>
<!-- pokud se najde podle EAN nebo výrobního čísla z předcházející řádky, je to vždy 1; nemusí se uvádět, pokud je uveden seznam výrobních čísel -->
<mj>1</mj>
<vyrobniCisla>
<!-- použito pokud se nenajde podle výrobního čisla - tj. u přijatých faktur je nutné zadat výrobní čísla vždy pokud jsou vyžadovány -->
<vyrobniCislo>123</vyrobniCislo>
<vyrobniCislo>456</vyrobniCislo>
</vyrobniCisla>
<!-- lze uvést pouze jeden z údajů (v závislosti nastavení ceníkové položky), je nutno vybírat ze šarží či expirací, co jsou právě na skladě -->
<sarze>XY12345</sarze>
<expirace>2021-12-31</expirace>
</polozka>
</polozkyObchDokladu>
</realizaceObj>
</objednavka-prijata>
</winstrom>

Order fulfillment with packaged items

  • Example of packaging settings on a price list item (default unit = piece, packaging = 100 pcs)

  • Example of a received order line item

  • Example XML for order fulfillment

<?xml version="1.0"?>
<winstrom version="1.0">
<objednavka-prijata>
<id>code:OBP0004/2021</id>
<realizaceObj type="skladovy-pohyb">
<polozkyObchDokladu>
<polozka>
<cisRad>1</cisRad>
<mj>300</mj>
</polozka>
</polozkyObchDokladu>
</realizaceObj>
</objednavka-prijata>
</winstrom>

JSON usage example

{    "flexibee": {        "objednavka-prijata": {            "id": "code:OBP0004\/2012",            "realizaceObj@type": "faktura-vydana",            "realizaceObj": {                "typDokl": "code:FAKTURA",
"varSym": "12345",
"polozkyObchDokladu": [
{
"cisRad": 1,
"mj": "1",
"vyrobniCisla": [
123,
456
]
}
]
}
}
}
}

Creating a deposit invoice

An issued deposit invoice can also be created from a received order. Just as in the application, you can directly specify the deposit amount, which does not have to correspond to the full order value.

The resulting request might look like this:

<?xml version="1.0"?>
<winstrom version="1.0">
<objednavka-prijata>
<id>code:OBP0004/2012</id>
<tvorbaZalohy>
<id>ext:...</id>
<!-- lze použít libovolný identifikátor -->
<typDokl>...</typDokl>
<!-- částka vytvářené zálohy -->
<castka>...</castka>
<!-- alternativní zadání částky zálohy zadáním procent z celkové částky objednávky -->
<procent>...</procent>
</tvorbaZalohy>
</objednavka-prijata>
</winstrom>

Order fulfillment within invoice creation

Within a single API request, you can create an invoice and simultaneously fulfill an existing order into that invoice using the tmp identifier <id>tmp:FAV123</id>

Example:

<?xml version="1.0" encoding="utf-8"?>
<winstrom version="1.0">
<faktura-vydana>
<id>tmp:FAV123</id>
<typDokl>code:FAKTURA</typDokl>
<firma>code:ČOKOLÁDA</firma>
<datVyst>2026-01-08</datVyst>
</faktura-vydana>
<objednavka-prijata>
<id>56</id>
<realizaceObj type="faktura-vydana">
<id>tmp:FAV123</id>
<typDokl>code:FAKTURA</typDokl>
<polozkyObchDokladu>
<polozka>
<cisRad>1</cisRad>
<mj>1</mj>
</polozka>
</polozkyObchDokladu>
</realizaceObj>
</objednavka-prijata>
</winstrom>
Did this answer your question?