Going live

A checklist for moving from sandbox to production. Verify the whole flow in the sandbox, then switch to a production key, and the base URL stays the same.

Before launch

1
Tested in the sandbox
Issuing an invoice, sending via Peppol, and (if relevant) receiving a document have all been tested in the sandbox with the efk_pk_test_… key.
2
Errors and 429 handled
Your application correctly handles error codes and respects Retry-After on rate limits.
3
Keys stored securely
Keys live in a server-side environment / secret store, not in client-side code or in a repository.
4
Idempotency
On retries, you store the id of created documents to avoid duplicates.
5
Organization mapping
You send the correct X-Organization-Id for each client organization.

Switching to production

6
Production key
After the partner is activated, an administrator issues a production key efk_pk_live_…. Replace the sandbox key with it in your production configuration.
7
Real sending
Live sends go through Peppol for real: verify billing/credits and delivery status in the Documents section.
One code path: call the same endpoints in the same order in the sandbox and in production, including POST /v1/agent/peppol/enroll with a token. Going to production means swapping the test key for the live key. The differences and the timeline are in Sandbox vs. production.
Sandbox and production are separated only by the key prefix. Make sure you're actually using efk_pk_live_… in production, not a test key.

FS verification token

A production (live) Peppol enroll requires an FS verification token, a hex code from DIČ verification at the Slovak Financial Administration. The sandbox requires it too and any hex is enough (the lenient sandbox of accounts registered before 02.10.2026 does not require it until 01.11.2026 and returns a warning); with an efk_pk_live_… key it's required always, and without it POST /v1/agent/peppol/enroll returns VALIDATION_ERROR.

The token is sent in the enroll body as verificationTokenHex (lowercase / uppercase hex). The client gets it on the Financial Administration portal: when they pick their provider there, the Financial Administration issues them a verification code and sends us the mandate. Create the client's organization with POST /v1/agent/organizations before the client picks the provider.

Enroll with the token is not the only way. Without it, eFaktúra e-mails the client a confirmation link; the client clicks it and the organization activates on its own (webhook participant.activated with source: "partner_claim"). If the client should get no e-mail from us, turn on "Confirm reception through your API" in the portal (Team) and send the client's code via enroll. Both flows: Production onboarding.

POST /v1/agent/organizations/{id}/activation-token with body { "token": "…" } only records the onboarding status (caka_na_token → caka_na_fs). It sends nothing to the Financial Administration and does not activate the organization; activation does not need it.

Organization offboarding (cancelling Peppol reception)

A client leaving or switching provider needs no support ticket: POST /v1/agent/organizations/{id}/peppol/deactivate (scope org:provision). We de-register the participant from the SMP, suspend reception, revoke the bound FS mandate and move the organization to deaktivovane. The response carries status (deactivated, or already_inactive on a repeated call), participant_id and deregistered_at; your endpoints receive participant.deactivated.

In-flight transfers finish first: while the organization has sends in QUEUED or SENDING, the call returns 409 PEPPOL_PENDING_TRANSFERS with the count in details.pending_transfers. Retry later or send { "force": true }. Received documents, original UBL and delivery evidence stay available through the API after deactivation. Re-activation: POST /v1/agent/peppol/enroll with a fresh FS token.

Partner activation: 3 steps

Production access (and with it the efk_pk_live_… key) moves through three steps right in the partner portal: you track the whole thing on the Overview (Onboarding section), no manual e-mails with a key or attachments. For standard volume/pricing (catalogue terms) the system approves the request automatically: no waiting on an admin.

1
Request production access
The "Request production access" button on the Overview. Catalogue terms are approved instantly and the contract starts generating; anything outside the catalogue (edited terms) goes to eFaktúra for review.
2
Contract: e-mail code signature
The system generates a contract with the agreed terms. You sign it via a link right in the portal: review the PDF, fill in the signatory's name and function, request a 6-digit code by e-mail to the partner contact address, and enter it to sign: no drawing, printing, or scanning. The final signed PDF (with a code-verification audit record) is downloadable from the portal and in the confirmation e-mail.
3
Production key
Once the contract is signed, production access activates and you generate the efk_pk_live_… key in the portal, a one-time reveal. Save it immediately; it won't be shown in full again. Monthly programme: invoiced monthly in arrears. Annual programme: an upfront-payment invoice for 12 months follows activation. White-label runs on the annual programme only: after approval you receive the upfront-payment invoice and the LIVE key is released once it is paid.
SAPI-SK is optional: if you don't use that interface, this step doesn't apply to you and nothing blocks the rest of the flow.

Changing the agreed terms after signing (volume, package, price list) does not modify the existing contract: a renegotiation generates and re-signs a new contract with the current terms; the original stays as an archival record.

Credits and billing

The sandbox is always free: test sends (efk_pk_test_…) go through the TEST network, aren't billed, and don't consume credits. Production sending via Peppol consumes credit / is billed per transaction.

PeriodBilling for production sends
Until Nov 30, 2026 (promo)€0 base fee up to the promo transaction limit per month (API 1,000 tx/month, not prorated). Usage above the limit is billed monthly in arrears at the total volume's band rate; the billed amount is subject to the €10 ex-VAT monthly minimum (during the promo only in a month with billable transactions). White-label partners (contracts from 5 Sep 2026) pay a €99 ex-VAT platform minimum per month every month from production activation; it covers up to 2,500 transactions per month. White-label runs on the annual programme only – paid upfront for 12 months; the LIVE key is released once the payment is in.
From Dec 1, 2026Volume price list: the month's transaction volume selects one rate (€0.055 – €0.0194 / tx) applied to the whole volume; a sent document or credit note = 1 tx, a received document = 0.5 tx. Two programmes: the annual programme paid upfront (table rates ×1.00; 12 months paid upfront from a volume estimate after activation, band from the annual volume, settled after 12 months) and the monthly programme with no commitment (×1.20; band from the month's own volume, invoiced monthly in arrears). No setup fee; minimum monthly charge €10 ex VAT for every calendar month from production activation, including months without transactions (the same on both programmes; the ×1.20 coefficient does not apply to it). Price list & calculator: efaktura.sk/api-rest.
The partner promo (ending Nov 30, 2026) is different from the FA web promo (ending Jan 1, 2027, a per-org credit model), so don't confuse them. If there isn't enough credit for a live send, POST /v1/agent/peppol/send returns 402 with the INSUFFICIENT_CREDIT code.

Need help going live? Contact us via the partner portal or at podpora@efaktura.sk.