#lewis_ece-paypal-billing-required
1 messages ยท Page 1 of 1 (latest)
๐ Welcome to your new thread!
โฒ๏ธ We'll be here soon! Typically we respond in a few minutes, but sometimes we might take a bit longer if the server is busy or if you have a particularly tricky question.
โฑ๏ธ We close idle threads, which makes them read-only. Once a thread is closed it won't be reopened, but you can always start a new thread if you have another question.
๐ This thread will always be available, even after it's closed. You can find it again using Discord's search, or you can save this link: https://discord.com/channels/841573134531821608/1418002483250335966
๐ Have more to share? Add more details, code, screenshots, videos, etc. below.
Hi ๐
I don't think there is a way to get around this. We document this limitation here: https://docs.stripe.com/payments/paypal/paypal-button
Hmmm.... I guess you could try updating the Express Checkout Element to collect this info in the click event: https://docs.stripe.com/js/elements_object/express_checkout_element_click_event
ah okay I see, would it be possible to load 2 separate elements?
1 - with the billingAddressRequired: true for google/apple
2 - without this option for paypal
Not on the same page
Having duplicate elements can cause a lot of headache where StripeJS starts interacting with the wrong element
just to check is apple/google pay supposed to include the billing info as default? for some reason it didn't show up until I added that option
I thought the docs mentioned it is supposed to be enabled as default
Not necessarily. I see Google Pay/Apple Pay without requiring billing info
By default, the Express Checkout Element collects the billing address
Yes, you are correct about the documentation
But in our PayPal doc, we expressely point out that you should use the following to enable PayPal
elements.create('expressCheckout', {
phoneNumberRequired: false,
billingAddressRequired: false,
shippingAddressRequired: false, // Only supported for one-off payments
});
ahh okay I see
You might be able to update on the click event though.
so don't include the option, then onclick add the option to google/apple?
I'm trying to test it out but I don't have a Payment methods that are disabled when billing address is required
so don't include the option, then onclick add the option to google/apple?
That's the idea. We allow you to update the requirement here: https://docs.stripe.com/js/elements_object/update_express_checkout_element
Blast okay that's not an option
IntegrationError: billingAddressRequired, emailRequired cannot be updated while the payment sheet is open.
ahh thats annoying lol
Yeah, but I guess it makes sense. They don't want the request changing while the Customer is interacting with the modal
is there no way to change the individual options? like per payment method
No but I can flag that as a feature request
Honestly it is a lot like the setup_future_usage parameter on the Payment Intent: https://docs.stripe.com/api/payment_intents/create?api-version=2025-08-27.preview&rds=1#create_payment_intent-setup_future_usage
Turning this on would automatically block all the Payment Methods that don't accept setting up for future usage. It was a major headache for merchants and eventually we were able to build this out in the payment_method_settings parameter
I think we would need to do the same thing here
do you know if there is any other options similar to loading 2 elements on the same page?
like loading express checkout for google/apple then a separate payment element for paypal
Are you only displaying digital wallets using the Express Checkout Element? Or do you also have the Payment Element?
ideally I wanted it all to use the express checkout element
You could go that route. Use the Payment Element for one of the types and Express Checkout Element for the others
We do support using multiple different elements on the same page
Just not two versions of the same element type
oh perfect that might be the way I'll have to do it then
another quick question, does paypal always include a billing address in the charge object?
I think that all depends on what the Customer has saved with PayPal
just thinking if I tried to update this on 'load', instead of on 'click' would this make a difference? would it hide the paypal button once updated?
I have found some examples where we got nothing for billing address
load is fired when the element is loaded so that would just hide PayPal before your customer can select it
ah okay thank you thats useful
might be a stupid idea but would a timeout make a difference? so its waited until the element has loaded then changes
That would be up to you
last question I think lol, is there any option within stripe to make a billing address required with paypal?
Happy to shed what ๐ก I can ๐