CrispLEDES - FreshBooks to LEDES Converter
Open-source macOS app that converts FreshBooks invoices to LEDES 98B REV. 7, with built-in validation to prevent rejected bills.
Announcement
We are proud to open-source CrispLEDES, the same app we use in-house at Richardson Oliver LLP to convert FreshBooks invoices to LEDES 98B REV. 7 and reduce billing problems, is now shared with the community under the MIT License.
Overview
CrispLEDES is a lightweight macOS desktop application written in C#. It converts FreshBooks invoice CSV files into the LEDES 98B REV. 7 format required by most corporate clients’ e-billing systems. The tool validates invoice data, performs sanity checks, and generates clear feedback messages — helping law firms avoid rejected invoices and delayed payments.
CrispLEDES was created and is maintained by Richardson Oliver LLP. It is open sourced under the MIT License.
How it Works
Export invoices from FreshBooks as CSV.
Select your configuration file and invoice file in CrispLEDES.
Review messages, warnings, and errors, then submit the LEDES file.
Key Features
Convert FreshBooks CSV invoices into LEDES 98B REV. 7 text files.
Validate invoice structure, narratives, timekeepers, rates, and totals.
Automatically identify line types (expense, adjustment, discount, standard).
Generate multiple outputs for auditability and troubleshooting.
Validation Checks
Proper invoice structure (start/end dates required).
Narrative length and banned keywords.
Timekeeper codes, classifications, and rates.
Billing in tenths of an hour.
Expense thresholds (e.g., >$5,000 flagged).
Invoice totals exceeding configured limits (default $20,000).
Outputs
LEDES invoice file.
Copy of configuration file.
CSV equivalent of LEDES data.
CSV invoice summary.
Input CSV copy.
Log of messages, warnings, and errors.
Configuration File
CrispLEDES relies on a configuration file to map timekeepers and enforce firm-specific rules. The first non-comment line contains your law firm tax ID, optionally followed by a warning threshold for invoice totals. Each subsequent line defines a timekeeper in this format:
Example:
Supported roles:
PT – Partner
AS – Associate
OC – Counsel
LA – Legal Assistant
OT – Other Timekeeper
Quick Start
Sample configuration file:
Sample Freshbooks CSV:
Example LEDES output excerpt:
Tip: The app also generates summary.csv, details.csv, a copy of your input CSV, the configuration file used, and a messages.log with warnings and errors.
Common Issues
Narrative too long: tighten to ~30 words.
Mismatched or zero timekeeper rate: update the configuration or the line item.
Non-tenth hour increments: adjust hours (e.g., 1.33 -> 1.3).
High expense or invoice total: confirm justification or split invoices if appropriate.
Installation (Source Only)
Download the source or clone the repo.
Build the app from source (see the README).
Update your configuration file with firm tax ID, timekeepers, and rates.
Usage
Export invoices from FreshBooks as CSV.
Open CrispLEDES.
Select your configuration file and invoice file.
Review messages, warnings, and errors.
Submit the generated LEDES 98B file to your client’s e-billing system.
Resources
Source Code: https://github.com/roipatents/CrispLEDES
User Guide: https://github.com/roipatents/CrispLEDES#readme
License: https://github.com/roipatents/CrispLEDES/blob/main/LICENSE.md
Report Issues: https://github.com/roipatents/CrispLEDES/issues
Disclaimer
This is an open-source project. There is no direct support; community feedback and bug reports are handled via GitHub Issues.