The most common mistake is treating billing as a checkout screen instead of a lifecycle.
Real billing includes plan changes, partial periods, discounts, retries, refunds, credits, taxes, invoice documents, customer support, and finance review.
Another mistake is hiding billing state inside product tables. When finance needs to explain an invoice, the answer should not require reading application code.
Keep billing objects explicit. Make invoices auditable. Make corrections visible. Make integrations idempotent.