The Substack implementation is actually not compliant with French laws. You cannot assume acceptance, people have to explicitly opt-in.
In my case, when you click on “Subscribe” on the pricing table, instead of going right into the payment page, it displays a modal with the Terms of sales. And then users will need to click on a “I accept” button before seeing the payment page (there is also a “I refuse” button).
Acceptance is not stored in a db. Maybe I will implement that in a future version, but at the moment it seems my current implementation is good enough. I’m also not sure if law requires for it to be stored.
Once the theme will be used in production (in the upcoming weeks), I will post a link here for everyone to see how I implemented this.