I worked on a fairly complex invoicing system and couple of things not (directly) mentioned:
* Forward billing vs billing in arrears. We had to treat different customers differently.
* Tiered billing -- e.g., if a customer used > X amount of services, they got a discount.
* Special rules around when billing starts for new customers (e.g., no bill for the first month).
There are probably more I've forgotten. We billed by data usage, mostly, and I used to say that their bill was the integral of the customer's usage graph over a month -- which was true -- but that explanation didn't gain much traction with the accounting folks.