In my case, there was another element on the page with id="Stripe" (I had a radio button with multiple payment processors of which Stripe was one), and this caused loadStripe() to incorrectly reference the input field instead of the promise function. When I removed the ID, it loaded correctly.