This crate implements Skatteverket monthly tax tables 29 through 42 and the annual preliminary-tax formulas from SKV 433, edition 36, for income year 2026.
The calculations use the same assumptions as the published tables and are not an individualized final tax assessment.
cargo run --bin tax-annual -- 34 1 216000
cargo run --bin tax-monthly -- 34 1 18000Arguments are tax table, column, and gross income in whole SEK.
The native egui application includes a reopenable income calculator for salary, one-time compensation, occupational pension, and dividends within the owner-managed company's gränsbelopp. It calculates the withholding applied by main and secondary payers (including percentage adjustment decisions), reconciles withholding with annual final tax, and estimates progress toward the 2026 PGI and SGI ceilings. Regular salary rows can estimate an ITP 1-equivalent employer pension contribution, while one-time salary rows can model an editable salary exchange, the employer uplift, the remaining pension allowance, and the taxable cash payment. Vacation compensation is pensionable by default in the ITP 1-style model and shows its estimated additional employer contribution separately. Pensionability and actual contribution amounts remain editable for individually agreed pension terms. Recurring salary rows can also use their 12-month projection as the annual income basis behind a percentage jämkning decision. The annual result then shows the calibration explicitly while preserving the row's actual payment dates. The app also estimates the 2027 3:12 gränsbelopp for qualified shares: the ownership-adjusted basic amount, wage-based allowance using 2026 payroll, the 50-times-salary cap, acquisition-cost interest, and saved allowance. Salary rows marked as sourced from the owner's company or group feed the owner's 2026 cash compensation and, in one-person-company mode, the complete payroll basis. For a normal privately held Swedish AB, the preliminary 2027 view treats the 20-percent amount as personal tax declared on K10 in 2028 rather than tax withheld by the company when the dividend is paid. The desktop app restores the selected table, age group, jämkning settings, and complete income plan between launches. If later pension changes make an existing salary exchange exceed its allowance, the plan is marked invalid and reports the new maximum instead of silently calculating from inconsistent inputs.
cargo run -p swedish-tax-guiThe GUI is a separate workspace package. A normal cargo build from the
repository root builds both the core/CLI package and the graphical application.
The swedish-tax-ios workspace crate exposes the tax core through a versioned,
typed C ABI. Build ARM64 device and Apple Silicon simulator slices and package
them as an XCFramework with:
rustup target add aarch64-apple-ios aarch64-apple-ios-sim
cargo xtask ios --releaseThe task first regenerates ios-ffi/include/SwedishTaxFFI.h from the public
#[repr(C)] Rust types and extern "C" functions using its pinned cbindgen
library dependency. The generated header is checked in for review and Swift
module import; cargo test --workspace fails if it drifts from the Rust ABI.
The default artifact is target/ios/SwedishTaxCore.xcframework. The iOS Xcode
project consumes that location through its persisted
RUST_CORE_ARTIFACTS_DIR build setting; --output PATH remains available for
other consumers and packaging workflows.
- SKV 433 technical specification
- Official monthly tables
- 2026 withholding on one-time payments
- Worked examples
- 2026 pensionable income (PGI)
- Sickness-benefit qualifying income (SGI)
- 2026 ITP 1-equivalent pension-contribution benchmark
- ITP pensionable salary, including vacation compensation
- Employer pension-cost deduction rules
- Changed 3:12 rules for income year 2026
- 2026 income-base amount used by the preliminary 2027 estimate
Development instructions are in CONTRIBUTING.md. This project is available under the MIT License.