Credit card fraud has been increasing with the rise of cashless payments, making it difficult to identify fraudulent transactions among thousands of normal ones. Machine learning algorithms can help address this issue by classifying transactions as either fraud or non-fraud in a dataset. For this project, we utilized a highly imbalanced dataset from Kaggle containing European cardholder data. While the dataset is mostly clean, we needed to balance it for training and testing purposes through undersampling. We developed six classification models to differentiate between fraudulent and non-fraudulent transactions and evaluated their performance based on accuracy and F1 score. The KNN model outperforms the other models for the dataset we used in our experiment.