A vulnerability assessment runs automated tooling against your systems and compares what it finds to a database of known vulnerabilities and misconfigurations: missing patches, outdated software versions, weak TLS configurations, exposed services. It is fast, cheap, repeatable, and finds a real and useful list of issues. It cannot tell you whether those issues are exploitable, and it cannot find flaws that don't match a known signature, things like business logic errors, broken access control between two user accounts, or an authorization gap that only shows up when someone deliberately tries to break the intended flow.
A penetration test starts where the scan stops. A tester manually works through the application or network the way an attacker would: chaining a low-severity finding with a second one to reach something serious, testing whether one customer's account can reach another's data, and validating exploitability rather than just flagging a version number as out of date. The output is a report of confirmed, reproducible findings with real business impact, not a list of theoretical possibilities.