Verteco

Integrations / For developers / REST API (SAPI-SK)

REST API (SAPI-SK) logo

SAPI-SK REST API

Available

SAPI-SK is the standardised national REST interface between your system or ERP and a Peppol access point. We implement it in full, so you write the integration once for any SAPI-SK Access Point and are not tied to our proprietary API shape. Sending, receiving, the delivery status with the MLS receipt and the report to the Financial Administration are all in one interface, with an OpenAPI 3.1 specification and a full test environment for free.

How it works

  1. 1Create an account in the portal and add a company. In the left menu open API tokens and on the API keys tab click Create token. The vpt_ token is shown only once; for SAPI-SK the client_id is the token ID (UUID) and the client_secret is the token itself.
  2. 2Try the whole flow on test.peppol.verteco.digital: a complete copy of the portal with separate data, where companies are approved automatically and delivery really goes through the Peppol test network. Just swap the domain and use tokens created in the test environment. For a quick test without registration there are the public credentials client_id = sandbox and client_secret = sandbox (nothing is ever delivered).
  3. 3Obtain an access token through POST /sapi/auth/token (grant_type client_credentials; valid for 15 minutes, refresh token 30 days). Send a document through POST /sapi/document/send with the X-Peppol-Participant-Id and Idempotency-Key headers; before sending you can call POST /sapi/document/validate and GET /sapi/discovery.
  4. 4Download received documents through GET /sapi/document/receive (parameters ?since and ?until for incremental downloads) and the status of sent ones through GET /sapi/document/sent, or through the webhooks invoice.delivered, invoice.rejected and invoice.undeliverable.
  5. 5When going live, swap the domain for peppol.verteco.digital and create a production account and tokens. Sending is unlocked by the verification token the company obtains by selecting Verteco as its provider on the Financial Administration portal.

What the integration solves

  • ✓Sending (POST /sapi/document/send), bulk sending of up to 100 documents (POST /sapi/document/batch) and validation without sending (POST /sapi/document/validate)
  • ✓Receiving documents with the ?since and ?until filter, the original XML, HTML, PDF and attachments of every received document
  • ✓Status of sent documents with the MLS delivery receipt, the times sentAt, deliveredAt and fsReportedAt and the document timeline (events)
  • ✓Idempotency-Key: a repeated call never delivers an invoice twice; after fixing an error you send the document again with the same key
  • ✓OpenAPI 3.1 specification at /api/v1/openapi.json: import into Postman or generate a typed client (TS, Java, PHP, Python)
  • ✓One token serves several companies through the X-Peppol-Participant-Id header; the sandbox and the test environment are free

Frequently asked questions: e-invoices for REST API (SAPI-SK)

What is SAPI-SK and why use it?
The standardised national REST interface between a client or ERP system and a Peppol access point (sapi-sk.sk). We implement it in full, so you are not tied to our proprietary API shape and write the integration once for any SAPI-SK Access Point. An overview without the technical details is in the article SAPI-SK for developers, the full reference in the developer documentation.
How do I sign in?
OAuth2 client_credentials: the client_id is the UUID of your API token and the client_secret is the vpt_ token itself from the portal (left menu API tokens, API keys tab, Create token button). POST /sapi/auth/token returns an access token for 15 minutes and a refresh token for 30 days; use the token for the whole 15 minutes, a new token for every call is needless overhead. Revoking the API token in the portal immediately invalidates both /auth/token and /auth/renew.
Can I try the API without registering?
Yes. The public sandbox credentials client_id = sandbox and client_secret = sandbox validate requests like production, but never send anything into the Peppol network and return mock responses. For a real flow with delivery, delivery receipt and webhooks there is the test environment test.peppol.verteco.digital, where companies are approved automatically and delivery goes through the Peppol test network, free and without limits for testing.
What happens when the recipient is not in the Peppol network?
The document first goes through validation. We accept a valid document and report it to the Financial Administration even when the recipient is not in the network (response ACCEPTED with undeliverable: true, status undeliverable in the list of sent documents). The same invoice still has to reach the recipient another way, best as its XML by e-mail; once they register, you send it through Peppol again with the same Idempotency-Key. Before sending you check the recipient through GET /sapi/discovery.
How do I find out the delivery status?
GET /sapi/document/sent returns, for every row, the status (submitted, delivered, rejected, undeliverable), the times sentAt, deliveredAt and fsReportedAt and the MLS delivery receipt. Polling every 1 to 5 minutes is a fully supported path; the webhooks invoice.delivered, invoice.rejected and invoice.undeliverable are a complement, not a requirement.
How much does it cost?
The connection is free. The service costs from €2/month excl. VAT per company ID (IČO) that sends or has the Data archive switched on; receiving with the archive off is free (up to 1,000 invoices a month). During the voluntary period before the mandate of 1 January 2027 everything is free of charge.

Start today: selecting us on the Financial Administration portal is enough

Receiving is free · no lock-in, no hidden feesMeet your 2027 legal obligation in 2 minutesSlovak Financial AdministrationChoose Verteco on the Financial Administration portal →On the portal, click “Pokračovať” (Continue), sign in (slovensko.sk / eID or your FS portal credentials) and confirm the selection. We handle the rest automaticallyCertified provider of the Financial Administration (EFSK000031) · no commitment · you can change providers at any time
How does the selection work? (3 steps, ~2 minutes)
  1. 1Click the button above. The official Financial Administration page “Certified provider selection” opens with Verteco pre-selected. Click “Pokračovať” (Continue).
  2. 2Sign in to the Financial Administration portal, via slovensko.sk (eID / ID card with a chip) or with your PFS credentials, and confirm the provider selection.
  3. 3Done. A sign-in e-mail arrives. We create your account, company and Peppol network registration automatically. If another provider already holds your receiving record, we do not take it over: you get the migration-code procedure, or you choose in the portal that receiving stays with them and you only send through us.
  4. No eID? You can also sign in to the Financial Administration portal with your PFS identifier and password. Or register here with an e-mail and password, add your company manually and finish the selection later.
  5. Your company is not offered in the “taxpayer selection” step? Only entities you are authorised for on the FS portal appear. Add the authorisation in your Personal Internet Zone (Autorizácie → Pridať autorizovaného používateľa), then finish the selection.
  6. Detailed guide to the FS portal selection (in Slovak) →

Related: Peppol company check · e-invoicing guide 2027 · price list · all integrations