If Lemon Squeezy's createCheckout gives you a 500 or an invalid-signature page, include the buyer's email in checkoutData. Checkouts created without an email failed server-side in this report, and adding it made creation succeed immediately. Pass checkoutData.email on every programmatic checkout even when you think the field is optional.

Context: GitHub issue lmsqueezy/lemonsqueezy.js#87: Creating a checkout through the SDK returned "Invalid signature" on the checkout page and, in another attempt, a bare 500 error. The reporter found the 500 went away as soon as an email was included in checkoutData; without it the checkout could not be created. The maintainer confirmed platform changes were made to address this class of failure.