Did you know ... Search Documentation:
Pack eorscope_employer_costs -- prolog/eorscope_employer_costs.pl
PublicShow source

Read-only lookup of the EOR Scope open dataset (CC BY 4.0), embedded at compile time from the CSV files in the pack's data/ directory. No dependencies, no network calls.

The library returns the figures as exported and computes nothing. Employer cost totals are the ones published in the dataset; the library does not recompute them. For a cost at another salary, use the calculator at https://eorscope.com/eor-cost-calculator/.

Records are dicts:

  • country{iso, name, region, currency, example_salary_usd, example_role, example_place, basic_share_of_gross, employer_cost_pct, employer_cost_pct_printed, total_declared_floor, total_declared_ceiling, employer_cost_usd_month, total_excludes, fx_local_per_usd, fx_date, last_reviewed}
  • contribution{iso, country, currency, line_type, line_id, line_name, rate, base, base_factor, base_floor_annual_local, base_cap_annual_local, flat_annual_local, min_gross_annual_local, max_gross_annual_local, extra_kind, extra_value, secondary_source, thirteenth_month, total_declared_floor, total_declared_ceiling, in_total, applies, notes, source_name, source_url, source_checked_at}
  • assumption{iso, id, label, value, notes}

Text is a string, integers and floats are numbers, booleans are the atoms true and false, dates are date(Y,M,D) and an empty optional value is the atom null.

A country with total_declared_floor true publishes an "at least" figure, not a total. Under total_declared_ceiling the modelled contribution base is the highest the law allows, and lines with in_total false come on top. A contribution's rate applies to its base times base_factor (1 unless the law builds the base from more than the salary, as Mexico's integrated base does), before base_floor_annual_local and base_cap_annual_local.

Sources and method: https://eorscope.com/methodology/. The figures are a cost comparison, not legal or tax advice.

license
- Code MIT; embedded data (data/) CC BY 4.0, see data/LICENSE.
 countries(-Countries:list(dict)) is det
Every country, sorted by ISO code.
 country(+Iso, -Country:dict) is semidet
The country with the ISO 3166-1 alpha-2 code Iso (atom or string, case-insensitive). Fails for an unknown code.
 regions(-Regions:list(string)) is det
The distinct regions, sorted.
 countries_in_region(+Region, -Countries:list(dict)) is det
The countries of Region (case-insensitive), sorted by ISO code.
 contributions(+Iso, -Lines:list(dict)) is det
The contribution and statutory extra lines of a country, in dataset order; empty for an unknown code.
 assumptions(+Iso, -Assumptions:list(dict)) is det
The declared assumptions of a country, in dataset order; empty for an unknown code.