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/organizationsFirmu automaticky zapíše do TEST siete (pole peppol_sandbox).Nikdy.Už nie. Volajte POST /v1/agent/peppol/enroll.
verificationTokenHex v POST /v1/agent/peppol/enrollNepovinný, odpoveď nesie varovanie.Povinný, overuje sa na Finančnej správe.Povinný aj v sandboxe (stačí ľubovoľný hex).
Odoslanie bez Peppol účtuDnes prejde.Odmietne: „Peppol účet nie je aktívny“.Odmietne aj sandbox, s pokynom zavolať enroll.
Peppol ID9915:<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.

Raw UBL (SAPI, konektor) musí v sandboxe niesť v 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ú.

TokenVýsledok
000000000000dead400 Verifikačný token nie je platný a webhook participant.failed, rovnako ako v produkcii.
000000000000beef201 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 migrationCode201 so status: "enrolled" (simuluje prenos príjmu).
Akýkoľvek iný hex201 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)