A comprehensive loan payment management system that enables users to make payments toward multiple types of loans in the USA and Canada. Manage all your loans in one unified platform.
-
Credit Card Loans
- Track multiple credit card accounts
- Monitor balances and minimum payments
- Process credit card payments with interest tracking
- Track due dates
-
Personal Loans
- Support for both USA and Canada
- Bank account integration for payments
- Track personal loan balances
- Monitor interest rates and payment schedules
-
Home Loans (Mortgages)
- Track mortgage payments
- Support for both USA and Canada
- Property address tracking
- Remaining term calculation
- Bank transfer or check payment options
-
Auto Loans
- Vehicle information tracking (Make, Model, Year, VIN)
- Monthly payment management
- Payment history tracking
- Months remaining calculation
-
Bank Transfer (ACH for USA, EFT for Canada)
- USA: Account Number + Routing Number
- Canada: Account Number + Transit Number
-
Check Payments
- For mortgage and personal loans
- Complete payer information tracking
-
Credit Card (For paying credit card balances)
-
USA Features:
- Routing number support
- State/ZIP code validation
- US bank formats
-
Canada Features:
- Transit number support
- Province/Postal code validation
- Canadian bank formats
Loan Payment Manager/
βββ src/
β βββ __init__.py
β βββ payment/
β β βββ __init__.py
β β βββ credit_debit.py # Credit card loan payments
β β βββ bank_account.py # Personal loan payments
β β βββ mail_check.py # Mortgage payments
β β βββ appointment.py # Auto loan payments
β βββ bank_linking/
β β βββ __init__.py
β β βββ bank_login.py # Bank account integration
β βββ utils/
β βββ __init__.py
β βββ validators.py # Input validation
β βββ helpers.py # Helper functions
βββ tests/
β βββ __init__.py
β βββ test_payment.py # Payment module tests
β βββ test_bank_linking.py # Bank linking tests
β βββ test_utils.py # Utility function tests
βββ main.py # Main application entry point
βββ requirements.txt # Python dependencies
βββ README.md # This file
βββ LICENSE # MIT License
βββ .gitignore # Git configuration
- Python 3.8 or higher
- pip (Python package manager)
- Clone the repository:
git clone https://github.com/Monsterx411/general-biller.git
cd "general-biller"- Create a virtual environment:
python3 -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate- Install dependencies:
pip install -r requirements.txtRun the application:
export PYTHONPATH=$PWD
python main.pyThe application provides an interactive menu interface for:
-
Credit Card Loan Management
- Add credit card accounts
- Track balances and interest
- Make payments
- View account details
-
Personal Loan Management
- Configure bank accounts (USA/Canada)
- Add multiple personal loans
- Process payments
- Track loan details
-
Mortgage Management
- Add mortgage accounts
- Set payment methods (bank/check)
- Process payments
- Track remaining term
-
Auto Loan Management
- Add vehicle loans
- Track vehicle information
- Process payments
- View payment history
Run all tests:
export PYTHONPATH=$PWD
pytest tests/ -vRun specific test file:
pytest tests/test_payment.py -v
pytest tests/test_bank_linking.py -v
pytest tests/test_utils.py -vThe system includes comprehensive validation for:
- Email addresses
- Phone numbers
- ZIP codes (USA format: 12345 or 12345-6789)
- Postal codes (Canada format: A1A 1A1)
- Bank account numbers
- Routing numbers (USA - 9 digits)
- Transit numbers (Canada)
Manages credit card loan accounts and payments.
Handles personal loans with bank account integration for both USA and Canada.
Manages mortgage payments with flexible payment methods.
Tracks auto loans with vehicle information and payment history.
cc = CreditCardLoanPayment()
cc.add_credit_card_loan("Visa", "1234", 5000, 150, 18.5, "12/25")
result = cc.process_payment("Visa", 500)personal = PersonalLoanPayment("USA")
personal.set_usa_bank_account("Chase", "Checking", "123456789", "021000021", "John Doe", "123 Main St", 10000)
personal.add_personal_loan("PL001", "SoFi", 15000, 300, 8.5, "15th")
result = personal.process_payment("PL001", 300)mortgage = HomeLoanPayment("USA")
mortgage.add_mortgage("ML001", "Bank of America", "123 Oak St", 350000, 2100, 4.5, 360, "01st")
mortgage.set_payment_method_bank("123456789", routing_number="021000021")
result = mortgage.process_payment("ML001", 2100)auto = AutoLoanPayment()
vehicle = {"make": "Toyota", "model": "Camry", "year": "2022", "vin": "ABC123"}
auto.add_auto_loan("AL001", "Chase Auto", vehicle, 25000, 450, 6.5, 60, "10th")
result = auto.process_payment("AL001", 450)Contributions are welcome! Please:
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests for new features
- Submit a pull request
This project is licensed under the MIT License - see the LICENSE file for details.
For issues, questions, or suggestions, please open an issue on GitHub.
- Complete bank linking integration
- Payment reminders and notifications
- PDF statement generation
- Multi-currency support
- API integration with major banks
- Mobile application
- Database persistence
- User authentication
Note: This is a financial management application. Ensure all sensitive data (account numbers, routing numbers) are properly secured and encrypted in production environments.