Technical Details:
Each nonblank source line becomes one billing row. Arithmetic uses the numeric quantity and rate from that row, preserves negative adjustments, and keeps full numeric precision until the preview formats money to two decimal places.
Transformation Core
Rows are split at line breaks, then each row is split at commas. Leading and trailing spaces are removed before the three fields are interpreted.
How billing line text becomes calculated fields
| Position | Meaning | Fallback | Limit |
| First | Item name | Item 1, Item 2, and so on | Commas inside a name are not supported |
| Second | Quantity | 1 when blank or not numeric | Absolute value no greater than 1,000,000 |
| Third | Rate | 0 when blank or not numeric | Absolute value no greater than 1,000,000,000 |
Only the first three comma-separated parts affect a row. The source accepts up to 100 nonblank rows and 10,000 characters. Because a missing or invalid quantity and rate fall back rather than stopping the draft, the parsed ledger is the decisive review surface.
Formula Core
Line extension, subtotal, tax, and grand total follow ordinary percentage arithmetic.
q is quantity, r is rate, L is a line amount, S is subtotal, t is the entered tax percentage, T is tax, and G is total. Negative tax rates are converted to 0 and flagged. Rates above 1,000% are rejected.
For Consulting, 6, 150 and Hosting, 1, 80, the line amounts are 900 and 80. The subtotal is 980. At 8%, tax is 78.40 and the displayed total is 1,058.40. The calculation itself is not rounded to cents before later arithmetic, so fractional-cent entries require an external rounding decision.
The amount chart ranks rows by absolute contribution, keeps the eight largest, combines the remainder as Other, and adds tax as its own contribution. This grouping changes only the chart; it does not change the ledger or total.