Most 3PL revenue is many small charges. Billing works when every charge is captured as an event when it happens and priced from a rate card, not rebuilt from spreadsheets at month end.
Billable events
- Receiving: by pallet, case, carton, container or hour.
- Storage: by pallet position, bin, cubic foot or square foot.
- Order handling: per order, per line and per unit.
- Pick and pack, kitting, labeling and packaging materials.
- Returns processing and disposal.
- Special projects billed by the hour.
Storage: choose and document the method
- Take a daily on-hand snapshot per client so storage is charged on what was held.
- Bill on the client's anniversary date (a rolling 30-day period from receipt) or on the calendar month, and state which in the contract.
- Apply minimum monthly charges and volume tiers as data, not as manual adjustments.
Structure the rate card as data
Each charge has a client, a unit, a price, an effective date and optionally a tier. When a client's rates change, a new dated row goes in and old invoices stay reproducible.
Accessorial and pass-through charges
- Carrier charges passed through at cost or with a stated markup.
- Supplies and packaging at cost plus a margin.
- Time-based labor priced from recorded hours.
- Fees for rework, relabeling, holds and after-hours work.
Prevent and settle disputes
- Store every billable event with a timestamp, user and reference so each line has evidence.
- Send a draft invoice with the event detail, and let the client open it in a portal.
- Lock the billing period after approval and correct with credit memos, not edits.