Sandbox vs. produkcia
Cieľ je jedna cesta kódu pre obe prostredia. Prechod na produkciu je výmena testovacieho kľúča efk_pk_test_… za live kľúč efk_pk_live_…; base URL aj poradie volaní ostávajú rovnaké.
Kedy sa sandbox správa ako produkcia
Hneď pre účty registrované od 02.10.2026 a pre staršie účty, ktorých vlastník zapol v portáli Tím a oprávnenia → Sandbox ako produkcia (do 01.11.2026 sa dá vypnúť). Od 01.11.2026 pre všetkých. Ostatné staršie účty majú do 01.11.2026 mäkký sandbox zo stĺpca „Sandbox (mäkký)“.
Rozdiely
| Oblasť | Sandbox (mäkký) | Produkcia (live kľúč) | Sandbox ako produkcia |
|---|---|---|---|
Zápis do Peppolu pri POST /v1/agent/organizations | Firmu automaticky zapíše do TEST siete (pole peppol_sandbox). | Nikdy. | Už nie. Volajte POST /v1/agent/peppol/enroll. |
verificationTokenHex v POST /v1/agent/peppol/enroll | Nepovinný, odpoveď nesie varovanie. | Povinný, overuje sa na Finančnej správe. | Povinný aj v sandboxe (stačí ľubovoľný hex). |
| Odoslanie bez Peppol účtu | Dnes prejde. | Odmietne: „Peppol účet nie je aktívny“. | Odmietne aj sandbox, s pokynom zavolať enroll. |
| Peppol ID | 9915:<DIČ> | 0245:<DIČ> | Bez zmeny. |
Peppol ID v sandboxe
GET /v1/agent/peppol/recipient a receiverPeppolId v POST /v1/agent/peppol/preflight prijmú v sandboxe aj 0245:<DIČ> a nájdu testovacieho účastníka 9915:<DIČ>. Platí to iba pre tieto dve čítacie volania. Odosielanie faktúr cez Agent API berie príjemcu z DIČ odberateľa, takže sa ho táto úprava netýka.
EndpointID schému 9915. Platí to v testovacej Peppol sieti u každého poskytovateľa.Testovacie tokeny
Fungujú iba s test kľúčom, presná hodnota, bez ohľadu na veľkosť písmen. Live kľúče nikdy nesimulujú.
| Token | Výsledok |
|---|---|
000000000000dead | 400 Verifikačný token nie je platný a webhook participant.failed, rovnako ako v produkcii. |
000000000000beef | 201 so status: "send_only" a reception.held_by { ap_host: "sandbox-other-ap.efaktura.test", cert_org: "Sandbox iný poštár" }, plus webhook participant.failed s kódom PARTICIPANT_HELD_ELSEWHERE. Príjem drží iný poskytovateľ, odosielanie funguje. |
000000000000beef a neprázdny migrationCode | 201 so status: "enrolled" (simuluje prenos príjmu). |
| Akýkoľvek iný hex | 201 so status: "enrolled". |
Signály prechodu
V mäkkom sandboxe odpoveď na sandbox enroll bez tokenu a na POST /v1/agent/organizations, ktorý automaticky registruje, nesie vedľa data pole warnings: [{ code, message }] s kódmi SANDBOX_TOKEN_MISSING a SANDBOX_AUTO_ENROLL. Pridávajú sa aj hlavičky:
Deprecation: @1790899200
Sunset: Sat, 31 Oct 2026 23:00:00 GMT
Link: <https://developers.efaktura.sk/docs/sandbox>; rel="deprecation"Sunset zodpovedá 01.11.2026 00:00 v Bratislave.
Izolácia sietí
Platí už teraz. Odoslanie sa odmietne, ak registrácia organizácie v Peppole patrí do inej siete, než akú určuje kľúč (sandbox organizácia s live kľúčom alebo naopak): „Organizácia je registrovaná v inej Peppol sieti, než do ktorej sa odosiela…“.
Odporúčaný kód
V sandboxe firmu aktivujete jedným volaním enroll s ľubovoľným hex tokenom, uložte org_id a skontrolujte peppol_status. V produkcii sa firma aktivuje po výbere poskytovateľa na portáli FS, buď klikom klienta v našom e‑maile, alebo vaším enrollom s kódom od klienta (pozri Spustenie naostro).
# 1. Založenie organizácie
# náhodné IČO/DIČ: ukážkové hodnoty mohol použiť iný partner (409)
ICO=$(printf '%08d' $(( (RANDOM<<15 | RANDOM) % 100000000 )))
DIC=2$(printf '%09d' $(( (RANDOM<<15 | RANDOM) % 1000000000 )))
curl -X POST https://api.efaktura.sk/v1/agent/organizations \
-H "X-API-Key: $EFAKTURA_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "name": "Tatra Servis s.r.o.", "ico": "'$ICO'", "dic": "'$DIC'", "ic_dph": "SK'$DIC'", ... }'
# uložte data.org_id
# 2. Enroll: v produkcii token z Finančnej správy, v sandboxe napr. "a1b2c3"
curl -X POST https://api.efaktura.sk/v1/agent/peppol/enroll \
-H "X-API-Key: $EFAKTURA_API_KEY" \
-H "X-Organization-Id: $SENDER_ORG_ID" \
-H "Content-Type: application/json" \
-d '{ "verificationTokenHex": "a1b2c3" }'
# 3. Kontrola stavu
curl https://api.efaktura.sk/v1/agent/organizations/$SENDER_ORG_ID \
-H "X-API-Key: $EFAKTURA_API_KEY"
# peppol_status (odpoveď je objekt bez obálky data)