ePošťák.sk

Prístup k API

Odporúčané postupy integrácie

Vyberiete správny vstup (OAuth, odkaz na súhlas alebo Nastavenia → API) a prejdete postup pre svoj typ integrácie: od voľby poštára cez prepojenie a volania API až po odvolanie a platbu.

Predpoklady

  • Viete, či softvér patrí firme sama, alebo ho dodávate klientom, a kto má platiť za doklady.
  • Ako partner máte podpísanú zmluvu integrátora (alebo technického partnera) a registrovaného OAuth klienta s presmerovacími adresami.

Ktorý vstup použiť

Pravidlo je jedno. Ak je vlastník alebo správca firmy práve prihlásený vo vašej aplikácii, použite OAuth (tlačidlo „Prepojiť s ePošťákom“). Ak pripájate firmu zo servera alebo jej posielate odkaz e-mailom, použite odkaz na súhlas (consent link). Nastavenia → API je iba pre firmu, ktorá používa vlastný softvér (typ 2).

OAuth aj odkaz skončia v tom istom prepojení: ponuka súhlasu s uloženým odtlačkom, KYC záznam, väzba integrátora na firmu a webhook consent.accepted. Kliknutie „Povoliť prístup“ je súhlas firmy; podmienky (spravovaný integrátor alebo technický partner) sa berú z vašej zmluvy rovnako ako pri odkaze. Ani jedna cesta nevydáva firemný kľúč: pracujete s centrálnym sk_int_* a hlavičkou X-Firm-Id.

SituáciaVstup
Vlastník firmy je prihlásený vo vašej aplikáciiOAuth: tlačidlo „Prepojiť s ePošťákom“
Pripájate zo servera alebo posielate odkaz e-mailomOdkaz na súhlas: POST /api/v1/consent-offers
Firma používa vlastný softvér a platí samaNastavenia → API (typ 2), kľúč sk_live_*

Presné názvy v ovládacom paneli API

Pri firme vidíte tieto polia. V texte nižšie ich používame presne takto.

PoleHodnoty a význam
integrationPathsapi, enterprise_api alebo connector. OAuth vždy vytvára enterprise_api.
relationshipModemanaged_service (spravovaný integrátor) alebo technical_delegation (technický partner).
payerModeintegrator_billed (platí integrátor), firm_billed (platí firma) alebo none.
credentialsAvailabletrue iba keď je API aktívne, platí firma (firm_billed), firma je schválená a jej schránka je aktívna alebo registrovaná. Vtedy si firma môže vytvoriť vlastný kľúč v Nastavenia → API. Pri integrator_billed je false.
dashboardAccessModecompliance_only (obmedzený prehľad pre firmu) alebo full_dashboard (plný dashboard).

OAuth krok za krokom

  1. 1. Presmerujte vlastníka na autorizačnú adresu

    GET https://epostak.sk/oauth/authorize s parametrami client_id, redirect_uri, response_type=code, scope, state, code_challenge a code_challenge_method=S256. PKCE je povinné, state (náhodný reťazec proti CSRF) odporúčame vždy. Oprávnenia sú prienik požadovaných, oprávnení OAuth klienta a oprávnení ponuky a musia obsahovať firms:manage a aspoň jedno documents:*.

  2. 2. Vlastník sa prihlási a klikne na „Povoliť prístup“

    Vlastník alebo správca firmy sa prihlási do ePošťáka a uvidí zhrnutie ponuky: kto, čo a za akých podmienok. Kliknutie na „Povoliť prístup“ je súhlas firmy. Ak už platný prijatý súhlas pokrýva požadované oprávnenia, použije sa; inak sa vytvorí nová ponuka a prijme sa rovnakým postupom ako odkaz na súhlas. Iný používateľ dostane FORBIDDEN.

  3. 3. Prijmite kód na redirect_uri

    ePošťák presmeruje vlastníka na redirect_uri s parametrami code a state. Skontrolujte state. Kód je jednorazový a platí 10 minút.

  4. 4. Vymeňte kód a uložte firm_id

    POST https://epostak.sk/api/oauth/firm-consent (grant_type=authorization_code, code, client_id, client_secret, redirect_uri, code_verifier). Odpoveď obsahuje firm_id, firm_name, firm_ico, firm_peppol_participant_id (null, kým firma nie je zaregistrovaná), consent_id a scope. Nevydá sa žiadny kľúč: uložte firm_id.

  5. 5. Volajte API centrálnym kľúčom a X-Firm-Id

    Svoj centrálny sk_int_* vymeňte cez POST /api/v1/auth/token za JWT a pri každom volaní za firmu pošlite X-Firm-Id: <firm_id>.

Výmena kódu (syntetické hodnoty)
curl -X POST "https://epostak.sk/api/oauth/firm-consent" \
  -H "Content-Type: application/json" \
  -d '{"grant_type":"authorization_code","code":"<KOD>","client_id":"<OAUTH_CLIENT_ID>","client_secret":"<OAUTH_CLIENT_SECRET>","redirect_uri":"https://program.example/oauth/callback","code_verifier":"<PKCE_VERIFIER>"}'

# 200 -> {"token_type":"central_credential","firm_id":"<FIRM_ID>","firm_name":"Example s.r.o.","firm_ico":"12345678","firm_peppol_participant_id":null,"consent_id":"<CONSENT_ID>","activation":"active","active_from":null,"scope":"firms:manage documents:send documents:read",...}
Volanie za firmu
curl "https://epostak.sk/api/v1/firms" \
  -H "Authorization: Bearer <JWT_Z_CENTRALNEHO_SK_INT>" \
  -H "X-Firm-Id: <FIRM_ID>"

Odkaz na súhlas krok za krokom

  1. 1. Vytvorte odkaz

    POST /api/v1/consent-offers (odporúčané) alebo staršie POST /api/v1/firms/consent-link s DIČ alebo IČO firmy a oprávneniami. Voliteľné return_url (https) musí mať pôvod z presmerovacích adries povolených pre integrátora, inak VALIDATION_ERROR. Odpoveď obsahuje id a consentUrl; odkaz platí 14 dní a nemožno ho načítať znova.

  2. 2. Vlastník firmy odkaz potvrdí

    Odkaz otvoríte vlastníkovi v prehliadači alebo ho pošlete e-mailom. Vlastník alebo správca sa prihlási a súhlas potvrdí.

  3. 3. Webhook a firm_id

    Webhook consent.accepted príde na adresu nastavenú cez PUT /api/v1/onboarding-requests/webhook. Po prijatí vráti GET /api/v1/consent-offers/{id} aj firmId, firmIco, firmName a firmPeppolParticipantId (pred prijatím sú null). Uložte firmId.

Odkaz na súhlas (syntetické hodnoty)
curl -X POST "https://epostak.sk/api/v1/firms/consent-link" \
  -H "Authorization: Bearer <JWT_Z_CENTRALNEHO_SK_INT>" \
  -H "Content-Type: application/json" \
  -d '{"dic":"2022988022","customer_reference":"ZAKAZNIK-001","scopes":["firms:manage","documents:send","documents:read"],"return_url":"https://program.example/spat"}'

curl "https://epostak.sk/api/v1/consent-offers/<OFFER_ID>" \
  -H "Authorization: Bearer <JWT_Z_CENTRALNEHO_SK_INT>"
# 200 -> {"status":"accepted","firmId":"<FIRM_ID>","firmIco":"12345678","firmName":"Example s.r.o.","firmPeppolParticipantId":null,...}

Typ 1: dodávateľ ERP alebo účtovníctva ako spravovaný integrátor

Dodávate softvér klientom a za doklady platíte vy. integrationPath: enterprise_api, relationshipMode: managed_service, payerMode: integrator_billed, dashboardAccessMode: compliance_only. Firma nedostáva žiadny kľúč (credentialsAvailable: false).

KrokČo sa deje
Voľba poštára (jediné KYC)Firma si na portáli Finančnej správy SR (vpds.financnasprava.sk) vyberie ePošťák ako „digitálneho poštára“. Tento výber je jediné KYC; neexistuje iná registrácia a nič sa neoveruje na epostak.sk.
Registrácia schránkyPo výbere poštára sa firme zaregistruje elektronická schránka (Peppol ID 0245:DIČ). Kým schránka nie je zaregistrovaná, firm_peppol_participant_id je null; spojenie s integrátorom to nebráni, ale dokumenty sa odosielajú až po registrácii.
PrepojenieTlačidlo „Prepojiť s ePošťákom“ (OAuth), ak je vlastník firmy prihlásený vo vašej aplikácii, alebo odkaz na súhlas (POST /api/v1/consent-offers, staršia možnosť POST /api/v1/firms/consent-link) pre server-to-server a odkazy v e-maile. Obe cesty skončia v tom istom prepojení: webhook consent.accepted, firm_id v GET /api/v1/consent-offers/{id}.
Použitie APICentrálny sk_int_* kľúč integrátora → POST /api/v1/auth/token → JWT. Každé volanie za firmu posiela hlavičku X-Firm-Id: <firm_id>. GET /api/v1/firms vráti dostupné firmy, GET /api/v1/firms/{id} detail, odosielanie a príjem idú cez POST /api/v1/documents/send, GET /api/v1/documents/inbox a súvisiace endpointy. Peppol identifikátor firmy je vo firm_peppol_participant_id (odpoveď OAuth aj GET /api/v1/consent-offers/{id}); POST /api/v1/firms/{id}/peppol-identifiers je len pre priamu firmu, nie pre sk_int_*.
Čo firma vidí v /dObmedzený prehľad (compliance_only): firma vidí stav schránky a v Nastavenia → Digitálny poštár kartu „Prístup integrátora“. Doklady spravuje váš program cez API.
OdvolanieFirma: Nastavenia → Digitálny poštár → Prístup integrátora → odvolať. Integrátor: v partnerskom portáli „Odpojiť“ pri firme alebo zrušenie kľúča (DELETE /api/v1/integrator/keys/{keyId}); odvolanie príde ako webhook consent.revoked. Odvolanie zastaví nové volania, Peppol registrácia a už doručené doklady ostávajú.
PlatbaPlatíte vy podľa integrátorskej zmluvy, súhrnne. Cenník: https://epostak.sk/cennik.

Typ 2: vlastný softvér firmy

Firma pripája vlastný systém a platí sama. payerMode: firm_billed, credentialsAvailable: true (keď je API aktívne a schránka registrovaná). Integrátor v tom nie je, preto sa nepoužíva OAuth ani odkaz na súhlas.

KrokČo sa deje
Voľba poštára (jediné KYC)Firma si na portáli Finančnej správy SR (vpds.financnasprava.sk) vyberie ePošťák ako „digitálneho poštára“. Tento výber je jediné KYC; neexistuje iná registrácia a nič sa neoveruje na epostak.sk.
Registrácia schránkyPo výbere poštára sa firme zaregistruje elektronická schránka (Peppol ID 0245:DIČ). Kým schránka nie je zaregistrovaná, firm_peppol_participant_id je null; spojenie s integrátorom to nebráni, ale dokumenty sa odosielajú až po registrácii.
PrepojenieFirma v Nastavenia → API objedná a aktivuje API a klikne Vytvoriť produkčný API kľúč.
Použitie APIKľúč sk_live_* (client_id a client_secret) firma vloží do svojho softvéru. Softvér ho vymení cez POST /api/v1/auth/token za JWT. Hlavička X-Firm-Id nie je potrebná, kľúč patrí jednej firme. client_secret sa zobrazí iba raz.
Čo firma vidí v /dPlný dashboard /d so svojím účtom.
OdvolanieFirma: v Nastavenia → API kľúč zruší alebo vygeneruje nový; starý okamžite prestane fungovať.
PlatbaPlatí firma podľa cenníka API, bez mesačného paušálu a minimálnej viazanosti. Cenník: https://epostak.sk/cennik.

Typ 3: prísny White Label

Iba API: firma ePošťák nevidí, vzťah so zákazníkom vlastní partner pod vlastnou značkou. Nepoužíva sa OAuth ani odkaz na súhlas (OAuth takúto firmu odmietne s WHITE_LABEL_API_ONLY).

KrokČo sa deje
Voľba poštára (jediné KYC)Firma si na portáli Finančnej správy SR (vpds.financnasprava.sk) vyberie ako digitálneho poštára partnera. Finančná správa doručí jednorazový verification_token na podpísaný webhook partnera. Toto je jediné KYC.
Registrácia schránkyPartner zavolá POST /white-label/participants/registrations. Lokálna firma a väzba vzniknú až po potvrdení úspešného zápisu; potom partner zavolá POST /customers.
PrepojenieŽiadny súhlas cez ePošťák: partner rieši vzťah s klientom sám.
Použitie APIPartnerský kľúč a zákazník určený cez customerRef podľa referencie White Label.
Čo firma vidí v /dNič: firma nemá účet ani e-maily ePošťáka.
OdvolaniePartner ukončí režim; SMP sa migruje iba vtedy, keď firma mení digitálneho poštára.
PlatbaWhite Label sa poskytuje len v rámci strategického partnerstva a podmienky určuje dohoda s ePošťákom. Ostatné typy: https://epostak.sk/cennik.

Typ 4: technický partner s delegovaním

Partner pracuje za firmu, ktorá má vlastnú API objednávku a platí sama. integrationPath: enterprise_api, relationshipMode: technical_delegation, payerMode: firm_billed, dashboardAccessMode: full_dashboard.

KrokČo sa deje
Voľba poštára (jediné KYC)Firma si na portáli Finančnej správy SR (vpds.financnasprava.sk) vyberie ePošťák ako „digitálneho poštára“. Tento výber je jediné KYC; neexistuje iná registrácia a nič sa neoveruje na epostak.sk.
Registrácia schránkyPo výbere poštára sa firme zaregistruje elektronická schránka (Peppol ID 0245:DIČ). Kým schránka nie je zaregistrovaná, firm_peppol_participant_id je null; spojenie s integrátorom to nebráni, ale dokumenty sa odosielajú až po registrácii.
PrepojenieOAuth alebo odkaz na súhlas. Firma jedným potvrdením udelí súhlas a objedná si vlastné štandardné API (ak ho ešte nemá). Ak platí iba zmluva technického partnera pre Enterprise API, OAuth použije tento režim automaticky.
Použitie APIRovnako ako pri type 1: centrálny sk_int_* a X-Firm-Id. Do inštalácie u zákazníka patrí iba kľúč obmedzený na jednu firmu (POST /api/v1/integrator/keys so scopedFirmId = firm_id), nie hlavný kľúč.
Čo firma vidí v /dPlný dashboard /d; firma vidí aj svoje doklady a prístup partnera.
OdvolanieFirma: Nastavenia → Digitálny poštár → Prístup integrátora → odvolať. Integrátor: v partnerskom portáli „Odpojiť“ pri firme alebo zrušenie kľúča (DELETE /api/v1/integrator/keys/{keyId}); odvolanie príde ako webhook consent.revoked. Odvolanie zastaví nové volania, Peppol registrácia a už doručené doklady ostávajú.
PlatbaPlatí firma podľa svojho cenníka v ePošťáku (alebo ceny dohodnutej s partnerom). Partner neplatí nič. Cenník: https://epostak.sk/cennik.

Typ 5: Connector

Pre programy, ktoré nevedia posielať UBL: Connector prijíma JSON a firmu určuje cez customerRef namiesto X-Firm-Id. integrationPath: connector. Režim a platiteľ (relationshipMode a payerMode) vyplývajú z vašej zmluvy ako pri type 1 alebo 4.

KrokČo sa deje
Voľba poštára (jediné KYC)Firma si na portáli Finančnej správy SR (vpds.financnasprava.sk) vyberie ePošťák ako „digitálneho poštára“. Tento výber je jediné KYC; neexistuje iná registrácia a nič sa neoveruje na epostak.sk.
Registrácia schránkyPo výbere poštára sa firme zaregistruje elektronická schránka (Peppol ID 0245:DIČ). Kým schránka nie je zaregistrovaná, firm_peppol_participant_id je null; spojenie s integrátorom to nebráni, ale dokumenty sa odosielajú až po registrácii.
PrepojenieOdkaz na súhlas s rozhraním connector (POST /api/v1/consent-offers, requestedInterfaces alebo integrationPath). OAuth vytvára iba enterprise_api.
Použitie APIJWT z centrálneho sk_int_* a customerRef vo volaniach podľa referencie Connectora.
Čo firma vidí v /dPodľa dashboardAccessMode zmluvy: compliance_only alebo full_dashboard.
OdvolanieFirma: Nastavenia → Digitálny poštár → Prístup integrátora → odvolať. Integrátor: v partnerskom portáli „Odpojiť“ pri firme alebo zrušenie kľúča (DELETE /api/v1/integrator/keys/{keyId}); odvolanie príde ako webhook consent.revoked. Odvolanie zastaví nové volania, Peppol registrácia a už doručené doklady ostávajú.
PlatbaPodľa payerMode: integrator_billed platí integrátor, firm_billed firma. Cenník: https://epostak.sk/cennik.

Výmena kódu: /oauth/firm-consent a /oauth/token

  • Kód nového súhlasu vymeňte cez POST /api/oauth/firm-consent (rovnaký vstup ako /oauth/token). Vráti firm_id a údaje firmy, nie kľúč: uložte firm_id a API volajte centrálnym kľúčom sk_int_* s hlavičkou X-Firm-Id.
  • POST /api/oauth/token sa nemení. Kód nového súhlasu odmietne s 400 invalid_grant a kód pritom nepoužije, takže ten istý kód hneď vymeníte cez /api/oauth/firm-consent.
  • Ak si firma zatiaľ platí API sama a prijme vašu ponuku, odpoveď má activation "pending" a active_from. Súhlas platí a firm_id je konečné, volania s X-Firm-Id však fungujú až od active_from (začiatok ďalšieho fakturačného mesiaca), keď platenie prejde na vás. Firmu znova na súhlas neposielajte; ďalšie „Povoliť prístup“ použije ten istý súhlas.
  • Staré kľúče sk_live_* z predchádzajúceho OAuth fungujú, kým ich niekto neodvolá. Kľúč sk_live_* cez /api/oauth/token dostanú už len staršie súhlasy bez uloženého odtlačku ponuky.
  • Chyby autorizácie majú kódy INVALID_CLIENT, INVALID_SCOPE, FORBIDDEN, WHITE_LABEL_API_ONLY, PFS_SELECTION_REQUIRED, PFS_ACTIVATION_IN_PROGRESS (503), INTEGRATOR_NOT_READY, CONSENT_STATE_CHANGED, TEMPORARILY_UNAVAILABLE (503), BILLING_TRANSITION_CONFLICT, FIRM_PEPPOL_IDENTITY_REQUIRED a FIRM_IDENTITY_REQUIRED. Limit je 20 žiadostí za minútu.

Očakávaný výsledok

Viete, ktorý vstup použiť, ktorý typ integrácie je váš a čo presne firma, partner a platiteľ v každom kroku robia.

Keď to nefunguje

  • Autorizácia vráti PFS_SELECTION_REQUIRED: firma si ešte nevybrala ePošťák na vpds.financnasprava.sk. Po výbere zopakujte prepojenie.
  • Autorizácia vráti FORBIDDEN: prihlásený používateľ nie je vlastník ani správca firmy.
  • Výmena kódu vráti invalid_grant: kód už bol použitý alebo prešlo 10 minút, redirect_uri sa nezhoduje alebo code_verifier nepasuje. Začnite autorizáciu od začiatku.
  • GET /api/v1/consent-offers/{id} stále vracia firmId: null: firma odkaz ešte neprijala. Odkaz platí 14 dní; po vypršaní vytvorte nový.

Pokračujte

  1. Prístup k API

    Rozlíši vlastný kľúč z Nastavení od pripojenia cez program partnera.

  2. Autentifikácia

    Rozlíši typy prístupu a nasmeruje na presnú referenciu.

  3. Spravovaný integrátor

    Vysvetlí agregovanú platbu bez zámeny s white label.

  4. Technický partner

    Rozlíši technickú delegáciu od spravovanej služby a white label.

  5. White label

    Prehľad celej white-label cesty, nie druhý wizard.

Súvisiace návody

Všetka dokumentácia