Skip to content

Slovenia e-SLOG and UJP

Use e-SLOG for native Slovenian electronic invoice XML. Use UJP when an invoice or credit note also needs the Slovenian UJP-compatible package with the XML, PDF, .env envelope, and attachment package.

e-SLOG and UJP are separate from FURS fiscalization. FURS handles fiscal confirmation with the Slovenian tax authority. e-SLOG and UJP validate and export electronic invoice files.

Enable Validation

Entity settings can enable e-SLOG validation as the default for Slovenian documents. When ujp_validation_with_eslog_enabled is also enabled, invoice and credit-note create/update flows that validate e-SLOG also validate the UJP package prerequisites.

Enable e-SLOG and UJP validationtypescript
await sdk.entities.update(entity.id, {
  settings: {
    eslog_validation_enabled: true,
    ujp_validation_with_eslog_enabled: true,
    bank_accounts: [
      {
        type: "iban",
        iban: "SI56051008010555555",
        bic: "ABANSI2X",
        is_default: true,
      },
    ],
  },
});

Required e-SLOG Validation

Set eslog.validation_required on the document request when the operation must fail unless the current generated e-SLOG XML is valid.

Create with required e-SLOG validationtypescript
const _invoice = await sdk.invoices.create({
  customer: {
    name: "Kupec d.o.o.",
    address: "Slovenska cesta 1",
    post_code: "1000",
    city: "Ljubljana",
    country: "Slovenia",
    country_code: "SI",
    tax_number: "SI12345678",
  },
  items: [
    {
      name: "Consulting",
      quantity: 1,
      price: 100,
      taxes: [{ rate: 22 }],
    },
  ],
  eslog: { validation_required: true },
});

Required validation blocks final create and finalization when validation fails. Draft creation stores validation status and errors without blocking the draft workflow.

Required UJP Validation

Set ujp.validation_required when the operation must also satisfy UJP package prerequisites. UJP validation includes current e-SLOG validation plus envelope routing data for the sender and receiver.

Create with required UJP validationtypescript
const _invoice = await sdk.invoices.create({
  customer: {
    name: "Javni zavod Primer",
    address: "Trg republike 1",
    post_code: "1000",
    city: "Ljubljana",
    country: "Slovenia",
    country_code: "SI",
    tax_number: "SI87654321",
    bank_accounts: [
      {
        type: "iban",
        iban: "SI56019100000123438",
        bic: "UJPLSI2DICL",
        is_default: true,
      },
    ],
    ujp: {
      receiver_agent: "UJPLSI2DICL",
      receiver_mailbox: "SI56019100000123438",
    },
  },
  items: [
    {
      name: "Subscription",
      quantity: 1,
      price: 250,
      taxes: [{ rate: 22 }],
    },
  ],
  eslog: { validation_required: true },
  ujp: { validation_required: true },
});

Per-Request Disable

API callers can disable validation for a specific document request even when entity-level validation is enabled.

Disable validation per requesttypescript
const _invoice = await sdk.invoices.create({
  customer: {
    name: "Kupec d.o.o.",
    country: "Slovenia",
    country_code: "SI",
  },
  items: [{ name: "Service", quantity: 1, price: 100 }],
  eslog: { validation_enabled: false },
  ujp: { validation_enabled: false },
});

Updates

Document updates accept the same eslog and ujp input objects as create calls. When required validation is set, invalid final updates return 422 before the document is saved.

Update with required validationtypescript
await sdk.invoices.update(invoice.id, {
  customer: {
    name: "Kupec d.o.o.",
    address: "Slovenska cesta 1",
    post_code: "1000",
    city: "Ljubljana",
    country: "Slovenia",
    country_code: "SI",
    tax_number: "SI12345678",
  },
  items: [
    {
      name: "Updated service",
      quantity: 1,
      price: 120,
      taxes: [{ rate: 22 }],
    },
  ],
  eslog: { validation_required: true },
  ujp: { validation_required: true },
});

When validation is enabled but not required, updates refresh the stored validation status after the document changes so download buttons and API downloads do not rely on stale status.

Downloads

e-SLOG downloads require current valid e-SLOG validation for the document state.

Download e-SLOG XMLtypescript
const _xml = await sdk.eSlog.download(invoice.id, { type: "invoice" });

UJP package downloads are supported for Slovenian invoices and credit notes. The download does not send the document and does not require UJP credentials or certificates.

Download UJP packagetypescript
const _zip = await sdk.ujp.download(invoice.id);