Orders API umožňuje synchronizovat objednávky z vašeho e-shopu do Retina v reálném čase. Je to moderní alternativa k Retino XML feedu – místo periodických importů synchronizujete objednávky okamžitě při jejich vytvoření.
Kompletní technickou referenci naleznete v API dokumentaci.
🤔 Kdy použít Orders API?
Před implementací zvažte, jaký typ synchronizace potřebujete:
Potřebujete Tracking s okamžitými notifikacemi?
✅ ANO → Orders API (instantní synchronizace)
- E-maily o vytvoření objednávky zasílané okamžitě 
- Real-time sledování zásilek 
- Okamžité aktualizace stavů 
- Integrace webhooků s e-shopem 
✅ NE → Retino XML Feed (synchronizace do 6 hodin)
- Jednodušší implementace (jen vystavíte XML feed URL) 
- Stačí, pokud používáte Returns 
- Zákazník nemůže vrátit zboží do 6 hodin po nákupu 
- Vhodné, pokud nemůžete volat API z vašeho systému 
Proč používat Orders API?
- Okamžitá synchronizace – objednávka je v Retinu ihned po vytvoření 
- Transakční e-maily – můžete odesílat potvrzení objednávky v reálném čase 
- Aktuální data – změny v objednávce se projeví okamžitě 
Příprava
1. Vytvořte API Token
V Nastavení → API v2 vytvořte nový token. Token použijete v hlavičce každého požadavku:
Authorization: váš_api_token
2. Vytvořte Store ID
Co je Store ID?
Store ID je jedinečný identifikátor vašeho e-shopu v Retinu. Společně s číslem objednávky (code) tvoří unikátní klíč pro každou objednávku.
Proč je Store ID důležité?
- Unikátní identifikace: Kombinace - code+- store_idjednoznačně identifikuje objednávku
- Automatický upsert: Při opakovaném odeslání stejné kombinace se objednávka aktualizuje místo vytvoření duplikátu 
- Multi-store podpora: Můžete mít více e-shopů pod jedním Retino účtem 
Jak vytvořit Store ID:
- Přejděte do Nastavení → API v2 
- V sekci "Store IDs" klikněte na "Přidat Store ID" 
- Zadejte identifikátor (např. "hlavni-eshop", "eshop-sk") 
- Uložte a použijte tento identifikátor v každém API požadavku 
Důležité: Store ID nelze po vytvoření objednávky změnit. Vždy používejte stejné Store ID pro všechny objednávky z jednoho e-shopu.
Typické use cases
Use Case 1: Webhook při vytvoření objednávky
Scénář: Zákazník dokončí nákup ve vašem e-shopu a chcete mu okamžitě poslat potvrzovací e-mail.
Řešení:
- Nastavte webhook v e-shopu, který se spustí po vytvoření objednávky 
- Webhook odešle objednávku do Retina pomocí - POST /api/v2/orders
- Retino objednávku vytvoří a může odeslat potvrzovací e-mail zákazníkovi 
Příklad požadavku:
curl -X POST "https://app.retino.com/api/v2/orders" \  -H "Authorization: váš_api_token" \  -H "Content-Type: application/json" \  -d '{    "code": "OBJ-2025-001",    "store_id": "hlavni-eshop",    "order_date": "2025-10-23T14:00:00Z",    "currency": "CZK",    "language": "cs",    "price": {      "with_vat": "1999.00"    },    "customer": {      "email": "[email protected]",      "phone": "+420123456789"    },    "shipping_address": {      "name": "Jan Novák",      "street": "Testovací",      "house_number": "1",      "city": "Praha",      "postal_code": "11000",      "country": "CZ"    },    "items": [      {        "name": "Smartphone XY",        "code": "PROD-001",        "amount": "1.00",        "item_type": "PRODUCT",        "total_price": {          "with_vat": "1799.00"        }      },      {        "name": "Doprava PPL",        "item_type": "SHIPPING",        "total_price": {          "with_vat": "199.00"        }      }    ]  }'
Use Case 2: Aktualizace stavu při expedici
Scénář: Objednávku jste zabalili a expedovali. Chcete informovat zákazníka o odeslání.
Řešení:
- Skladový systém označí objednávku jako expedovanou 
- Zavolejte endpoint pro změnu stavu 
- Retino může odeslat e-mail o odeslání zásilky 
Příklad:
curl -X PATCH "https://app.retino.com/api/v2/orders/UUID_OBJEDNAVKY/status?status_value=DISPATCHED" \ -H "Authorization: váš_api_token"
Use Case 3: Prvotní import historických objednávek
Scénář: Máte existující e-shop s tisíci objednávek a chcete je přenést do Retina.
Řešení:
- Exportujte objednávky za posledních 30 měsíců z vašeho e-shopu 
- Rozdělte je do dávek po max. 100 objednávkách 
- Použijte endpoint - POST /api/v2/orders/bulkpro import každé dávky
Příklad:
curl -X POST "https://app.retino.com/api/v2/orders/bulk" \  -H "Authorization: váš_api_token" \  -H "Content-Type: application/json" \  -d '[    {      "code": "OBJ-001",      "store_id": "hlavni-eshop",      "price": {"with_vat": "1000.00"},      "customer": {"email": "[email protected]"}    },    {      "code": "OBJ-002",      "store_id": "hlavni-eshop",      "price": {"with_vat": "2000.00"},      "customer": {"email": "[email protected]"}    }  ]'
API vrací informaci o úspěšně zpracovaných a chybných objednávkách.
Use Case 4: Částečná aktualizace údajů
Scénář: Zákazník změnil e-mail nebo telefonní číslo a vy chcete aktualizovat objednávku.
Řešení:
Použijte PATCH /api/v2/orders/{id} a odešlete pouze pole, která se mění:
curl -X PATCH "https://app.retino.com/api/v2/orders/UUID_OBJEDNAVKY" \  -H "Authorization: váš_api_token" \  -H "Content-Type: application/json" \  -d '{    "customer": {      "email": "[email protected]",      "phone": "+420999888777"    }  }'
Ostatní údaje objednávky zůstávají beze změny.
Stavy objednávek
Objednávka má dva typy stavů. Můžete je měnit pomocí endpointu PATCH /api/v2/orders/{id}/status:
| Typ stavu | Hodnota | Význam | 
| Zpracování | 
 | Nová objednávka | 
| Zpracování | 
 | Kompletace | 
| Zpracování | 
 | Zabaleno | 
| Zpracování | 
 | Expedováno | 
| Zpracování | 
 | Pozastaveno | 
| Zpracování | 
 | Připraveno k vyzvednutí | 
| Zpracování | 
 | Vyzvednuto | 
| Platba | 
 | Čeká na platbu | 
| Platba | 
 | Zaplaceno | 
| Platba | 
 | Částečně vráceno | 
| Platba | 
 | Vráceno | 
| Platba | 
 | Platba selhala | 
Automatická aktualizace vs. vytvoření
Orders API automaticky rozpozná, zda objednávku vytvořit nebo aktualizovat podle kombinace code + store_id:
- První zaslání objednávky - OBJ-001+- hlavni-eshop→ vytvoří se nová (HTTP 201)
- Druhé zaslání stejné kombinace → aktualizuje se existující (HTTP 200) 
Díky tomu můžete používat stejný webhook pro vytvoření i aktualizaci objednávek. Nemusíte kontrolovat, zda objednávka již existuje.
Praktické tipy
Pojmenování Store ID
Pokud provozujete více e-shopů nebo prodejních kanálů, vytvořte pro každý vlastní Store ID:
- eshop-cz– hlavní český e-shop
- eshop-sk– slovenský e-shop
- shopify-store– Shopify obchod
- amazon-cz– Amazon
Důležitost e-mailu zákazníka
Pole customer.email není povinné, ale je kritické pro transakční e-maily. Bez e-mailu nemůže Retino poslat zákazníkovi:
- Potvrzení objednávky 
- Upozornění na odeslání zásilky 
- Informace o doručení 
Správné typy položek
Rozlišujte typy položek pro lepší přehled:
- PRODUCT– produkty
- SHIPPING– poplatek za dopravu
- BILLING– poplatek za platbu
- DISCOUNT– slevy a kupóny
Historie stavů
Můžete poslat celou historii stavů objednávky najednou pomocí pole statuses. To je užitečné při prvotním importu:
"statuses": [  {"name": "PAID", "date": "2025-10-23T10:00:00Z"},  {"name": "PICKING", "date": "2025-10-23T12:00:00Z"},  {"name": "DISPATCHED", "date": "2025-10-23T15:00:00Z"}]
Časté problémy
Store ID neexistuje
Chyba: "Store ID 'xyz' does not exist"
Řešení: Vytvořte Store ID v nastavení API před odesláním první objednávky.
Objednávka se nevytváří, jen aktualizuje
Důvod: Objednávka s tímto code + store_id již existuje.
Řešení: Toto je očekávané chování. Pokud chcete vytvořit novou objednávku, použijte jiné číslo objednávky (code).
Chyba s cenami
Chyba: "Price mismatch: 1000 + 210 ≠ 1200"
Řešení: Pokud posíláte všechny tři cenové hodnoty (with_vat, without_vat, vat), musí matematicky souhlasit. Můžete poslat jen jednu hodnotu a ostatní vynechat.
Technická dokumentace: app.retino.com/api/docs
Nastavení API: app.retino.com/settings/api-v2/

