Depending on your goals, you will interact with one or several components of OpenFisca.

OpenFisca architecture

Country packages

Country packages are what most users will interact with when using OpenFisca. They model the rules of a jurisdiction by defining Parameters, Variables and Entities.

For example, openfisca-france models French law.

Extensions packages

Extensions add capabilities to a country package while maintaining situation description compatibility by adding or redefining parameters and variables, but not entities.

This architecture enables subcommunities to maintain subsets of the rules of a country on which they have authority, or which are too specific to be of interest to the wider OpenFisca French community.

For example, openfisca-paris extends openfisca-france with benefits specific to the town of Paris and is maintained by the Paris City Council.


OpenFisca Core provides the API, domain-specific language (DSL) and testing tools with which country and extension packages are built.

It defines the Python API through which the country packages can be queried.

The Core also includes an optional web API, which makes it possible to expose Parameters and calculate Variables over HTTP and JSON.


Since all country and extension packages are maintained by different communities and depend on legal and cultural contexts, OpenFisca provides two packages aimed at demonstrating its capabilities independently: country-template and extension-template. They can be used to bootstrap new country or extension packages.

This documentation uses these packages throughout.