Fix Lemon Squeezy checkout 404 from custom price or currency mismatch
A checkout link that returns 404 right before launch usually means the product, variant, currency, price, or environment configuration needs one focused smoke test.
Open the free generatorCheck the variant and environment first
Confirm the checkout is generated for the intended live or test store, the variant is published, and the public site is not exposing a stale test checkout URL.
Match custom_price to the store currency
Send custom_price in the variant currency's minor units. For a CN¥69.00 Lemon Squeezy product, use 6900 and do not force a different checkout currency override.
Remove price overrides during diagnosis
If the checkout still fails, generate one checkout without custom_price. A working default-price checkout narrows the issue to custom pricing rather than routing or product publication.
Record a launch evidence packet
Before the buy link goes public, record the checkout URL, expected price, currency policy, paid order webhook event, duplicate replay result, fulfillment result, and rollback state.
FAQ
Why can a Lemon Squeezy checkout API response still lead to a 404 page?
The checkout object can be created while the routed payment page cannot be served for the current product, variant, price, currency, or store state. Treat the browser page load as part of the smoke test.
Should I hardcode a live checkout URL while debugging?
No. Keep the public checkout disabled until the live key, store ID, variant ID, price, currency policy, webhook delivery, and fulfillment check are verified together.
Use the free sample before wiring production checkout
Download a public sample pack with fake Lemon Squeezy fixtures, signature tests, contract checks, duplicate replay tests, and CI skeletons. The Pro Kit preview shows the full paid package structure without exposing the private archive.