There are two main reasons for lack of attribution:
More sales than you think come from "organic" traffic. Even though it's coming from Facebook, traffic that comes through organic impressions of the ad post are not going to show in the reports. This is particularly likely if you get high comments, likes and shares on the ad posts.
Facebook cannot identify the buyer as Facebook user. In that case, even if the user has seen or clicked on an ad, Facebook can't match the conversion to the ad. This happens in two cases - user uses a device or browser or app that suppresses FB pixels (Safari, Ad Blockers, GDPR compliance), - or when the user doesn't make the purchase immediately, but goes on Google or gets your follow up email and buys when not logged in to FB and from a device that didn't get cookied on the first, logged in visit.
In addition to all that, keep in mind that Facebook REPORTS show conversions at the time the ATTRIBUTION event happened (click or view), not at the time of the actual conversion. Raw events show at the time of the event, but are frequently delayed by several hours.
The default attribution window for clicks and views in the ads manager reports is 28-day click and 1-day view. You can look at alternative attribution windows by customizing the ads manager view. You can also change the default attribution settings in your ads manager globally.