#stripe_connect_platform - Payment Links
1 messages · Page 1 of 1 (latest)
Early morning discussion with Discord after our testing failed due to no Customer being created on PaymentLinks with Price of type: 'one-time'
This seems to be a mysterious hidden attr
Gotcha. That's not really something that should be public, so I'm surprised to hear it was mentioned here. Sorry about that. If you need different behavior on your accounts you'll need to ask Stripe support for help so they can verify your identity and assist you further: https://support.stripe.com/contact
Stripe support sends me back here but OK.
Support is sending you here?
To Discord I mean?
Did they send you here when you asked about payment_links_customer_creation_default_to_always specifically, or just in general?
Yes, I'm bouncing it back to our Stripe Connect support contact.
Yes
Specifically asking about how to update accounts to avoid Guests being created since it breaks our Customer Portal integration if we get customer: null instead of a Customer ID so we want some way to avoid that on Connected accounts.
Yes, specifically that and my understanding is that is the attr. It is a really hard thing to explain without the specific attr
For account specific issues like this one support should never be redirecting you to Discord. This is a public server and we have no way to verify your identity or make changes to your account. I don't know why they would be sending you here. I'm sorry about that.
As a connect account, most of our issues are hard to explain particularly to support since it is always on some other connected account and not our platform account. They never really grok that.
It is not Support, it is Stripe Connect Partner support.
Yeah, it is really hard to get these issues solved as all issues are technical issues. The issue is that we can't really have each customer contact support to update his or her account with some hidden attribute. That is a really confusing conversation to force a customer to have with support. We would much rather have an API call to update the account after connection and loop through existing accounts to update them. Can we make that happen?
Also, when did this get changed that some people get created as a "Guest" and not a "Customer" it threw us for a loop.
And is there a way to see what updates are happening? We are mostly not having any idea of these changes until something breaks on us. Never new there was a Guest not a Customer possible so we never accounted for it.
Let's back up a bit. It sounds like you have a Connect platform and you're creating direct charges on Standard connected accounts, is that correct?
That is one of many things we do yes, but that is not the issue.
Use case is just one of our connected accounts makes a Stripe Payment Link for a Price of type:'one-time' and it is not creating a Customer, but merely a "Guest". Then our app picks up the webhook and cannot reference the Customer ID b/c it apparently does not exist. We want our connected accounts which are usually pretty non-technical people to not experience this problem. Problem is that their customer tries to use our Customer Portal but....they are not a "Customer" merely a "Guest"
I see. That's something you'll need to change on your end. Accounts that used Payment Links prior to that change will always get a Customer created so it won't impact them, but new accounts or accounts that never used Payment Links before use Guest Customers and will not create a Customer in some situations. Your webhook handling code needs to be modified to account for that.
How does our webhook handling turn a guest into a Customer so the person can log into Customer Portal? That is the issue.
I would prefer the account simply be updated to create a Customer and not a guest if they are Connected. That's really the goal.
There is a property on Checkout Session creation to modify this behavior, but there isn't anything on the Payment Links API: https://stripe.com/docs/api/checkout/sessions/create#create_checkout_session-customer_creation
customer: null
on payment_intent.succeeded
Wouldn't the simplest way to fix this be to just expose the attribute on the Account so we can updated it?
Why did you switch to creating a Guest? If someone purchases a $10,000 product of type one-time they are a guest?
That seems weird. Wouldn't you want them to be able to download the receipt for that payment using Customer Portal?
How does our webhook handling turn a guest into a Customer so the person can log into Customer Portal? That is the issue.
Why would they need to log in to the Portal? Can you explain the use case here?
I would prefer the account simply be updated to create a Customer and not a guest if they are Connected. That's really the goal.
If they're making one-time payments a Customer object may not be created as there's no need for one. This is not a practical approach to how Stripe works, you need to account for some Payment Links not generating a Customer.
Wouldn't the simplest way to fix this be to just expose the attribute on the Account so we can updated it?
There are no plans to expose this property externally in any way. As I mentioned earlier, the fact that it was mentioned to you was an error. It's an internal implementation detail, not something you should be aware of or something you can change.
Why did you switch to creating a Guest?
As stated above there's no need to create a Customer object for all payments.
If someone purchases a $10,000 product of type one-time they are a guest?
They might be, yes.
That seems weird. Wouldn't you want them to be able to download the receipt for that payment using Customer Portal?
If the Payment Link is configured to be a one-time payment with no recurring payments, no ongoing relationship, etc. there's no reason to create a Customer.
So my connected account has a $10 one-time product but really wants people to upgrade to their subscription at $50/mo. The person buys the $10 product and should be able to go into Customer Portal and upgrade. But can't. They are not a customer. That would be one of many I can imagine.
That's not a use case supported by Payment Links. You should use Checkout Sessions for that instead.
Checkout Sessions will allow you to do exactly what you're describing.
Ok, no on-going relationship I get it. But someone who buys something from me is generally considered a Customer? And it's just as much data to save a Guest object as a Customer object? People who have made a purchase are much more likely to make future purchases. In marketing you typically look at data with "recency" being weighted highly. A person who recently bought something is likely to purchase again. Anyway.....
Yes yes, but since you added payment links we would like to support them as well as Checkout code.
And we were trying to but hit this roadblock
And it's just as much data to save a Guest object as a Customer object?
Internally at Stripe it's actually not. Not creating a Customer is less storage, less compute, etc.
OK, if we make the payment link, can we force this behaviour or is it on the account and we cannot force it on the PaymentLink.create!
No, Payment Links are not a good fit for your use case. I do not recommend you use them. I recommend you use Checkout Sessions instead.
hmmm. OK, this one is hard. Thank you for your clear explanation. I will have to sleep on how we can fix this SNAFU
It's more a question of what are customers want to use. I can have them embed 200 lines of code that often get forced into an iframe, or they may want to try your payment links so I would like to support what the customer wants.
OK, thank you.
Why would using Checkout Sessions require you to embed lines of code?