Many sites already push GA4 e-commerce events for Google Tag Manager. tracko.js reads window.dataLayer and gtag() calls: a purchase becomes an order, and view_item, add_to_cart, begin_checkout and add_payment_info become e-commerce events. Enhanced-conversion user_data (email or phone) identifies the buyer. Universal Analytics purchase pushes are understood too.
Because the transaction_id becomes the order id, a server copy of the same order (from Stripe, Shopify or WooCommerce) merges into it instead of double counting.