How do you handle revenue recognition for milestone-based projects?

We run fixed-price projects billed on milestones, but revenue recognition doesn’t always match the billing schedule — finance wants revenue recognized as work is delivered, not just when we invoice.

For those running milestone or percentage-of-completion projects: how do you keep recognized revenue, billing, and actual delivery aligned without manual spreadsheet reconciliation every month?

Looking for approaches that hold up at audit.