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.