Java library that embeds the EOR Scope open dataset of statutory employer charges in 76 countries. Java 17 or later, no dependency, no network call.
For each country: the employer rate at an example salary, whether that rate is a
minimum (floor, when a line depends on the employer, such as an accident
insurance class), the charges in US dollars, the local currency, the number of
statutory lines, the review date and the link to the country page with every
line and its source.
How each figure is sourced and checked: methodology. Statutory figures before any Employer of Record fee. Cost comparison, not legal or tax advice.
<dependency>
<groupId>com.eorscope</groupId>
<artifactId>employer-costs</artifactId>
<version>0.1.0</version>
</dependency>implementation("com.eorscope:employer-costs:0.1.0")import com.eorscope.employercosts.EmployerCosts;
EmployerCosts.countries().size(); // 76, sorted by ISO code
EmployerCosts.country("de").get().name(); // "Germany"
EmployerCosts.rate("DE"); // Rate[ratePct=22.3, floor=false]
EmployerCosts.Cost c = EmployerCosts.employerCost("DE", 75_000);
c.charges(); // 16725.0
c.total(); // 91725.0
c.floor(); // false: when true, read charges and total as "at least"employerCost applies the rate measured at the dataset's example salary.
Ceilings and thresholds make the real rate vary with the salary: the further
from exampleSalaryUsdYear(), the rougher the estimate. The country page
(pageUrl()) has the line-by-line calculation, and the
EOR cost calculator adds provider fees.
data/eorscope-employer-charges.csv is a copy of
https://eorscope.com/data/eorscope-employer-charges.csv.
python tools/gen_data.py regenerates Data.java; the tests check the
generated class against the CSV row for row.
Code: MIT (LICENSE). Embedded data: CC BY 4.0 (LICENSE-DATA), attribution "EOR Scope, https://eorscope.com/data/".