Bevezetés
A Verteco API REST alapú, HTTPS felett. A kérés és a válasz egyaránt JSON (UTF-8). Kezdje egy fiók, majd egy API-token létrehozásával, és egy percen belül elküldheti az első hívást. Minden útvonal az alábbi alap-URL-hez (base URL) képest értendő.
A teljes tesztkörnyezet (sandbox) a következő címen érhető el: test.peppol.verteco.digital. Ugyanúgy viselkedik, mint az éles környezet, és ezen felül teszteszközöket (a Szlovák Köztársaság Pénzügyi Igazgatóságának (Finančná správa, FS) webhookja, ellenőrző token (Verifikačný údaj), cég eltávolítása) és egy szimulált szolgáltatóválasztást kínál az FS portál (VPDS) helyett.
- Alap-URL (base URL)
https://peppol.verteco.digital/api/v1- Verzió
- v1 (az útvonalban). A visszafelé nem kompatibilis változások új verzió alatt jelennek meg.
- Protokoll
- csak HTTPS · TLS 1.2+ · TLS A+
- Formátum
- application/json (UTF-8)
- Hitelesítés
- cookie alapú munkamenet (portál) vagy Bearer token (szerver-szerver)
- Időbélyegek
- ISO-8601 (UTC), pl. 2026-06-03T09:40:27Z
Tanúsított Access Point
Valódi Peppol hozzáférési pont (Access Point, Seat ID PSK001128), nem viszonteladó. Sikeresen teljesítettük az OpenPeppol megfelelőségi tesztjét (19/19), és éles üzemben vagyunk.
Érvényes bizonylatok
Szerveroldali EN 16931 + Peppol BIS 3.0 Schematron-validáció minden fogadott ÉS küldött bizonylaton. A bizonylatot előzetesen is ellenőrizheti: a nyilvános validátor a /validator címen fut (API-ként: POST /api/v1/public/peppol-validate); a hibákat a konkrét szabállyal együtt adjuk vissza (pl. BR-CO-15). Szlovák esetekre ellenőrzött minták (nem áfaalany, deviza, fordított adózás, jóváírás, előlegek, beágyazott PDF): /hu/vzory.
Több cég egy fiókban (multi-tenant)
Egy fiók és egy token N céghez, ideális SaaS-, ERP-rendszerek és könyvelők számára.
SK TDD automatikusan
Az adóhatósági jelentést (corner-5 / TDD) az Ön nevében állítjuk elő és küldjük el a Pénzügyi Igazgatóságnak (FS).
openapi-generator eszközzel. A portál API-t és a SAPI-SK-t is lefedi.Gyors kezdés
Melyik felület való Önnek
SAPI-SK 1.0 (/sapi)
Könyvelő- vagy számlázóprogram, ERP, több céget kezelő platform: a nemzeti felület küldésre, fogadásra, állapotokra, kézbesítési igazolásokra és FS-jelentésekre. Minden bizonylatot küldő vagy olvasó integrációhoz ajánlott.
OAuth2 client credentials: client_id = az API-kulcs UUID-ja, client_secret = a vpt_ kulcs, 15 perces access token.
Portal API (/api/v1)
Cégek, webhookok, értesítések, exportok és letöltések; partnerkonzol (/resellers/me). Kiegészíti a SAPI-t, nem helyettesíti.
Authorization: Bearer vpt_… (a fiók API-kulcsa).
MCP-szerver (/api/mcp)
AI-asszisztens (Claude Code, Cursor, Claude Desktop) olvasson bizonylatokat, ellenőrizzen címzetteket és kifejezett megerősítés után küldjön.
Bearer vpt_… az MCP-kliensen keresztül.
E-mail a cég postafiókjába
Programozás nélkül: az XML-számla mellékletként a cég titkos címére; ellenőrizzük és a portálból küldöttként továbbítjuk.
Feladó cím az engedélyezőlistán + SPF/DKIM.
A fiókot és az API-tokent is a portálon (böngészőben) hozza létre. Az integráció ezután kizárólag az API-tokenen keresztül működik. Az alkalmazásának nem kell regisztrációt, bejelentkezést vagy jelszavakat kezelnie.
- 1
Hozzon létre fiókot a portálon
Regisztráljon az e-mail-címével, és erősítse meg az e-mailben kapott hivatkozással. - 2
Generáljon API-tokent
A portálon nyissa meg az API tokeny → Vytvoriť (API-tokenek → Létrehozás) menüpontot. Avpt_…token csak egyszer jelenik meg. Tárolja biztonságosan. - 3
Küldje el az első hívást
Használja a tokent azAuthorizationfejlécben:javascriptconst res = await fetch('https://peppol.verteco.digital/api/v1/companies', { headers: { Authorization: 'Bearer vpt_8f2a…' }, }); const companies = await res.json(); - 4
Szolgáltató kiválasztása a Pénzügyi Igazgatóság portálján
Éles környezetben a Verteco kiválasztása az FS portálján (vpds.financnasprava.sk) tisztán küldő használathoz is szükséges: ez oldja fel a küldést (ellenőrző token) és aktiválja a céget. A fogadás közben maradhat a könyvelőprogram szolgáltatójánál: egy cégnek a hálózatban pontosan egy fogadója van, küldője viszont több is lehet.
Gyors kezdés curl-lel (először a tesztkörnyezetben)
Hat hívás a fióktól az első kézbesített számláig, mind a test.peppol.verteco.digital ellen, ahol a cég létrehozáskor azonnal aktív, és a bizonylatok a Peppol-teszthálózatba mennek. A várt válaszok rövidítettek.
export BASE=https://test.peppol.verteco.digital # production: https://peppol.verteco.digital
export KEY=vpt_… # step 1- 1
Fiók és API-kulcs
Regisztráljon a test.peppol.verteco.digital/register oldalon (a tesztkörnyezetben nincs megerősítő e-mail), és az API-kulcsok oldalon hozzon létre kulcsot. Egyszer jelenik meg; lent $KEY.
- 2
Kulcs ellenőrzése
shellcurl -s $BASE/api/v1/auth/me -H "Authorization: Bearer $KEY"json{ "id": "7f1d…", "email": "dev@firma.sk", "emailVerified": true, "persona": "developer" } - 3
Cég létrehozása
shellcurl -s -X POST $BASE/api/v1/companies -H "Authorization: Bearer $KEY" -H "Content-Type: application/json" -d '{"ico":"12345678","dic":"SK2120000001","legalName":"Test s. r. o.","street":"Hlavná 1","city":"Žilina","postalCode":"01001"}'json{ "id": "5c0e…", "legalName": "Test s. r. o.", "dic": "SK2120000001", "status": "active", "peppolParticipantId": "0245:2120000001", "verified": true } - 4
SAPI access token
shellcurl -s -X POST $BASE/sapi/auth/token -H "Content-Type: application/json" -d '{"grant_type":"client_credentials","client_id":"<kulcs UUID az API-kulcsok oldalról>","client_secret":"'$KEY'"}'json{ "access_token": "eyJhbGciOiJIUzI1NiJ9…", "token_type": "Bearer", "expires_in": 900, "refresh_token": "eyJhbGciOiJIUzI1NiJ9…" } - 5
Ellenőrzés küldés nélkül
shellcurl -s -X POST $BASE/sapi/document/validate -H "Authorization: Bearer $ACCESS" -H "Content-Type: application/json" -d '{"payload":"<Invoice …>","payloadFormat":"XML"}'json{ "valid": true, "errors": [], "warnings": [] } - 6
Küldés és állapot követése
shellcurl -s -X POST $BASE/sapi/document/send -H "Authorization: Bearer $ACCESS" -H "X-Peppol-Participant-Id: 0245:2120000001" -H "Idempotency-Key: FA-2026-0001" -H "Content-Type: application/json" -d @send.json, majd curl -s "$BASE/sapi/document/sent?since=2026-10-01T00:00:00Z" -H "Authorization: Bearer $ACCESS" -H "X-Peppol-Participant-Id: 0245:2120000001"jsonHTTP/2 202 { "providerDocumentId": "6a3f…", "status": "ACCEPTED", "peppolMessageId": "f1c7…", "receivedAt": "2026-10-03T12:00:01Z" } { "documents": [ { "documentId": "6a3f…", "status": "delivered", "sentAt": "2026-10-03T12:00:01Z", "deliveredAt": "2026-10-03T12:00:14Z", "hasMls": true, "fsReport": { "state": "reported" } } ] }
Tesztkörnyezet (sandbox)
A SAPI mock sandbox (lásd lent) mellett egy teljes értékű tesztkörnyezetet is üzemeltetünk, e portál teljes másolatát külön adatokkal, ahol a teljes folyamatot (regisztráció → cég → küldés → fogadás → értesítések) végigpróbálhatja az éles környezetre gyakorolt bármilyen hatás nélkül.
- Regisztráció
- nincs megerősítő e-mail; a fiók azonnal használható
- Cég jóváhagyása
- automatikus, közvetlenül a felületen vagy az API-n keresztül; nincs szolgáltatóválasztás a Szlovák Köztársaság Pénzügyi Igazgatóságának (Finančná správa, FS) portálján és nincs bejelentkezés az FS-portálra; közvetlenül egy áfaazonosítóval (IČ DPH) rendelkező cég létrehozása után küldhet és fogadhat is
- Hálózati regisztráció
- automatikus, a Peppol teszthálózatba. Figyeljen az azonosító két rétegére: az API és a portál ugyanazt a formátumot használja, mint az éles környezet (
peppolParticipantId = 0245:<DIČ számjegyei>, ahol a DIČ a szlovák adóazonosító szám; az integrációs kódja nem változik); a teszt SMP/SML-ben a cég technikailag9950:SK<DIČ>formában van regisztrálva, mert a 0245 séma a Pénzügyi Igazgatóság ellenőrző kódját igényli, amely a tesztkörnyezetben nem létezik. Az éles környezetben a0245:<DIČ számjegyei>azonosító csak az FS-portálon végzett szolgáltatóválasztás után (eID-vel vagy belépési adatokkal) kerül regisztrálásra az éles Peppol hálózatban - Validáció
- valódi: EN 16931 + Peppol BIS 3.0 szabályok, ugyanúgy, mint az éles környezetben
- Kézbesítés
- valódi, a Peppol teszthálózaton keresztül (AS4, tesztcertifikát, teszt SML/SMP): a teszthálózatban regisztrált címzett fogadott számlaként kapja meg a számlát (e-maillel, PDF-fel és webhookkal együtt); az éles hálózatba semmi nem kerül
- Kézbesítési igazolás (MLS)
- valódi MLS igazolás a teszthálózatból
- E-mailek
- valóban elküldésre kerülnek (a megadott címekre),
[TEST]előtaggal - Hibaszimuláció
- az
X-Sandbox-Simulate: 503fejléc (vagy502,500,429) bármely/sapi/document/*híváson érvényes tokennel a megfelelő hibát adja vissza; semmi sem kerül feldolgozásra vagy mentésre.500(SAPI-PROC-500) és429(SAPI-SYS-003,Retry-Afterfejléccel) esetén SAPI hibaborítékot kap; az503és502a hálózati peremen (DigitalOcean, Cloudflare)HTTP 504-ként, HTML törzzsel, boríték nélkül érkezik, pontosan így néz ki egy valódi kiesés kívülről, így a nem JSON válasz kezelését is tesztelheti. Validációs hibát érvénytelen XML-lel, 429-et percenként 300 hívás túllépésével is kiválthat. Az éles környezet a fejlécet figyelmen kívül hagyja - Ár
- ingyenes, tesztelési korlátok nélkül
Minden, ami itt működik, ott is működik: a portál, a REST API, a SAPI-SK 1.0, a webshop-bővítmények és a webhookok. Csak váltsa át az integrációjában a domaint a test.peppol.verteco.digital címre, és használja a tesztkörnyezetben létrehozott tokeneket. Ideális integrációfejlesztéshez, CI-tesztekhez és a könyvelők betanításához az éles bevezetés előtt. Próbabizonylat csak oda való: éles környezetben minden belföldi, áfaalanyok közötti bizonylatot jelentünk a Pénzügyi Igazgatóságnak, és a jelentés nem vonható vissza. Az éles portálon csak a „Poslať skúšobnú faktúru“ (próbaszámla küldése, 0,00 €) gombbal próbáljon; 2027. 1. 1-jétől az éles környezet elutasítja a TEST-/VITAJTE- számokat (test_document_in_production).
Megjegyzés: a tesztdomain peremvédelme (edge) a generikus User-Agent: Python-urllib és User-Agent: Java/1.8.x fejléceket (a Java 8HttpsURLConnection alapértelmezett User-Agentje) HTTP 403 "error code: 1010" válasszal blokkolja, még mielőtt a kérés elérné az API-nkat; az éles peppol.verteco.digital domain átengedi őket. Állítson be saját User-Agentet: Java alatt vagy a -Dhttp.agent=my-app/1.0 JVM-kapcsolóval (kódmódosítás nélkül; a Java hozzáfűzi a "Java/1.8" részt, és az így kapott "my-app/1.0 Java/1.8.0_xxx" átjut, csak a "Java/1.8" kezdetű fejléc van blokkolva), vagy a kapcsolaton a conn.setRequestProperty("User-Agent", "my-app/1.0") hívással. A gyakori kliensek (requests, httpx, Java 11+, Apache HttpClient, okhttp, axios, Go, PHP, curl) változtatás nélkül működnek.
Miért kerülnek a cégek automatikusan jóváhagyásra
A Pénzügyi Igazgatóságnak nincs tesztkörnyezete a VPDS portálhoz: a szolgáltatóválasztás a vpds.financnasprava.sk portálon csak élesben fut, és az FS-portálra való bejelentkezéssel (eID vagy belépési adatok) ellenőrzik, így élesben nem lehet tetszőleges, nem saját céget „kiválasztani”. Hogy az integrációját mégis tesztelhesse, ezt a lépést a tesztkörnyezetben szimuláljuk: minden létrehozott cég automatikusan jóváhagyásra kerül (FS-nél történő választás nélkül), így beállíthat küldőt és címzettet is, és végigmehet a teljes folyamaton.
Az FS webhookok (szolgáltatóválasztás) teszteléséhez saját megfelelőnk van a Pénzügyi Igazgatóság eszközéhez: test.peppol.verteco.digital/sandbox-nastroje. Itt érvényes, FS-stílusú ellenőrző tokent (Verifikačný údaj) generálhat, és teljes webhookot küldhet a saját végpontjára, pontosan úgy, ahogy az FS portál teszi egy valódi választásnál. A teszteléshez létrehozott cégek pedig kiregisztrálhatók (a portálról és a teszt SMP-ből), éppen a Pénzügyi Igazgatóság oldalán hiányzó tesztmód miatt.
Hitelesítés
Az integrációja API-tokennel hitelesít az Authorization: Bearer vpt_… fejlécben. A tokent a portálon hozza létre (API-tokenek); formátuma vpt_ + 40 hexadecimális karakter, mi csak a SHA-256 hash-ét tároljuk, és ugyanolyan hozzáférése van, mint az Ön fiókjának. Tesztelje az /auth/me hívással:
curl https://peppol.verteco.digital/api/v1/auth/me -H 'Authorization: Bearer vpt_8f2a…'
# 200 → { "id": "…", "email": "vy(at)firma.sk" } (token works)Hiányzó vagy érvénytelen token esetén az API a következőt adja vissza:
// 401 Unauthorized
{ "error": "unauthorized", "message": "Authentication required" }portal_session, JWT, 7 nap); szerver-szerver integrációhoz erre nincs szüksége. Hitelesítés nélkül nyilvános a /ping, az /openapi.json és a /public/* alatti végpontok (a peppol-check lekérdezés, a peppol-validate validátor, részletek a Nyilvános eszközök szakaszban, valamint a szolgáltatás állapota a status végponton); minden más munkamenetet vagy Bearer tokent igényel.Konvenciók és formátumok
| Típus | Formátum | Példa |
|---|---|---|
id | UUID (string) | 08dd6c1e-… |
időbélyegek | ISO-8601 Instant (UTC) | 2026-06-03T09:40:27Z |
issueDate | dátum (YYYY-MM-DD) | 2026-06-03 |
totalAmount | decimális szám | 120.00 |
hiányzó értékek | null (nem kihagyott mező) | "dic": null |
Lapozás és idempotencia
/companies és a /companies/{id}/documents támogatja az opcionális ?page&limit paramétereket (a válasz JSON tömb marad; a teljes darabszám az X-Total-Count / X-Total-Pages fejlécekben van). Paraméterek nélkül a teljes tömböt adják vissza, a bizonylatokat createdAt szerint csökkenő sorrendben; a /tokens mindig a teljes tömböt adja vissza. Az Idempotency-Key fejlécet a nemzeti interfész, a SAPI-SK támogatja a POST /sapi/document/send végponton; programozott küldéshez pontosan ezt használja.Verziózás és visszafelé kompatibilitás
- A szerződés csak bővül: új mezők (null esetén kihagyva), új opcionális paraméterek, új végpontok és események. A meglévő mezőnevek, enum-értékek és státuszkódok nem változnak.
- Új enum-érték vagy webhook-esemény bármikor megjelenhet; hagyja figyelmen kívül az ismeretlent, és ismeretlen eseményre 2xx-szel válaszoljon.
- Az időbélyegek ISO 8601 UTC formátumúak változó számú tizedesjeggyel; elemezze, sose hasonlítsa szövegként. Az összegek két tizedesjegyű szövegként érkeznek.
- Ha egy változás nem lehetne additív, a changelogban (e-mail feliratkozással) legalább 90 nappal előre bejelentjük, és az átmeneti időszakban megtartjuk a régi alakot.
- Az API-kulcs biztonsági modellje (2026. október 3-tól): a kulcs bizonylatokat olvas és küld, cégeket, értesítéseket és webhookokat kezel. A fiók- és kulcskezelést (kulcs létrehozása, szűkítése, visszavonása, MFA, jelszó, munkamenetek, meghívók, cégátadás, szerződésaláírás) csak bejelentkezett személy végzi; a kulcs ott 403 token_not_allowed választ kap. A GET /api/v1/tokens kulccsal továbbra is elérhető.
- A szerződés verziója az openapi.json info.version mezője, és minden változásnak van API vagy Webhookok címkéjű changelog-sora.
Hibák
statusReason kódjai) JSON formában elérhető itt: /docs/peppol-errors.json (sk, en, de, hu). Gyakori hibák táblázatához a könyvelőprogramban: a szabályazonosítót a részletben bárhol keresse, az ismeretlen szabályt az azonosítójával együtt jelenítse meg. 2026. 10. 7-től minden JSON válasz Content-Type: application/json;charset=UTF-8 fejlécet kap.A hibák egységes alakúak, géppel olvasható error kóddal. A validációs hibák egy fields térképet is tartalmaznak (mezőnként az első hiba).
// business error
{ "error": "invalid_credentials", "message": "Invalid email or password" }
// validation error (400); field messages are returned in Slovak ("IČO musí byť 8 číslic" = "IČO must be 8 digits")
{ "error": "validation_failed", "message": "Some fields are invalid",
"fields": { "ico": "IČO musí byť 8 číslic" } }HTTP-státuszok
- 200 / 201 / 204
- siker (OK / Created / No Content)
- 400
- érvénytelen bemenet (lásd error / fields)
- 401
- hiányzó vagy érvénytelen hitelesítés
- 403
- nincs elegendő jogosultság (szerepkör)
- 404
- az erőforrás nem létezik, vagy nincs hozzá hozzáférése
- 405
- a HTTP-metódus nem támogatott ezen az útvonalon
- 409
- ütközés (az IČO / e-mail már létezik)
- 415
- nem támogatott Content-Type (az XML végpontok application/xml-t várnak)
- 429
- kérésszám-korlát (rate limit) túllépve (RateLimit-* és Retry-After fejlécek, JSON törzs: rate_limited)
error mezővel. A JSON törzs nélküli válasz (HTML vagy szöveg, például error code: 1010 403-as státusszal, vagy 502/504 telepítés közben) nem az API-tól, hanem az előtte álló infrastruktúrától érkezett (peremvédelem, gateway). A 403/1010 tipikus oka egy generikus könyvtári User-Agent (Python-urllib, Java/1.8.x a tesztdomainen); a megoldást a Tesztkörnyezet szakasz írja le.Leggyakoribb hibakódok
| Kód | HTTP | Mikor |
|---|---|---|
validation_failed | 400 | a törzs nem ment át a validáción (lásd fields) |
unauthorized | 401 | hiányzó vagy érvénytelen API-token |
forbidden | 403 | a művelet owner/admin szerepkört igényel |
company_not_found | 404 | a cég nem létezik, vagy Ön nem tagja |
ico_taken | 409 | ezzel az IČO-val (cégjegyzékszám) már létezik cég |
ico_immutable | 400 | az IČO nem módosítható |
company_dic_missing | 400 | küldési ellenőrzés a cég DIČ-je (szlovák adóazonosító szám) nélkül |
token_invalid | 400 | az ellenőrző token (Verifikačný údaj, aláírás) nem egyezik |
document_not_found | 404 | a bizonylat nem létezik |
token_not_found | 404 | az API-token nem létezik / nem az Öné |
rate_limited | 429 | túl sok kérés |
A hozzáférési pont kiesése és az ismétlés
- Ha az API
502,503vagy504választ ad, vagy egyáltalán nem válaszol, a bizonylatot nem vettük át: ismételje meg a hívást később ugyanazzal azIdempotency-Keyértékkel, semmi nem megy ki kétszer. - Az API által elfogadott bizonylat (
202ACCEPTED,retrying: trueesetén is) a helyreállítás után magától kimegy: a hozzáférési pont ismétli a kézbesítést, az állapotot aGET /sapi/document/senthívással vagy webhookon látja; ha végül feladja, a bizonylat sikertelenként zárul, és ugyanaz a kulcs újra elküldi. - A hálózati szintű fogadás nem függ a portáltól: a portál kiesése alatt át nem jutott kézbesítést a küldő hozzáférési pont a Peppol szabályai szerint megismétli, és a bizonylat a helyreállítás után megjelenik a portálon. A kiesés miatt el nem küldött FS-jelentéseket automatikus helyreállító futás pótolja (az átviteli hibát ismételjük, a tartalmi elutasítást nem).
- Az állapot és a rendelkezésre állás előzményei a /status oldalon vannak; a tesztkörnyezetben a kiesést az
X-Sandbox-Simulatefejléccel szimulálhatja (Tesztkörnyezet szakasz).
SAPI-SK kódok (error.code mező)
| Kód | Jelentés |
|---|---|
SAPI-AUTH-001 | érvénytelen client_id/client_secret vagy letiltott fiók (401) |
SAPI-AUTH-002 | hiányzó vagy hibás Authorization: Bearer fejléc (401) |
SAPI-AUTH-003 | a kulcs nem jogosult a résztvevőre, a küldés nincs feloldva vagy szünetel (403) |
SAPI-AUTH-004 | az IP-cím nincs a kulcs engedélyezőlistáján (403) |
SAPI-VAL-001 | érvénytelen kéréstörzs (400) |
SAPI-VAL-002 | hiányzik az X-Peppol-Participant-Id (400) |
SAPI-PROC-001 | átmeneti: ezzel a kulccsal küldés van folyamatban, próbálja újra kicsit később (502, retryable) |
SAPI-PROC-002 | a bizonylat küldés előtt elutasítva (422, Prefer: handling=strict) |
SAPI-PROC-003 | Idempotency-Key nélkül: ezen a számon már más bizonylat ment ki (409, details: documentId, status) |
SAPI-RES-001 | a bizonylat nem létezik vagy más résztvevőé (404) |
SAPI-RES-002 | a bizonylat tartalma már nincs tárolva (a cég megőrzése) vagy sosem volt archiválva (404; a kód kompatibilitás miatt marad) |
SAPI-RES-003 / 004 | a melléklet vagy az MLS-igazolás még nem létezik (404) |
SAPI-SYS-001 / 002 | átmeneti infrastruktúra- vagy validátorhiba (503/502, retryable) |
SAPI-SYS-003 | túllépett kérésszám-korlát (429, Retry-After) |
SAPI-PROC-500 | váratlan hiba, a correlation_id-t küldje a támogatásnak (500) |
A portál API teljes hibakatalógusa (326)
Minden kód, amelyet a backend az error mezőben visszaad, a portál által mutatott szöveggel. Ugyanabból a szótárból készül, mint a felület, így nem avulhat el.
A portál API teljes hibakatalógusa
account_exists | Ehhez az e-mail-címhez már létezik fiók. Jelentkezzen be, és fogadja el a meghívót a portálon. |
account_inactive | Fiókja nem aktív. Kérjük, lépjen kapcsolatba velünk. |
account_under_review | Fiókját éppen ellenőrizzük. Hívjon minket, vagy írjon a [email protected] címre. |
acknowledge_required | Erősítse meg, hogy tisztában van a bejelentkezés nélküli letöltés kockázataival. |
acknowledgement_required | Erősítse meg, hogy tisztában van a szerződés felmondásának következményeivel. |
address_book_full | A címjegyzék megtelt. Töröljön nem használt ügyfeleket, és próbálja újra. |
admin_email_unverified | Az adminisztrációhoz megerősített e-mail-cím szükséges. Kattintson a regisztrációnál küldött üzenetben lévő linkre. |
admin_mfa_required | Az adminisztrációhoz kétfaktoros hitelesítés szükséges. Kapcsolja be a Beállításokban. |
ai_budget | Az AI-vázlatok kerete elfogyott, vagy elérte a napi limitet. Írja meg a választ kézzel. |
ai_failed | A válaszvázlatot nem sikerült létrehozni. Kérjük, próbálja újra. |
ai_unavailable | Az AI-válaszvázlatok jelenleg nem érhetők el. |
already_completed | A cég átruházása már befejeződött. |
already_member | Ez a felhasználó már hozzáféréssel rendelkezik (a cég vagy az Ön csapatának tagja). |
attachment_external | Ez a melléklet a küldőnél van tárolva hivatkozásként, nem a számlában. |
attachment_invalid | Egy mellékletet nem sikerült elküldeni (nem engedélyezett típus, sérült tartalom vagy túllépett méret). Ellenőrizze a mellékleteket, és próbálja újra. |
attachment_not_found | A melléklet nem található. |
attachment_not_readable | A mellékletet nem sikerült beolvasni. |
billing_unconfigured | Az előfizetési fizetés még nem érhető el. |
blocked | Erre a címre nem küldhető teszt-webhook (helyi vagy belső címek nem engedélyezettek). |
body_required | Kérjük, írja be az üzenet szövegét. |
body_too_long | Az üzenet legfeljebb 4000 karakter lehet. |
cannot_change_self | A saját szerepét nem módosíthatja. Kérje a cég másik adminisztrátorát. |
cannot_invite_self | Nem hívhatja meg saját magát, és nem fogadhatja el a saját meghívóját. |
cannot_release_to_self | A cég már ehhez a fiókhoz tartozik. |
cannot_remove_owner | A cég tulajdonosa nem távolítható el. A tulajdonjog a cég átruházásával változik. |
cannot_restrict_admin | A portál adminisztrátori fiókja így nem korlátozható. |
cannot_transfer_self | A cég már ehhez az e-mail-címhez tartozik. |
captcha_failed | A robotellenőrzés sikertelen. Kérjük, próbálja újra. |
captcha_required | A robotellenőrzés sikertelen; töltse újra az oldalt és próbálja újra. |
channel_unknown | Ismeretlen csatornájú régi bejegyzés nem játszható újra. Küldje el kézzel a megfelelő végpontra. |
chat_not_found | A beszélgetés nem található vagy üres. |
client_not_found | A cég nem tartozik ehhez a partnerfiókhoz. |
client_not_removable | A cég nem törölhető: a Pénzügyi Igazgatóság ellenőrizte, aktív, az SMP-ben regisztrált vagy bizonylatai vannak. Használja helyette a leválasztást (release). |
company_active | Aktív cég nem törölhető. |
company_address_required | Számla küldése előtt adja meg a cég székhelyét (utca, város, irányítószám) a cég adatainál. |
company_already_active | A cég már aktív, az aktiválási útmutató nem szükséges. |
company_dic_missing | Először adja meg a cég DIČ-jét (adószámát), majd próbálja újra az ellenőrzést. |
company_incomplete | Aláírás előtt töltse ki a cég adatait: cégnév, IČO, Peppol azonosító és teljes székhely. |
company_limit | Elérte a fiókonkénti cégek maximális számát. Lépjen kapcsolatba az ügyfélszolgálattal, megemeljük a limitet. |
company_name_mismatch | A cégnév nem egyezik a hivatalos nyilvántartással (ŽR/OR SR) ehhez az IČO-hoz. |
company_not_active | Migrációs kód csak a Peppol hálózatban regisztrált, aktív cég számára adható ki. |
company_not_found | A cég nem található. |
company_not_registered | A cég még nincs aktiválva: fejezze be a Verteco kiválasztását a Pénzügyi Igazgatóság portálján, utána tud küldeni. |
company_not_verified | Az átállás csak a Verteco Pénzügyi Igazgatóság portálján történő kiválasztása után lehetséges (a cégnek aktívnak és ellenőrzöttnek kell lennie). |
company_verified_locked | Ellenőrzött cég neve csak a hivatalos nyilvántartás szerint módosítható. Először adja meg az IČO-t, vagy írjon nekünk. |
confirm_name_mismatch | A megadott név nem egyezik a bejegyzett közvetítő nevével. |
confirmation_required | Az aláíráshoz meg kell erősítenie a jogosultságát és a szöveggel való egyetértését. |
conflict | Ez a bejegyzés már létezik. |
content_unavailable | Ennek a bizonylatnak a tartalma már nincs tárolva, vagy nem olvasható számlaként. |
contract_pending | A szerződéses jogviszony a portálba való első belépéssel jön létre (ÁSZF 4. cikk); ennél a cégnél még nem rögzítettünk ilyet, ezért a szerződés még nem állítható ki. |
country_invalid | Az ország kétbetűs ISO-kód legyen (SK, CZ, AT, DE…), nem név. |
country_outside_eu | Az online kérelem EU-tagállamban székhellyel rendelkező jogalanyoknak érhető el. EU-n kívüli jogalany írjon a [email protected] címre. |
current_ip_missing | A listának tartalmaznia kell az Ön aktuális IP-címét is, különben kijelentkezés után kizárná magát. |
daily_limit | Elérte a napi üzenetlimitet. Próbálja újra holnap, vagy írjon a [email protected] címre. |
delivery_failed | A teszt-webhookot nem sikerült kézbesíteni, a végpontja nem válaszolt. |
delivery_not_found | A webhook-kézbesítési bejegyzés nem található. |
deregister_cooldown | Egy IP-címről 60 másodpercenként csak egy cég törölhető. Próbálja újra kis idő múlva. |
dic_immutable | A Peppol azonosító nem módosítható: ez a cég identitása a Peppol hálózatban. |
dic_required | Adja meg a cég DIČ-jét (adószám: SK + 10 számjegy). |
dic_taken | Ilyen DIČ-vel már létezik cég a portálon. |
directory_unavailable | A központi SMP nem válaszol, vagy elutasította a módosítást. Próbálja újra kis idő múlva. |
document_no_xml | A tárolt eredeti XML már nem létezik, a jelentés nem építhető újra. |
document_not_found | A bizonylat nem található. |
document_too_large | A dokumentum túl nagy (a limit 3 MB). |
domestic_subject | Szlovák jogalany a kérelmet bejelentkezés után, a /sprostredkovatel/ziadost oldalon nyújtja be. |
duplicate_invoice_number | Ezzel a számmal már küldtek bizonylatot. Új bizonylathoz új szám kell; ugyanazt a bizonylatot sosem küldjük el kétszer. |
email_change_cooldown | A megerősítő e-mailt már elküldtük. Újat 10 perc múlva kérhet. |
email_invalid | Adjon meg egy érvényes e-mail-címet. |
email_not_verified | Először erősítse meg az e-mail-címét. A linket elküldtük Önnek. |
email_send_company_not_active | Az e-mailes küldés csak aktív, Peppol-azonosítóval rendelkező cégnél kapcsolható be. |
email_send_unavailable | Az e-mailes küldés ebben a környezetben nem érhető el. |
email_taken | Ezt az e-mail-címet már másik fiók használja. |
email_unchanged | Ez az Ön jelenlegi e-mail-címe. |
empty_document | Illessze be a számla XML-jét. |
empty_idea | Kérjük, írja le, mit kellene javítanunk. |
empty_message | Az üzenet üres. |
empty_reply | A válasz üres. |
entry_not_found | Az ügyfél nem található a címjegyzékben. |
export_format_unknown | Ismeretlen exportformátum. |
forbidden | Ehhez a művelethez nincs jogosultsága. |
forwarder_unreachable | A bizonylatfeldolgozó szolgáltatás nem válaszol. Próbálja újra kis idő múlva. |
fs_change_already_sent | A kérelem már elment a Pénzügyi Igazgatóságnak, nem vonható vissza. Szükség esetén adjon be újat. |
fs_change_confirm_required | Erősítse meg, hogy az összes módosítást egyszerre kéri. |
fs_change_cooldown | A következő módosítási kérelem az előző után 48 órával adható be. |
fs_change_field_readonly | A cégazonosító és az adószám nem módosítható; új azonosság új bejegyzést jelent. |
fs_change_no_changes | Nem adott meg módosítást a Pénzügyi Igazgatóságnál lévő adatokhoz képest. |
fs_change_not_found | A módosítási kérelem nem található. |
fs_change_not_open | A kérelem már lezárult. |
fs_change_not_queued | Csak küldésre váró kérelem küldhető el azonnal. |
fs_change_pending | Egy módosítási kérelem már várakozik vagy a Pénzügyi Igazgatóságnál van. A következőt annak lezárása után adhatja be. |
fs_secret_invalid | A kulcs 32 karakter (számjegyek és az a–f betűk). Másolja a Pénzügyi Igazgatóság zipjében lévő .txt fájl teljes tartalmát. |
fs_secret_mismatch | A kulcs nem egyezik azoknak a hívásoknak az aláírásával, amelyeket a Pénzügyi Igazgatóság már elküldött a végpontjára. Ellenőrizze a zipet és a másolt kulcsot; ha a proxyja módosítja a hívás törzsét, írjon nekünk. |
has_documents | A cégnek bizonylatai vannak az archívumban, a törlés zárolva van (törvényi archiválás). |
holding_unavailable | Az ügyfél leválasztása jelenleg nem lehetséges. Lépjen kapcsolatba az ügyfélszolgálattal. |
ico_immutable | Az IČO nem módosítható. |
ico_required | Az IČO megadása kötelező (8 számjegy). |
ico_taken | Ilyen IČO-val már létezik cég egy másik fiók alatt. Jelentkezzen be azzal, vagy írjon nekünk. |
instructions_cooldown | Ehhez a céghez már elküldtük az útmutatót. Újraküldés 24 óra után lehetséges. |
integration_not_found | Ismeretlen integráció. |
internal | Váratlan hiba történt. Kérjük, próbálja újra. |
internal_error | Váratlan szerverhiba történt. Kérjük, próbálja újra; a hibát rögzítettük. |
invalid_action | Ismeretlen művelet. |
invalid_after | Az after paraméternek ISO 8601 formátumú dátumnak és időnek kell lennie (pl. 2026-09-05T10:00:00Z). |
invalid_amount | Az összegnek számnak kell lennie. |
invalid_billing_model | Ismeretlen számlázási modell. Válasszon a felajánlott modellek közül. |
invalid_country | Válassza ki a székhely országát. |
invalid_credentials | Hibás e-mail-cím vagy jelszó. |
invalid_current_password | A jelenlegi jelszó nem helyes. |
invalid_date | A dátumnak ÉÉÉÉ-HH-NN formátumúnak kell lennie. |
invalid_default_company | Az alapértelmezett cégnek az Ön cégei közül kell lennie. |
invalid_dic | Adjon meg érvényes DIČ-et (10 számjegy, opcionálisan SK előtaggal) vagy IČ DPH-t. |
invalid_direction | A bizonylat iránya elküldött vagy beérkezett lehet. |
invalid_due_days | A fizetési határidő 0 és 365 nap között lehet. |
invalid_email | Adjon meg egy érvényes e-mail-címet. |
invalid_feed_url | A feed URL-jének https:// előtaggal kell kezdődnie. |
invalid_ico | Adjon meg érvényes IČO-t (8 számjegy) vagy cégjegyzékszámot. |
invalid_id | Adjon meg szlovák IČ DPH-t vagy DIČ-et (pl. SK2121358349), vagy Peppol ID-t (pl. 0245:2121358349). |
invalid_ids | A bizonylatok listája érvénytelen. |
invalid_invite | A meghívó érvénytelen vagy már felhasználták. |
invalid_ip_entry | A lista érvénytelen elemet tartalmaz. IP-címek (pl. 185.76.8.211) és CIDR-tartományok (pl. 185.76.8.0/24) engedélyezettek. |
invalid_key | A közvetítői kulcs 3 és 40 karakter közötti lehet: kisbetűk, számjegyek és kötőjelek. |
invalid_limit | A limitnek legalább 1-nek kell lennie, vagy üresnek (alapértelmezett érték). |
invalid_link | A bejelentkezési link érvénytelen vagy lejárt. Kérjen újat. |
invalid_locale | Nem támogatott nyelv. |
invalid_month | A hónapnak ÉÉÉÉ-HH formátumúnak kell lennie. |
invalid_notification_email | Az egyik cím nem érvényes e-mail: |
invalid_notify_event | Ismeretlen értesítési esemény. |
invalid_notify_locale | Az e-mailek nyelve szlovák, angol, német vagy magyar lehet. |
invalid_notify_mode | Ismeretlen értesítési mód. Válasszon: minden esemény, napi összefoglaló, heti összefoglaló vagy nincs. |
invalid_password | Hibás jelszó. |
invalid_pattern | A számozási formátum legfeljebb 64 karakter lehet, és pontosan egyszer tartalmazhatja a {N}, {NNN} vagy {NNNN} sorszámot. |
invalid_payload | A számla (XML) hiányzik vagy túl nagy. |
invalid_persona | Ismeretlen fiókszerepkör. |
invalid_phone | A telefonszámot +421 9xx xxx xxx formában adja meg (számjegyek, szóközök, esetleg kötőjelek). |
invalid_prefs | A megjelenítési beállítások érvénytelen értéket tartalmaznak, és nem sikerült menteni őket. |
invalid_receiver | A címzettnek séma:érték formátumú Peppol azonosítóval kell rendelkeznie (pl. 0245:2121358349). |
invalid_request | Hiányoznak kötelező adatok (pl. cégnév, 10 számjegyű DIČ, érvényes e-mail vagy végpont URL). |
invalid_role | A szerepkör adminisztrátor, tag vagy csak olvasás lehet. |
invalid_seq | A következő sorszámnak legalább 1-nek kell lennie. |
invalid_session | Érvénytelen beszélgetés. Töltse újra az oldalt, és próbálja újra. |
invalid_signature | A fizetési értesítést nem sikerült ellenőrizni. |
invalid_signup | A regisztráció már nem érvényes vagy lejárt. Kezdje újra a regisztrációt. |
invalid_sort | Ismeretlen rendezés. |
invalid_state | Ismeretlen állapot. |
invalid_status | Ismeretlen státusz. |
invalid_tag | A címke nem lehet üres. |
invalid_token | A link érvénytelen vagy már felhasználták. |
invalid_vpds_url | A kiválasztási linknek https://vpds.financnasprava.sk/ előtaggal kell kezdődnie. |
invalid_web | A webcímnek érvényes címnek kell lennie (https://...). |
invalid_webhook_url | A webhook URL-nek érvényes https:// címnek kell lennie (legfeljebb 512 karakter). |
invalid_window | Az időablak érvénytelen: a kezdetnek a vég előtt kell lennie, és legfeljebb 31 nap lehet. |
invalid_xml | A bizonylat XML-je nem olvasható (sérült fájl vagy nem engedélyezett DOCTYPE deklaráció). |
invite_email_mismatch | Ez a meghívó másik e-mail-címre szól. Jelentkezzen be azzal a fiókkal, amelyre a meghívó érkezett. |
invite_expired | A meghívó lejárt. Kérjen újat. |
ip_not_allowed | Erről az IP-címről a bejelentkezés nem engedélyezett ehhez a fiókhoz. |
lead_no_email | A lead nem rendelkezik e-mail-címmel, nem kereshető meg. |
lead_not_contactable | Csak új állapotú lead kereshető meg. |
lead_not_found | A lead nem található. |
link_gone | Ez a link már nem érvényes (lejárt, visszavonták, vagy a bizonylat tartalma már nincs tárolva). |
lookup_unavailable | A nyilvántartás vagy az ellenőrző szolgáltatás jelenleg nem érhető el. Próbálja újra kis idő múlva. |
malformed_request | A kérés formátuma érvénytelen. Töltse újra az oldalt, és próbálja újra. |
manager_required | Ezt a módosítást csak a cég tulajdonosa vagy adminisztrátora végezheti el. |
member_is_owner | Ez a felhasználó a cég tulajdonosa. A tulajdonjog a cég átruházásával változik. |
member_not_found | A tag nem található. |
members_full | A cég elérte a tagok maximális számát. |
method_not_allowed | Ez a művelet nem támogatott ezen a címen. |
mfa_already_enabled | A kétfaktoros hitelesítés már be van kapcsolva. |
mfa_code_invalid | A kód nem egyezik. Próbálja az alkalmazás aktuális kódját vagy egy tartalék kódot. |
mfa_not_enabled | A tartalék kódok a kétfaktoros hitelesítéshez tartoznak. Először kapcsolja be. |
mfa_not_started | Először indítsa el a kétfaktoros hitelesítés beállítását. |
mfa_required | Adja meg a hitelesítő alkalmazás kódját. |
migration_code_live | Az előző migrációs kód még érvényes. Először vonja vissza. |
migration_code_none | Nincs aktív migrációs kód kérés. |
migration_code_pending | Már folyamatban van egy migrációs kód kérés. |
migration_code_rejected | Az SMP elutasította a migrációs kódot. Ellenőrizze a korábbi szolgáltatónál; a kódok egyszer használhatók és időben korlátozottak. |
migration_code_required | Adja meg a korábbi szolgáltató migrációs kódját. |
migration_rejected | A központi SMP elutasította az átvételi kérést. Próbálja újra, vagy írjon nekünk. |
missing_fields | A név és a tulajdonos e-mail-címe kötelező. |
missing_parameter | A kérésből hiányzik egy kötelező paraméter. |
mls_not_available | Ehhez a bizonylathoz még nem érhető el kézbesítési igazolás (MLS). |
name_required | Adja meg a nevet (ügyfélnév vagy cégnév). |
no_billing_account | Még nincs számlázási fiókja. Először állítson be előfizetést. |
no_body | A bejegyzésnek nincs tárolt kéréstörzse, nem játszható újra. |
no_content | A bizonylat tartalma már nem érhető el, a link nem adható ki. |
no_dic | A cégnek nincs DIČ-je (adószáma). |
no_documents | A kiválasztott időszakban nincsenek bizonylatok (tárolt XML-lel). |
no_evidence | Ehhez a bizonylathoz nincs tárolva sem az eredeti XML, sem kézbesítési igazolás. |
no_ids | Válasszon ki legalább egy bizonylatot. |
no_owner | A cégnek nincs tulajdonosa. Használja a közvetlen átsorolást. |
no_secret | Az aláírókulcs még nem létezik. Először állítsa be az értesítési webhook URL-t. |
no_verification_token | A cégnek nincs tárolt ellenőrző adata a Pénzügyi Igazgatóságtól; az SMP-regisztrációhoz szükséges. |
not_a_reseller | Ez a fiók nem tulajdonosa közvetítői bejegyzésnek. |
not_acceptable | A szerver csak JSON formátumban válaszol. |
not_available_for_white_label | Viszonteladói márka alatti cégeknél ez a lehetőség nem érhető el. |
not_failed | Csak sikertelen webhookok ismételhetők meg. |
not_found | A bejegyzés nem található. |
not_reseller | Ez a fiók nem tulajdonosa közvetítői bejegyzésnek. |
not_sandbox_row | Ezt a közvetítői bejegyzést adminisztrátor kezeli, a fiókból nem kapcsolható ki. |
note_too_long | A megjegyzés legfeljebb 200 karakter lehet. |
notification_emails_too_long | A címek együtt túl hosszúak (legfeljebb 256 karakter). |
owner_not_found | Ehhez az e-mail-címhez nem létezik tulajdonosi fiók. Először hozza létre. |
owner_of_companies | A fiók törléséhez először kérjen migrációs kódot, vagy jelentkeztesse ki a céget a Peppol hálózatból. Ezután véglegesen törölheti a fiókot. |
owner_required | Ezt a műveletet csak a cég fiókjának tulajdonosa végezheti el. |
participant_not_registered | A cégnek még nincs bejegyzése a központi SMP-ben a Verteco alatt; a közzétételt a regisztráció után állítsa be. |
partner_managed | Ennek a cégnek a szerződéses jogviszonyát a közvetítője kezeli; a szerződés igazolását ő állítja ki. |
party_missing_in_text | Az aláírandó szöveg nem tartalmazza a cég azonosítását. Töltse újra az oldalt, és próbálja újra. |
password_already_set | Már van beállított jelszava. Használja a jelszómódosítást. |
password_not_set | A fiókhoz nincs jelszó beállítva. Állítson be egyet a Beállításokban, majd próbálja újra. |
password_required | Először állítson be jelszót (Biztonság), ezután megerősítheti ezt a módosítást. |
payment_mismatch | A fizetést nem sikerült a kérelemhez rendelni. Kérjük, lépjen kapcsolatba velünk. |
payment_unconfigured | A fizetés jelenleg nem érhető el. Próbálja később, vagy lépjen kapcsolatba velünk. |
pdf_unavailable | A PDF-készítés átmenetileg nem érhető el. Próbálja újra kis idő múlva, vagy használja a Nyomtatás / PDF funkciót. |
profile_too_long | A profil egyik mezője túl hosszú. Rövidítse le a szöveget. |
public_link_exists | A bizonylatnak már van aktív linkje. Ha újat szeretne, válassza a link cseréjét. |
public_links_disabled | A cégnél nincs bekapcsolva a számlák bejelentkezés nélküli letöltése. A tulajdonos a cég adatainál (Adatarchívum) kapcsolhatja be. |
public_links_unavailable | A nyilvános bizonylatlinkek jelenleg ki vannak kapcsolva. |
rate_limited | Túl sok kérés. Próbálja újra kis idő múlva. |
read_only_member | A csak olvasás szerepkör nem módosíthatja a bizonylatok állapotát vagy címkéit. |
received_only | Nyilvános link csak beérkezett bizonylatokhoz adható ki. |
receiving_toggle_cooldown | A fogadás óránként legfeljebb háromszor kapcsolható. A következő módosítás akkor lehetséges, amikor az utolsó három módosítás közül a legrégebbitől eltelt egy óra. |
registered_elsewhere | A résztvevő továbbra is másik szolgáltatónál van regisztrálva; a kód nem indította el az átvételt. |
renderer_unavailable | Az előnézet most nem készíthető el (a megjelenítő szolgáltatás újraindul). Próbálja újra egy perc múlva; a számla küldését ez nem akadályozza. |
reply_already_cancelled | Ezt a választ időközben egy kolléga visszavonta. |
reply_already_sent | Ezt a választ már elküldtük, nem vonható vissza és nem küldhető újra. |
reply_not_found | Az ütemezett válasz nem található. |
reply_to_invalid | Az eredménycím nem érvényes e-mail-cím. |
representative_incomplete | Adja meg a jogosult személy nevét és beosztását is, vagy hagyja mindkét mezőt üresen. |
request_rejected | A kérés nem engedélyezett karaktert tartalmaz egy fejlécben vagy az URL-ben. Ha API-kulcsot küldött, használja a létrehozáskor megjelenített teljes client_secret értéket (a lista csak az elejét mutatja …-tal) és egyenes idézőjeleket. |
reseller_not_found | A közvetítő nem található. |
reseller_owner | Az Ön fiókja egy közvetítői bejegyzés tulajdonosa. Egyeztesse az átadását az ügyfélszolgálattal; ezután törölheti a fiókot. |
reseller_required | Ez a rész csak bejegyzett közvetítő fiókjához érhető el. |
sbd_not_available | Ehhez a bizonylathoz nincs tárolt szállítási boríték (SBDH). Töltse le helyette a bizonylat XML-jét. |
schedule_not_found | Ez a rendszeres export már nem létezik. |
sender_email_invalid | A feladó címe nem érvényes e-mail-cím. |
sender_email_system | Automatikus postafiókok (noreply, postmaster, mailer-daemon…) nem adhatók hozzá; személy vagy számlázó rendszer postafiókját használja. |
sender_exists | Ez a cím már szerepel az engedélyezett feladók között. |
sender_limit | Legfeljebb 20 engedélyezett feladó adható meg. |
sending_not_verified | A küldés nem engedélyezett: a cégnek még nincs ellenőrzött szolgáltatóválasztása a Pénzügyi Igazgatóság portálján. |
sending_paused | Ennél a cégnél a küldést a kezelő fiók szüneteltette. A számlák fogadása tovább működik. |
service_unavailable | A szolgáltatás átmenetileg nem érhető el. Kérjük, próbálja újra kis idő múlva. |
session_full | Ez a beszélgetés túl hosszú. Töltse újra az oldalt, és kezdjen újat. |
session_not_found | Az eszköz nem található. |
shoptet_feed_blocked | A cím privát hálózatra mutat. Illessze be webáruháza nyilvános címét. |
shoptet_feed_http | A Shoptet elutasította a címet. Ellenőrizze a címben lévő hasht, és hogy az export nincs-e egy IP-címre korlátozva. |
shoptet_feed_invalid_xml | Az export válasza nem érvényes XML. Ellenőrizze a címet a Shoptetben. |
shoptet_feed_not_configured | A Shoptet-kapcsolat még nincs beállítva. |
shoptet_feed_not_orders_xml | Ez nem Shoptet rendelésexport: a címnek /export/orders.xml-re kell végződnie. |
shoptet_feed_not_system_xml | Illessze be a „Rendszer Shoptet XML” export címét (a címben patternId=-11 szerepel). Saját sablonokat, CSV-t és XLS-t nem támogatunk. |
shoptet_feed_too_large | Az export válasza túl nagy (10 MB felett). A rendeléseket hetenként kérjük le, így az ilyen válasz általában termékexport, nem rendelésexport. Ellenőrizze az export típusát. |
shoptet_feed_unreachable | A Shoptet export nem válaszolt. Próbálja meg kicsit később; a Shoptet egyszerre csak egy exportot engedélyez. |
sidlo_incomplete | A székhelynek tartalmaznia kell az utcát, az irányítószámot és a várost, pl. „Ulica 1, 010 01 Mesto”. |
smp_cancel_failed | A kód visszavonása a központi SMP-ben nem sikerült. Próbálja újra kis idő múlva, vagy írjon a [email protected] címre. |
smp_deregister_failed | A Peppol hálózatból való kijelentkeztetés nem sikerült. Próbálja újra kis idő múlva. |
smp_held_elsewhere | Ennek a cégnek a regisztrációját másik szolgáltató tartja. Tőlünk nem szükséges migrációs kód. |
smp_not_test | A tesztkörnyezet nincs megfelelően összekötve a teszt SMP-vel. Kérjük, írjon nekünk. |
smp_unavailable | A központi SMP jelenleg nem válaszol; próbálja újra kis idő múlva. |
smtp_fromAddress_required | Adja meg a küldő címét. |
smtp_fromAddress_too_long | A küldő címe túl hosszú. |
smtp_from_forbidden | A küldő címe nem lehet Verteco-domainen. |
smtp_from_invalid | A küldő címe nem érvényes e-mail-cím. |
smtp_from_not_yours | A küldő címének a cége domainjén kell lennie (mint a tulajdonos, egy tag vagy a cég értesítési e-mailje). |
smtp_from_taken | Ezt a küldő címet már másik cég használja. |
smtp_host_blocked | A szerver nem található a DNS-ben, vagy nem érhető el nyilvánosan (belső címek nem engedélyezettek). |
smtp_host_invalid | A szerver domainnevét adja meg (pl. smtp.ceg.hu), ne IP-címet. |
smtp_host_required | Adja meg az SMTP-szerver címét. |
smtp_host_too_long | Az SMTP-szerver címe túl hosszú. |
smtp_incomplete | Töltse ki a szervert, a portot, a felhasználónevet, a jelszót és a küldő címét. |
smtp_password_invalid | A jelszó nem tartalmazhat szóközt vagy sortörést. |
smtp_password_required | Adja meg az SMTP-fiók jelszavát (szerverváltásnál újra meg kell adni). |
smtp_port_not_allowed | Az engedélyezett portok: 465, 587 és 2525. |
smtp_security_invalid | A biztonsági módnak STARTTLS-nek vagy SSL-nek kell lennie. |
smtp_test_cooldown | Teszt e-mail percenként egyszer küldhető. Próbálja újra kis idő múlva. |
smtp_test_failed | A teszt e-mailt nem sikerült elküldeni. Ellenőrizze az SMTP-szerver beállításait. |
smtp_username_invalid | A felhasználónév nem tartalmazhat szóközt vagy sortörést. |
smtp_username_required | Adja meg az SMTP-fiók felhasználónevét. |
smtp_username_too_long | A felhasználónév túl hosszú. |
state_not_for_direction | Ez az állapot nem lehetséges a bizonylat irányához (beérkezett vagy elküldött). |
stripe_error | A fizetési kaput nem sikerült megnyitni, vagy a fizetést nem sikerült ellenőrizni. Kérjük, próbálja újra. |
support_not_on_sandbox | Az ügyfélszolgálat az éles portálon (peppol.verteco.digital) működik, nem a tesztkörnyezetben. |
tag_too_long | A címke túl hosszú. |
target_blocked | A célfiók zárolva van, az átruházás nem lehetséges. |
team_full | Elérte a csapattagok maximális számát. |
termination_confirmed | A megerősített felmondás az alkalmazásból nem vonható vissza. Írjon a [email protected] címre. |
termination_pending | Már folyamatban van egy felmondási kérés. Erősítse meg az e-mailben kapott linkkel, vagy vonja vissza. |
terms_not_accepted | A fiók létrehozásához el kell fogadnia az általános szerződési feltételeket. |
test_document_in_production | Próbabizonylatokat (TEST-… vagy VITAJTE-… számmal) 2027. január 1-jétől nem küldünk az éles hálózaton. Próbákhoz használja a test.peppol.verteco.digital tesztkörnyezetet. |
ticket_link_expired | A kérés több mint 90 napja lezárt, a link már nem érvényes. Írjon nekünk újra a [email protected] címre. |
ticket_not_found | A kérés nem található, vagy a link érvénytelen. |
token_companies_required | Válasszon legalább egy céget, amelyhez a kulcs hozzáférhet. |
token_company_not_allowed | Ennek az API-kulcsnak nincs hozzáférése ehhez a céghez (csak kiválasztott cégekhez jött létre). |
token_company_not_member | A kulcs csak olyan cégekhez férhet hozzá, amelyeknek a fiókja tagja. |
token_expired | A link lejárt. Kérjen újat. |
token_invalid | A link vagy az ellenőrző adat érvénytelen, vagy már nem érvényes. |
token_limit | Túl sok aktív API kulcsa van (max. 50). Vonja vissza a nem használtakat, és próbálja újra. |
token_not_allowed | Ez a beállítás csak a portálra bejelentkezve módosítható, API kulccsal nem. |
token_not_found | Az API kulcs nem található. |
token_not_revoked | Ez az API kulcs aktív, nincs mit visszaállítani. |
token_restore_expired | A kulcsot több mint 7 napja vonták vissza, már nem állítható vissza. Hozzon létre új kulcsot. |
token_scope_invalid | A kulcs hatóköre „összes” vagy „kiválasztott” lehet. |
too_many_ids | Egyszerre legfeljebb 500 bizonylat dolgozható fel. |
too_many_notification_emails | Legfeljebb 5 e-mail-címet adjon meg. |
too_many_schedules | Egy cégnek legfeljebb öt rendszeres exportja lehet. Újabb hozzáadása előtt töröljön egyet. |
too_many_tags | A bizonylatnak túl sok címkéje van. |
too_many_tickets | Túl sok nyitott kérése van. Kérjük, várja meg a választ. |
transfer_canceled | A cég átruházását visszavonták. |
transfer_expired | Az átruházási link lejárt. Kérjen új átruházást. |
transfer_stale | A cég tulajdonjoga időközben megváltozott, az átruházást visszavontuk. |
unauthorized | Kérjük, jelentkezzen be újra. |
unknown_document | Csak a DPA, SLA és NDA dokumentumok írhatók alá. |
unsupported_document | Az előnézet csak számlát vagy jóváírást tud megjeleníteni (UBL Invoice vagy CreditNote). |
unsupported_media_type | Ez a tartalomtípus nem elfogadott. Küldje az adatokat JSON formátumban. |
user_not_found | Nem található fiók ezzel az e-mail-címmel. A felhasználónak először regisztrálnia kell. |
validation_failed | Néhány mező hibásan van kitöltve. |
validator_unavailable | Az érvényesítés jelenleg nem érhető el. Próbálja újra kis idő múlva. |
verification_code_rejected | Az SMP elutasította az FS-választásból származó ellenőrző adatot; ismételje meg a választást. |
verification_token_missing | Hiányzik az FS-választásból származó ellenőrző adat; ismételje meg a választást és próbálja újra. |
verified_company_required | A kérelmet csak legalább egy ellenőrzött céggel rendelkező fiók nyújthatja be. |
version_stale | A dokumentum szövege időközben megváltozott. Töltse újra az oldalt, és írja alá az aktuális változatot. |
webhook_not_configured | Először állítsa be és mentse a webhook URL-t. |
webhook_url_https_required | Éles környezetben a webhook URL-nek https://-vel kell kezdődnie (a kézbesítés ügyfélazonosítókat és aláírást tartalmaz). |
webhook_url_unreachable | A webhook URL-nek nyilvánosan elérhetőnek kell lennie. A localhost és a belső hálózatok nem érhetők el a szervereinkről. |
white_label_owner_fixed | A partneren keresztül vezetett céget a partnerfiók kezeli. További tulajdonost a partner ad hozzá a cég elengedésével, vagy a Verteco kiválasztása a Pénzügyi Igazgatóság portálján. |
wrong_endpoint | Ez nem a token végpont. Használja a POST /sapi/auth/token hívást client_id és client_secret adatokkal. |
xml_not_available | Ehhez a bizonylathoz nincs tárolva az eredeti XML, a tartalom már nem érhető el. |
xml_required | Hiányzik a bizonylat XML-je, az előnézet nem készíthető el. |
xml_too_large | A bizonylat túl nagy az előnézethez (legfeljebb 8 MB a mellékletekkel együtt). |
Kérésszám-korlátok (rate limit)
Az API-t kérésszám-korlátozás védi 60 másodperces ablakban (példányonként). A korlátot és a fennmaradó keretet minden válasz fejlécekben adja vissza; túllépés esetén az API 429 Too Many Requests választ ad Retry-After fejléccel.
- Rendes hívások
- dinamikus korlát nagy ráhagyással, API-tokenenként (vagy munkamenetenként, egyébként IP-címenként); az aktuális értéket a RateLimit-Limit fejléc adja vissza
- Hitelesítés (/auth/*)
- szigorúbb korlát IP-címenként (brute force ellen; kivéve /auth/me és /auth/logout)
RateLimit-Limit- korlát az ablakban
RateLimit-Remaining- hány kérés maradt
RateLimit-Reset- másodpercek az ablak újraindulásáig
Retry-After- másodpercek a következő próbálkozásig (429 esetén)
HTTP/2 429 Too Many Requests
RateLimit-Limit: <limit in the window>
RateLimit-Remaining: 0
RateLimit-Reset: 37
Retry-After: 37
{ "error": "rate_limited", "message": "Too many requests. Slow down." }- Kedvezmények és kerekítés: az R040 (kedvezmény összege = alap × % / 100) és az R120 (sor összege = mennyiség × ár − sorkedvezmények) szabály egyaránt 0,02 € tűréssel működik; csak az R046 pontos, amely az ár szintű kedvezményre vonatkozik (PriceAmount = BaseAmount − Amount). Az egységár (BT-146), valamint a bruttó ár és az árkedvezmény (BT-147, BT-148) tizedesjegyeinek száma nincs korlátozva, minden más összegé 2. Ha a rendszere a kedvezményt az egységárra alkalmazza és kerekíti, az ár szintjén írja: PriceAmount = kerekített nettó egységár, BaseAmount = listaár, Amount = pontos különbség, sor összege = round(mennyiség × PriceAmount, 2); százalék ott nem adható meg (a sor megjegyzésébe való). A másik lehetőség a csak összeggel megadott sorkedvezmény 95-ös indokkóddal; százalékot és alapot a sorkedvezményben csak akkor adjon meg, ha alap = round(mennyiség × exportált PriceAmount, 2) és Amount = round(alap × % / 100, 2). Negatív mennyiség pozitív árral (visszáru, adózott előleg levonása) jóváírásban és számlában egyaránt megengedett. 11., 15. és 16. minta: /hu/vzory.
- A limitek a hitelesítő adathoz kötődnek, nem az IP-hez: percenként 300 hívás API-tokenenként (SAPI: access tokenenként), az auth végpontok percenként 20 IP-nként, és védelmi felső határ percenként 600 IP-nként az /api/v1-en. Egy IP mögötti szerveroldali integrációt ez nem érint; magasabb limitet kérésre állítunk be, írja meg a várható csúcsot.
- Kapacitás: a mennyiséget az árlista nem korlátozza, a küldés aszinkron (a hívás átadja a bizonylatot, a kézbesítés a háttérben fut), és egy kötegelt hívás egyszerre legfeljebb 100 bizonylatot fogad; tervezett csúcs esetén írja meg előre a várható mennyiséget, és megemeljük a kulcs limitjét.
- A polling teljes értékű út: GET /sapi/document/sent és /receive ?since és ?until paraméterrel 1–5 percenként; a webhook kiegészítés, nem feltétel.
- Időbélyegek (76a § (2) bek. d) pont): sentAt = átadás a kézbesítő szolgálatnak (ezzel a 85o § (11) bek. szerint a kiállító kötelezettsége teljesül), deliveredAt = a fogadó Access Point MLS-megerősítése, fsReportedAt = adatszolgáltatás az FS felé; fogadott dokumentumoknál creationDateTime = átvétel. Mindhárom szerepel a /sapi/document/sent minden sorában, a /sapi/document/sent/{id} részletben és a webhookokban (plusz occurredAt).
- PDF: a GET /sapi/document/receive/{id}/pdf és a GET /sapi/document/sent/{id}/pdf (a links.pdf mezőben is) a szállító PDF-jét adja vissza, ha a bizonylat tartalmazza, egyébként az XML-ből generált PDF-et; nyomtatható HTML a …/html címen (portál ?format=html).
- C#/.NET és más nyelvek: a klienst az OpenAPI-ból generálja (NSwag, Kiota, openapi-generator); saját NuGet-csomagot nem szállítunk.
- Kulcs hatóköre: az API-kulcs létrehozásakor (API-kulcsok oldal) kiválasztja, hogy a fiók összes cégére vonatkozzon (a később hozzáadottakra is) vagy csak a kijelöltekre. Más cégre irányuló hívás 403 token_company_not_allowed választ ad (SAPI-SK: SAPI-AUTH-003); a kulcs rotálása megőrzi a hatókört. Csak olvasható kulcs egyelőre nincs.
- Alapútvonal: minden SAPI-SK hívás, a bővítéseinket is beleértve (GET /sapi/document/sent, GET /sapi/document/receive/{id}/pdf, GET /sapi/discovery), a
/sapialatt fut ugyanazzal az access tokennel és azX-Peppol-Participant-Idfejléccel. A SAPI-… kód nélküli 401 „Authentication required” válasz azt jelenti, hogy az útvonal a/sapi-n kívül van (például /api/v1/document/sent); az/api/v1a portál API-ja, és Bearerként avpt_kulcsot várja, nem SAPI access tokent. - A kiállítás dátumát (BT-2) nem vetjük össze az átadás napjával: a bizonylat abban a pillanatban kerül a hálózatba, amikor megkapjuk, ezért a kiállítás napján küldje, és ne sorolja éjfélen túl várólistába. A devizás bizonylatot a Pénzügyi Igazgatóságnak a BT-110 és BT-111 (TaxCurrencyCode EUR) szerinti, euróban megadott adóösszeggel jelentjük, ahogy a 03. minta mutatja.
- Teljesítés dátuma: az XML-ben a BT-72 (
cac:Delivery/cbc:ActualDeliveryDate) hordozza; az átvett fizetésről szóló adóbizonylat a BT-72-ben a fizetés dátumát viszi (12. minta). Saját szolgáltatási számláink és a portálból küldött bizonylatok mindig tartalmazzák, akkor is, ha megegyezik a kiállítás dátumával (az áfatörvény 74. § (1) d) pontja csak eltérés esetén követeli meg). Olvasáskor vegye a BT-72-t, ha hiányzik, a BT-7-et (cbc:TaxPointDate), különben a kiállítás dátumát.
Kérésszám-keretek (aktuális értékek)
Az ablak 60 másodperc. Minden válasz tartalmazza a RateLimit-Limit, RateLimit-Remaining, RateLimit-Reset és RateLimit-Policy (limit;w=ablak másodpercben) fejlécet, a 429 a Retry-After-t is. Az értékek bejelentés nélkül nőhetnek; a fejléceket olvassa, ne ezt a táblázatot.
| Hívások | Keret kulcsa | Limit |
|---|---|---|
/sapi/* és /api/mcp tokennel | a token mögötti client_id (az access token forgatása nem nullázza) | 300 / perc |
/api/v1/* API-kulccsal vagy munkamenettel | kulcs (hash) vagy munkamenet | 300 / perc |
POST /sapi/auth/token, renew, revoke | IP | 60 / perc |
/api/v1/auth/* (bejelentkezés, visszaállítás) | IP | 20 / perc |
Nyilvános eszközök (/api/v1/public/peppol-check, validátor) | IP | 15 / perc |
Tömeges ellenőrzés (/public/peppol-check/batch) | IP | 6 / perc |
Élő hálózati lekérdezés (peppol-check, /sapi/discovery, MCP check_participant) | IP vagy kulcs; plusz az egész portál | 40 / óra hívónként és 150 / óra összesen; a kereten túl az éjszakai felmérés válaszol (source: index), a tömeges ellenőrzés nincs korlátozva |
Regisztráció, elfelejtett jelszó, kapcsolati űrlap | IP | 15 / óra |
Védelmi plafon minden ellenőrizetlen bearerhez | IP | 600 / perc |
HTTP/2 200
RateLimit-Limit: 300
RateLimit-Remaining: 287
RateLimit-Reset: 41
RateLimit-Policy: 300;w=60API-tokenek
Átlátszatlan (opaque) vpt_… tokenek szerver-szerver hozzáféréshez. A nyílt szöveg csak egyszer jelenik meg, a létrehozáskor. Mentse el. Mi csak a SHA-256 hash-t és egy 12 karakteres előtagot tárolunk a megjelenítéshez.
/tokensmunkamenet / tokenAz Ön aktív tokenjeinek listája (a titok nélkül), createdAt szerint csökkenő sorrendben.
/tokensmunkamenet / tokenTokent hoz létre; a nyílt szöveget adja vissza (csak egyszer).
| Mező | Típus | Kötelező | Leírás |
|---|---|---|---|
name | string | igen | a token neve, max. 128 |
curl -X POST https://peppol.verteco.digital/api/v1/tokens -b cookies.txt \
-H 'Content-Type: application/json' -d '{"name":"moja-appka"}'
# 201 Created
{ "id":"…","name":"moja-appka","token":"vpt_8f2a…","prefix":"vpt_8f2a3b…","createdAt":"…" }/tokens/{id}munkamenet / tokenVisszavonja a tokent. 204-et ad vissza.
Hibák: token_not_found (404)
Cégek
Az Ön által kezelt, cégjegyzékszámmal (IČO) / áfaazonosítóval (IČ DPH) azonosított cégek. A hozzáférés a tagsághoz kötött: csak azokat a cégeket látja, amelyeknek tagja. A cég létrehozója lesz annak owner-e.
/companiesmunkamenet / tokenAzoknak a cégeknek a listája, amelyeknek tagja (az Ön szerepkörével).
/companiesmunkamenet / tokenCéget ad hozzá; Ön lesz a tulajdonosa, status = pending_verification.
| Mező | Típus | Kötelező | Leírás |
|---|---|---|---|
ico | string | igen | pontosan 8 számjegy |
dic | string | igen | adószám SK + 10 számjegy formában (pl. SK2121358349); nem áfaalany csak a 10 jegyű DIČ-et küldi, az SK-t mi tesszük elé |
legalName | string | igen | hivatalos (cég)név, max. 500 |
registeredAddress | string | nem | a székhely címe, max. 1000 |
curl -X POST https://peppol.verteco.digital/api/v1/companies \
-H 'Authorization: Bearer vpt_8f2a…' -H 'Content-Type: application/json' \
-d '{"ico":"53412834","dic":"SK2121358349","legalName":"Verteco digital services, s. r. o."}'
# 201 Created
{ "id":"08dd…","ico":"53412834","dic":"SK2121358349","legalName":"…",
"registeredAddress":null,"peppolParticipantId":null,
"status":"pending_verification","role":"owner","createdAt":"2026-06-03T09:40:27Z" }Hibák: ico_taken (409) · validation_failed (400)
/companies/{id}munkamenet / tokenA cég részletei (tagnak kell lennie).
/companies/{id}owner / adminFrissíti a céget. Az IČO nem módosítható (meg kell egyeznie a meglévő értékkel).
Hibák: forbidden (403) · ico_immutable (400) · company_not_found (404)
A status mező
pending_verification- létrehozás után; a küldés még nincs feloldva
active- ellenőrzött, a küldés feloldva
Tagi szerepkör
owner- a cég létrehozója (teljes hozzáférés)
admin- adminisztrátor (szerkesztés, webhookok, ellenőrzés)
member- tag (olvasás)
viewer- csak olvasás
owner és az admin szerepkör számára is elérhetők (cégkezelő).Küldési ellenőrzés (ellenőrző token, Verifikačný údaj)
Küldés előtt a céget ellenőrizni kell az ellenőrző tokennel (Verifikačný údaj, VÚ), amely a Szlovák Köztársaság Pénzügyi Igazgatósága (Finančná správa, FS) által kiállított aláírt token. Sikeres ellenőrzés után a cég status mezője active értékre vált, és a küldés feloldódik.
/companies/{id}/verificationowner / adminAz ellenőrző token (Verifikačný údaj) önálló ellenőrzése. Siker esetén a status értékét active-ra állítja.
| Mező | Típus | Kötelező | Leírás |
|---|---|---|---|
token | string | igen | VÚ = hexadecimális aláírás (prod/pPFS 1024 hex, test/tPFS 768 hex) |
curl -X POST https://peppol.verteco.digital/api/v1/companies/{id}/verification \
-H 'Authorization: Bearer vpt_8f2a…' -H 'Content-Type: application/json' \
-d '{"token":"<1024-hex VÚ>"}'
# 200 OK
{ "companyId":"08dd…","status":"active","sendingVerified":true,
"verificationMethod":"self","verifiedAt":"2026-06-15T…Z" }Hibák: company_dic_missing (400) · token_invalid (400) · forbidden (403)
Bizonylatok
A cég Peppol bizonylatainak (fogadott és küldött) naplója. Ahogy a számlák áthaladnak a hozzáférési ponton (Access Point), úgy telik meg. A cégtagsághoz kötött, createdAt szerint csökkenő sorrendben.
/companies/{id}/documentsmunkamenet / tokenA cég bizonylatainak listája. Opcionális szűrő: ?direction=sent|received.
curl 'https://peppol.verteco.digital/api/v1/companies/{id}/documents?direction=received' \
-H 'Authorization: Bearer vpt_8f2a…'
# 200 OK
[ { "id":"…","direction":"received","peppolMessageId":"…","docTypeId":"…",
"senderId":"0088:7300010000001","receiverId":"0245:2121358349",
"invoiceNumber":"2026001","issueDate":"2026-06-03",
"currency":"EUR","totalAmount":120.00,"status":"received","createdAt":"…" } ]/companies/{id}/documents/{docId}munkamenet / tokenEgy bizonylat részletei.
Hibák: document_not_found (404)
/companies/{id}/documents/{docId}/downloadmunkamenet / tokenA számla önálló, nyomtatható HTML változata. ?inline=1 → a böngészőben jeleníti meg, egyébként letölti.
text/html típust ad vissza, a Content-Disposition fejlécben a fájlnév faktura-<číslo>.html (číslo = a számla száma).
SAPI-SK 1.0 (nemzeti interfész)
A SAPI-SK a szabványosított nemzeti REST interfész az ügyfél/ERP-rendszer és a hozzáférési pont (Access Point) között (sapi-sk.sk). Teljes körűen implementáljuk. Ez azt jelenti, hogy Ön nincs a saját API-formátumunkhoz kötve, és az integrációt egyszer írja meg, bármely SAPI-SK hozzáférési ponthoz.
- Alap-URL (base URL)
https://peppol.verteco.digital/sapi- Hitelesítés
- OAuth2 client_credentials → rövid élettartamú access token (JWT)
- client_id
- az Ön API-tokenjének UUID-ja (az API-tokenek szakaszban / a vezérlőpulton látható)
- client_secret
- maga a portálról származó
vpt_…token - Verzió
- 1.3 (10 művelet: 4× hitelesítés, 6× bizonylatok)
vpt_ tokenje és nem is munkamenet). Az API-token visszavonása a portálon azonnal érvényteleníti az /auth/token és az /auth/renew végpontot is.Sandbox (próbakörnyezet)
Kipróbálná a SAPI-SK-t regisztráció nélkül és kockázat nélkül? Használja a nyilvános sandbox hitelesítő adatokat. A sandbox pontosan úgy validálja a kéréseket, mint az éles környezet, de soha semmit nem küld a Peppol hálózatba, és nem dolgozik valódi adatokkal; valósághű mock válaszokat ad vissza. Ideális fejlesztéshez, CI-hoz és az integráció bevezetéséhez.
- client_id
sandbox- client_secret
sandbox- send
- teljes szerződésvalidáció + mock 202 (semmi nem kerül kézbesítésre)
- receive
- 1 mintabizonylat
sandbox-doc-0001a feldolgozás és az acknowledge teszteléséhez
# 1) sandbox token (no registration required)
curl -X POST https://peppol.verteco.digital/sapi/auth/token \
-H 'Content-Type: application/json' \
-d '{ "client_id": "sandbox", "client_secret": "sandbox",
"grant_type": "client_credentials" }'
# 2) mock send: it is validated, but NOTHING is actually delivered
curl -X POST https://peppol.verteco.digital/sapi/document/send \
-H 'Authorization: Bearer <sandbox access_token>' \
-H 'X-Peppol-Participant-Id: 0245:0000000000' \
-H 'Content-Type: application/json' \
-d '{ "metadata": { "documentId": "TEST-1",
"documentTypeId": "urn:…::Invoice##…::2.1",
"senderParticipantId": "0088:sandbox-sender",
"receiverParticipantId": "0088:sandbox-receiver" },
"payload": "<Invoice>…</Invoice>", "payloadFormat": "XML" }'
# 202 { "providerDocumentId": "sandbox-…", "status": "ACCEPTED", … }
# 3) sample inbox + detail of the sample document
curl https://peppol.verteco.digital/sapi/document/receive \
-H 'Authorization: Bearer <sandbox access_token>'
curl https://peppol.verteco.digital/sapi/document/receive/sandbox-doc-0001 \
-H 'Authorization: Bearer <sandbox access_token>'client_id/client_secret adatokat (lent).Hitelesítés
/sapi/auth/tokenclient_credentialsA client_id + client_secret párost access tokenre (15 perc) és refresh tokenre (30 nap) cseréli. Tárolja a tokent, és használja a teljes 15 percig: minden hívásnál új tokent kérni szükségtelen többletterhelés (a kérésszám-korlát az /auth/token hívásokat is számolja).
curl -X POST https://peppol.verteco.digital/sapi/auth/token \
-H 'Content-Type: application/json' \
-d '{ "client_id": "<token UUID>", "client_secret": "vpt_8f2a…",
"grant_type": "client_credentials" }'
# 200 OK
{ "access_token": "eyJhbGciOi…", "token_type": "Bearer",
"expires_in": 900, "refresh_token": "eyJhbGciOi…" }Hibák: SAPI-AUTH-001 (401) · SAPI-AUTH-003 (401: a kulcs engedélyezőlistáján kívüli IP-cím) · SAPI-VAL-001 (400)
/sapi/auth/token/statusBearer (access)Az access token érvényessége és lejárata; should_refresh = true, ha kevesebb mint 3 perc van hátra.
/sapi/auth/renewrefresh tokenÚj access + refresh tokent ad ki. Sikertelen, ha a mögöttes API-tokent visszavonták.
// body
{ "refresh_token": "eyJhbGciOi…" }/sapi/auth/revoke–Mindig sikert ad vissza (RFC 7009). A végleges leállító kapcsoló az API-token visszavonása a portálon.
Bizonylat küldése
/sapi/document/sendBearer (access)Peppol üzleti bizonylatot (UBL / BIS 3.0) küld a címzettnek a hozzáférési pontunkon keresztül. A küldés fail-closed: a cégnek ellenőrzött ellenőrző tokennel (Verifikačný údaj) kell rendelkeznie. A válasz tartalmazhat egy additív warnings[] tömböt a /document/validate hívással azonos, nem blokkoló figyelmeztetésekkel (TEST- szám, ugyanazon fiók másik cége címzettként, a küldés napjától eltérő kiállítási dátum); a figyelmeztetés soha nem blokkolja a bizonylatot.
Kötelező fejlécek:
| Fejléc | Leírás |
|---|---|
Authorization | Bearer <access_token> |
X-Peppol-Participant-Id | a résztvevő, akinek a nevében küld (pl. 0245:2121358349, a DIČ (szlovák adóazonosító szám) számjegyei az "SK" előtag nélkül) |
Idempotency-Key | számlánként egy kulcs, valami állandóból származtatva (pl. az Ön rendszere + a számla azonosítója vagy száma); az ismételt hívás vele az eredeti eredményt adja vissza, és soha nem kézbesít kétszer, ugyanahhoz a számlához használt új kulcs ezt a védelmet megkerüli. A kulcs cégenként érvényes (X-Peppol-Participant-Id). Kivétel: ha az első kísérlet nem jutott be a hálózatba (validációs hiba, hiányos kérés, a címzett nem publikálja a dokumentumtípust, az Access Point feladta az ismétlést, átviteli hiba failed státusszal), vagy undeliverable lett, ugyanaz a kulcs újra elvégzi a küldést, így a „javítsd és küldd újra” ugyanazzal a számlaszámmal is működik; az eljárás lent, a Javítás és újraküldés megjegyzésben. A kulcs soha nem jár le: a dokumentum rekordján tároljuk, amelyet tartósan megőrzünk (a megőrzési idő csak a tartalmat törli), így az azonos kulccsal való ismétlés hónapok múlva is az eredeti eredményt adja vissza. |
curl -X POST https://peppol.verteco.digital/sapi/document/send \
-H 'Authorization: Bearer eyJ…' \
-H 'X-Peppol-Participant-Id: 0245:2121358349' \
-H 'Idempotency-Key: 7b1f0e2a-…' \
-H 'Content-Type: application/json' \
-d '{ "metadata": {
"documentId": "INV-2026-001",
"documentTypeId": "urn:…::Invoice##…::2.1",
"processId": "urn:…:bis:billing:3.0",
"senderParticipantId": "0245:2121358349",
"receiverParticipantId": "0088:7300010000001",
"creationDateTime": "2026-06-17T10:00:00Z" },
"payload": "<Invoice …>…</Invoice>",
"payloadFormat": "XML" }'
# 202 Accepted
{ "providerDocumentId": "…", "status": "ACCEPTED",
"receivedAt": "2026-06-17T10:00:01Z", "timestamp": "…" }
# when status is "REJECTED", the response also carries a "detail" field
# with the rejection reason (validation rules, e.g. BR-CO-15)metadata mezői útválasztási és technikai mezők: a documentId az Ön belső azonosítója, nem a számla száma. Az üzleti adatok (számlaszám cbc:ID, kiállítás dátuma, fizetési határidő, teljesítés dátuma, pénznem, összeg) közvetlenül az UBL payloadból származnak; ezekből semmit nem küld a metadata mezőben, és a portálon való megjelenítéshez és a webhookokhoz mindig az UBL az igazság forrása. documentTypeId: a teljes busdox-docid-qns azonosító; a puszta namespace-t vagy az önálló CustomizationID-t a payloadból levezetett típusra normalizáljuk, a payloadnak ellentmondó típust SAPI-VAL-001 hibával elutasítjuk; a résztvevő sémájának az EAS-listából kell származnia.Hibák: SAPI-AUTH-002 (401) · SAPI-AUTH-003 (403) · SAPI-VAL-001 (400) · SAPI-PROC-001 (502) · SAPI-PROC-002 (503) · SAPI-PROC-500 (500: ne próbálja újra, jelentse a correlation_id-t)
202-vel válaszol, a verdikt a törzsben van (status ACCEPTED vagy REJECTED). Ha azt szeretné, hogy a HTTP-kód is hordozza a verdiktet, küldje a Prefer: handling=strict fejlécet (RFC 7240): a szinkron elutasítás ekkor 422-vel és a SAPI hibaborítékkal tér vissza (SAPI-VAL-002 validációs hibánál, SAPI-RES-003, ha a címzettnek nem kézbesíthető; a details[] tartalmazza a providerDocumentId-t és a detail-t), a válasz pedig Preference-Applied: handling=strict fejlécet kap. Az ACCEPTED nem változik. Az Access Pointnak való átadás előtt ugyanazt az SML-lekérdezést végezzük, mint ő. A dokumentumot először validáljuk: csak érvényes dokumentumot veszünk át és jelentünk, az érvénytelen REJECTED-et kap validation_failed okkal akkor is, ha a címzett nincs a hálózatban. A Peppol-hálózatban egyáltalán nem szereplő címzett ACCEPTED-et jelent undeliverable: true jelzéssel: a dokumentumot átvettük és a kézbesítéstől függetlenül jelentjük a Pénzügyi Igazgatóságnak (§ 85o (11) bek., FS FAQ 9/DPH/2025/IM, II. rész, 9. példa), de senkinek nem kézbesül; a GET /sapi/document/sent hívásban undeliverable státuszú, a webhook invoice.undeliverableeseményt kap, e-mailt senkinek nem küldünk, és ugyanaz az Idempotency-Key újra küld, amint a címzett azonosítóját kijavítja, vagy a címzett regisztrál (az eljárás lent, a Javítás és újraküldés megjegyzésben). A hálózatban szereplő, de a dokumentumtípust nem publikáló címzett azonnal REJECTED-et kap, kézbesítési kísérlet nélkül. A retrying: true ACCEPTED mellett azt jelenti, hogy az első kézbesítési kísérlet sikertelen volt (pl. átmenetileg elérhetetlen SMP), és az Access Point maga ismétli, általában 20 percen belül; a detail az okot hordozza, a végső verdikt a GET /sapi/document/sent hívással vagy webhookon érkezik.handling=strict esetén 422 is), saját providerDocumentId-t kap, az elutasított is.- REJECTED a küldés előtti ellenőrzésünknél (validációs hiba, hiányos kérés, a címzett nem publikálja a dokumentumtípust, az SMP-bejegyzésében nincs végpont a típushoz, az Access Point feladta az ismétlést): semmi nem jutott be a hálózatba, semmi nem kézbesült, és semmit nem jelentünk a Pénzügyi Igazgatóságnak. Javítsa az adatokat, és küldje el a dokumentumot újra ugyanazzal az
Idempotency-Key-jel. Az új kísérlet újproviderDocumentId-t kap; az első rekord a küldött bizonylatok listájábanrejectedstátusszal és az okkal marad, csak a sikertelen kísérlet nyomaként, és nem törölhető. A számlát a rendszerében mindig a legutolsóproviderDocumentId-hez kösse. A számlaszám maradhat ugyanaz, a számla a törvény értelmében még nem lett kiállítva. A kiállítás dátuma (BT-2) azonban annak a napnak kell lennie, amikor a számla ténylegesen elmegy: az elektronikus számla azon a napon számít kiállítottnak, amikor átadják a kézbesítő szolgálatnak, és legkésőbb 15 nappal a teljesítés vagy a fizetés beérkezése után el kell küldeni (FS FAQ 9/DPH/2025/IM, I. rész, 74. példa). Ha a javított számla későbbi napon megy el, a kiállítás dátumát módosítsa erre a napra. - A hálózatnak átadva (ACCEPTED undeliverable nélkül: submitted, delivered vagy ismétlés a háttérben; ide tartozik az a dokumentum is, amelyet az átvitel után a címzett MLS-e elutasított, és amelyet egy ismételt hívás REJECTED státusszal és az okkal ad vissza): ugyanaz a kulcs ennek a küldésnek az eredményét adja vissza, semmi nem megy ki kétszer. Kézbesített számlát soha ne küldjön újra; javítása jóváíró számlával (381) vagy terhelési értesítővel (383) történik.
- undeliverable (a címzettnek nincs címe a Peppol-hálózatban): a számlát átadták, a kézbesítéstől függetlenül jelentjük a Pénzügyi Igazgatóságnak, és a kiállító kötelezettsége teljesült (FS FAQ 9/DPH/2025/IM, I. rész, 42. és 75. példa). A kulcs felszabadul. Ha a címzett azonosítója volt hibás (például IČO vagy elgépelt DIČ a 0245:<a DIČ 10 számjegye> helyett, vagy a címzett más azonosítóval szerepel a hálózatban), javítsa az azonosítót, és küldje újra ugyanazzal a kulccsal; a számlát hagyja változatlanul (ugyanaz a szám és dátum), mert már átadták. A 8 jegyű szám IČO, a hálózatban soha nem található. Ha az azonosító helyes, és a címzett egyszerűen nincs regisztrálva, küldje el neki ugyanazt a számlát más úton, legjobb az XML-jét e-mailben (a PDF csak előnézet). Az FS FAQ I. rész 75. példája szerint ez ugyanannak a számlának az újbóli megküldése, nem új számla kiállítása, ezért ne állítson ki új számlát más számmal. Amint a címzett regisztrál, ugyanazt a számlát Peppolon is újra elküldheti, ha a hívást ugyanazzal az
Idempotency-Key-jel megismétli. - Hibás vevőazonosító vagy üres saját azonosító: a csak sémát tartalmazó
X-Peppol-Participant-Idfejléc (például0245:, amikor a program beállításaiból hiányzik a cég DIČ-je) küldéskor 403 SAPI-AUTH-003 választ ad magyarázattal, a /document/validate pedig ilyen fejléccel már küldés előtt figyelmeztetést tesz awarningsmezőbe. A 0088 (GLN) sémával vagy 0245 és 8 számjegy (IČO a DIČ helyett) formában megadott vevő a szlovák hálózatban nem található: a dokumentum undeliverable lesz, és astatusReason(a send válasz detail mezője) tartalmazza a javítást: 0245 és a DIČ 10 számjegye. - Előzze meg a hibákat: küldés előtt hívja a
POST /sapi/document/validatevégpontot (ugyanazok a szabályok, mint küldéskor, semmit nem tárol és nem küld) és aGET /sapi/discovery?receiverId=…végpontot (a címzett a hálózatban van-e, és milyen dokumentumtípusokat fogad). A végleges állapotot aGET /sapi/document/sent?invoiceNumber=…,GET /sapi/document/sent/{id},POST /sapi/document/sent/statusvagy azinvoice.delivered,invoice.rejectedésinvoice.undeliverablewebhookok adják.
/sapi/document/validateBearer (access)Dokumentum ellenőrzése küldés nélkül: ugyanazok az EN 16931 + Peppol BIS 3.0 szabályok, amelyeket az Access Point küldés előtt alkalmaz. Semmi nem tárolódik és nem megy ki; sandbox tokennel is működik. Törzs = a /document/send JSON párja { payload, payloadFormat }, vagy közvetlenül az XML (Content-Type: application/xml). Limit 10 MB. A válasz egy warnings[] tömböt is tartalmaz nem blokkoló figyelmeztetésekkel (például TEST- szám, olyan címzett, amely ugyanannak a fióknak egy másik cége, vagy a küldés napjától eltérő BT-2 kiállítási dátum); a figyelmeztetés soha nem blokkolja a bizonylatot.
curl -X POST https://peppol.verteco.digital/sapi/document/validate \
-H 'Authorization: Bearer eyJ…' \
-H 'Content-Type: application/xml' \
--data-binary @szamla.xml
# 200 OK
{ "valid": false,
"errors": [ "BR-CO-15: Invoice total amount with VAT (BT-112) = … " ],
"warnings": [],
"checkedAt": "2026-09-10T12:00:00Z" }Hibák: SAPI-AUTH-002 (401) · SAPI-VAL-001 (400: üres törzs, érvénytelen JSON, payloadFormat nem XML, > 10 MB) · SAPI-SYS-002 (502: a validátor átmenetileg nem elérhető, próbálja újra)
Bizonylatok fogadása
/sapi/document/receiveBearer (access)A fogadott bizonylatok listája (a legrégebbi elöl); a metadata az invoiceNumber mezőt is tartalmazza, így a bizonylat a payload letöltése nélkül is azonosítható. Query: ?pageToken, ?limit (max. 200), ?status (szűrő: received = csak a még nem visszaigazolt bizonylatok, acknowledged = csak a visszaigazoltak, paraméter nélkül az összes fogadott bizonylat; kis- és nagybetűre érzéketlen, bármely más érték SAPI-VAL-001 hibát ad), ?invoiceNumber (pontos egyezés a cbc:ID-vel), ?since és ?until (ISO-8601 instant; időablak a fogadás időpontja szerint, pl. az utolsó 5 nap bizonylatai, tömeges letöltés külső archiváláshoz vagy a könyvelés rekonstrukciójához), ?deliveryDateFrom és ?deliveryDateTo (ISO-8601 dátum; szűrés a bizonylatban megadott teljesítési dátum szerint). Az X-Peppol-Participant-Id fejléc kötelező.
// 200 OK
{ "documents": [ { "documentId":"…","documentTypeId":"…",
"senderParticipantId":"0088:…","receiverParticipantId":"0245:…",
"creationDateTime":"2026-06-17T…Z" } ],
"nextPageToken": "50" }/sapi/document/receive/{documentId}Bearer (access)Részletek a payloaddal együtt (nyers XML, pontosan úgy, ahogy a Peppolon keresztül érkezett).
Hibák: SAPI-RES-001 (404) · SAPI-RES-002 (404: a payload nincs archiválva)
/sapi/document/receive/{documentId}/acknowledgeBearer (access)Megerősíti, hogy az Ön rendszere átvette a bizonylatot. Idempotens.
/sapi/document/receive/{documentId}/xmlBearer (access)Archív hivatkozás (metadata.links.xml): maga az üzleti dokumentum XML fájlként, ugyanaz a tartalom, mint a részletek payload mezője.
/sapi/document/receive/{documentId}/htmlBearer (access)Archív hivatkozás (metadata.links.html): a számla általános, nyomtatható megjelenítése (HTML).
/sapi/document/receive/{documentId}/pdfBearer (access)Archív link (metadata.links.pdf): a bizonylat PDF-je. Ha a szállító a saját számla-PDF-jét ágyazta az XML-be (BT-125), azt az eredetit kapja; különben a tárolt XML-ből igény szerint generált PDF-et (PDF-et nem tárolunk). Fejléc: X-Verteco-Pdf-Source: supplier | generated. 404 SAPI-RES-002 a tartalom törlése után, 503 ha a renderelő nem elérhető (próbálja később vagy használja a /html-t).
/sapi/document/receive/{documentId}/attachments/{index}Bearer (access)Archív hivatkozás (metadata.links.attachments[].url): a dokumentumba ágyazott egyik melléklet bájtjai, pl. a szállító eredeti PDF-je. Kényszerített letöltés.
/sapi/document/receive/{documentId}/public-linkBearer (access)Bejelentkezés nélküli link (opcionális): ÚJ véletlen kulcsot ad ki a bizonylathoz ({"rotate":true} lecseréli a meglévőt). Visszaadja: url (oldal), xmlUrl, htmlUrl, pdfUrl és expiresAt; a kulcs csak egyszer látható. A cégnél be kell legyen kapcsolva a „letöltés bejelentkezés nélkül” (különben 403 SAPI-AUTH-004). A DELETE visszavonja.
Küldött bizonylatok állapota
/sapi/discovery?receiverId=0245:2121358349Előzetes ellenőrzés küldés előtt: regisztrálva van-e a címzett a Peppol hálózatban, és milyen bizonylattípusokat tud fogadni? Ugyanaz az SML lekérdezés, amelyet a hozzáférési pont végez; a receiverId Peppol ID-t, áfaazonosítót (IČ DPH) vagy puszta DIČ-et fogad. Válasz: {registered, participantId, smp, documentTypes, checkedAt}. Az X-Peppol-Participant-Id fejléc itt nem szükséges.
/sapi/document/sentBearer (access)A küldött bizonylatok kézbesítési állapota: pending (átadás a hálózatnak folyamatban) → submitted → delivered / rejected (a címzett AP-jától érkező kézbesítési igazolás (MLS) alapján); failed = átviteli hiba (az ugyanazzal az Idempotency-Key-jel végzett újrapróbálkozás újra küld). Query: ?pageToken, ?limit, ?status (pending / submitted / sent / delivered / rejected / failed; kis- és nagybetűre érzéketlen, bármely más érték SAPI-VAL-001 hibát ad), ?invoiceNumber (pontos egyezés a cbc:ID-vel: egy konkrét számla állapota egyetlen hívással), ?since és ?until (ISO-8601 instant; időablak), ?deliveryDateFrom és ?deliveryDateTo (ISO-8601 dátum; szűrés teljesítési dátum szerint).
// 200 OK
{ "documents": [ {
"documentId": "…",
"receiverParticipantId": "0245:1084695645",
"peppolMessageId": "befc9112-…",
"status": "delivered",
"statusDateTime": "2026-07-09T14:52:31Z",
"creationDateTime": "2026-07-09T14:52:12Z" } ],
"nextPageToken": null }Hibák: SAPI-AUTH-002 (401) · SAPI-AUTH-003 (403) · SAPI-VAL-001 (400: érvénytelen since)
MLS visszaigazolás és kézbesítési bizonyítékok
Az MLS visszaigazolás (Peppol Message Level Status) a fogadó Access Point válasza a küldeményünkre: AP = elfogadva és kézbesítve, AB = kézbesítve üzleti megerősítés nélkül, RE = elutasítva, indokkal. A portál a küldött dokumentumhoz menti, és ennek alapján váltja az állapotot: AP és AB egyaránt delivered (AB esetén a statusDetail „MLS AB: ” szöveggel kezdődik, az mls.responseCode AB; az SPOG on MLS szerint ez üzleti megerősítés nélküli kézbesítés, nem fenntartás), RE pedig rejected. A 222/2004. sz. törvény 76a § (2) bek. d) pontja szerint a szolgáltatónak bizonyítania kell a küldés, kézbesítés és átvétel dátumát és idejét; a GET /sapi/document/sent minden sora és minden webhook hordozza ezt a három időt: sentAt (átadás a kézbesítő szolgálatnak, ezzel a 85o § (11) bek. szerint a kiállító kötelezettsége teljesül), deliveredAt (a fogadó Access Point MLS-megerősítése) és fsReportedAt (adatszolgáltatás a pénzügyi igazgatóság felé). Külföldi Access Point esetleg soha nem küld MLS-t: a dokumentum ekkor delivered marad as4_receipt_only részlettel, visszaigazolás nélkül.
/sapi/document/sent/{documentId}Bearer (access)Egy küldött dokumentum részletei: a listával azonos sor (sentAt, deliveredAt, fsReportedAt, hasMls, links) plusz mls.responseCode (AP/AB/RE), mls.receivedAt és mls.url. Az mls null, amíg a visszaigazolás meg nem érkezik.
// 200 OK
{ "document": {
"documentId": "…", "peppolMessageId": "befc9112-…", "status": "delivered",
"sentAt": "2026-09-17T08:00:12Z", "deliveredAt": "2026-09-17T08:00:31Z", "fsReportedAt": null,
"hasMls": true,
"links": { "detail": "…/sapi/document/sent/…", "mls": "…/sapi/document/sent/…/mls" } },
"mls": { "responseCode": "AP", "receivedAt": "2026-09-17T08:00:31Z", "url": "…/sapi/document/sent/…/mls" } }Hibák: SAPI-AUTH-002 (401) · SAPI-AUTH-003 (403) · SAPI-RES-001 (404: idegen vagy fogadott dokumentum) · SAPI-RES-004 (404: még nincs visszaigazolás)
/sapi/document/sent/{documentId}/mlsBearer (access)A visszaigazolás fájlként: a fogadó Access Point MLS ApplicationResponse üzenete, amely a küldemény peppolMessageId-jára hivatkozik. A kézbesítés vagy elutasítás bizonyítéka; kényszerített letöltés. SAPI-RES-004, amíg nincs visszaigazolás.
/sapi/document/sent/{documentId}/xmlBearer (access)Küldött bizonylat tartalma (SAPI 1.8.15): a hálózatnak átadott tiszta UBL XML (szállítási boríték nélkül), kényszerített letöltés. A fogadott bizonylatok linkjeinek párja: a külső könyvelő programja így az ügyfél KIÁLLÍTOTT számláit is betöltheti. Minden sor hordozza a links.xml, links.html és links.pdf mezőket. SAPI-RES-002, miután a cég megőrzési beállítása törölte a tartalmat.
/sapi/document/sent/{documentId}/htmlBearer (access)Küldött bizonylat nyomtatható nézete a tárolt XML-ből (semmi nem tárolódik).
/sapi/document/sent/{documentId}/pdfBearer (access)Küldött bizonylat PDF-je: a kiállító XML-be ágyazott saját PDF-je (BT-125), ha van, különben az XML-ből generált; fejléc X-Verteco-Pdf-Source: supplier | generated. 503 SAPI-PROC-001, amíg a generátor nem elérhető (használja a /html-t).
FS-jelentés bizonyítékai, integritás és idővonal (SAPI 1.8.14)
Az 1.8.14 óta a GET /sapi/document/sent minden sora, a küldött részlet, valamint a beérkezett lista és részlet fsReport objektumot hordoz: state = reported (a jelentés átadva a C5 gyűjtőpontnak, reportedAt = fsReportedAt), pending (a jelentés esedékes, az átadás sikertelen és automatikusan ismétlődik, reason = c5_unavailable) vagy not_required (nem keletkezik jelentés; a reason megmondja, miért: cross_border, self_send_test, issuer_without_vat_id, recipient_without_vat_id, not_billing_document, tdd_disabled, before_2026_09_01, not_recorded). Átadás után megjelenik a tddMessageId (a jelentés SBDH InstanceIdentifier-e), a C5 válasza után a c5ResponseCode (AP/AB/RE), c5ResponseAt, c5Detail és az összefoglaló outcome: accepted (AP), accepted_with_reservations (AB), rejected (RE) vagy null, amíg a C5 nem válaszolt. Az outcome = rejected azt jelenti, hogy a jelentést átadtuk, de a pénzügyi igazgatóság elutasította (a c5Detail a megsértett szabályt hordozza, pl. BR-AE-08); a state reported marad, mert az átadás megtörtént, és a portál a javított jelentést automatikusan újraküldi (elfogadás után az outcome accepted lesz). A küldött sorok ezen felül statusReason-t (gépi kód a statusDetail mögött: network_retrying, network_retrying_sent, as4_receipt_only, recipient_not_registered, transport_failed, mls_rejected, validation_failed), xmlSha256-ot (az átadott XML SHA-256-ja, a tartalom törlése után is megmarad), retention-t és receiptRetention = permanent-et hordoznak (az MLS visszaigazolás soha nem törlődik). A részletben a visszaigazolásnak van mls.sha256 és mls.messageId mezője. A beérkezett bizonylatok peppolMessageId, status (received/acknowledged), receivedAt, acknowledgedAt és xmlSha256 mezőt kaptak (az üzleti dokumentum bájtjainak SHA-256-ja pontosan úgy, ahogy a links.xml kiadja, SBDH szállítási boríték nélkül; beérkezéskor számoljuk, és a tartalom törlése után is megmarad). Mindkét lista szűrhető ?fsReport=reported|pending|not_required|rejected-del (rejected = outcome rejected), a küldött ?status=undeliverable-lel is. A POST /sapi/document/send válasza már az elfogadáskor hordozza a peppolMessageId-t. Minden csak bővítés, a meglévő mezők változatlanok.
/sapi/document/sent/statusBearer (access)Legfeljebb 200 küldött bizonylat állapota egy hívásban: ugyanazok a sorok, mint a listában, plusz mls, ha a visszaigazolás már megérkezett. Azok az id-k, amelyek nem e cég küldött bizonylatai, a missing-ben jönnek vissza; a hívás miattuk nem bukik el. N darab GET /sapi/document/sent/{id} hívás helyett ERP-szinkronizáláskor.
// POST { "documentIds": ["7c1e…", "9af0…", "ismeretlen"] } (max 200)
{ "documents": [ {
"documentId": "7c1e…", "status": "delivered", "statusReason": null, "peppolMessageId": "befc9112-…",
"sentAt": "2026-09-21T08:00:12Z", "deliveredAt": "2026-09-21T08:00:31Z", "fsReportedAt": "2026-09-21T08:05:40Z",
"fsReport": { "state": "reported", "reportedAt": "2026-09-21T08:05:40Z", "reason": null, "outcome": "accepted",
"tddMessageId": "3f2a…", "c5ResponseCode": "AP", "c5ResponseAt": "2026-09-21T08:06:02Z", "c5Detail": null },
"xmlSha256": "9b74…", "retention": { "mode": "storage", "contentAvailableUntil": null }, "receiptRetention": "permanent",
"hasMls": true, "links": { "detail": "…", "mls": "…" },
"mls": { "responseCode": "AP", "receivedAt": "2026-09-21T08:00:31Z", "url": "…", "sha256": "e1c0…", "messageId": "mls-…" } } ],
"missing": ["9af0…", "ismeretlen"] }Hibák: SAPI-AUTH-002 (401) · SAPI-AUTH-003 (403) · SAPI-VAL-001 (400: 0 / > 200 id)
/sapi/document/sent/{documentId}/eventsBearer (access)A bizonylat idővonala időrendben: submitted, network_retrying, delivered / rejected / undeliverable / failed, mls_received, fs_reported, fs_c5_verdict, content_wiped, webhook_delivered és továbbiak (ismeretlen típust hagyjon figyelmen kívül). Az 1. fázis a tárolt tényekből származik, nem minden köztes állapotváltás naplója.
Hibák: SAPI-AUTH-002 (401) · SAPI-AUTH-003 (403) · SAPI-RES-001 (404: idegen vagy beérkezett bizonylat)
/sapi/document/receive/{documentId}/eventsBearer (access)Beérkezett bizonylat idővonala: received, acknowledged, fs_reported, fs_c5_verdict, content_wiped, webhook-kézbesítések.
Tömeges küldés
/sapi/document/batchBearer (access)Legfeljebb 100 bizonylat egyetlen hívásban. Minden elem a teljes egyedi küldési logikán megy át (idempotencia az itemId + idempotencyKey alapján, foglalás, beküldés, ítélet), és saját eredményt ad vissza; egy elem hibája nem állítja meg a többit. Az elemek feldolgozása szekvenciális; a sikertelen elemeket ugyanazzal az idempotencyKey-jel próbálja újra.
// request
{ "documents": [ {
"itemId": "fa-2026-001",
"idempotencyKey": "fa-2026-001",
"metadata": { "documentId": "2026001", "documentTypeId": "…", "processId": "…",
"senderParticipantId": "0245:2121358349", "receiverParticipantId": "0245:1084695645" },
"payload": "<Invoice …>", "payloadFormat": "XML" } ] }
// 202 Accepted
{ "total": 2, "accepted": 1, "rejected": 1, "failed": 0,
"results": [
{ "itemId": "fa-2026-001", "ok": true, "providerDocumentId": "…", "status": "ACCEPTED" },
{ "itemId": "fa-2026-002", "ok": false, "errorCode": "SAPI-AUTH-003", "errorMessage": "…" } ] }Hibák: SAPI-AUTH-002 (401) · SAPI-AUTH-003 (403) · SAPI-VAL-001 (400: üres vagy túl nagy lista)
Hibamodell
Minden SAPI hiba egységes borítékot használ kategóriával, stabil kóddal, egy retryable jelzővel és egy correlation_id értékkel a támogatás számára. Hitelesítési hiba (SAPI-AUTH-001) esetén a boríték tartalmaz egy hint mezőt (emberi nyelven, mi tartozik a Client Id és Client Secret mezőkbe) és egy docs mezőt (link az útmutatóra; MK-soft programok közvetlenül a /navody/mksoft#prepojenie oldalra). Mindkét mező opcionális, máshol hiányzik (1.8.20).
{ "error": {
"category": "AUTH",
"code": "SAPI-AUTH-001",
"message": "Invalid client credentials.",
"retryable": false,
"correlation_id": "b4191dfc-…" } }Értesítések és webhookok
Fogadott számláról a céget e-mailben vagy webhookkal (POST az Ön URL-jére) értesíthetjük. A kézbesítés tartós: kimenő várólistában tároljuk, és aszinkron módon kézbesítjük (15 s időtúllépés); hiba esetén legfeljebb 12× újrapróbáljuk exponenciális visszatartással (30 s → max. 8 óra, összesen kb. 16 óra), majd dead-letter. A HTTP 401/403 azt jelenti, hogy az Ön végpontja olyan hitelesítést kér, amelyet nem küldünk; ehelyett ellenőrizze a webhook-signature aláírást, és válaszoljon 2xx-szel. Az Ön szerverének kimaradása így nem veszíti el az értesítést; a következő próbálkozásnál kézbesítjük. Az SSRF-védelem blokkolja a loopback/helyi címeket; a webhook-URL-nek nyilvánosnak kell lennie.
/companies/{id}/notificationsmunkamenet / tokenÉrtesítési beállítások: { webhookUrl, notificationEmail, notificationEmails, hasSecret }.
/companies/{id}/notificationsowner / adminMindkét csatornát beállítja (üres string kikapcsolja az adott csatornát).
| Mező | Típus | Kötelező | Leírás |
|---|---|---|---|
webhookUrl | string | nem | üres vagy http(s) URL, max. 512 |
notificationEmail | string | nem | egy cím vagy legfeljebb 5 vesszővel elválasztva, max. 256; mindegyik megkapja a beérkezett számlákról szóló e-maileket (400 invalid_notification_email / too_many_notification_emails) |
/companies/{id}/webhookmunkamenet / tokenWebhook-konfiguráció: { url, hasSecret } (a titok nélkül).
/companies/{id}/webhookowner / adminBeállítja a webhook-URL-t (automatikusan aláíró titkot generál, ha még nincs).
| Mező | Típus | Kötelező | Leírás |
|---|---|---|---|
url | string | igen | http(s) URL, max. 512 |
curl -X PUT https://peppol.verteco.digital/api/v1/companies/{id}/webhook \
-H 'Authorization: Bearer vpt_8f2a…' -H 'Content-Type: application/json' \
-d '{"url":"https://vas-system.sk/peppol/webhook"}'
# 200 OK { "url":"https://vas-system.sk/peppol/webhook", "hasSecret": true }/companies/{id}/webhookowner / adminEltávolítja a webhook-URL-t és a titkot is. 204-et ad vissza.
/companies/{id}/webhook/secretowner / adminÚj aláíró titkot generál, és EGYSZER adja vissza; tárolja el az X-Verteco-Signature ellenőrzéséhez.
// 200 OK
{ "secret": "vpt_8f2a…" }/companies/{id}/webhook/testowner / adminSzinkron módon tesztértesítést küld (webhook.test esemény, aláírva, SSRF-védelemmel) a tárolt URL-re, és visszaadja, MIT küldött és MI jött vissza. Ugyanezt indítja a cég részleteinél az „Otestovať webhook“ (Webhook tesztelése) gomb.
// 200 OK
{
"sent": { "url": "https://vas-system.sk/peppol/webhook", "event": "webhook.test",
"signed": true, "payload": "{…}" },
"received": { "status": 200, "body": "OK", "durationMs": 142, "error": null }
}
// 400 webhook_not_configured if no webhook URL is storedWebhook payload
Fogadott (invoice.received) és küldött (invoice.sent) számla esetén is POST kérést küldünk ezzel a törzzsel; a típust az event mező különbözteti meg.
Két további esemény jelzi a hálózat ítéletét az Ön által küldött számláról: invoice.delivered (a címzett hozzáférési pontja kézbesítési igazolással (MLS) megerősítette a kézbesítést) és invoice.rejected (elutasítva, vagy a hálózat által, vagy a küldés előtti validáció során); az invoice.undeliverable olyan címzettet jelez, akinek nincs bejegyzése a Peppol hálózatban (átvéve, a FS-nek jelentve, nem kézbesítve). A bizonylat és a cég azonosítóit hordozzák (documentId, invoiceNumber, receiverId, peppolMessageId, companyDic, peppolParticipantId), valamint a status mezőt, a statusDetail mezőt az elutasítás okával és a statusDateTime mezőt. Ha az első kézbesítési kísérlet nem sikerült és a hozzáférési pont magától újrapróbálja (általában egy órán belül), a dokumentum submitted marad, és a statusDetail a network_retrying: előtaggal kezdődik; a kézbesítés után delivered, feladás után rejected lesz network_gave_up: előtaggal. Ezeknek köszönhetően nem kell lekérdezéssel figyelnie a küldött számlák állapotát.
A company.activated esemény akkor érkezik, amikor egy ügyfél befejezi a szolgáltatóválasztást a Szlovák Köztársaság Pénzügyi Igazgatóságának (Finančná správa, FS) portálján (VPDS); törzs: event, companyId, companyDic, peppolParticipantId, status, verifiedAt. A company.deactivated pedig akkor érkezik, amikor egy céget kiregisztrálnak a hálózatból (ugyanaz a törzs verifiedAt nélkül). A company.smp_registered_elsewhere akkor érkezik, amikor a cég befejezte a PI-választást, de nemzeti SMP bejegyzését másik szolgáltató tartja (törzs mint a company.activated, plusz action: "migration_code_required" és migrateUrl). A partnerek teendői a közvetítői dokumentációban találhatók. Amíg az ügyfél be nem írja a migrációs kódot, a hálózat a régi szolgáltatónak kézbesít. Részletek a /saas útmutatóban:
{
"event": "invoice.received",
"eventId": "7f1c2d9e-4b1a-4e3d-9c1f-0a2b3c4d5e6f",
"occurredAt": "2026-09-03T15:04:05Z",
"companyId": "08dd…",
"documentId": "…",
"invoiceNumber": "2026001",
"senderId": "0088:7300010000001",
"supplierName": "Dodávateľ s.r.o.",
"receiverId": "0245:2121358349",
"issueDate": "2026-06-03",
"dueDate": "2026-06-17",
"deliveryDate": "2026-06-03",
"currency": "EUR",
"totalAmount": "120.00",
"peppolMessageId": "…",
"companyDic": "SK2121358349",
"peppolParticipantId": "0245:2121358349"
}A companyDic és a peppolParticipantId mező azonosítja azt a céget, amelyre az esemény vonatkozik (fontos azoknak a partnereknek, amelyek egyetlen webhook-URL-t használnak minden ügyfelükhöz).
A hálózat ítélete a küldött számláról:
{
"event": "invoice.delivered", // or "invoice.rejected"
"occurredAt": "2026-09-03T15:04:05Z",
"companyId": "08dd…",
"companyDic": "SK2121358349",
"peppolParticipantId": "0245:2121358349",
"documentId": "…",
"invoiceNumber": "2026001",
"receiverId": "0245:2120049096",
"peppolMessageId": "…",
"status": "delivered", // or "rejected"
"statusDetail": null, // for rejected: the rejection reason
"statusDateTime": "2026-06-03T10:15:42Z"
}Cég aktiválása az FS portálon (VPDS) végzett szolgáltatóválasztás után:
{
"event": "company.activated", // company.deactivated has the same body without verifiedAt
"occurredAt": "2026-09-03T15:04:05Z",
"companyId": "08dd…",
"companyDic": "SK2121358349",
"peppolParticipantId": "0245:2121358349",
"status": "active",
"verifiedAt": "2026-06-03T10:02:11Z"
}Az esemény neve az X-Verteco-Event fejlécben is szerepel. Az események teljes listája: invoice.received, invoice.sent, invoice.delivered, invoice.rejected, invoice.undeliverable, invoice.reported, invoice.report_pending, invoice.report_rejected, company.activated, company.deactivated, company.smp_registered_elsewhere és a webhook.test tesztesemény. Az ismeretlen eseménytípust javasoljuk félretenni és naplózni; új típust mindig előre bejelentünk. Minden esemény tartalmaz occurredAt mezőt is (az esemény ideje, ISO-8601 UTC) a rendezéshez, valamint eventId mezőt (ugyanaz az érték, mint az X-Verteco-Delivery-Id fejlécben): eseményenként egyedi, ismétléskor változatlan, ezért ez a helyes deduplikációs kulcs (a peppolMessageId ismétlődik az invoice.sent, invoice.delivered és invoice.reported események között). Az invoice.* események tartalmazzák a sentAt, deliveredAt, receivedAt és fsReportedAt időpontokat is (ISO-8601 UTC, null, amíg az esemény be nem következett). Az invoice.reported akkor érkezik, amikor a bizonylathoz tartozó adóhatósági jelentés (TDD) átadásra került a kézbesítő hálózatnak (85o. § (11) bek.), C5-kimaradás esetén akár napokkal később. Az összes esemény formális sémája az OpenAPI-specifikáció webhooks szakaszában található.
Aláírás ellenőrzése
Ha a cégnek van titka, az X-Verteco-Signature fejlécet küldjük sha256=HMAC-SHA256(secret, raw body) formában (kisbetűs hex). A HMAC-et mindig a törzs pontos bájtjain számolja:
import crypto from 'node:crypto';
// rawBody = the exact bytes of the request body (not re-serialized JSON)
function verify(rawBody, header, secret) {
const expected = 'sha256=' +
crypto.createHmac('sha256', secret).update(rawBody).digest('hex');
return crypto.timingSafeEqual(Buffer.from(header), Buffer.from(expected));
}Minden kézbesítés fejlécei: X-Verteco-Event (az esemény neve), X-Verteco-Delivery-Id (= a törzsben lévő eventId, minden ismétlésnél azonos), X-Verteco-Signature (a fenti HMAC), valamint párhuzamosan a Standard Webhooks fejlécek: webhook-id (= eventId), webhook-timestamp (a kísérlet unix másodperce) és webhook-signature = v1,base64(HMAC-SHA256(secret, id + "." + timestamp + "." + body)). A kulcs a titok UTF-8 bájtjai; a standardwebhooks könyvtár whsec_ + base64(secret) formában várja. Ajánlott feldolgozás: ellenőrizze az aláírást, utasítsa el az 5 percnél régebbi webhook-timestamp értékű kézbesítést (visszajátszás elleni védelem), dolgozzon fel idempotensen az eventId alapján, válaszoljon 2xx-szel 15 másodpercen belül, és a nehéz feldolgozást tegye saját várólistára. A sikertelen kézbesítést 12-szer ismételjük 30 s és 8 h közötti időközökkel (összesen kb. 16 óra); utána dead-letterbe kerül e-mail figyelmeztetéssel, és látható marad a Realtime logban. Az éles webhook URL-nek https://-nek kell lennie; a tesztkörnyezet a http://-t is elfogadja.
POST /companies/{id}/webhook/secret hívással kapja meg; ez egyszer adja vissza (a rotáció újat generál). Titok nélkül nem küldjük az X-Verteco-Signature fejlécet.Tömeges beállítás: egy token, több cég
Egyetlen API-token (a fiókjához/e-mail-címéhez kötve) kezeli az összes tulajdonában lévő céget: aki a POST /companies hívással céget hoz létre, annak owner-e lesz, és beállíthatja a webhookját. A webhook cégenkénti (saját URL és titok), így ugyanazzal a tokennel tetszőleges számú céget csatlakoztathat:
# 1) list of your companies (paginated, see Companies)
curl 'https://peppol.verteco.digital/api/v1/companies?page=0&limit=100' -H 'Authorization: Bearer vpt_8f2a…'
# 2) for EACH company {id}: set the webhook (and/or e-mail)
curl -X PUT https://peppol.verteco.digital/api/v1/companies/{id}/notifications \
-H 'Authorization: Bearer vpt_8f2a…' -H 'Content-Type: application/json' \
-d '{"webhookUrl":"https://vas-system.sk/peppol/webhook","notificationEmail":"faktury@firma.sk"}'
# 3) fetch the signing secret (returned ONLY ONCE) and store it for signature verification
curl -X POST https://peppol.verteco.digital/api/v1/companies/{id}/webhook/secret -H 'Authorization: Bearer vpt_8f2a…'
# → { "secret": "…" }- A tokennek az adott cég
owner/adminszerepkörével kell rendelkeznie; olyan cégnél, ahol csak member/viewer,403 forbiddenválaszt ad (nincs bérlők közötti hozzáférés). - Minden cégnek adhat eltérő URL-t, vagy mindnek ugyanazt; a payloadban a
companyId(és areceiverId) alapján különbözteti meg őket. - Több száz cég esetén tartsa be a tokenenkénti kérésszám-korlátot (az aktuális értéket a
RateLimit-Limitfejléc adja vissza); kötegeljen visszatartással429esetén (Retry-Afterfejléc). - A webhook ténylegesen csak akkor sül el, amikor a cég aktív a Peppolban (miután a Pénzügyi Igazgatóságnál a Vertecót választotta szolgáltatónak) és így ténylegesen fogad bizonylatokat.
Adatmodellek
Az API által visszaadott objektumok mezői.
Company
| Mező | Típus | Kötelező | Leírás |
|---|---|---|---|
id | UUID | – | a cég azonosítója |
ico | string | – | cégjegyzékszám (IČO, 8 számjegy) |
dic | string|null | – | áfaazonosító (IČ DPH) |
legalName | string | – | hivatalos név |
registeredAddress | string|null | – | a székhely címe |
peppolParticipantId | string|null | – | Peppol résztvevő (regisztráció után) |
status | string | – | pending_verification | active |
role | string | – | owner | admin | member | viewer (az Ön szerepköre) |
createdAt | Instant | – | a létrehozás időpontja |
Document
| Mező | Típus | Kötelező | Leírás |
|---|---|---|---|
id | UUID | – | a bizonylat azonosítója |
direction | string | – | sent | received |
peppolMessageId | string|null | – | Peppol üzenetazonosító |
docTypeId | string|null | – | bizonylattípus (Peppol) |
senderId | string|null | – | küldő (scheme:id) |
receiverId | string|null | – | címzett (scheme:id) |
invoiceNumber | string|null | – | számlaszám |
issueDate | date|null | – | a kiállítás dátuma |
currency | string|null | – | pénznem (pl. EUR) |
totalAmount | number|null | – | teljes összeg |
status | string | – | feldolgozási állapot |
createdAt | Instant | – | a rögzítés időpontja |
User · Token · Webhook
| Mező | Típus | Kötelező | Leírás |
|---|---|---|---|
User | object | – | { id: UUID, email: string } |
Token | object | – | { id, name, prefix, lastUsedAt|null, createdAt } |
Webhook | object | – | { url: string|null, hasSecret: boolean } |
A mezők közvetlenül a közzétett openapi.json-ból töltődnek, így a táblázatok mindig azonosak azzal, amit az API visszaad. A leírások angolul vannak.
Adatmodellek betöltése az openapi.json-ból…
Fogalomtár
- DIČ
- Szlovák adóazonosító szám (10 számjegy). A szlovák Peppol-azonosító 0245: + a DIČ számjegyei, SK nélkül.
- IČ DPH
- Áfa-azonosító szám (SK + DIČ). Csak áfaalanyoknak van; nem alany O adókategóriával állít ki.
- IČO
- Cégjegyzékszám (8 számjegy). Az API-ban ico mező, UBL-ben BT-30.
- Hitelesítő adat (VÚ)
- A Pénzügyi Igazgatóság aláírása, amely a szolgáltató FS-portálon történő kiválasztásakor jön létre; feloldja a cég küldését.
- VPDS
- Az FS alkalmazása, ahol az adóalany kiválasztja kézbesítési szolgáltatóját (minket).
- TDD
- Tax Data Document, a számlaadat-jelentés a Pénzügyi Igazgatóságnak; mi állítjuk össze és küldjük Ön helyett.
- C5 / C6
- A Peppol-modell ötödik és hatodik sarka: a Pénzügyi Igazgatóság hozzáférési pontja, amely a TDD-ket fogadja (0242:001180).
- MLS
- Message Level Status, a címzett hozzáférési pontjának igazolása (AP = elfogadva, RE = elutasítva, AB = nyugtázva).
- SBDH
- Standard Business Document Header, a boríték, amelyben a bizonylat utazik; InstanceIdentifier-e a peppolMessageId.
- SML / SMP
- A hálózat címtára: az SML megtalálja a címzett SMP-jét, az SMP megmondja a hozzáférési pontot és az elfogadott bizonylattípusokat.
Szlovák konvenciók az implementálói gyakorlatból
A Peppol BIS Billing 3.0-n túl a szlovák ERP- és számlázószoftver-gyártók fokozatosan közös értelmezésre jutnak az opcionális mezőkről (az egyeztetés a Szlovák Köztársaság Pénzügyi Igazgatósága (Finančná správa, FS) által működtetett Slack-csatornán zajlik). Alább azok a konvenciók, amelyeket a portálunk már ma is tiszteletben tart: mindegyik érvényes BIS-konstrukció, változatlanul haladnak át az API-nkon, és a fogadott bizonylatokban az emberi olvasásra szánt előnézetben és a PDF-ben is megjelennek.
- Adózott előleg levonása egy soron: negatív sor
cac:DocumentReferenceelemmel, ahol acbc:IDa kapott fizetésről szóló adóbizonylat számát hordozza, és acbc:DocumentTypeCodeértéke130(BIS: invoice line object identifier, soronként max. 1). Az ilyen sort tartalmazó fogadott számlát az előnézetünk az „odpočet zálohy – daňový doklad č. …” megjegyzéssel jeleníti meg (előleg levonása, adóbizonylat száma: …). - Adóbizonylat kapott fizetésről: a Pénzügyi Igazgatóság GYIK-je szerint az
InvoiceTypeCode 388(Tax invoice) kódot használják. Átmegy az API-nkon és a validáción is; a ki nem fizetett (nem adózott) előleg levonását acbc:PrepaidAmountfejezi ki. - Számla érvénytelenítése (sztornó):
381jóváíró számla (CreditNote)cac:BillingReferencehivatkozással az eredeti számlára, nem negatív 380-as számla. Megjegyzés: a hálózat a 384-es kódot szlovák felek között elutasítja (a PEPPOL-EN16931-P0112 szabály csak német szervezetek között engedi); felfelé történő korrekcióhoz használja a 383-as terhelési értesítőt (debit note). - BT-83 PaymentID: a szlovák gyakorlat a
/VS…/SS…/KS…fizetői hivatkozási formátum felé tart; a puszta változó szimbólum (variabilný symbol) is gyakori. A feldolgozásunk az értéket változatlanul továbbítja, és a fizetési adatokkal együtt jeleníti meg. - További tételadatok (gyártási tételszámok, sorozatszámok, lejárati dátumok) a
cac:AdditionalItemPropertyelemen keresztül, bevett nevekkel, példáulBatchNumber,SerialNumber,ExpirationDate.
Bizonylatmellékletek (BT-125)
Mellékletek (PDF, képek) base64 formában csatolhatók az e-számlához a cac:AdditionalDocumentReference elemben (BT-125). A fogadott bizonylatoknál mellékletenként 25 MB-ig dolgozzuk fel a mellékleteket; küldésnél a teljes XML a base64 mellékletekkel együtt SAPI-SK-n keresztül 10 MB, a portál Odoslať súborom fülén 2 MB alatt kell maradjon. A Peppol nem határoz meg egységes, hálózatszintű korlátot; az egyes szolgáltatók sajátot állapítanak meg (FS GYIK 9/DPH/2025/IM, 67. példa), ezért nagyon nagy mellékleteknél ellenőrizze a másik fél szolgáltatójának korlátját is.
Nyilvános eszközök (validáció, címzett ellenőrzése)
Két segédvégpont hitelesítés nélkül: ugyanaz a validációs mag és ugyanaz az SML lekérdezés, amelyet a hozzáférési pontunk használ. CI-hoz és küldés előtti ellenőrzésekhez alkalmasak; szigorúbb nyilvános kérésszám-korlát vonatkozik rájuk.
/public/peppol-validatenyilvánosE-számla validációja az UBL 2.1 séma, az EN 16931 és a Peppol BIS Billing 3.0 szerint, ugyanúgy, mint a /validator felületi validátor. A kérés törzse = közvetlenül az UBL 2.1 XML (Invoice / CreditNote, vagy a teljes Peppol SBD), Content-Type application/xml, korlát 3 MB.
curl -X POST https://peppol.verteco.digital/api/v1/public/peppol-validate \
-H "Content-Type: application/xml" \
--data-binary @faktura.xml// 200 OK
{
"valid": false,
"errors": [
"BR-CO-09: [BR-CO-09]-The Seller VAT identifier (BT-31) … shall have a prefix in accordance with ISO code…"
],
"warnings": []
}
// 400 = empty body (empty_document) or document over 3 MB (document_too_large)/public/peppol-check?id=0245:2121358349nyilvánosA címzett ellenőrzése az éles Peppol hálózatban (SML lekérdezés): regisztrálva van-e, és milyen bizonylattípusokat tud fogadni? Az id paraméter Peppol ID-t (0245:…), áfaazonosítót (IČ DPH, SK…) vagy puszta DIČ-et (szlovák adóazonosító szám) fogad. Hitelesített megfelelője ERP-folyamatokhoz: GET /sapi/discovery.
// 200 OK
{
"registered": true,
"participantId": "0245:2121358349",
"smp": "sml.peppol-smp.sk",
"capabilities": ["Faktúra (BIS Billing)", "Dobropis", "Self-billing", "MLS doručenky"], // Slovak labels: Invoice (BIS Billing), Credit note, Self-billing, MLS delivery receipts
"lastCheckedAt": "2026-08-31T…Z"
}MCP-szerver (AI-asszisztensek)
A portál saját szervert működtet a Model Context Protocolhoz, a nyílt szabványhoz, amelyen keresztül az AI-asszisztensek (Claude Code, Claude Desktop, Cursor, VS Code Copilot és mások) külső rendszerekhez kapcsolódnak. Az asszisztens a fiók közönséges API-kulcsával jelentkezik be, és hat eszközt kap; soha nem lát többet, mint az adott fiók, és minden hívása megjelenik a kulcs API-naplójában.
Cím: https://peppol.verteco.digital/api/mcp. Átvitel: Streamable HTTP, JSON-RPC 2.0, állapotmentes (POST /api/mcp, nincs SSE-folyam, a GET 405-öt ad). Bejelentkezés az Authorization: Bearer <API-kulcs> fejléccel. Támogatott metódusok: initialize, ping, tools/list, tools/call, resources/list, prompts/list.
Eszközök
list_companies: a fiók cégei Peppol-azonosítóval, állapottal és szereppel (minden beszélgetés kezdete)list_documents: egy cég elküldött/fogadott számlái kézbesítési és adóhatósági jelentési állapottal, lapozvaget_document: egy számla részletesen az MLS-visszaigazolással és jelentéssel, opcionálisan az UBL XML (1 MB-ig)check_participant: a címzett élő ellenőrzése a Peppol-hálózatban (SML)validate_document: UBL validálás az EN 16931 + Peppol BIS 3.0 szerintsend_document: számla küldése a cég nevében, confirm = true szükséges, és érvényes a Verifikačný údaj kapu
Csatlakozás a Claude Code-ban
claude mcp add --transport http verteco-peppol https://peppol.verteco.digital/api/mcp \
--header "Authorization: Bearer vpt_..."Claude Desktop (az mcp-remote hídon keresztül, Node.js szükséges)
{
"mcpServers": {
"verteco-peppol": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://peppol.verteco.digital/api/mcp", "--header", "Authorization: Bearer vpt_..."]
}
}
}A számlaküldés jogilag kötelező erejű: az eszköz confirm = true nélkül elutasítja a hívást, és a szerver utasításai kötelezik az asszisztenst, hogy kérje a felhasználó kifejezett hozzájárulását a konkrét számlához és címzetthez. A Cursor és VS Code kész konfigurációi és a kulcs létrehozásának gombja a portálon található: API-kulcsok → MCP-szerver fül. API-kulcsok → MCP-szerver
Küldés e-mailben (a cég címe)
A portálon a cég bekapcsolja saját címét: <24 véletlen karakter>@peppol.send.verteco.app. Az engedélyezett postafiókból erre a címre küldött, UBL XML mellékletű e-mailt ugyanúgy elküldjük a Peppol-hálózaton, mintha a fájlt a Küldés fájlból lapon töltötte volna fel; a feladó mellékletenként egy választ kap az eredménnyel, a bizonylat pedig a portálon és az API-ban is elérhető kézbesítési állapottal, MLS-visszaigazolással és FS-jelentéssel. Beállítás: Kapcsolatok és integrációk → Küldés e-mailben (a cég tulajdonosa vagy adminisztrátora, bejelentkezve). /dashboard/integrations/email
Feldolgozási szabályok
- Csak a cég engedélyezett feladói listáján (legfeljebb 20) szereplő címről érkező levelet fogadunk; minden mást válasz nélkül eldobunk.
- Alapértelmezetten a feladó domainjének át kell mennie az SPF- vagy DKIM-ellenőrzésen a kézbesítő szervernél (DMARC-szerű, relaxed igazítás). A kézbesítő szerver emellett elutasítja azokat a leveleket, amelyek sem SPF-en, sem DKIM-en nem mennek át, és a feladó DMARC-szabályzatát sértő leveleket. Az ellenőrzés a beállításokban kikapcsolható; nem ajánlott.
- Melléklet: UBL 2.1 Invoice vagy CreditNote (Peppol BIS Billing 3.0), .xml kiterjesztés, akár SBDH-borítékban; üzenetenként legfeljebb 10 melléklet, mellékletenként 15 MB, címenként napi 200 üzenet. PDF-et és az üzenet szövegét nem dolgozzuk fel.
- IFS Finvoice 2.0: az IFS SOAP-borítékos (
IFSFinvoice) vagy csupasz Finvoice .xml mellékletet UBL-re alakítjuk, majd ugyanúgy dolgozzuk fel. Átalakítási szabályok:INV02vagy negatív végösszeg = jóváíró számla (381) pozitív összegekkel és az eredeti számla hivatkozásával (OriginalInvoiceNumber, IFS-nélOrderIdentifier); eladó és vevő a szlovák adószám szerint (SellerOrganisationTaxCode,BuyerOrganisationTaxCode→0245:DIČ), Szlovákián kívüli vevőt nem alakítunk át; áfabontás aVatSpecificationDetails-ből, a 0 %-os sorok E kategóriával és aVatFreeTextindokával, különben „Oslobodené od DPH”; az IFS kerekítő sorai (nettó 0,00, áfa 0,01) kimaradnak, a sor összegével nem egyező egységárat újraszámoljuk; mértékegységek UN/ECE szerint (kg → KGM, pcs → H87, h → HUR, ismeretlen → C62 az eredeti szöveggel a sor megjegyzésében); a beágyazott számlakép (InvoiceAttachments, PDF) 5 MB-ig a bizonylat melléklete lesz; csak EUR. Az átalakítás eredménye a válaszban és a cég naplójában szerepel. - Eredménycím: ha a számlákat rendszerpostafiók küldi, a beállításokban más címet adhat meg az eredményt tartalmazó válasznak (
replyToaPUT /companies/{id}/email-sendkérésben, üres = válasz a feladónak). - Az XML-ben az eladó (szállítói EndpointID, BT-34) ez a cég kell legyen, különben az üzenetet elutasítjuk (a saját szállítójától továbbított számla soha nem megy ki az Ön számlájaként). A vevőnek sémával ellátott EndpointID-vel kell szerepelnie (BT-49).
- Ugyanaz az üzenet (Message-ID) egyszer kerül feldolgozásra. A bizonylat az API-ban és a webhookokban
origin = emailjelölést visel, a szereplő = a feladó címe.
Állapot (ping)
Nyilvános health-check végpont, monitorozásra alkalmas.
/pingnyilvánosA backend állapota.
// 200 OK
{ "service": "peppol-portal-backend", "status": "ok", "timestamp": "2026-06-17T…Z" }Az összes komponens élő áttekintése a rendszerállapot oldalon érhető el.
Ami kész, és ami készül
Már éles üzemben (gyakran hiányzónak hitt)
- A POST /companies/{id}/documents/send stabil portálfelület; ERP-integrációkhoz továbbra is a SAPI-SK ajánlott Idempotency-Key-jel.
- Az SMP-regisztráció az FS-portálon történő választás után automatikus; átállás másik szolgáltatótól a POST /companies/{id}/smp-migrate végponttal, migrációs kóddal.
- MLS-igazolások, kézbesítési bizonyítékok és FS-jelentések (fsReport) a /sapi/document/sent minden sorában; webhook-visszajátszás időablakra.
- Kiválasztott cégekre szűkített kulcsok; MCP-szerver AI-asszisztenseknek; UBL-minták a /vzory oldalon; nyilvános validátor.
Előkészületben (az integrátori igények sorrendjében)
- Aszinkron kötegelés: a POST /sapi/document/batch 202-vel válaszol, job-hivatkozással és tételenkénti állapottal.
- Változásfolyam GET /sapi/document/changes?since&cursor kurzorral az offset-lapozás helyett.
- API-kulcsok lejárata és forgatása a portálon, csak olvasható kulcs.
- Több webhook-végpont cégenként eseményszűrővel.