Ako začať (Onboarding)
Štyri kroky od registrácie po prvú faktúru.
Registrácia na Finančnej správe SR
- Prihláste sa na portál Finančnej správy SR pomocou občianskeho preukazu (eID) alebo prihlasovacích údajov
- V sekcii e-Faktúry zvoľte ePošťák (Kaja Solutions s.r.o.) ako vášho digitálneho poštára. Ako si vybrať digitálneho poštára →
Aktivácia Peppol ID
- Po registrácii vám zašleme pozvánku na e-mail
- Po akceptovaní pozvánky vas zapíšeme do Peppol siete (SMP) a pridelíme vam unikátny Peppol ID
✓ Demo testovacie účty
Tieto účty sú registrované v Peppol SMK (testovacom prostredí) a môžete ich ihneď použiť na testovanie Enterprise API. Posielanie dokumentov medzi nimi funguje cez reálnu Peppol sieť.
| Účet | Peppol ID | API Key |
|---|---|---|
| Test Odosielateľ | 0245:0000000002 |
sk_live_test_e8a28d2e5ec006b2e27a3a1a92739fd93f1d71e70abe6733 |
| Test Prijímateľ | 0245:0000000001 |
sk_live_test_5e188b91708ca938e1ee50678b345a3c152b4d4a83d31eac |
| Demo Integrátor (ERP) Spravuje oba účty vyššie |
X-Firm-Id:b1022d80-5016-4dad-a8d2-53685cab1701f2cea3cf-f29e-4ea2-9e76-b06a312ec9ab |
sk_int_test_face36350e1005c930acff02a00f73140f2a1eabfb87c282 |
b1022d80-5016-4dad-a8d2-53685cab1701 (Sender) alebo f2cea3cf-f29e-4ea2-9e76-b06a312ec9ab (Receiver).
Získanie API kľúčov
- Ak potrebujete vlastné API kľúče (mimo demo účtov), napíšte nám na info@epostak.sk a vygenerujeme vám ich
- Kľúč použite v hlavičke:
Authorization: Bearer sk_live_xxxxx
Odoslanie prvého dokumentu
Príklad odoslania faktúry v JSON mode:
curl -X POST https://epostak.sk/api/enterprise/documents/send \ -H "Authorization: Bearer sk_live_xxxxx" \ -H "Content-Type: application/json" \ -d '{"receiverPeppolId":"0245:0000000001","items":[{"description":"Konzultacie","quantity":1,"unitPrice":500,"vatRate":23}]}'
import requests resp = requests.post("https://epostak.sk/api/enterprise/documents/send", headers={"Authorization": "Bearer sk_live_xxxxx"}, json={"receiverPeppolId": "0245:0000000001", "items": [{"description":"Konzultacie","quantity":1,"unitPrice":500,"vatRate":23}]} ) print(resp.json())
const resp = await fetch("https://epostak.sk/api/enterprise/documents/send", { method: "POST", headers: {"Authorization":"Bearer sk_live_xxxxx","Content-Type":"application/json"}, body: JSON.stringify({receiverPeppolId:"0245:0000000001",items:[{description:"Konzultacie",quantity:1,unitPrice:500,vatRate:23}]}) }); console.log(await resp.json());
ERP Integrátori
Pre systemy, ktore spravuju viacerých klientov.
Príklad požiadavky s integrátorským kľúčom:
curl -X POST https://epostak.sk/api/enterprise/documents/send \ -H "Authorization: Bearer sk_int_xxxxx" \ -H "X-Firm-Id: firm_abc123" \ -H "Content-Type: application/json" \ -d '{"receiverPeppolId":"0245:0000000001","items":[...]}'
Autentifikácia
API kľúče — jednoduché a bezpečné.
sk_live_*
Priamy prístup k vášmu podniku.
Authorization: Bearer sk_live_xxxxxsk_int_* + X-Firm-Id
Integrátorský kľúč pre správu viacerých klientov.
Authorization: Bearer sk_int_xxxxx X-Firm-Id: firm_abc123
$Rate Limits
$Limitácia požiadaviek na API kľúč
| $Metóda | Limit | $Okno |
|---|---|---|
GET / HEAD |
200 $požiadaviek | 60 $sekúnd |
POST / PUT / PATCH / DELETE |
60 $požiadaviek | 60 $sekúnd |
$Hlavičky odpovede
X-RateLimit-Limit— $maximálny počet požiadaviekX-RateLimit-Remaining— $zostávajúce požiadavkyX-RateLimit-Reset— $Unix timestamp resetuRetry-After— $sekundy do ďalšej požiadavky (pri HTTP 429)
Endpointy
Všetky dostupné API endpointy.
Odosle dokument cez Peppol siet. Podporuje JSON mode a raw UBL XML mode.
Telo požiadavky — JSON mode
| Pole | Type | Povinné | Popis |
|---|---|---|---|
| receiverPeppolId | string | yes | Peppol ID prijemcu |
| items | array | yes | Položky faktúry |
| items[].description | string | yes | Popis polozky |
| items[].quantity | number | yes | Mnozstvo |
| items[].unitPrice | number | yes | Cena za jednotku bez DPH |
| items[].vatRate | number | yes | Sadzba DPH v % |
| items[].discount | number | no | Zlava v % |
| invoiceNumber | string | no | Číslo faktúry — auto ak prázdne |
| issueDate | string | no | ISO 8601 date |
| dueDate | string | no | ISO 8601 date |
| currency | string | no | EUR (default) |
| note | string | no | Poznamka |
| iban | string | no | IBAN |
| receiverName | string | no | Meno prijemcu |
| receiverIco | string | no | ICO |
Telo požiadavky — UBL XML mode
| Pole | Type | Povinné | Popis |
|---|---|---|---|
| xml | string | yes | Raw UBL XML string |
| receiverPeppolId | string | yes | Peppol ID prijemcu |
Príklady
curl -X POST https://epostak.sk/api/enterprise/documents/send \ -H "Authorization: Bearer sk_live_xxxxx" \ -H "Content-Type: application/json" \ -d '{ "receiverPeppolId": "0245:0000000001", "invoiceNumber": "FAK-2025-001", "issueDate": "2025-04-01", "dueDate": "2025-04-15", "items": [{"description": "Vyvoj softveru","quantity": 8,"unitPrice": 125,"vatRate": 23}] }'
import requests resp = requests.post("https://epostak.sk/api/enterprise/documents/send", headers={"Authorization": "Bearer sk_live_xxxxx"}, json={ "receiverPeppolId": "0245:0000000001", "items": [{"description": "Vyvoj softveru", "quantity": 8, "unitPrice": 125, "vatRate": 23}] } ) # {"documentId": "...", "messageId": "...", "status": "SENT"}
const resp = await fetch("https://epostak.sk/api/enterprise/documents/send", { method: "POST", headers: {"Authorization":"Bearer sk_live_xxxxx","Content-Type":"application/json"}, body: JSON.stringify({ receiverPeppolId: "0245:0000000001", items: [{description:"Vyvoj softveru",quantity:8,unitPrice:125,vatRate:23}] }) }); // {documentId: "...", messageId: "...", status: "SENT"}
Odpoveď 201
{ "documentId": "clx9abc123", "messageId": "msg_peppol_xyz", "status": "SENT" }HTTP kody
Vrati zoznam prijatych dokumentov so strankovaniem.
Query parametre
| Parameter | Type | Default | Popis |
|---|---|---|---|
| limit | integer | 20 | Max 100 |
| offset | integer | 0 | Offset pre strankovanie |
| status | string | - | RECEIVED | ACKNOWLEDGED |
Príklad
curl "https://epostak.sk/api/enterprise/documents/inbox?limit=10&status=RECEIVED" \ -H "Authorization: Bearer sk_live_xxxxx"
Odpoveď 200
{ "documents": [{"id":"clx9abc123","status":"received","totalWithVat":1230.00}], "total":42,"limit":10,"offset":0 }Vrati detail prijateho dokumentu vratane UBL XML payloadu.
Príklad
curl https://epostak.sk/api/enterprise/documents/inbox/clx9abc123 \ -H "Authorization: Bearer sk_live_xxxxx"
Odpoveď 200
{ "document": { "id":"clx9abc123", "senderPeppolId":"9914:SK9876543210", "status":"received", "receivedAt":"2025-04-01T10:00:00.000Z", "payload":"<?xml...>" } }HTTP kody
Oznaci dokument ako spracovany. Telo požiadavky nie je potrebne.
Príklad
curl -X POST https://epostak.sk/api/enterprise/documents/inbox/clx9abc123/acknowledge \ -H "Authorization: Bearer sk_live_xxxxx"
Odpoveď 200
{ "documentId":"clx9abc123", "status":"ACKNOWLEDGED", "acknowledgedAt":"2025-04-01T11:00:00.000Z" }HTTP kody
Vráti úplný životný stav dokumentu vrátane histórie stavov a výsledku validácie.
Príklad
curl https://epostak.sk/api/enterprise/documents/clx9abc123/status \ -H "Authorization: Bearer sk_live_xxxxx"
Odpoveď 200
{
"id": "clx9abc123",
"status": "DELIVERED",
"documentType": "invoice",
"senderPeppolId": "0245:SK9876543210",
"receiverPeppolId": "0245:0000000001",
"statusHistory": [{"status":"SENT","timestamp":"2025-04-01T10:00:00.000Z"},{"status":"DELIVERED","timestamp":"2025-04-01T10:01:00.000Z"}],
"validationResult": {"valid":true,"errorCount":0},
"deliveredAt": "2025-04-01T10:01:00.000Z",
"invoiceResponseStatus": null,
"as4MessageId": "msg_peppol_xyz",
"createdAt": "2025-04-01T10:00:00.000Z"
}HTTP kody
Vráti AS4 potvrdenie o doručení, MLR dokument a odpoveď na faktúru (invoice response), ak sú dostupné.
Príklad
curl https://epostak.sk/api/enterprise/documents/clx9abc123/evidence \ -H "Authorization: Bearer sk_live_xxxxx"
Odpoveď 200
{
"documentId": "clx9abc123",
"as4Receipt": "<?xml ...AS4 receipt...>",
"mlrDocument": "<?xml ...MLR...>",
"invoiceResponse": {"status":"AP","document":"<?xml...>"},
"deliveredAt": "2025-04-01T10:01:00.000Z",
"sentAt": "2025-04-01T10:00:00.000Z"
}HTTP kody
Stiahne PDF verziu dokumentu. Vráti binárny obsah s Content-Type: application/pdf.
Príklady
curl https://epostak.sk/api/enterprise/documents/clx9abc123/pdf \ -H "Authorization: Bearer sk_live_xxxxx" \ --output invoice.pdf
resp = requests.get("https://epostak.sk/api/enterprise/documents/clx9abc123/pdf", headers={"Authorization": "Bearer sk_live_xxxxx"}, stream=True) with open("invoice.pdf", "wb") as f: f.write(resp.content)
const resp = await fetch("https://epostak.sk/api/enterprise/documents/clx9abc123/pdf", { headers: {"Authorization": "Bearer sk_live_xxxxx"} }); const buf = await resp.arrayBuffer(); fs.writeFileSync("invoice.pdf", Buffer.from(buf));
HTTP kody
Stiahne UBL XML súbor dokumentu. Vráti XML string s Content-Type: application/xml.
Príklady
curl https://epostak.sk/api/enterprise/documents/clx9abc123/ubl \ -H "Authorization: Bearer sk_live_xxxxx" \ --output invoice.xml
resp = requests.get("https://epostak.sk/api/enterprise/documents/clx9abc123/ubl", headers={"Authorization": "Bearer sk_live_xxxxx"}) with open("invoice.xml", "w") as f: f.write(resp.text)
const resp = await fetch("https://epostak.sk/api/enterprise/documents/clx9abc123/ubl", { headers: {"Authorization": "Bearer sk_live_xxxxx"} }); const xml = await resp.text();
HTTP kody
Odošle odpoveď na prijatú faktúru (invoice response). Funguje iba pre inbound dokumenty.
Telo požiadavky
| Pole | Type | Povinné | Popis |
|---|---|---|---|
| status | string | yes | AP (akceptovana), RE (odmietnutá), UQ (na overenie) |
| note | string | no | Volitelna poznamka |
Príklady
curl -X POST https://epostak.sk/api/enterprise/documents/clx9abc123/respond \ -H "Authorization: Bearer sk_live_xxxxx" \ -H "Content-Type: application/json" \ -d '{"status":"AP","note":"Faktura akceptovana"}'
resp = requests.post("https://epostak.sk/api/enterprise/documents/clx9abc123/respond", headers={"Authorization": "Bearer sk_live_xxxxx"}, json={"status": "AP", "note": "Faktura akceptovana"})
const resp = await fetch("https://epostak.sk/api/enterprise/documents/clx9abc123/respond", { method: "POST", headers: {"Authorization":"Bearer sk_live_xxxxx","Content-Type":"application/json"}, body: JSON.stringify({status:"AP",note:"Faktura akceptovana"}) });
Odpoveď 202
{"documentId":"clx9abc123","responseStatus":"AP","respondedAt":"2025-04-01T11:00:00.000Z"}HTTP kody
Vrati informácie o firme, Peppol ID, plane a pocte dokumentov.
Príklad
curl https://epostak.sk/api/enterprise/account -H "Authorization: Bearer sk_live_xxxxx"
Odpoveď 200
{
"firm": {"name":"Moja Firma s.r.o.","ico":"12345678","peppolId":"0245:0000000001","peppolStatus":"active"},
"plan": {"name":"api-enterprise","status":"active"},
"usage": {"outbound":47,"inbound":12}
}Extrahuje dáta faktúry z PDF alebo obrázku pomocou AI a vráti UBL XML. Max 20 MB.
Multipart form polia
| Pole | Type | Povinné | Popis |
|---|---|---|---|
| file | File | yes | PDF, JPEG, PNG, WebP (max 20 MB) |
Príklady
curl -X POST https://epostak.sk/api/enterprise/extract \ -H "Authorization: Bearer sk_live_xxxxx" \ -F "file=@invoice.pdf"
import requests with open("invoice.pdf", "rb") as f: resp = requests.post("https://epostak.sk/api/enterprise/extract", headers={"Authorization":"Bearer sk_live_xxxxx"}, files={"file":("invoice.pdf",f,"application/pdf")})
const form = new FormData(); form.append("file", fs.createReadStream("invoice.pdf")); const resp = await fetch("https://epostak.sk/api/enterprise/extract", { method:"POST", headers:{"Authorization":"Bearer sk_live_xxxxx",...form.getHeaders()}, body:form });
Odpoveď 200
{"extraction":{"invoiceNumber":"FAK-001","totalWithVat":1230.00},"ubl_xml":"<?xml...>","confidence":"high","file_name":"invoice.pdf"}HTTP kody
Spracuje az 50 suborov naraz. Chyba jedneho neblokuje ostatne.
Multipart form polia
| Pole | Type | Popis |
|---|---|---|
| files | File[] | Pole suborov max 50 x 20 MB |
Príklad
curl -X POST https://epostak.sk/api/enterprise/extract/batch \ -H "Authorization: Bearer sk_live_xxxxx" \ -F "files=@invoice1.pdf" -F "files=@invoice2.pdf"
Odpoveď 200
{"batch_id":"550e8400-...","total":2,"successful":2,"failed":0,"results":[{"file_name":"invoice1.pdf","confidence":"high","ubl_xml":"..."}]}Validuje dokument oproti Peppol BIS 3.0 pravidlám. Podporuje JSON aj UBL XML vstup.
Telo požiadavky
| Pole | Type | Povinné | Popis |
|---|---|---|---|
| format | string | yes | "json" | "ubl" |
| document | object|string | yes | JSON objekt alebo UBL XML string |
Príklady
curl -X POST https://epostak.sk/api/enterprise/documents/validate \ -H "Authorization: Bearer sk_live_xxxxx" \ -H "Content-Type: application/json" \ -d '{"format":"ubl","document":"<?xml version=\"1.0\"?><Invoice>...</Invoice>"}'
resp = requests.post("https://epostak.sk/api/enterprise/documents/validate", headers={"Authorization": "Bearer sk_live_xxxxx"}, json={"format": "ubl", "document": xml_string})
const resp = await fetch("https://epostak.sk/api/enterprise/documents/validate", { method: "POST", headers: {"Authorization":"Bearer sk_live_xxxxx","Content-Type":"application/json"}, body: JSON.stringify({format:"ubl",document:xmlString}) });
Odpoveď 200 (valid) / 422 (invalid)
{
"valid": true,
"errorCount": 0,
"warningCount": 1,
"errors": [],
"warnings": [{"id":"PEPPOL-EN16931-R001","message":"..."}]
}HTTP kody
Overí, či je príjemca registrovaný v sieti Peppol a či dokument prejde validáciou — pred skutočným odoslaním.
Telo požiadavky
| Pole | Type | Povinné | Popis |
|---|---|---|---|
| receiverPeppolId | string | yes | Peppol ID príjemcu na overenie |
| documentType | string | no | invoice | credit-note | order | despatch-advice |
| invoice | object | no | JSON faktúra na validáciu |
| xml | string | no | UBL XML na validáciu |
Príklady
curl -X POST https://epostak.sk/api/enterprise/documents/preflight \ -H "Authorization: Bearer sk_live_xxxxx" \ -H "Content-Type: application/json" \ -d '{"receiverPeppolId":"0245:0000000001","documentType":"invoice"}'
resp = requests.post("https://epostak.sk/api/enterprise/documents/preflight", headers={"Authorization": "Bearer sk_live_xxxxx"}, json={"receiverPeppolId": "0245:0000000001"})
const resp = await fetch("https://epostak.sk/api/enterprise/documents/preflight", { method: "POST", headers: {"Authorization":"Bearer sk_live_xxxxx","Content-Type":"application/json"}, body: JSON.stringify({receiverPeppolId:"0245:0000000001"}) });
Odpoveď 200
{
"canSend": true,
"recipientFound": true,
"recipientAcceptsDocumentType": true,
"validationPassed": null,
"validationErrors": [],
"warnings": ["Dokument bude smerovaný cez prístupový bod príjemcu"]
}HTTP kody
Konvertuje dokument medzi JSON a UBL XML formátmi. Podporovaná konverzia: json→ubl a ubl→json.
Telo požiadavky
| Pole | Type | Povinné | Popis |
|---|---|---|---|
| input_format | string | yes | "json" | "ubl" |
| output_format | string | yes | "ubl" | "json" |
| document | object|string | yes | Dokument na konverziu |
Príklady
curl -X POST https://epostak.sk/api/enterprise/documents/convert \ -H "Authorization: Bearer sk_live_xxxxx" \ -H "Content-Type: application/json" \ -d '{"input_format":"ubl","output_format":"json","document":"<?xml...>"}'
resp = requests.post("https://epostak.sk/api/enterprise/documents/convert", headers={"Authorization": "Bearer sk_live_xxxxx"}, json={"input_format":"ubl","output_format":"json","document":xml_string})
const resp = await fetch("https://epostak.sk/api/enterprise/documents/convert", { method: "POST", headers: {"Authorization":"Bearer sk_live_xxxxx","Content-Type":"application/json"}, body: JSON.stringify({input_format:"ubl",output_format:"json",document:xmlString}) });
Odpoveď 200
{"output_format":"json","document":{"invoice_number":"FAK-001","issue_date":"2025-04-01",...},"warnings":[]}HTTP kody
ð Overenie podpisu webhook
Každý webhook obsahuje HMAC-SHA256 podpis. Overte ho takto:
- Získajte
X-Webhook-TimestampaX-Webhook-Signature - Spojte:
timestamp + "." + raw_body - HMAC-SHA256 so svojím webhook secretom
- Porovnajte s hodnotou z hlavičky
- Odmietnite ak je timestamp starší ako 5 minút
const crypto = require('crypto'); function verifyWebhook(secret, timestamp, body, signature) { // Replay protection if (Date.now() / 1000 - Number(timestamp) > 300) return false; const expected = crypto .createHmac('sha256', secret) .update(timestamp + '.' + body) .digest('hex'); return signature === 'sha256=' + expected; }
Vrati vsetky webhooky pre vashu firmu.
Príklad
curl https://epostak.sk/api/enterprise/webhooks -H "Authorization: Bearer sk_live_xxxxx"
Odpoveď 200
{"data":[{"id":"wh_abc123","url":"https://your-app.com/webhook","events":["document.received"],"isActive":true}]}Vytvori novy webhook. URL musi mat HTTPS. Secret pre overenie podpisu je zobrazeny iba raz.
Telo požiadavky
| Pole | Type | Povinné | Popis |
|---|---|---|---|
| url | string | yes | HTTPS URL |
| events | string[] | no | Predvolene vsetky udalosti |
Príklad
curl -X POST https://epostak.sk/api/enterprise/webhooks \ -H "Authorization: Bearer sk_live_xxxxx" \ -H "Content-Type: application/json" \ -d '{"url":"https://your-app.com/webhook","events":["document.received"]}'
Odpoveď 201
{"id":"wh_abc123","url":"https://your-app.com/webhook","secret":"whsec_a1b2c3...","isActive":true}HTTP kody
Vrati detail webhooku a poslednych 20 pokusov o dorucenie.
Príklad
curl https://epostak.sk/api/enterprise/webhooks/wh_abc123 -H "Authorization: Bearer sk_live_xxxxx"
Odpoveď 200
{"id":"wh_abc123","isActive":true,"deliveries":[{"event":"document.received","status":"success","attempts":1,"responseStatus":200}]}Aktualizuje URL, udalosti alebo aktívny stav. Všetky polia sú nepovinné.
Telo požiadavky
| Pole | Type | Popis |
|---|---|---|
| url | string | HTTPS URL |
| events | string[] | Nove udalosti |
| isActive | boolean | Aktivovat/deaktivovat |
Príklad
curl -X PATCH https://epostak.sk/api/enterprise/webhooks/wh_abc123 \ -H "Authorization: Bearer sk_live_xxxxx" \ -H "Content-Type: application/json" -d '{"isActive":false}'
Natrvalo zmaze webhook a vsetky zaznamy o doruceni.
Príklad
curl -X DELETE https://epostak.sk/api/enterprise/webhooks/wh_abc123 -H "Authorization: Bearer sk_live_xxxxx"
Odpoveď 200
{"deleted":true}Vráti nepotvrdené udalosti (oldest-first). Po spracovaní potvrď každú udalosť pomocou DELETE alebo batch-ack.
Query parametre
| Parameter | Type | Default | Popis |
|---|---|---|---|
| limit | integer | 20 | Max 100 |
| event_type | string | - | Filter podľa typu udalosti |
Príklad
curl "https://epostak.sk/api/enterprise/webhook-queue?limit=10" \ -H "Authorization: Bearer sk_live_xxxxx"
Odpoveď 200
{
"items": [{
"id": "evt_abc123",
"type": "document.received",
"created_at": "2025-04-01T10:00:00.000Z",
"payload": {"documentId":"clx9abc123"}
}],
"has_more": false
}HTTP kody
Označí jednotlivú udalosť ako spracovanú (acknowledged). Vráti 204 No Content.
Príklady
curl -X DELETE https://epostak.sk/api/enterprise/webhook-queue/evt_abc123 \ -H "Authorization: Bearer sk_live_xxxxx"
resp = requests.delete("https://epostak.sk/api/enterprise/webhook-queue/evt_abc123", headers={"Authorization": "Bearer sk_live_xxxxx"}) # 204 No Content on success
const resp = await fetch("https://epostak.sk/api/enterprise/webhook-queue/evt_abc123", { method: "DELETE", headers: {"Authorization":"Bearer sk_live_xxxxx"} }); // 204 No Content on success
HTTP kody
Hromadne potvrdí viaceré udalosti. Max 1000 ID v jednej požiadavke. Vráti 204 No Content.
Telo požiadavky
| Pole | Type | Povinné | Popis |
|---|---|---|---|
| event_ids | string[] | yes | Pole ID udalosti max 1000 |
Príklady
curl -X POST https://epostak.sk/api/enterprise/webhook-queue/batch-ack \ -H "Authorization: Bearer sk_live_xxxxx" \ -H "Content-Type: application/json" \ -d '{"event_ids":["evt_abc123","evt_def456"]}'
resp = requests.post("https://epostak.sk/api/enterprise/webhook-queue/batch-ack", headers={"Authorization": "Bearer sk_live_xxxxx"}, json={"event_ids": ["evt_abc123", "evt_def456"]})
const resp = await fetch("https://epostak.sk/api/enterprise/webhook-queue/batch-ack", { method: "POST", headers: {"Authorization":"Bearer sk_live_xxxxx","Content-Type":"application/json"}, body: JSON.stringify({event_ids:["evt_abc123","evt_def456"]}) });
HTTP kody
Overí, či je účastník registrovaný v Peppol sieti cez DNS/SMP lookup. Výsledky sú cachované 24 hodín.
URL parametre
| Pole | Type | Popis |
|---|---|---|
| scheme | string | 4-ciferný ISO 6523 kód napr. 0245 |
| identifier | string | Identifikátor účastníka |
Príklady
curl https://epostak.sk/api/enterprise/peppol/participants/0245/SK1234567890 \ -H "Authorization: Bearer sk_live_xxxxx"
resp = requests.get("https://epostak.sk/api/enterprise/peppol/participants/0245/SK1234567890", headers={"Authorization": "Bearer sk_live_xxxxx"})
const resp = await fetch("https://epostak.sk/api/enterprise/peppol/participants/0245/SK1234567890", { headers: {"Authorization":"Bearer sk_live_xxxxx"} });
Odpoveď 200 (najdeny) / 404 (nenajdeny)
{
"found": true,
"participantId": "0245:SK1234567890",
"scheme": "0245",
"accessPoint": {
"url": "https://ap.provider.com/as4",
"transportProfile": "peppol-transport-as4-v2_0"
}
}HTTP kody
Prehľadáva lokálnu kópiu Peppol adresára (3.6M+ záznamov). Fulltextové vyhľadávanie podľa názvu firmy alebo Peppol ID.
Query parametre
| Parameter | Type | Povinné | Popis |
|---|---|---|---|
| q | string | yes | Hľadaný výraz min 2 znaky |
| country | string | no | ISO kod krajiny napr. SK |
| page | integer | no | Stranka vysledkov |
| page_size | integer | no | Max 50 |
Príklady
curl "https://epostak.sk/api/enterprise/peppol/directory/search?q=Kaja&country=SK" \ -H "Authorization: Bearer sk_live_xxxxx"
resp = requests.get("https://epostak.sk/api/enterprise/peppol/directory/search", headers={"Authorization": "Bearer sk_live_xxxxx"}, params={"q": "Kaja", "country": "SK"})
const resp = await fetch("https://epostak.sk/api/enterprise/peppol/directory/search?q=Kaja&country=SK", { headers: {"Authorization":"Bearer sk_live_xxxxx"} });
Odpoveď 200
{
"items": [{
"participantId": "0245:SK1234567890",
"name": "Kaja Solutions s.r.o.",
"countryCode": "SK",
"registrationDate": "2024-01-15"
}],
"page": 1,
"page_size": 20,
"has_next": false
}HTTP kody
Vyhľadá firmu podľa IČO v ORSR a FinStat a skontroluje registráciu v Peppol sieti.
Príklady
curl https://epostak.sk/api/enterprise/company/lookup/52819886 \ -H "Authorization: Bearer sk_live_xxxxx"
resp = requests.get("https://epostak.sk/api/enterprise/company/lookup/52819886", headers={"Authorization": "Bearer sk_live_xxxxx"})
const resp = await fetch("https://epostak.sk/api/enterprise/company/lookup/52819886", { headers: {"Authorization":"Bearer sk_live_xxxxx"} });
Odpoveď 200
{
"ico": "52819886",
"name": "Kaja Solutions s.r.o.",
"address": {"street":"Hlavna 1","city":"Bratislava","zip":"811 01","country":"SK"},
"dic": "2021234567",
"icDph": "SK2021234567",
"peppolRegistered": true,
"peppolId": "0245:SK2021234567"
}HTTP kody
Pre sk_int_* kľúče vráti všetky firmy prepojené cez IntegratorFirm. Pre sk_live_* kľúče vráti iba vlastnú firmu.
Príklad
curl https://epostak.sk/api/enterprise/firms \ -H "Authorization: Bearer sk_int_xxxxx"
Odpoveď 200
{"firms":[{"id":"firm_abc123","name":"Klient s.r.o.","ico":"12345678","peppolId":"0245:0000000001","peppolStatus":"active"}]}HTTP kody
Vráti úplný detail firmy vrátane adresy, DIČ, IČ DPH a Peppol stavu.
Príklad
curl https://epostak.sk/api/enterprise/firms/firm_abc123 \ -H "Authorization: Bearer sk_int_xxxxx"
Odpoveď 200
{
"id": "firm_abc123",
"name": "Klient s.r.o.",
"ico": "12345678",
"dic": "2021234567",
"icDph": "SK2021234567",
"address": {"street":"Hlavna 1","city":"Bratislava","zip":"811 01"},
"peppolId": "0245:0000000001",
"peppolStatus": "active",
"plan": "api-enterprise",
"createdAt": "2025-01-01T00:00:00.000Z"
}HTTP kody
Vráti stránkovaný zoznam dokumentov firmy. Integrátori môžu pristupovať k dokumentom spravovaných klientov.
Query parametre
| Parameter | Type | Default | Popis |
|---|---|---|---|
| page | integer | 1 | Stranka |
| page_size | integer | 20 | Max 100 |
| direction | string | - | inbound | outbound |
| status | string | - | Filter podľa stavu |
| from | string | - | ISO 8601 date |
| to | string | - | ISO 8601 date |
Príklad
curl "https://epostak.sk/api/enterprise/firms/firm_abc123/documents?direction=inbound&page=1" \ -H "Authorization: Bearer sk_int_xxxxx"
Odpoveď 200
{"documents":[{"id":"clx9abc123","status":"RECEIVED","direction":"inbound"}],"pagination":{"total":42,"page":1,"pageSize":20,"totalPages":3}}HTTP kody
Zaregistruje Peppol ID pre firmu. Registrácia v SMP prebehne do 24 hodín.
Telo požiadavky
| Pole | Type | Povinné | Popis |
|---|---|---|---|
| scheme | string | yes | ISO 6523 kód napr. 0191 |
| identifier | string | yes | Identifikátor firmy napr. ICO |
Príklady
curl -X POST https://epostak.sk/api/enterprise/firms/firm_abc123/peppol-identifiers \ -H "Authorization: Bearer sk_int_xxxxx" \ -H "Content-Type: application/json" \ -d '{"scheme":"0191","identifier":"12345678"}'
resp = requests.post("https://epostak.sk/api/enterprise/firms/firm_abc123/peppol-identifiers", headers={"Authorization": "Bearer sk_int_xxxxx"}, json={"scheme": "0191", "identifier": "12345678"})
const resp = await fetch("https://epostak.sk/api/enterprise/firms/firm_abc123/peppol-identifiers", { method: "POST", headers: {"Authorization":"Bearer sk_int_xxxxx","Content-Type":"application/json"}, body: JSON.stringify({scheme:"0191",identifier:"12345678"}) });
Odpoveď 201
{
"peppolId": "0191:12345678",
"registrationStatus": "pending",
"message": "Peppol ID registration requested. We will register you in SMP within 24 hours."
}HTTP kody
Vráti agregované štatistiky dokumentov: počty odoslaných/prijatých podľa typu, miera doručenia, top príjemcovia a odosielatelia.
Query parametre
| Parameter | Type | Default | Popis |
|---|---|---|---|
| period | string | month | month | quarter | year |
| from | string | - | Začiatok obdobia ISO 8601 |
| to | string | - | Koniec obdobia ISO 8601 |
Príklady
curl "https://epostak.sk/api/enterprise/reporting/statistics?period=month" \ -H "Authorization: Bearer sk_live_xxxxx"
resp = requests.get("https://epostak.sk/api/enterprise/reporting/statistics", headers={"Authorization": "Bearer sk_live_xxxxx"}, params={"period": "month"})
const resp = await fetch("https://epostak.sk/api/enterprise/reporting/statistics?period=month", { headers: {"Authorization":"Bearer sk_live_xxxxx"} });
Odpoveď 200
{
"period": {"from":"2025-04-01","to":"2025-04-30"},
"sent": {"total":47,"by_type":{"invoice":45,"credit_note":2}},
"received": {"total":12,"by_type":{"invoice":12}},
"delivery_rate": 0.979,
"top_recipients": [{"name":"ABC s.r.o.","peppol_id":"0245:SK...","count":10}],
"top_senders": []
}HTTP kody
Lifecycle integrátora
Od výberu digitálneho poštára po aktívny API prístup.
OAuth 2.0 Authorization Code Flow
PKCE-chránený OAuth tok pre integrátorov — klient udelí prístup k svojmu účtu.
Registrácia nového OAuth klienta pre integrátora. Vráti client_id a client_secret.
Telo požiadavky
| Pole | Type | Povinné | Popis |
|---|---|---|---|
| name | string | yes | Názov OAuth klienta |
| redirect_uris | string[] | yes | Povolené redirect URI |
Odpoveď 201
{
"client_id": "oc_abc123def456",
"client_secret": "ocs_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"name": "My ERP Integration",
"redirect_uris": ["https://myerp.sk/oauth/callback"]
}HTTP kody
Presmerujte klienta na túto URL. Po schválení bude presmerovaný späť na redirect_uri s kódom.
Query parametre
| Parameter | Type | Povinné | Popis |
|---|---|---|---|
| client_id | string | yes | ID vášho OAuth klienta |
| redirect_uri | string | yes | Registrovaná callback URL |
| response_type | string | yes | code |
| scope | string | yes | enterprise:read enterprise:write |
| state | string | yes | CSRF ochrana — náhodný reťazec |
| code_challenge | string | yes | PKCE code challenge (SHA-256) |
| code_challenge_method | string | yes | S256 |
Príklad URL
https://epostak.sk/oauth/authorize ?client_id=oc_abc123def456 &redirect_uri=https://myerp.sk/oauth/callback &response_type=code &scope=enterprise:read%20enterprise:write &state=random_csrf_token &code_challenge=BASE64URL(SHA256(code_verifier)) &code_challenge_method=S256
HTTP kody
Vymení autorizačný kód za prístupový token (sk_int_*) a metadata firmy.
Telo požiadavky
| Pole | Type | Povinné | Popis |
|---|---|---|---|
| grant_type | string | yes | authorization_code |
| code | string | yes | Autorizačný kód z redirect_uri |
| client_id | string | yes | OAuth client ID |
| client_secret | string | yes | OAuth client secret |
| redirect_uri | string | yes | Rovnaká URL ako pri autorizácii |
| code_verifier | string | yes | PKCE code verifier |
Odpoveď 200
{
"access_token": "sk_int_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"token_type": "Bearer",
"firm_id": "b1022d80-5016-4dad-a8d2-53685cab1701",
"firm_name": "Kaja Solutions s.r.o.",
"firm_ico": "12345678"
}HTTP kody
Bulk Endpointy pre Integrátorov
Cross-firm operácie — spravujte všetky firmy cez jedinú požiadavku.
Priradí firmu k integrátorskému účtu podľa IČO. Vyžaduje sk_int_* kľúč.
Telo požiadavky
| Pole | Type | Povinné | Popis |
|---|---|---|---|
| ico | string | yes | IČO firmy (8 číslic) |
Odpoveď 200
{
"firm_id": "b1022d80-5016-4dad-a8d2-53685cab1701",
"firm_name": "Kaja Solutions s.r.o.",
"ico": "52345678",
"peppol_id": "0245:SK52345678",
"assigned": true
}HTTP kody
Hromadné priradenie až 50 firiem k integrátorskému účtu podľa IČO.
Telo požiadavky
| Pole | Type | Povinné | Popis |
|---|---|---|---|
| icos | string[] | yes | Pole IČO (max 50) |
Odpoveď 200
{
"assigned": [
{"ico":"52345678","firm_id":"b1022d80-...","firm_name":"Kaja Solutions s.r.o.","ok":true},
{"ico":"99887766","firm_id":null,"ok":false,"error":"NOT_FOUND"}
],
"total": 2,
"succeeded": 1,
"failed": 1
}HTTP kody
Vráti dokumenty zo všetkých spravovaných firiem v jednej odpovedi. Vyžaduje sk_int_* kľúč.
Query parametre
| Parameter | Type | Povinné | Popis |
|---|---|---|---|
| since | string | no | ISO 8601 — dokumenty od dátumu |
| status | string | no | pending | acknowledged | all (predvolene: all) |
| firm_id | string | no | Filtrovať podľa firmy |
| offset | number | no | Posunutie pre stránkovanie |
| limit | number | no | Max výsledkov (default 50, max 200) |
Odpoveď 200
{
"total": 128,
"offset": 0,
"limit": 50,
"items": [
{
"document_id": "doc_abc123",
"firm_id": "b1022d80-5016-4dad-a8d2-53685cab1701",
"firm_name": "Kaja Solutions s.r.o.",
"sender_peppol_id": "0245:0000000002",
"document_type": "invoice",
"status": "pending",
"received_at": "2026-04-01T12:00:00Z",
"total_amount": 1230.00,
"currency": "EUR"
}
]
}HTTP kody
Vráti webhook udalosti naprieč všetkými firmami. Vyžaduje sk_int_* kľúč.
Odpoveď 200
{
"items": [
{
"event_id": "evt_abc123",
"firm_id": "b1022d80-5016-4dad-a8d2-53685cab1701",
"firm_name": "Kaja Solutions s.r.o.",
"event_type": "document.received",
"payload": {"document_id":"doc_abc123"},
"created_at": "2026-04-01T12:00:00Z",
"acknowledged": false
}
]
}HTTP kody
Hromadné potvrdenie webhook udalostí naprieč všetkými firmami.
Telo požiadavky
| Pole | Type | Povinné | Popis |
|---|---|---|---|
| event_ids | string[] | yes | Pole ID udalostí na potvrdenie |
Odpoveď 200
{
"acknowledged": 5,
"failed": 0,
"event_ids": ["evt_abc1","evt_abc2","evt_abc3","evt_abc4","evt_abc5"]
}HTTP kody
Cenník
Transparentné ceny bez skrytých poplatkov. Integrátor platí za všetky firmy — klientske firmy neplatia nič za digitálneho poštára. Objem sa počíta naprieč všetkými spravovanými firmami.
Základný poplatok
Odoslané (Outbound)
| Objem | Cena/dok |
|---|---|
| 1 - 1 000 | 0.10€ |
| 1 001 - 2 000 | 0.08€ |
| 2 001+ | 0.06€ |
| 5 000+ | Individuálne |
Prijaté cez API (Inbound)
| Objem | Cena/dok |
|---|---|
| 1 - 1 000 | 0.08€ |
| 1 001 - 2 000 | 0.07€ |
| 2 001+ | 0.06€ |
| 5 000+ | Individuálne |
Uchovávanie dát
ePošťák funguje ako Peppol transportná vrstva, nie ako archivačná služba. Integrátor zodpovedá za vlastný archív dokumentov.
Trvalé uchovanie (Peppol compliance)
- Peppol Message ID
- Peppol ID odosielateľa/príjemcu
- Časové pečiatky doručenia (odoslané, doručené)
- Stav doručenia + história stavov
- AS4 Receipt (doklad o doručení)
- MLR (Message Level Response)
- Stav Invoice Response + dokument
Dočasné uchovanie (90 dní)
- Obsah UBL/XML dokumentu — dostupný na stiahnutie cez
/api/enterprise/documents/{id}/ubl - Po 90 dňoch: obsah je vymazaný, endpoint vracia HTTP 410 Gone
Neukladáme
- Obchodné dáta faktúry (dodávateľ/odberateľ, adresy, sumy, položky)
- PDF konverzie
- Toto je zodpovednosť integrátora
Chybové kódy
Formát chybovej odpovede: {"error": {"code": "...", "message": "..."}}
| HTTP | Code | Popis | Opakovateľné |
|---|---|---|---|
| 400 | VALIDATION_ERROR | Neplatne telo požiadavky | No |
| 401 | UNAUTHORIZED | Chýbajúci alebo neplatný API kľúč | No |
| 403 | FORBIDDEN | Nedostatocne opravnenia alebo plan | No |
| 404 | NOT_FOUND | Dokument alebo webhook neexistuje | No |
| 409 | CONFLICT | Dokument už bol potvrdený | No |
| 422 | VALIDATION_FAILED | Dokument neprešiel Peppol validáciou | No |
| 422 | EXTRACTION_FAILED | AI extrakcia zlyhala | Yes |
| 429 | RATE_LIMITED | Príliš veľa požiadaviek | Yes |
| 500 | INTERNAL_ERROR | Interná chyba servera | Yes |