Why does my payment gateway throw a 500 at place-order?
A POST /?wc-ajax=checkout 500 at place-order is a server-side failure in the order-completion path, often a gateway API call (Stripe, PayPal, WooPayments) hitting a PHP fatal, a missing API key, a webhook misconfiguration, or a memory limit. We read the WooCommerce status log and the gateway log, isolate the failing call, and restore a clean checkout. We test in the gateway sandbox before going live.