Scout Reimbursement Pro is an enterprise-grade WordPress plugin designed for scout groups and non-profit organisations. It automates the entire expense reimbursement process, from scanning receipts on a mobile device to the final payment by the treasurer.
- 📸 Mobile-First Scanning: Capture receipts directly with your smartphone camera via the web browser.
- ⚡ Client-Side Compression: Images are compressed (Canvas-based) before upload. This saves bandwidth and prevents server-side memory issues.
- 🔒 Security-First Storage: Receipts are stored in a protected directory with randomized filenames and
.htaccessexecution protection. - 📧 Automated Workflow:
- Submission: User submits a form via Contact Form 7.
- Approval: Board members receive an email with one-click "Approve" or "Reject" links.
- Payment: Upon approval, the treasurer is notified with bank details and receipt links.
- 📄 Audit-Ready Reports: Generate yearly reports where each page is digitally "stamped" with the approval and payment status.
- 📊 Admin Dashboard: A clean interface with status pills (Pending, Approved, Paid, Rejected) and category statistics.
-
Prerequisites: Ensure Contact Form 7 is installed and active.
-
Download: Clone this repository into your
/wp-content/plugins/ -
Activate: Go to the WordPress Admin > Plugins and activate Scout Reimbursement Pro.
-
Configure: Navigate to Pfadi-Kasse > Settings to set up your board and treasurer email addresses.
🛠 Usage & Configuration
The plugin automatically creates a form named "Pfadi-Abrechnung Pro". If you want to build your own, ensure you use the following placeholder for the secure upload field:
[scout_upload_placeholder]
You can use these custom tags in your Contact Form 7 email templates:
-
[scout_upload_list]: A list of secure URLs to the uploaded receipts.
-
[approve_link]: The one-click approval URL.
-
[reject_link]: The one-click rejection URL.
Purpose [text* your-subject]
Receipts & Photos[scout_upload_placeholder]
[submit "Submit Reimbursement"]
To protect sensitive financial data and your server, this plugin implements:
-
MIME-Type Sniffing: Verifies file contents via finfo, not just file extensions.
-
Filename Randomization: Prevents predictable file paths and "Directory Traversal" attacks.
-
Directory Protection: A custom .htaccess in the upload folder denies script execution (PHP, Python, etc.).
-
Data Portability: Stores relative paths in the database to ensure the plugin works even after site migrations.
Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.
This project is licensed under the GPLv2 or later License - see the LICENSE.txt file for details.