ExCius

An Elixir library for generating UBL 2.1 (Universal Business Language) invoices compliant with the Croatian e-Invoice specification (CIUS-2025).

Features

Installation

Add ex_cius to your list of dependencies in mix.exs:

def deps do
  [
    {:ex_cius, "~> 0.1.0"}
  ]
end

Usage

params = %{
  id: "INV-001",
  issue_datetime: "2025-05-01T12:00:00",
  currency_code: "EUR",
  supplier: %{
    oib: "12345678901",
    registration_name: "Company A d.o.o.",
    postal_address: %{
      street_name: "Street 1",
      city_name: "Zagreb",
      postal_zone: "10000",
      country_code: "HR"
    },
    party_tax_scheme: %{
      company_id: "HR12345678901",
      tax_scheme_id: "vat"
    },
    seller_contact: %{
      id: "12345678901",       # Operator's OIB (HR-BT-5)
      name: "Operator1"        # Operator's name (HR-BT-4)
    }
  },
  customer: %{
    oib: "11111111119",
    registration_name: "Company B d.o.o.",
    postal_address: %{
      street_name: "Street 2",
      city_name: "Rijeka",
      postal_zone: "51000",
      country_code: "HR"
    },
    party_tax_scheme: %{
      company_id: "HR11111111119",
      tax_scheme_id: "vat"
    }
  },
  tax_total: %{
    tax_amount: "25.00",
    tax_subtotals: [
      %{
        taxable_amount: "100.00",
        tax_amount: "25.00",
        tax_category: %{
          id: "standard_rate",
          percent: 25,
          tax_scheme_id: "vat"
        }
      }
    ]
  },
  legal_monetary_total: %{
    line_extension_amount: "100.00",
    tax_exclusive_amount: "100.00",
    tax_inclusive_amount: "125.00",
    payable_amount: "125.00"
  },
  invoice_lines: [
    %{
      id: "1",
      quantity: 1.0,
      unit_code: "piece",
      line_extension_amount: "100.00",
      item: %{
        name: "Product",
        classified_tax_category: %{
          id: "standard_rate",
          percent: 25,
          tax_scheme_id: "vat"
        },
        commodity_classification: %{
          item_classification_code: "73211200",
          list_id: "CG"
        }
      },
      price: %{
        price_amount: "100.00"
      }
    }
  ],
  notes: ["Payment due within 30 days"]
}

{:ok, validated_params} = ExCius.RequestParams.new(params)

Supported Enums

Invoice Type Codes

Tax Categories

Note: The reduced Croatian VAT rates of 13% and 5% should use the :standard_rate category with the appropriate percentage.

Tax Schemes

Unit Codes

Business Process

Currency

License

Copyright (C) 2025 Pametno računovodstvo d.o.o.

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

See the LICENSE file for details.