A functional specification describes in detail what a system must do from the user's point of view: functions, business rules, data, error cases. It serves as a common reference between the business, design and testing, and changes along with the project.
Example
"Cancel an order" function: conditions, effects on stock, displayed message, failure cases.