This is the paragraph from the CRAN Task View for Causal Inference on matching packages. So lots of free packages written in S/R.
"Matching methods are implemented in MatchIt, which provides wrappers for a number of popular methods including propensity score matching and subclassification, (coarsened) exact matching, full matching, and cardinality matching; more specialized matching methods are implemented in some of the packages below, some of which MatchIt depends on. MatchThem provides a wrapper for MatchIt with multiply-imputed data. Matching performs nearest neighbor and genetic matching and implements Abadie and Imbens-style matching imputation estimators. optmatch performs optimal matching using network flows; several other packages rely on the same infrastructure, including DiPs (near-fine matching with directional penalties), matchMulti (optimal matching for clustered data), rcbalance and rcbsubset (optimal matching for refined balance), approxmatch (near-optimal matching for multi-category treatments), and match2C (optimal matching using two criteria). Other packages include cem (coarsened exact matching), designmatch (optimization-based matching using mixed integer programming), stratamatch (matching and stratification in large datasets), FLAME (almost-matching-exactly via learned weighted Hamming distance), PanelMatch (matching with time-series cross-sectional data), and CausalGPS (generalized propensity score matching for continuous treatments)."