The hard part of reporting closed jobs back to your ad platforms is not the upload. It is that Google, Microsoft and Meta each track a different click id, and none of them can be added after the fact. This is a working reference of the whole loop: a paid invoice in Jobber, matched to the click that started the job, reported to each platform that can actually match it.
Reference tool. It builds the exact payloads each platform expects, using sample data. It is not connected to a live ad account and uploads nothing.Report the paid value to each ad platform whose click id was captured at intake, and to no others. A job that came from a Google ad carries a gclid only, so it reports to Google only. A click id cannot be recovered later, so the ones you did not capture at the form are gone for good.