#dev-help
1 messages Β· Page 121 of 1
morning folks!
@hollow prairie For GPay/Apple Pay integration
Thank you @meager hawk
@sterile night There's a full guide for the Payment Request Button here: https://stripe.com/docs/stripe-js/elements/payment-request-button
This enables Apple Pay and Google Pay and includes the server code for creating the PaymentIntent (which is seemingly what you're missing now)
Collect payment and address information from customers who use Apple Pay, Google Pay, and browser-saved cards with Payment Request APIs such as Microsoft Pay on Edge.
Hey guys! Is it possible to apply coupon codes / discounts to a created invoice?
@fair flower hey there! Just a sec π
@fair flower For draft (unfinalized) one-off Invoices, you can provide coupons in the discounts array during create/update:
https://stripe.com/docs/api/invoices/update#update_invoice-discounts-coupon
Complete reference documentation for the Stripe API. Includes code snippets and examples for our Python, Java, PHP, Node.js, Go, Ruby, and .NET libraries.
@fair flower If you're trying to manage this for a subscription-related invoice this might be a little more involved, depending on exactly what you're trying to do. Can you share a bit more detail?
hello there,
I have a running subscription in which user has already subscribed. Now he wants to change the number of quantity for that subscription then which api will be used
Hi there!
We have 2 accounts in our platform
Is it possible to move connected account from one to another?
@toxic quartz hello π you can update the quantity for the specific subscription item to change this. Note that you will need to include the subscription item id that you can get by inspecting the subscription:
https://stripe.com/docs/api/subscriptions/update#update_subscription-items-quantity
https://stripe.com/docs/api/subscriptions/object#subscription_object-items-data-id
You can see how to provide this in an example request here in the docs (though you would be changing quantity, not price):
https://stripe.com/docs/billing/subscriptions/upgrade-downgrade#changing
Complete reference documentation for the Stripe API. Includes code snippets and examples for our Python, Java, PHP, Node.js, Go, Ruby, and .NET libraries.
Complete reference documentation for the Stripe API. Includes code snippets and examples for our Python, Java, PHP, Node.js, Go, Ruby, and .NET libraries.
Learn how to upgrade and downgrade subscriptions by changing the price.
thanks @daring lodge
@vocal wagon howdy! No, that's not supported as a direct change. You would need to connect the account to the other platform and disconnect from the first one.
@toxic quartz My pleasure! Also pay attention to the proration behaviour. By default the changes will be prorated unless you disable prorations:
https://stripe.com/docs/billing/subscriptions/prorations#disable-prorations
Learn about prorations.
okay π
So it's possible π
anyone else having massive issues with the stripe dashboard?
keeps on switching between the old and a newer looking design
and most requests to change stuff just fail
@vocal wagon Well, depends on some details, but maybe! If it's a custom/express account (rather than standard) then there is no way. You'd create a new account on the other platform and move any data over you'd like to preserve.
@slate elbow That doesnt sound right
@slate elbow is this new behaviour?
yeah started a few minutes ago
Hi again, using Stripe.js Elements how can I specify the MOTO flag during the JS call "stripe.confirmCardPayment()" as I cannot specify MOTO via the API "payment_method_options[card][moto]"=true when creating the PaymentIntent as I do not know the card details yet until the Stripe.js Elements collects it.
the new dashboard design looks kinda nice but preferred the last one btw
it seems to have stopped
Good to hear, was looking to see whether there were any known issues π
updates are now randomly failing again
less than before, but its annoying having to reload the page and retry
Looking again π§ -- can you try logging out and back in?
@slate elbow if possible, would you be able to share the request id from one of the failing requests from your developer tools network panel?
(in the response headers)
stuff is now going through as normal, i think it just had multiple moments
happened after creating a new account if that helps
@fossil crystal I'm pretty sure it's not yet supported via confirmCardPayment in Stripe.js
Ah thanks @hollow prairie -- missed that!
@fossil crystal See: https://stripe.com/docs/js/payment_intents/confirm_card_payment#stripe_confirm_card_payment-data-payment_method_options
Complete reference documentation for the Stripe JavaScript SDK.
So I cant use Elements to take MOTO card payments?
Hello,
I had issues with 3DS in Electron app, so I'm trying to redirect the user in the browser for 3DS and return back when it's ready.
I'm doing this with: {handleActions: false} and return_url.
I'm using this on stripe.confirmCardSetup, because I need this for subscription with trial period. (I do not want to charge the user directly)
My main issue: The 3DS goes well in the browser and the user is redirected back in the desktop(electron) app, but I'm not sure what else should I do to confirm the card details, because when I send the payment method to the backend, it's still not confirmed.
And, correct -- @fossil crystal the moto option can only be specified with a secret key request from your server
@fossil crystal Can you say more about your use case here?
couldn't you create a restricted key and then send the payment details to a local server? would probably require a bit more pci wise but would also probably work
or could you use tokens from elements?
@cosmic storm can you provide an example setup intent ID i can look at?
@daring lodge
hello again,
I wants to change the subscription i.e. basically the price_id and my customer has used 3D secure card at the time of subscription creation. So when we try to charge the card it will not allow and we are doing in from iOS & Android apps so whats the best approach to verify 3D secure. We know on how to create the subscription for the first time when customer purchases as we are using the stripe mobile SDK and that does the job for us.
So is there any way to invoke the 3D secure page of mobile SDK when customer needs to complete the 3D secure authentication
Yes, we're using the Stripe.js Elements "elements.create('card', ...." to capture card details on our front end for customers - and I was hoping to use the same pre-built card elements backend for our telesales staff to enter card details (requiring MOTO to bypass 3D auth).
paymentIntent, {
payment_method: paymentDetails,
return_url: 'custom-protocol://payment_callback'
}, {handleActions: false});```
```id: "seti_1JCQ4WEwfZEZrknwOSzoUMMA"```
@toxic quartz What exactly is the issue you encounter that you need help solving? When the subscription is initially set up the card should be ready for future off session payments (though authentication can always be requests by the bank).
@daring lodge when I try to change the price_id on the subscription and if the card is 3D secure one then its not updating my subscription
@fossil crystal There's nothing stopping you from still using Elements with Stripe.js to capture payment details and tokenise (with a PaymentMethod). You would just need to do server-side confirmation to use the moto parameter
@toxic quartz Are you changing the billing cycle, or explicitly requesting an immediate payment?
immediate payment
@toxic quartz Can you share the subscription ID?
sure
@cosmic storm That setup intent looks to have been successful, so what are you looking at that suggests to you it is unconfirmed?
Subscription: sub_Jiu3Fh1T2VAULM
Subscription Item Id: si_Jiu3PRuAIpuC37
Hi there!
https://stripe.com/docs/connect/oauth-standard-accounts here i read
"Starting in June 2021, Platforms using OAuth with read_write scope will not be able to connect to existing accounts."
but here https://stripe.com/docs/connect/oauth-changes-for-standard-platforms i read
"Platforms that use read_write will be able to connect to the userβs existing account as long as theyβre the first platform to connect."
What is the truth? I tried in test mode and i can connect an existing account but i'm not sure if it is safe to use in prod.
Use the OAuth connection flow to allow a Standard user to connect to your platform.
Learn about the changes Stripe is making to OAuth for Standard Connect.
Thank you, im a little confused on when to specify the MOTO flag however - are there any examples online somewhere about how to achieve this? Surely this has to be specified before the "stripe.confirmCardPayment" when the card button is pressed - as this would invoke the 3D auth checks!?
The backend returns "The payment attempt failed because additional action is required before it can be completed.", so I guess something should be changed in the process. It was working well with {handleActions: true}. Is the payment method id the same after the 3DS validations, or should I refresh/take it again somehow from the sdk?
@toxic quartz This request looks to have been successful: https://dashboard.stripe.com/test/logs/req_uRXLQ31tEjvHDC
And the related latest_invoice appears to have been created and paid as expected, so what part of this do you consider unexpected?
@cosmic storm I see what confirmation that leads to an action required state, yes, but you're handling that and its ultimately successful.
@fossil crystal You'd not use confirmCardPayment in this case as the moto parameter can only be passed server-side. The example at https://stripe.com/docs/payments/payment-intents/moto is the best available right now
But instead of passing raw card details, you can use createPaymentMethod from Stripe.js with your Elements form and pass the resulting pm_xxx object when creating the PaymentIntent
Thank you, ill try to figure it out and come back to you!
@fossil crystal Let me know!
@daring lodge
here is the one I am looking for
Subscription Id:sub_Jnliie7cZ56kJ5
Old Price Id: price_1J8k8ODwblwKLRf7kk3R4fg6
New Price Id: price_1IziDjDwblwKLRf76AkEAv6R
https://dashboard.stripe.com/test/logs/req_mqyrh3uXm9EwCi
this is the one
Hello, i'm looking for someone who can install "Oxxo Payment" on my Stripe account. It's very urgent, I'm ready to pay. Thank you https://stripe.com/docs/payments/oxxo/accept-a-payment
Learn how to accept OXXO, a common payment method in Mexico.
@toxic quartz ok taking a look at that one, just a min
@wraith gorge This channel is to help developers building with Stripe, not to find a developer. You can take a look at Stripe's partner page for expert service partners you can contact to help you build with Stripe:
https://stripe.com/partners/expert-services
Ok thank you
@toxic quartz So in this case the update was still successful: https://dashboard.stripe.com/test/logs/req_mqyrh3uXm9EwCi
But now you have an open/unpaid invoice to resolve: in_1JCQSEDwblwKLRf7gfoed5rc
You received an invoice.payment_failed event related to this: https://dashboard.stripe.com/test/events/evt_1JCQSFDwblwKLRf7IF5dUHh9
And one for payment_action_required: https://dashboard.stripe.com/test/events/evt_1JCQSGDwblwKLRf7hdpBaGoZ
You'd do this by retrieving the invoice and using expansion to include the payment intent object:
https://stripe.com/docs/api/expanding_objects
const invoice = await stripe.invoices.retrieve(
'in_1JCQlDLt4dXK03v54c2cVMgc',
{expand: ['payment_intent']}
);
Then use the client_secret with Stripe.js confirmCardPayment
Complete reference documentation for the Stripe API. Includes code snippets and examples for our Python, Java, PHP, Node.js, Go, Ruby, and .NET libraries.
thanks @daring lodge
I will follow the steps and try with this one
just out of curiosity, is there any demo available on github which I can see
@toxic quartz I don't think the sample app includes this part currently, but it's covered in the documentation here:
https://stripe.com/docs/billing/subscriptions/fixed-price#manage-payment-authentication
Learn how to offer multiple pricing options to your customers and charge them a fixed amount each month.
Hi, I'm quite new to stripe, so please forgive me for the question. Is there an API to get the payout associated to a payment intent?
In the GUI I can see the payment intents associated to every payout, but I would like to get them programmatically
Thanks!
@tame fog Hey there! Given a payout ID you want to see all of the payments that are included in that payout? Is that right?
@daring lodge correct!
and, if it possible, the reverse: given a pyment intent, get the associated payout (if any)
Hi, that worked great thank you! I assume it works as everything went through ok and it did not complain about the MOTO/confirm flags. I cant see in the dashboard how to discern MOTO from non MOTO transactions so i'll have to assume it works as it never prompts me for 3D auth even when enabled. Probably used my card too many times on this machine π
@tame fog The latter case is a bit tricker, but payout -> payments is supported directly via the API. You'd start by listing balance transactions filtered to a given payout and then use expansion to get the charge/payment intent related to each BT:
https://stripe.com/docs/api/balance_transactions/list#balance_transaction_list-payout
https://stripe.com/docs/expand/use-cases#charges-in-payout
Complete reference documentation for the Stripe API. Includes code snippets and examples for our Python, Java, PHP, Node.js, Go, Ruby, and .NET libraries.
Learn how to leverage expand to perform common tasks
@tame fog you can expand that example above using expand with data.source.payment_intent to get the PI objects
@daring lodge thank you for the hint, I'll check it but I'm sure it will work! π
For the "reverse" (PI to payout) we need to use expansion to first inspect the specific balance transaction for the available_on date.
https://stripe.com/docs/api/balance_transactions/object#balance_transaction_object-available_on
This is the same request as when looking at fees:
https://stripe.com/docs/expand/use-cases#stripe-fee-for-payment
But then you'd look at available_on to get the timestamp.
You then use that date to list all payouts on that day using the gte and lte created filters (gte set to expected payout day, lte set to the next day):
https://stripe.com/docs/api/payouts/list#list_payouts-created-gte
This might include multiple payouts, so you'd need to iterate through them and do the expansion we looked at first to see which contains the payment intent you're interested in.
Complete reference documentation for the Stripe API. Includes code snippets and examples for our Python, Java, PHP, Node.js, Go, Ruby, and .NET libraries.
Learn how to leverage expand to perform common tasks
Complete reference documentation for the Stripe API. Includes code snippets and examples for our Python, Java, PHP, Node.js, Go, Ruby, and .NET libraries.
(for @tame fog π )
@fossil crystal Are you using a specific test card when creating the PaymentMethod?
@trim mountain That screenshot looked like it might have included personal information so I deleted the message, can you share just the error or a redacted image? Ideally a failing request id would allow us to see what was happening:
https://stripe.com/docs/api/request_ids
Complete reference documentation for the Stripe API. Includes code snippets and examples for our Python, Java, PHP, Node.js, Go, Ruby, and .NET libraries.
No real card on our live account.
@fossil crystal You shouldn't be doing test transactions in live mode. We provide test cards to simulate most scenarios: https://stripe.com/docs/testing
Learn about the different methods to test your integration before going live.
@daring lodge
can we use the same client_secret and pass it on to handleNextAction of the mobile SDK to authenticate the charge
@toxic quartz Yep, you'd get it from the payment intent associated with the invoice, and in fact you must use this one.
Thanks, will do in future. One more question:
A customer just used Elements on our site and the "uncapctured" transaction shows a Related Transaction with the "Failed" error of: The bank required 3D Secure authentication for this payment. Update your integration to set up 3D Secure authentication.
Yet above this in the PI the timeline shows: Payment started, 3D Secure authentication succeeded, Payment authorized, but not yet captured, This payment was verified with 3D Secure and is protected from being disputed for fraud
Should I manually be requesting 3D auth always via the URL: https://stripe.com/docs/payments/3d-secure
Learn about authentication to reduce fraud and meet regulatory requirements.
@fossil crystal Can you share the pi_xxx ID?
pi_1JCRRlISraJyVicTeye0KYQZ
@daring lodge
thank you so much, it worked on the Mobile SDK and its done. Thanks man
@hollow prairie Mind you we just captured the PI and it went through ok, so not sure why it shows a Failed related transaction
@fossil crystal Where specifically are you seeing a failed transaction?
@fossil crystal Just double checking something
@fossil crystal Ok, so that related payment is the initial attempt to charge the card before the bank responded requiring authentication. So your integration handled the authentication_required flag, directed your customer through the 3DS flow and then we re-attempted a successful 2nd charge
Here you go!
@trim mountain hello, I've stepped in, can you bring me up to speed really quick?
CORS problems. I get this error message. "Access to fetch at 'https://www..com/create-payment-intent.php' from origin 'http://www..com' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: ". I'm not sure how to even ask a reasonable question about this
Hi all, I'm looking for help with building a custom Stripe integration for marketplace loyalty. Any developers/teams that have some experience and capacity?
How can I add a loading to the card input element using react stripe ? sometimes it takes to long to load the inputs please need help
@ancient kraken hello! are you looking for answers to any technical questions you have? Or looking to hire developers who have built Stripe integrations, in this channel?
Open to both!
@dense pebble looks like your server isn't set up for cross origin requests, I would recommend searching that error message and learning more about CORS and allowing your webpage origin to make a request to your server
Hi, I tried many things, but now even after I switched to {handleActions: true} all the cards that require 3DS just fail. We switched back to previous version of our app that was working and it's failing now. It's interesting that we are successfully redirected to the Visa 3DS page and click "Confirm". You can check the request/response here https://dashboard.stripe.com/test/logs/req_1TOrjqOOakayIs
@wise nebula hello, looking
@cosmic storm hello, answering your question, one sec
@ancient kraken just to clarify, this channel has engineers operating here who work at Stripe (like myself), we're happy to answer your programming questions about Stripe if you're building an integration yourself. For hiring developers, would recommend reaching out to external freelance solutions like Toptal or Upwork who have developers who build websites/integrations.
@bold basalt Thanks. The header needs to be added. Where should I add the 'Access-Control-Allow-Origin header? Is this CORS because I'm switching from https to http? Also it seems to be intermittent which is puzzling
Thanks @bold basalt , is there an official directory for Stripe developers/agencies our team could reach?
@ancient kraken I think this is what you're looking for: https://stripe.com/partners/expert-services
Perfect, thank you. π
@dense pebble not sure I can answer that exactly, this is mostly on your integration outside of the Stripe parts specifically (just a webpage making a request to your server), I would recommend learning more about CORS properly, make the change then test it thoroughly.
@wise nebula you could do something like https://github.com/stripe/react-stripe-elements#loading-stripejs-asynchronously to display loading and hide the loading indicator once Stripe.js script has loaded in your window and you can update some state to handle that
@cosmic storm ok so a couple of things
@cosmic storm you should be using handleActions: true . What that does is, it handles authentication and also attempts a charge/payment. So what is happening is, your customer is authenticating and the subsequent charge is declining.
With handleActions: false, you're only authenticating but not actually creating the payment. The request you shared did not have a successful Subscription, the status is incomplete.
So the question becomes, why do you think a declining charge is a bad thing? Are you expecting it to work? and if so, it could just be that you're using a test token that always declines a charge? which would be expected?
@bold basalt Thanks for your help. I'm following the Stripe 'custom client' example. JS is requesting PHP which attempts to creates the Payment Intent. As I understand JS is on the browser, requesting PHP from Server. I did read some about CORS error before asking. I'm confused. Am I attempting to tell the browser to allow the server to make a request? If you have suggested recommended resources on CORS. Thanks
Now I'm testing with handleActions: true. What do you mean by "test token that always declines a charge", how can I check if this is the case. Because with that I test, I expect the payment to succeed.
@dense pebble this might help you: https://medium.com/@baphemot/understanding-cors-18ad6b478e2b
You most likely have to allow-list your client origin on your server
@cosmic storm ok lets take a step back. handleActions: true should be the default and is what you should be using.
So now, with that said, you are expecting a payment to succeed but it isn't. So let's start there, send me a PaymentIntent or Request ID where you used handleActions: true and it didn't work, and I'll trace why
@bold basalt Thanks. I will study that. I found the idea that I would give client origin to server a bit confusing as how can I know the client origin? But ... I'll read what you sent and hopefully that will have all the answers! Thanks for your help
In this request I used handleActions: true -> req_1TOrjqOOakayIs
@cosmic storm looking one sec
@cosmic storm so you haven't used handleActions here at all thought right?
You created a Subscription, passed off_session: true, which created a Charge on the PaymentIntent but that declined due to requiring authentication, and you haven't confirmed it client-side at all... so where is handleActions coming into play here, I don't see the PaymentIntent confirmed client-side, it is still in status: requires_action
I'm not sure I understand, but in this case an iframe was shown in the front-end and I clicked the "Confirm" button on the Visa 3DS page.
@cosmic storm what are you using on your frontend, what function?
@cosmic storm from Stripe.js i.e. are you using confirmCardPayment() ?
paymentIntent, {
payment_method: paymentDetails
});```
Hello! Just catching up since @bold basalt has to step away. Can you clarify - why are you using confirmCardSetup with a PaymentIntent? confirmCardSetup is meant to be used with SetupIntents
Just checked and this is naming issue, the intent there is SetupIntents
Gotcha π and just so I understand - you're using a setup intent to create + configure a payment method for future recurring charges, updating the customer's invoice_settings.default_payment_method to that payment method, and then attempting to create a subscription. Is that right?
Good afternoon, I'm still having difficulty with my stripe banking account connection.
Hello! Can you be more specific - what issue are you having?
Yes we are trying to configure the payment method for subscription with trial period, but we are not changing the invoice_settings.default_payment_method is this required?
It's not required - it just depends on what you're trying to accomplish with your integration. If you're creating a subscription and default_payment_method (see https://stripe.com/docs/api/subscriptions/create#create_subscription-default_payment_method) is not set, then we'll use the customer's payment method set at invoice_settings.default_payment_method. Another question - is there a specific reason you're using the 4000000000003220 test card?
Complete reference documentation for the Stripe API. Includes code snippets and examples for our Python, Java, PHP, Node.js, Go, Ruby, and .NET libraries.
Yes, almost a year ago, my friend and I created this Stripe account and he put his name and bank originially for the transactions. The Stripe account is connected to my website for modeling and subscriptions. He's been going through some mental hardships so he's in and out of care. So we decided for me to just take over completely until he gets back on his feet. So we put my bank account to the stripe account so that way when we do payouts and transactions it'll go to my account. However, every time we try hitting payout it just says contact support. We've both done this already and explained the situation through support email with stripe. He even contacted Stripe saying that I'm taking over as primary and administer and he's leaving the account completely.
Have you heard back since you emailed support at Stripe? What did they say?
We are passing the payment method created by the front-end, so it shouldn't be and issue. We are using this card, because we have issues with 3DS and this card requires 3DS.
Their email said we will be calling D**** C**** for confirmation during certain times etc. to confirm everything. I talked to my friend D**** and he said he answered and confirmed everything. So, I went on Stripe account today to see if it works and nothing still. However, it does show that I am the only one on the account and administer.
I looked at one of the requests (req_1TOrjqOOakayIs) you sent over earlier, and it looks like you're not actually setting default_payment_method when you create the subscription so it's still using the customer's default. If you're trying to test out a flow where you set up the card for 3ds once and subsequent transactions don't need 3ds then you should be using a different card - the *3220 test cards needs 3ds for every single payment.
Unfortunately, I can't help with account-specific issues like that (this is a channel focused on technical/developer issues), but if you reply to your original email with support they should be able to confirm whether everything is set up correctly.
Okay thanks.
Thank you for your support, can you suggest me which card should I use for subscription authorisation?
Hi there!
Hello! I am a web dev and I want to build custom eCommerce websites for different customers. I have the following questions: Can I use one single stripe account to manage all of the integrations with all the customer websites? Or each of the customers are gonna have to create an account for them?
You should be using the 4000002500003155 test card - if it's been set up properly the card will require authentication for one-time payments, but not for subsequent off-session payments.
Is there a possibility to get the fees for transaction programmatically
I'd suggest setting up different accounts for each of your customers since an account can typically only have one bank account (per currency) for it's payouts.
Hello! Are you trying to retrieve the stripe fees from a transaction after it's been made?
Yes
Alright thank you!
And in the creating proccesee itself
Well during creation the fee would be something you'd have to calculate yourself based on our pricing model (https://stripe.com/pricing). For retrieving the fees after payment, you'd find the associated balance transaction and check fee (see https://stripe.com/docs/api/balance_transactions/object#balance_transaction_object-fee)
Complete reference documentation for the Stripe API. Includes code snippets and examples for our Python, Java, PHP, Node.js, Go, Ruby, and .NET libraries.
Thanks!
Is it including all the fees?
What do you mean?
Are you asking whether https://stripe.com/docs/api/balance_transactions/object#balance_transaction_object-fee has all the fees? From what I understand, it'll include the stripe fee (2.9 % + .3 cents), taxes, and the application fee
Complete reference documentation for the Stripe API. Includes code snippets and examples for our Python, Java, PHP, Node.js, Go, Ruby, and .NET libraries.
Cool thanks!
Thank you, it worked with this card.
Hello how are you? I have an account on Squarespace, with a store, and I would like to know how I can add the payment method via bank slip
Are you integrating directly with Stripe, or only using Stripe through Squarespace's integration? If you're using Stripe through Squarespace, that would be a better question for them since we have no control over their integration
Hi is there a JS SDK to use BBPOS WisePad 3 Reader
ok, i'll try with Squarespace!
Yes, I believe so - are you having issues getting this to work?
anyone help me please
no but i want to make sure
can anyone check please or just make sure please
If you want to be sure, then I'd suggest you contact support at https://support.stripe.com/contact
Find help and support for Stripe. Our support center provides answers on all types of situations, including account information, charges and refunds, and subscriptions information. Get your questions answered and find international support for Stripe.
does stripe support virtual bank like monzo ?
I believe so, but again - if you want to be sure you should contact support. This is a channel focused on developer/integration questions, and I don't know the specifics fo which banks we can/can't support
RE: JS SDK on BBPOS WisePad 3 Reader, any plans to add that on if not available now?
Currently there is no JS SDK for the WisePad 3, and I don't know of any specific plans/timelines to add this.
What does the card_decline_rate_limit_exceeded error code mean?
Let me check on that - give me a few minutes
@silk hornet From our docs (https://stripe.com/docs/error-codes): "This card has been declined too many times. You can try to charge this card again after 24 hours. We suggest reaching out to your customer to make sure they have entered all of their information correctly and that there are no issues with their card."
If you are from the USA, and you want to pay through stripe, do you have to be able to pay in ireland in order for you card to be accepted?
I don't believe we have any kind of restriction like that - but is there a specific reason you're asking this? Are you seeing some kind of unexpected behavior?
Yes. I am trying to pay an invoice and it keeps saying card decline rate limit exceeded. I don't know why it would be declining my card. I have already contacted my bank and they said there is no issue.
Have you tried reaching out to the merchant who issued the invoice?
What did they say? They (the merchant) should be able to contact support (https://support.stripe.com/contact) with details about the invoice for us to dig in further
Find help and support for Stripe. Our support center provides answers on all types of situations, including account information, charges and refunds, and subscriptions information. Get your questions answered and find international support for Stripe.
Hi. Iβm a developer building out a Vue-based application that will integrate with Stripe to handle automated invoicing for metered subscriptions. The Stripe API docs are excellent, but some things regarding the metered billing seem to be unclear or missing.
Questions: What happens with the subscription when users change metered products in the middle of a billing cycle? We are trying to figure out what Stripe does and what we have to do for various configuration options. What is the default behavior? Does Stripe automatically add the new subscription items to the account and then remove the old ones once the new cycle begins?
The Squarespace website informed me that they are still not accepting payment in bank slips from Stripe. He informed that he will suggest the site's developers. Here is my suggestion, because, as Stripe now accepts bank slips for clients here in Brazil, it would be interesting if Stripe connected with Squarespace for bank slips.
Hello! When a metered billing subscription is changed to a new price in the middle of the cycle, no prorations will occur and the invoice that is cut at the end of the cycle will be calculated as if it was on the new price the whole cycle. If you want to calculate the cycle as partly being on one price, and partly being on the other there are some workarounds to do that, but it's not something that happens automatically
It would be all up to Squarespace to get this supported on their end since they are the ones building and controlling their integration.
Sorry to bother you again, but can you suggest me where to find more information on custom 3ds handling aka {handleActions: false}. Because everything started by one payment provider that requires unsatisfiable Content-Security-Policy inside our electron app. We tried to show the 3ds in the native browser, which worked well, but I'm not sure what to do after the 3ds is confirmed and the user is returned back in the app.
Oh yes! The clerk said that they will suggest to the developers, but that they cannot guarantee anything.
Have you taken a look at https://stripe.com/docs/payments/3d-secure#when-to-use-3d-secure - that doc has an example that uses handleActions: false
Learn about authentication to reduce fraud and meet regulatory requirements.
I don't know if I can suggest it here, but because I believe that Stripe and Squarespace are partners, I leave here the suggestion for payment via bank slip at Squarespace.
Squarespace handles their integration. Any requests for them to support that would need to go through them. We support it if they want to add it.
Thanks for the quick response @dim hearth To be clear, if a customer signs up for a subscription with metered products A and B and two weeks into a billing cycle decides to upgrade to metered products C and D, Stripe does not keep the usage data that we already posted for A and B and use it for the current invoice? Ideally, I would expect that all usage posted for products A, B, C and D for a billing cycle would be honored.
One of the shops connected to the other account by mistake and we want to disconnect and connect it to the right account
Can you send me the link to do so?
What type of account is it? Standard/Express/Custom?
It depends on how you're doing things - one way to update the products/prices of a subscription is by changing the price ID for that particular subscription item (see https://stripe.com/docs/billing/subscriptions/upgrade-downgrade#changing). So if you were to update subscription item for product A -> product C and update the subscription item for product B -> product D, then the usage would be preserved because usage is tied to a specific subscription item (not a product). The usage for the subscription item for product A would not be the usage for product C. Does that make sense?
Learn how to upgrade and downgrade subscriptions by changing the price.
Hi am I right in thinking that using BBPOS WisePOS E Reader, an intent cannot be created directly from the terminal itself? A checkout page is always required on the web?
You always need a backend integration to create the PaymentIntent, correct. There's always code involved on a server somewhere.
Would it be possible to create the payment intent directly from the terminal e.g. key in the amount on the terminal?
No, that's not possible. You have to follow https://stripe.com/docs/terminal/payments
Prepare your application and backend to collect payments using the Stripe Terminal SDK.
So just to confirm, merchant opens app/webpage and creates an intent from there then in-person transaction is processed via terminal.
The PaymentIntent is created on the backend (which could be triggered by a page opening, sure). That doc linked above walks you through the necessary code.
Thanks, I just wanted to double confirm.
Standart
Use the OAuth connection flow to allow a Standard user to connect to your platform.
You are a treasure. Everything worked after I called stripe.retrieveSetupIntent, Thank you.
After talking with Stripe support last week in an attempt to make sure that we were configuring our products/prices correctly, this is what we did. We created four products (prod_), A & B for the βProfessionalβ plan and C & D for the βEnterprise" plan. Each product has exactly one metered price (price_). Users can only have professional (A & B) or enterprise (C & D).
- Have we configured our metered products in a way that youβd recommend?
- Can we use the
updateapi as you suggested with our current configuration?
const subscription = await stripe.subscriptions.retrieve('sub_49t...');
stripe.subscriptions.update('sub_49t...', {
cancel_at_period_end: false,
proration_behavior: 'create_prorations',
items: [{
id: subscription.items.data[0].id,
price: βprice_CBb...',
}]
});
Hey, I am using the new stripe-react-native library
it's working and running fine in the simulator
but when I try to archive it
I keep running into: "Undefined symbols for architecture arm64"
I have tried A LOT of different ways to fix it but I can't figure out the right answer
Seems fine to me, are you getting the expected results when you use that in test mode?
This is the closest issue I have found for stripe-ios: https://github.com/stripe/stripe-ios/issues/1266 but I am building for iOS 12.1 SDK so the solution doesn't work for me
I'm concerned that this might be the issue:
and therefore I can't use the library without it being rebuilt
I suspect it's unrelated to the Stripe library but no way to really know at this point. Is the stacktrace leading you back to the Stripe lib?
so it seems stripe related ... and this was the main change I made (moving from tipsi-stripe to stripe-react-native) before this issue
check that link in the readme above, if you haven't tried that already
Thanks, slightly different, hence it not showing up in my searches, but I agree, similar enough, I'll check it out
we were puzzled at first because we saw four entries (A, B, C, and D) in a summary somewhere (forget the page at the moment) when we used the update api. we will try it again. Q: should we expect to see line items in the invoice for A, B, C and D if a user switched plans as described above for the current invoice, and then only C & D starting with the next billing cycle?
You'd see proration items for the old and new prices, and going forward only the new ones, yeah.
but. these are metered subscriptions - no proration officially, right? but you are saying that we are effectively implementing a workaround?
I suggest trying exactly what you want in test mode and you'll see exactly what you get on the new invoices.
Thanks!
I see this is to disconnect
How do I connect it?
to the new one
Integrating with Standard accounts is the fastest and easiest way to get started using Connect, since Stripe will handle the majority of the user experience and user communication.
thanks @sick talon and @dim hearth
I've given this a go, but I didn't have any swift entries in the search paths and I already had a file to create a bridging header
do you have any other recommendations
?
as you can see it does look related to the stripe sdk
Where are you getting stuck in that readme's troubleshooting steps? After following the steps (adapted for your specific architecture error) does anything change?
There was nothing to delete from the library search paths because there wasn't anything mentioning swift
and I already had a file for a bridging header
so I've not been able to change anything
OK. I've asked someone with more RN experience to jump in here, they'll be by in a bit if you can hang tight.
Thanks very much @sick talon
Hello. I'd like to get in contact with a technical resource from Stripe to walk through a specific use case. I'm a developer for a small startup and I've put together an early implementation, but I'd like to verify that I'm following best practices. Our solution is using quite a few stripe products in conjunction with each other (Connect, Checkout, Stripe Tax, Subscriptions, etc.), so I'd love to get an expert's opinion. Any advice on how I can chat with someone?
We can answer specific individual integration questions here if you have any.
@atomic leaf hello, what version of Xcode are you on? And what version of stripe-react-native are you on?
Hi @bold basalt , Thanks for joining
I am on xcode 12.5 and the latest stripe-react-native 0.1.4
I've tried a few different versions of xcode though
just to try to make it build
I have been trying for two hrs now to get my info out so I can sign up with you to get conncted with Auto trader I do not know what I am doing wrong I have to complete this soon buyer is getting impatient. I am not all that great with stuff like this I need helpt please.
:question: @knotty widget Have a non-technical question, account issue, or need one-on-one support?
We wish we could help, but this community is focused on developers and technical discussions. Our support team will be able to assist you better than we can: https://support.stripe.com/contact
@atomic leaf heading to a meeting, respond in a bit
thanks hmunoz
any help would be really appreciated
it's nearly 10 in the evening here so I might not be around but I'll follow up in the morning
Background
Our product is similar to Stitch Fix or Trunk Club. Customers sign up to a monthly subscription (through Stripe Checkout), and once a month they are shipped products from various product suppliers. The product suppliers sign up separately with Stripe Connect. Customers are charged a reoccurring subscription fee for our service, and separately once a month when suppliers send them goods.
Questions
- For the once per month charge, the idea is to create a transaction between the connected supplier account and the customer. We'd like to reuse the payment method and shipping address the customer entered in the checkout session when they created their subscription. The only way I have found to do this is to create a Payment Intent and attach the payment method from the subscription. Is this the best / only way?
- Is it possible to use Stripe Tax alongside a Payment Intent charge? I've specified automatic tax enabled for the customer subscription. Can I do something similar on a payment intent? We need to collect Tax and set Shipping for the once per month charges, but I'm not sure the best way to go about doing that. I think I may be misunderstanding the payment intent object.
the idea is to create a transaction between the connected supplier account and the customer.
Are you saying you want a charge to appear from the connected account on the customer's bank statement instead of from your platform?
I want the money to flow from the customer payment method directly into the connected account's supplied bank.
Or as close to directly as possible
So I think the answer to your question would be yes?
Sure, but whose business name shows up on the customer's bank statement? Your platform, or the connected account's?
Our platform for the reoccurring subscription fee. Connected account's business name for the individual once per month transactions.
You need to create separate PaymentIntents for each of the "individual once per month transactions" then. You can either use Destination Charges [0] with on_behalf_of [1] or you can use Direct Charges [2] by sharing the PaymentMethods to the connected accounts [3].
[0] https://stripe.com/docs/connect/destination-charges
[1] https://stripe.com/docs/connect/destination-charges#settlement-merchant
[2] https://stripe.com/docs/connect/direct-charges
[3] https://stripe.com/docs/payments/payment-methods/connect#cloning-payment-methods
With Connect, you can create charges on your platform account, take fees, and then transfer remaining funds to your connected accounts.
With Connect, you can make charges directly on the connected account and take fees in the process.
Considerations for Stripe Connect platforms adding support for new payment methods using the Payment Methods API.
Just for extra information @bold basalt if I add arm64 as excluded architectures then the build progresses but I get a new error: "frameworks.sh: line 131: ARCHS[@]: unbound variable"
and I feel like if I trying to create an archive I shouldn't be excluding arm64 architecture?
(I am fairly new to react native development)
also I've tried a variety of fixes when reaching that error but again I couldn't find a solution
thanks again
Great. I have it setup now to use Destination Charges, but I think Direct Charges is more in line with our business model. I assume Destination Charges = our business name on the customer's bank statement and Direct Charges = connected account's business name? This is how I've got it coded now. I'm pulling the payment method from the customer's subscription through the Stripe.Subscriptions API.
I'm not very good at react native and @bold basalt is still in their meeting, but I just wanted to ask - do you have bitcode enabled? Sounds like someone else was seeing this issue because they had bitcode enabled, and got it to work by disabling it
My only remaining question is on the amount. I'd like to leverage Stripe to help calculate the total amount I should be charging on the Payment Intent. We've got products and shipping rates entered in Stripe and we're signed up with Stripe Tax. Can I leverage those services to help me calculate Shipping and Tax amounts and add it onto the total?
EDIT: Similar to how I'm specifying automatic_tax, pricing, etc on stripe.checkout.sessions.create()
Destination charges can also reflect the connected account's business name if you use on_behalf_of
Thanks @dim hearth for the suggestion
I've just checked and enable bitcode is no in my build settings
I'm going through the oAuth flow using test mode and it's asking for an EIN. Are there test EIN's I can use? This page (https://stripe.com/docs/connect/testing-verification) lists it as all zeros (via API) but that doesn't work (FYI this is for Connect).
I believe you can also use Stripe Tax with the Payment Intent by setting automatic_tax similarly to how you set it up for a checkout session. Do you see automatic_tax in the API ref under payment intent (https://stripe.com/docs/api/payment_intents/create)
Typically when testing the oauth flow you should be using the "Use test ..." buttons to automatically use test mode data. Do you have a screenshot of what part is not working?
@dim hearth I tried that but let me attempt that again. I think it failed with some generic message.
When you say "Use test..." do you mean "Skip this form"?
@dim hearth I should mention the end goal is to test w/ Stripe Terminal (not sure if that matters...)
Hmm... I don't see anything for automatic_tax in the API ref.
Maybe I'm missing something
Yeah sorry, "skip this form" (that's what it is for standard accounts, express accounts have the "use test ..." buttons)
I get "There was an error connecting to your Stripe account" (which is on our end) So far I don't see a Stripe error but not sure I would since the account is "anonymous" right?
Hmm... it might be that having it enabled for Payment Intents needs a separate gate - I'd suggest contacting the folks at support (or whoever you contacted to get gated into the taxes beta) and ask whether this is something they intend to support.
I wonder if I can see any errors on my end - do you have a request ID or object ID I can take a look at (it can be anything, just need something to find your account on my end)
I assumed I was doing something bone headed so I don't have that in front of me. Let me see if I can find something. The only thing immediately available is the parent client id.
hi π is there any way we can make some sort of artifact in stripe that an invoice was "refunded out of band"?
Hello! I think credit notes are probably what you're looking for https://stripe.com/docs/api/credit_notes/create
I don't currently have a request id as it's not part of the current JSON response but I can tell you now I'm getting "invalid_grant" with "Passed in livemode API key but authorization code only supports returning test keys" which clearly seems on our end. So I'm going to look into it further before I ask more questions.
@sand tusk ah nice find and yes it seems you're using the sk_live_123 to finish the connection instead of the sk_test_123
Gotcha yea I'm just testing but that does look like the issue. Thank you both!
oh yes, this might work... too bad credit notes don't play nicely with netsuite...
Hi, I have a query regarding the Connect product. what are the limit and requirements on charge and transfers. I believe charge will pull money into the Platform account and transfer will move money to the connected account from the Platform account. A link to the specific page in the documentation should also be fine.
@rare wave I'm not sure what you call "limit and requirements". https://stripe.com/docs/currencies#minimum-and-maximum-charge-amounts covers the min/max charge amount, is that what you are after?
Thanks@crimson needle, its helpful. I am also looking for, if there is any limit on how much money the platform account and a connected account can hold if the transfer or payout are not triggered.
no limit that I have heard of no but you're unlikely to hold tens of millions of dollars and not want to be paid out right?
there is a limit on how long funds can be held without being paid out, though: https://stripe.com/docs/connect/manual-payouts
stripe is not a depository institution
fair though it doesn't say anything about your own balance
and you could always pay out regularly but just get more money each month from new sales
my non-lawyer, non-binding read of that is that it applies to balances both in the platform & connected account
but really the right place to ask a question with that level of specificity is support
yep totally though my read of the question is that it's mostly theoretical
@crimson needle Thats correct, was just making sure that we are not building something which might break.
Thanks @stark tide - Though we have enabled automatic payout for our customers but keep it manual for customers who do not go through the IDV. Probably we will have to build a flow to refund money back after certain period to the source from which the charge was created. Please correct if my understanding is not right
Is it possible to mask credit card in stripe js v3 ?
Hey, so I wanted to ask, I run at tutoring business called Tutorvise with multiple tutors in my team who also do lessons. I want to automate my process with the ability for parents/students to book lessons with their tutors through a calendar system and for it to generate automatic invoices that mean upfront payment prior to the lesson. Is this possible through Stripe and Stripe connect?
I already replied in the other channel though to that question
yes all of this is doable with Stripe Connect
Parents/Students would be customers in your platform as they are going to pay for lessons. And Tutors will have their own Stripe account connected to your platform so that they can receive funds. You likely want to use Express accounts https://stripe.com/docs/connect/express-accounts
Hey team! With a test acss_debit automatic payout, if my payout last week Friday was scheduled for Monday the 12th (yesterday), then yesterday itwas changed to be scheduled for Tuesday the 13th (today), now today it says scheduled for Wednesday the 14th. Whatβs happening here? π€
Thanks man. However, if I'm not using an external platform but my own website is this possible. I'm aware that I'll need to code in and design
:question: @mossy cape Have a non-technical question, account issue, or need one-on-one support?
We wish we could help, but this community is focused on developers and technical discussions. Our support team will be able to assist you better than we can: https://support.stripe.com/contact
it's not technical at all though. It's just about why payouts are not happening on your account and are shifting dates, which is purely an account question
@echo spindle yes, you are the platform in my sentence. Like you are the business facilitating accepting payments from parents/students on behalf of tutors
yes okay that makes sense thanks.
hey! i'm trying to build a platform that connects to my user's Stripe accounts. is OAUTH the preferred method?
Oauth isn't the preferred method - the recommended flow is to use out hosted onboarding flow (like we talk about here https://stripe.com/docs/connect/standard-accounts). However, if you're trying to connect already existing Stripe accounts (and not creating them from scratch) then Oauth is the recommendation (since hosted onboarding requires you to create a new account). If you're working on connecting existing accounts I'd recommend you read these two links:
Learn about the changes Stripe is making to OAuth for Standard Connect.
This reference lists available public methods for our OAuth endpoints for Connect.
I guess the reason I ask, is I saw the note: "Starting in June 2021, Platforms using OAuth with read_write scope wonβt be able to connect to existing accounts."...so it seems like I won't be able to read/write to existing accounts?
I guess my goal is to connect to existing accounts, read/write data within those accounts - mainly "read". It seems like this is no longer possible.
Yes, that's true - If you need read/write access to the account it works fine if you're the first platform they connect to, but won't work if they are already connected to a different platform
That seems like a bummer to only have one app be able to read/write on an account
It's done for security reasons mostly. For instance in the scenario that you have payments created by one platform (with can contain sensitive info) should a 2nd platform be able to see and manipulate those payments on the connected account?
I mean...you guys are the pros at this...so I'm sure this change was well thought out. But I would think an Account owner might want to connect two trusted apps to write data. One app to write to an account seems like a huge limitation
So, if I understand this properly, you could only connect one app/extension to write data to your account (https://stripe.com/partners/apps-and-extensions)
I assume there's hundreds of apps out there in that list
The problem is that in that scenario we're one malicious platform away from a disaster. Say a malicious platform decides to have a look through your payments and delete/cancel all of the ones made via a rival platform. Restricting standard accounts to only one platform with read/write limits that vulnerability
Probably shouldn't connect an app that does that π Doesn't seem like a Stripe issue, but something related to a Stripe accountholder knowing who to trust and who not to trust
True, but it is up to us to try and limit the possibility of vulnerabilities like that as much as possible
For sure...always good to have some oversight. Even having some sort of app/extension approval process would be rad and help get around this to some degree. This limitation could prevent you from using a storefront app and another app to help manage shipments. It is what it is...just seems like a huge limitation and removes the endless possibilities apps and extensions could bring
Well in that example the shipping app wouldn't necessarily require write access right? I agree it's a huge change but I can confirm that the decision wasn't taken lightly
Sure - might not be the best example. but you might want to be able to update a customer's shipping address via the shipping app for convenience sake
That said...I'm connected via oauth and using something like this... Stripe::Product.list({limit: 100}, {stripe_account: account_id})
but it only seems to only pull a Product I created via the oauth connection...not only created in the Stripe Dashboard. am i crazy?
@split mirage This is standard connect right?
Should be
I thought you would get all the products on a connected account, let me test this real quick
I would think so too...but just showing 1 of 2...the one i made via API instead of Dashboard
Hello, I have a problem with my webhooks. I would like to retrieve the name of the product the customer is buying but I have an error:
Uncaught Stripe\Exception\UnexpectedValueException: Could not determine which URL to request: Stripe\Product instance has invalid ID
I don't understand because it works for customerid
hey @bleak breach any luck?
Are you connecting via OAuth or Account Links?
OAuth
It's because an Invoice doesn't have a product field, so $event->data->object->product is null.
You'd want to look at the lines field instead: https://stripe.com/docs/api/invoices/object?lang=php#invoice_object-lines-object
Which represents an Invoice Line Item where you can find the product: https://stripe.com/docs/api/invoices/line_item?lang=php#invoice_line_item_object-price-product
Ok thank you
Hi there. I have made a payment through stripe subscription with trial_end param. After being charged, the dashboard displays it as Invoice. Was it not Subscrition creation?
I was going to try the read_only scope but...{"error":{"message":"Please use the `read_write` scope, or contact support@stripe.com in order to use read-only connections."}}
Hello. Is there anyway to reset the Connected App Setting. I enabled it in test mode and it took affect in both test and prod. I contacted support but after 2 hours they seem lost. I basically want to get the connected Apps tab back to the getting started page below.
I'm currently seeing this.
Did you register your connect application as a platform or an extension? https://stripe.com/docs/connect/oauth-changes-for-standard-platforms
Learn about the changes Stripe is making to OAuth for Standard Connect.
This refers to the billing_reason on the invoice. Since the subscription was already created you wouldn't get subscription_create: https://stripe.com/docs/api/invoices/object?lang=php#invoice_object-billing_reason
Complete reference documentation for the Stripe API. Includes code snippets and examples for our Python, Java, PHP, Node.js, Go, Ruby, and .NET libraries.
I don't think that's possible. Once Connect has been enabled for your account there's no way to disable it. Why do you want to disable it anyway?
I was just trying to undue something I did in test that I thought wouldn't be reflected in Production. With it on do you know if I can change it between an "extension" and a "platform or marketplace" options that it prompts me for in the "get started" options?
I don't recall if I selected platform or an extension π
Sorry took me a while to set up. I just created a product on a OAuth Standard account via the platform and the API and on the dashboard directly, I was able to get all the products created on the account
no worries. thanks for checking it out. not sure why I'm just getting 1/2. super strange
Hello again, sorry to bother you but I still can't get the subscription productid with the webhooks
I don't have an error code anymore, just the value of productid is null :/
$productid is almost certainly null. data is an array, so you'd need something like $subscription->items->data[0]->price->product. You should add logging to your code to debug this on your end
Thanks a lot, it works now, it was "[0]" that was missing π
I was looking to get some assistance integrating Stripe/Plaid into a website, can anyone point me in the right direction?
Hi Guys,
I'm wondering if Stripe has somewhere I can view orders that were made by customers in the dashboard?
Looking at the documents it seems that there is an Order object that you can call to view orders and information about them including the customer, order items, order items quantity, order amount, shipping address and etc. which is here: https://stripe.com/docs/api/orders/object
That said, I'm unable to find this anywhere within the dashboard so I can't see approved orders after they are completed.
Any help is appreciated!
Complete reference documentation for the Stripe API. Includes code snippets and examples for our Python, Java, PHP, Node.js, Go, Ruby, and .NET libraries.
I need help with invoices
When the trial expires and the subscription is inactive I lock the customer. When they enter their credit card after choosing another plan I void all outstanding invoices in order to avoid being charged for the default subscription. However I am noticing that they are not charged for the new plan and no new invoice is generated for the new plan. Any suggestions?
Have you seen these docs? https://stripe.com/docs/ach
Stripe supports accepting ACH paymentsβdirect from bank accountsβalongside credit cards. ACH is currently supported only for Stripe businesses based in the U.S. We'd love to hear about your use case, though!
Definitely don't use the Orders API, it has been deprecated for quite some time now. What exact information are you after? Payments made by customers?
yes, but it is a website built on simplebiz platform, which is somewhat similar to squarespace, so I am limited to html/javascript, or so it seems
If you don't have access to a backend then this isn't going to be possible I don't think. I'd reach out to simplebiz and see what they recommend for their platform
Hey Karbi, is this something that can be done through stripe-react-native?
yeah thats kind of what I was ending up at
Stripe won't invoice directly if any of these conditions is met: https://stripe.com/docs/billing/subscriptions/upgrade-downgrade#immediate-payment
Learn how to upgrade and downgrade subscriptions by changing the price.
Account Links are created on the server, so it doesn't really matter what your client is written in
@bleak breach I made added the 2 settings. I am waiting for the account to be locked so that I can try. By the way, for testing purposes I am using a trial of 15 minutes and the code listening to the webhook locks the account when the subscription status changes. This happens usually after around 45 minutes after the trial expires. Is there a way to speed it up?
What happens 45 minutes later, the webhook event?
@vocal wagonl. Coorect!
What do you have in your subscription settings? Is it set up to cancel the subscription after 1 failed payment after the trial period is up?
@vocal wagonl, makes sense. I don't have access myself to the dashboard. Can I check that through the API?
Unfortunately not, that's a dashboard only thing you set via https://dashboard.stripe.com/settings/billing/automatic
@vocal wagonl If it is only one failed payment it should be faster right?
Thanks, I'll keep it in mind.
I was hoping to view past orders by the customer (or all customers) and what items they had ordered, the quantity of each item, when it was ordered, the amount, etc.
What event are you listening to exactly?
Are you using Checkout? If so you can get that information from the Checkout Session object: https://stripe.com/docs/api/checkout/sessions/object?lang=node#checkout_session_object-line_items-data
Complete reference documentation for the Stripe API. Includes code snippets and examples for our Python, Java, PHP, Node.js, Go, Ruby, and .NET libraries.
@bleak breach event "customer.subscription.updated" and when subscription->status == 'past_due' I lock them.
Hello everyone!
My name is Layla and I just joined the community. I was following along with this tutorial - βAccept a payment - Create a PaymentIntent with Javaβ - trying to build a Payment Intent on the server using Java so that I can add Stripe to an ios application I am building but I am encountering an issue. The server starts just fine but when I go to test the payment intent endpoint with a curl command in the terminal I get no response. I would greatly appreciate help. I have included an attachment that summarizes the whole thing more clearly if anyone who can help wouldnβt mind taking a look. Thank you!
@bleak breach , I am still missing something. Now the customer was not charged the full amount.
Is there a way to have the invoice always generated without using proration?
Not unless the new plan has a different billing cycle anchor as the old plan: https://stripe.com/docs/billing/subscriptions/upgrade-downgrade#immediate-payment
Learn how to upgrade and downgrade subscriptions by changing the price.
So you're getting nothing back from the curl request, however what do your server logs say?
@bleak breach Correct, and I'm afraid I am quite new to making API requests so I am not sure how to take the messages and errors I am getting from my server logs
I keep receiving a message saying "RTCReportingBackend(newBackendWithName): release_timeout
In case of downgrade, how we can initiate refund for the difference amount immediately
You'd use prorations, have a look here: https://stripe.com/docs/billing/subscriptions/upgrade-downgrade
I'm not familiar with that particular error, but it seems that you have a bug in your server code somewhere. I'd add some debug logs in your app to see if you can narrow down where the error is occurring
What event I should track on webhook to get the difference amount
Hi. I have tried to have trial payment for subscription. It said:
Once the trial period is up, Stripe generates an invoice and sends an invoice.created event notification. Approximately an hour later, Stripe attempts to charge that invoice.
However, at the time trial ends, I only got customer.subscription.updated and the payment is scheduled to pay within an hour. Why didn't I get invoice created webhook event?
@bleak breach I'll try that then. Thank you for the advice!
Hello, i need some help setting up "name" from selected billing address field into the billing address for order itself.
here is the image
currently the name which is written in "NAME ON CARD" field is getting set.
const paymentBtnClick = () => {
try {
let pr = stripe.paymentRequest({
country: stripeRequestData.country,
currency: stripeRequestData.currency.toLowerCase(),
total: {
label: get(stripeRequestData, 'total.label'),
amount: get(stripeRequestData, 'total.amount')
},
requestPayerName: true,
requestPayerEmail: true,
requestShipping: isShippingMethodAvailable ? true : false,
shippingOptions: [
// The first shipping option in this list appears as the default
// option in the browser payment interface.
]
});
@bleak breach I am using proration_behavior as create_proration and billing_cycle_anchor = Now
I am not able to track the difference amount also difference amount does not gets refunded to customer account.
Make sure your webhook endpoint is set up to receive the invoice.created event
Any way i can get that "name" from the billiing address field ?
The billing details will be available in the PaymentMethod that's created: https://stripe.com/docs/stripe-js/elements/payment-request-button#html-js-complete-payment
You'd look under ev.paymentMethod.billing_details
That wouldn't trigger a refund, a proration is basically setting a "credit" on the customer for the next invoice. Meaning that the next time they are invoiced they are automatically discounted the amount that they are "owed"
@bleak breach is there any flag that can initiate refund for the credit amount
No, you would have to create a refund for the specified amount manually: https://stripe.com/docs/refunds
Thanks for the reply @bleak breach ,
I have looked into it & i am not getting the name in this attribute of billing address but getting the name from "name on card" field.
@sharp stump I don't understand what you mean. The billing details and name of the card holder collected via the Payment Request API will be available on the PaymentMethod object itself: https://stripe.com/docs/api/payment_methods/object#payment_method_object-billing_details-name
See this image.
i have set "TEST PLACE" as name in billing address
But in ev.paymentMethod.billing_details
I am getting different name (i.e name from "NAME ON CARD FIELD")
I hope it makes sense
What do you get when you log console.log(ev.paymentMethod)?
I'm afraid I still don't understand your question. Those screenshots both have the same name?
The name should be "Test Place" in ev.paymentMethod.billing_address.email
{
"id": "pm_1JCeedDsrXo4utiohp5lEwTa",
"object": "payment_method",
"billing_details": {
"address": {
"city": "Musselburgh",
"country": "GB",
"line1": "72 Albert Place Musselburgh",
"line2": "Scotland",
"postal_code": "EH21 8LE",
"state": ""
},
"email": "sudhir@dollskill.com",
"name": "Jinit Tiwari", /// This should be "TEST PLACE"
"phone": null
},
"card": {
"brand": "visa",
"checks": {
"address_line1_check": null,
"address_postal_code_check": null,
"cvc_check": null
},
"country": "US",
"exp_month": 12,
"exp_year": 2024,
"funding": "credit",
"generated_from": null,
"last4": "1111",
"networks": {
"available": [
"visa"
],
"preferred": null
},
"three_d_secure_usage": {
"supported": true
},
"wallet": null
},
"created": 1626155979,
"customer": null,
"livemode": false,
"type": "card"
}
Billing details are the details associated with the card in question
Let me make it more easier to understand.
Please have a look at these images
See "Billing address" field on gpay popup
Where "Test place" is added as customer name.
& "Jinit Tiwari" as in name on card,
On logging "ev.paymentMethod.billing_details" i get "Jinit Tiwari" inn billing details not "TEST PLACE"
I need to get & set "Test place" (i.e customer name from billing address field into billing address object)
@bleak breach
Awaiting response sir
Hi guys!
Iβm trying to implement the Customer Portal in my app but for some reason Iβm getting the following error:
The view customer_portal didn't return an HttpResponse object. It returned None instead
This is how Iβm βtranslatingβ from Flask to Django, based on the example in the docs (https://stripe.com/docs/billing/subscriptions/integrating-customer-portal).
Flask
@app.route('/create-customer-portal-session', methods=['POST'])
def customer_portal():
Authenticate your user.
session = stripe.billing_portal.Session.create(
customer='{{ CUSTOMER_ID }}',
return_url='https://example.com/account',
)
return redirect(session.url)
Django
def customer_portal(request):
customer = get_stripe_customer(request.user)
if request.method == 'POST':
session = stripe.billing_portal.Session.create(
customer=customer.id,
return_url='https://localhost:8000/account',
)
return redirect(session.url)
Also added on urls.py
path('create-customer-portal-session', customer_portal),
Am I missing something? Thanks in advance!
@sharp stump I see what you mean but that doesn't appear to be possible. The values returned via the Payment Request API are the cardholder name rather than the value entered via the billing address field
Can you check to see if session.url contains something reasonable?
@bleak breach Thanks for the revert.
oh i see, is their any documentation available where its mentioned that "The values returned via the Payment Request API are the cardholder name rather than the value entered via the billing address field" ?
I would share that to my manager, that will help.
it doesn't seem to be going inside the "if request.method == 'POST':"
Is it supposed to have a 'GET' clause?
If you're creating a portal session then I'd expect it to be a POST. How are you making the request on your client?
I'm afraid I can't find any documentation referencing that
I just realized what's wrong.
It was a bad decorator on my part, so the function wasn't even running... thanks a lot!
@bleak breach okay, could you please share link or code referencing that the values returned via the Payment Request API are the cardholder name ?
That will definitely help
@sharp stump That also doesn't exist. It appears to be a quirk of the Payment Request API implementation in Chrome, where the name returned is the one provided in the contact info of the modal popup. The cardholder name is returned as the billing details name, whereas the name included in the billing address field in the modal is omitted
ok thanks for the info @bleak breach
i appreciate
Morning!
Hey all, just wondering if permissions have changed for the stripe dashboard? we're finding that read only users are no longer able to see metadata or receipts on the dashboard
Anybody?
Hi ! Anyone would know if if it is possible to receive the full details of an external account (express connected account)? Thanks
Hey,
I need some help with Google Pay feature for Stripe Connected Accounts...
"No such PaymentMethod: 'pm_1******************'; OAuth key or Stripe-Account header was used but API request was provided with a platform-owned payment method ID. Please ensure that the provided payment method matches the specified account."
Please let me know if someone can help me with this.
Hi team, Is there any way to get "re_" Id from "pyr_1JCgHtRUqffHcTNcYfFw676o" Id using REST API expand[] attribute?
Hello, I have a payment problem not captured ... can someone help me?
Hello all !
I use subscriptions, and I would like to allow customers to change their payementMethod (change their card number), but without paying something, just to save the new card number.
How does this work if there is a 3DS authentication ? How the new card must be verified without paying anything ?
@boreal jolt Not that I'm aware. I'd recommend flagging to our support team on https://support.stripe.com/contact/email but I'll flag too
@crimson needle Morning!
We try to split the transaction to our connected acccounts
However everytime we get this message
Insufficient funds in Stripe account. You can use the /v1/balance endpoint to view your Stripe balance (for more details, see stripe.com/docs/api#balance).
I saw this
The issue is that is asking for SourceTransaction = "{CHARGE_ID}"'
@river star If you are creating a direct charge on a Standard account, you need to make sure you create the PaymentMethod on the connected account first
@north ether it's not possible to link the pyr_123 and the re_123 directly today unfortunately beyond matching them on amount + created
@earnest sundial what's your issue?
@drifting hatch we recommend using SetupIntents for this, that way you collect card details and set it up through 3D Secure for future payments!
@vocal wagon The charge has to exist if you want to transfer funds after the payment. If it doesn't exist then there's no funds to transfer
Thanks! Tried it. But when I'm trying to do it after the charge it gives me this message
No such charge: 'pi_1JCgNFFZIw.....
Because this charge not connected to the connected account
all of that is expected, we want a charge id ch_123 and you pass a payment intent id pi_123
@crimson needle I'm tried creating a payment method and parse that ID to payment intent options. and payment intent's client secret to the client. Then there is a error "No such payment_intent: 'pi_***************************'"
Do I need to create a direct charge for Payment Intent?
@river star Are you using Standard accounts? If so you need to follow the exact steps documented on https://stripe.com/docs/connect/direct-charges
@vocal wagon you want to pass what is in charges.data[0].id which is the ch_123 for the successful charge associated with a successful PaymentIntent
sure thing!
it's the Charge id
So what is the PI?
the PaymentIntent is the state machine to accept a payment, with different stages. The Charge is the record of the payment attempt
Hi I would like to ask about setup_future_usage params. Am I using it properly with Javascript SDK:
await stripe.confirmCardPayment(
paymentIntentId,
{
payment_method: ev.paymentMethod.id,
setup_future_usage: "on_session",
},
{ handleActions: false }
)
I am getting null in the request body if i check my stripe dashboard
@noble sonnet do you have an example payment intent id or request I can look at?
pi_1JCghVF5utpDAv9TXnQF94pP
Also is it correct to assume that if I passed that to setup_future_usage on_session, Stripe will auto create the Payment Method under Customer Page in Dashboard?
yes that last bit is correct. And I can confirm the code you shared does not work, looking into why
@crimson needle the SetupIntent seems to works differently from Subscription. Are both meant to work together ? Or is there an other way to update the card (if expires) when using subscriptions ?
Okay cool because the support chat is telling me that I need to use this https://stripe.com/docs/api/setup_intents/create which is so confusing because I assume by passing on_session It should auto create
@drifting hatch they don't really work differently, they are separate APIs and they can work together yes
@noble sonnet yeah that's incorrect. Give me a few minutes to test something and I'll be back
sure @crimson needle will wait for it thanks
@noble sonnet Okay I confirmed the code works for me. My guess is that you aren't running the code you think you are running. The example you gave is passng an existing payment method id (pm_123) but the PI you shared didn't do that, it used Elements to collect card details and directly confirm the PI with Elements, without an existing pm_123.
So the code you shared would work fine but it is not the code you are using/running
Hello Stripe Team !
I have a strange behavior during attachment of a stripe customer to a payment method
I received that:
{
'error': {
'code': 'authentication_required',
'decline_code': 'authentication_required',
'doc_url': 'https://stripe.com/docs/error-codes/authentication-required',
'message': 'card_error_authentication_required',
'param': '',
'type': 'card_error'
},
'message': 'card_error_authentication_required',
'decline_code': 'authentication_required'
}
Can you help me ?
@vocal wagon that means you need to go through 3D Secure to attach that card, so you'd ned to use SetupIntent
?
@crimson needle I am not too sure if I understand
The example you gave is passng an existing payment method id (pm_123) but the PI you shared didn't do that, it used Elements to collect card details and directly confirm the PI with Elements, without an existing pm_123.
So what should I do instead?
to attach a pm to a customer, I need to do 3DS ??
@crimson needle Yeah, those are Standard Accounts... Thanks for the doc. But when I use the below code, the same error occurs...
RequestOptions requestOptions = new RequestOptions();
requestOptions.StripeAccount = stripeAccountId;
PaymentIntentCreateOptions options = new PaymentIntentCreateOptions
{
Amount = 1000,
Currency = "GBP",
PaymentMethod = evPaymentMethodId,
PaymentMethodTypes = new List<string>() { "card" },
ApplicationFeeAmount = 123
};
PaymentIntentService service = new PaymentIntentService();
PaymentIntent paymentIntent = service.Create(options, requestOptions);
return paymentIntent;
@vocal wagon yes? Attaching a card can run a validation with the bank and some banks require 3D Secure for this. You should follow those docs: https://stripe.com/docs/payments/save-and-reuse
@river star that's only a small part though. That is creating the PaymentIntent on the connected account, server-side. Now client-side you also need to initialize Stripe.js properly to run the confirmation on the connected account as documented here: https://stripe.com/docs/connect/authentication#adding-the-connected-account-id-to-a-client-side-application
It's a non sens, I got the pm from the front, I sent it to the back, then I do the pi, but to do the pi (with 3DS) I need to attach the pm to the cus
@crimson needle When I add payment Id the error is "No such PaymentMethod: 'pm_1**'; OAuth key or Stripe-Account header was used but API request was provided with a platform-owned payment method ID. Please ensure that the provided payment method matches the specified account."
When I remove the payment Id for creating payment intent, then the error is "No such payment_intent: 'pi_****************'"
@vocal wagon no it's not nonsense at all. It works this way, many banks in Europe are extremely strict and require 3D Secure to set up the card for future payments, this has been true for over a year now.
the doc I shared explains exactly how to securely collect card details and attach it to a customer while doing 3D Secure if needed via the SetupIntents API
why a 3DS during cus attachment ?! I ask for the 3DS during the pi
@vocal wagon if you are doing a PaymentIntent, there's no reason to first create a PM and then attach it to the customer. Those are extra steps you shouldn't do
@river star all of that is expected. There are multiple separate steps, and you missed one I think. It's a bit hard to say because there are many ways to integrate and you don't seem to use the most common ones and I can't see your exact code right now
The proper integration path for PaymentIntent is
1/ Create a PaymentIntent server-side on the connected account
2/ Return the client-secret client-side
3/ Initialize Stripe.js with the right connected account info as documented in https://stripe.com/docs/connect/authentication#adding-the-connected-account-id-to-a-client-side-application
4/ Confirm the PaymentIntent client-side.
@crimson needle btw I am using the Card Element using Stripe React. I managed to get the setup_future_usage working and wondering whether I can pre-populate the CardElement with a customer's current Payment Method. Is this possible?
@vocal wagon https://stripe.com/docs/payments/accept-a-payment?platform=web&ui=checkout#save-payment-method-details this section of the main doc for payments explains how to automatically save/attach a PaymentMethod to a customer during a successful confirmation of a PaymentIntent
@crimson needle the reason of the pm it's to hide cb code/cvc
@noble sonnet no that is not possible. If you want to use an existing/attached PaymentMethod you would display the information such as last 4 or brand or exp date and ask them if they want to use that existing card.
@vocal wagon I don't know what that could mean I'm sorry. That's just not how you should integrate since it's more API requests, it's slower and it can lead to the error you just encountered
@crimson needle setup intent cannot be used, it generates very disturbing 3DS at 0β¬
Okay and is there a Stripe React Element for that to display that information?
@vocal wagon ignore SetupIntents, that was before you said you were accepting a payment.
@noble sonnet nope, no UI element for this today
"you would display the information such as last 4 or brand or exp date and ask them if they want to use that existing card."
Lets say I create on my own and managed to display a UI with the last four digit and they opted to use that card, how do I tell CardElement to use that specific PaymentMethod? @crimson needle
What do you mean by " there's no reason to first create a PM "
How do i get emails when customer payments are declined?
@noble sonnet you don't, there's no card element at all in this world. You would call the code you shared earlier where you explicitly pass the existing PaymentMethod id instead await stripe.confirmCardPayment( paymentIntentId, { payment_method: 'pm_existing', } )
@crimson needle interesting so I just pass 'pm_existing' value, i will try this one
@vocal wagon sorry we're talking a bit past each other and I don't know anything about your integration. But it's what I told @river star earlier, the normal flow for accepting a payment is
1/ Create a PaymentIntent server-side. Pass setup_future_usage: 'off_session' if you want to save the card for future payments
2/ Return the client-secret client-side
3/ Confirm the PaymentIntent client-side.
There is no reason to create a PaymentMethod upfront or attach it yourself
thanks
Bonjour, puis je parler Γ un dΓ©veloppeur franΓ§ais s'il vous plait ?
@tiny cape that's not something we offer today, so you'd have to use a third-party like Zapier maybe or build this as your own integration
@vocal wagon we don't really offer support other than English here usually. I speak French though! Quelle est votre question?
Bonjour, super je vous remercie. Je sui sen contact avec klarna pour offrir une solution de paiement en plusieurs fois sur mon site internet. Ils viennent de me dire que vous Γͺtes en partenariat et que je dois me tourner vers vous , afin d'effectuer les dΓ©marches nΓ©cessaires, et l'intΓ©gration de ce mode de paiement sur ma plate forme internet.
C'est quoi votre platforme?
webador
I paid for a service and he gave me an error he took my money but it turns out to be unpaid
je travaille deja avec vous concernant les paiements de commandes
@vocal wagon En effet. Mais Discord est une communautΓ© pour dΓ©velopeurs qui Γ©crivent leur code complet eux memes. Est-ce votre cas ou utilisez vous une plateforme tierce?
Hello
:question: @digital mortar Have a non-technical question, account issue, or need one-on-one support?
We wish we could help, but this community is focused on developers and technical discussions. Our support team will be able to assist you better than we can: https://support.stripe.com/contact
Can anyone confirm if Stripe allows recurring payments in the UAE?
@crimson needle J'en avait aucun idΓ©e que vous parlez FranΓ§ais
C'est à dire ? Je pense que c'est à vous de faire l'intégration sur ma plate forme d'après klarna
Est-ce que vous avez developpez votre intΓ©gration vous-memes?
@meager oasis I got it
ah ok
Non, je ne pense pas c'est un site ou les modules sont dΓ©jΓ prΓͺt
@vocal wagon non ce n'est pas vraiment comme cela que ca marche. Oui nous offrons la possibilitΓ© d'accepter des paiements avec Klarna, mais il vous faut soit intΓ©grer notre produit vous-mΓͺme, soit utilisez un produit tiers.
Vous semblez utiliser un plugin/module deja et donc il faudrait plutot vous tourner vers les developeurs de ce produit. J'imagine que vous utilisez quelque chose du type Prestashop or Wordpress ou Γ©quivalent?
exactement
@candid vine yes we do
- Front gets the stripe public key from the Back
- Front creates the PM with the stripe key
- Front sends to the Back the PM
- Back creates a CUS if needed, attach the PM to the CUS
- Back creates the PI whith PM/CUS and setup_future_usage=off_session, off_session=True, payment_method_options={"card": {"request_three_d_secure": "any"}}, confirm=True
- Back sends the client_secret to the front if requires_action
- Front calls confirmCardPayment(client_secret)
@vocal wagon dans ce cas, nous ne pouvons vous aider ici malheureusement car cette communaute est pour les developeurs qui ecrivent leur integration eux-mΓͺmes en gΓ©nΓ©ral. Il faut vous tourner vers la sociΓ©tΓ© qui dΓ©velope votre site internet
merci
@vocal wagon yep, this is mostly the wrong way to integrate and causes the error you encountered when you first asked your question. So you need to change your integration and use the path I described instead. It's way faster/easier and less steps overall too
Thank you! We're all done and fully integrated now so thanks for all your help.
@fossil crystal Nice!
@vocal wagon I'm just answering your question here about how to fix your problem and how to integrate properly. There are many ways to integrate and it also depends on the information you share. Earlier you said you attach PMs to a customer without more context so my default recommendation was to use SetupIntents.
Ultimately, what I described is the right flow and it's also the one documented in our main doc page: https://stripe.com/docs/payments/accept-a-payment
@vocal wagon de rien, bonne chance avec votre dΓ©veloppeur!
@crimson needle I do not use checkout
Thank you...
@vocal wagon sure and you don't have to use Checkout. There's a selection at the top
Hi @crimson needle I tried using
void stripe
.confirmCardPayment(paymentIntentId, {
payment_method: "pm_existing",
})
and I got this error:
No such PaymentMethod: 'pm_existing'
Is it correct that I pass the string pm_existing or i should pass smth else
@noble sonnet sorry pm_existing is just a placeholder/example. You would pass the real existing PM id that you get back from your own server for that specific customer
okay got it
- Back creates a CUS if needed
- Back creates the PI with CUS and setup_future_usage=off_session, off_session=True, payment_method_options={"card": {"request_three_d_secure": "any"}}, confirm=True
- Back sends the client_secret to the Front
- Front call:
stripe.confirmCardPayment(clientSecret, {
payment_method: {
card: card
}
@crimson needle it's that right ?
How to reuse the PM if the Back doesn't have it ?
@vocal wagon that's right. And after step 4, if it succeeds, then the new PaymentMethod is now attached to the Customer automatically
it's a nightmare to integrate
a simple question, why attach a PM to customer create a 3DS ?
@vocal wagon I replied already twice though. You don't want it to work that way, neither do I, but that's not what banks decided. It's not all banks, but some block all attempts to use/validate a card until 3DS happens
If you integrate the right way, it's a lot easier with a lot less steps and it just works. I know it's not how you built your integration and it can be frustrating to have to change things, but doing so, and following our canonical docs will help you ensure you have the right set up and that this issue can't happen
Don't create API if we can't use it !
You can use it, you understood how it works, you just did the steps in the wrong order and it causes that one issue that you now know how to fix
Hi,
Since today, when I'm trying to uplad a file trough the api (/v1/file), I got : Access to fetch at 'https://uploads.stripe.com/v1/files' from origin 'https://www.tudigo.co' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.
however, i did not change anything in the code.
There is any reason that the api is blocking my request on this specific route ?
@vocal wagon hmmm do you have an easy way to reproduce? The majority of devs upload files from their servers with our client libraries, but you seem to be doing it client-side
(it works client-side, I'd just like to see if I can easily reproduce)
I'm upset, I work for one of the biggest french company using stripe and it's the support I have. "You don't do the right way, do that way, I don't care about your integration" !
function uploadDocument(concernedBlobImage){ if(!concernedBlobImage){ return null; } var data = new FormData(); data.append("file", concernedBlobImage); data.append('purpose', 'identity_document'); return fetch('https://uploads.stripe.com/v1/files', { method: 'POST', headers: {'Authorization': "Bearer " + stripePublicKey}, body: data, }) .then(function success(response){return response.json();}) .then(function(json){ if(typeof json.error !== "undefined"){ throw new Error(json.error.message) } if(typeof json.id === "undefined"){ throw new Error("cant get token for uploadDocument") } return json.id; }); }
yeap, I'm working client side and this is the method that throw an error
When i'm doing a try-catch around it, i just got "fetch failed"
this is not at all professional!
@vocal wagon where did I say I don't care about your integration? I'm just explaining how to fix/approach this better so that it works. I understand it's frustrating to have to do that part of the rewrite but unfortunately with SCA some banks are becoming stricter and stricter over time with the rules
@vocal wagon thanks, looking!
thank for looking, I'm pretty confused since everything was working fine yesterday :p
It's the 3th time I have to rewrite the stripe integration, 1 card/source, 2 setup intent with crazy 0β¬ 3DS, 3 now that !
@vocal wagon I understand but rules and regulations evolve over time. We couldn't have planned SCA when we designed card/source APIs.
Rewrite your api to be compliant to the previous ones
that doesn' make sense. Whatever we would have done on Card or Source would still have involved changes on your end
If you don't want to rewrite anything you can disable card validation on PaymentMethod attachment entirely. It's not what I would recommend, but it'd unblock you. But 20 minutes ago you said support didn't give you the right advice, so I'm focusing on giving you the right/correct advice to integrate our product
Hi community! I'm trying to test a SEPA refund, it there a webhook event that I can listen to in order to know when a refund is 'succeeded'?
@torn stratus refunds are assumed to succeed by default, we send an event only if it fails
@crimson needle Sais-tu oΓΉ je peux trouver une doc expliquant comment intΓ©grer un SetupIntent avec une Subscription ? Dans cette doc https://stripe.com/docs/payments/save-and-reuse ils expliquent comment lancer la facturation manuellement, mais dans le cas d'une Subscription, j'aimerais que Γ§a se fasse automatiquement en prenant le nouveau PaymentMethod.
C'est possible ?
it costs me arround 40kβ¬/month !
@vocal wagon so on card attachment when you call https://stripe.com/docs/api/payment_methods/attach you can pass the undocumented parameter validate: false to skip card validation with the bank which would avoid the authentication requirement for 3DS (which would then happen after at the next step)
But still you pass off_session: true which means you are bypassing 3DS most of the time and not protecting your business. If you are a large user like you said this is really not what you shold be doing or what should have been advised to you
Thank you!
Give me my answer, why I have a 3DS error when I attach my PM to the csustomer ?.
wow
I answered you 3 times already
You attach a card, we talk to the bank to make sure it's valid by running a $0 authorization, and the bank says yes or no. Here the bank says "I won't tell you anything until you do 3D Secure"
most banks don't do that but some do, especially in the Nordics.
Others fwiw will simply say "nope" instead and make you think the card is bad, when it just needs 3DS
@drifting hatch I don't know of a specific doc. I'd recommend using the steps in https://stripe.com/docs/payments/save-and-reuse to attach the card. Then you mark it as the default payment method on the customer https://stripe.com/docs/api/customers/update#update_customer-invoice_settings-default_payment_method so that it's used on future invoices automatically
"You attach a card, we talk to the bank to make sure it's valid by running a $0 authorization" : for what purpose ?
@vocal wagon it helps to validate the card details(https://support.stripe.com/questions/unexpected-1-charge-on-customers-bank-statement) and for example check the CVC is correct, otherwise you wouldn't know this until you charge the card days/weeks later.
(and we lose the CVC after 10 minutes for PCI reasons, so it'd never be verified)
It's always worked like this even on the Card and Source APIs
@crimson needle Thanks for your steps.
But stripe is creating payment_method from client-side with connected account for "Payment Request Button" (Google Pay). I parsed it to the server-side's payment intent creation.
Clone payment method using "PaymentMethodService" with client-side payment method ID.
Then parse created Payment Intent to client-side for confirmCardPayment.
@river star can you share a request ID req_xxx for one of the errors you're getting so I can understand your setup a little better? https://support.stripe.com/questions/finding-the-id-for-an-api-request
but if you're cloning the PaymentMethod things can get complicated. Usually what you want to do is initialise stripe.js twice.
e.g.
var stripePlatform= Stripe(key);
var stripeConnectedAccount = Stripe(key, {stripeAccount:"acct_xxx"});
...
stripePlatform.createPaymentMethod(...)
// clone the PM on the backend server and create PaymentIntent on connected account
stripeConnectedAccount.confirmCardPayment(...)
I found what was wrong :
The URI has changed :
it's not https://uploads.stripe.com/v1/files but https://files.stripe.com/v1/files
I don't know where to find this kind of update, it was pretty annoying since some of our customer where blocked because of that
@vocal wagon we're currently actively looking into this as I believe uploads.stripe.com should work
but yes for now if you can use files.stripe.com that will unblock you
Hello, so we have implemented Stripe into our android app and we use it to do payments to order taxi rides, but there seems to be a difference in how the adk handles the payments in the test environment and the live environment. example: if in test i start an iDeal payment the Stripe sdk will open up a browser window with a button to authorise or fail the payment, if i authorise the payment an intent is thrown and caught by my app and then the stripe sdk goes into the handle payment flow this is all correct.
but in the live environment when i start the iDeal payment the sdk will open up the browser window let me select my bank i complete the payment but then there will be no data send back to my app so the app will never go into the payment handle flow because there is no data to handle. could you perhaps help me with figuring out what is going wrong in the live environment? Thanks a bunch
@crimson needle The client-side has the connected account ID. Therefore client-side only initilaize stripe.js once with that connected account ID.
This is the request ID = req_sB1pbcyWWUvlM4
@hidden ridge hi! It should be the same hopefully, the user should get directed back to the app but unfortunately it really depends. Like if the customer is sent to another app on their phone like their bank's app, it's not entirely guaranteed that the bank's app is clever enough to create an Intent to open your app.
@river star that request was made on the platform account and not the connected account. You didn't initialize Stripe.js properly on the connected account
@hidden ridge just to clarify, do you pass a returnUrl? (our docs are not very clear on this unfortunately) e.g.
val confirmParams = ConfirmPaymentIntentParams
.createWithPaymentMethodCreateParams(paymentMethodCreateParams, paymentIntentClientSecret, returnUrl = "myapp://ideal-complete")
stripe.confirmPayment(this, confirmParams)
Hi. hmm yes for the ideal payments we do pass a return url in that function π . the problem in live is that the user selects their bank and they open their bank app and complete the payment then the bank app closes and they come back in the webview the sdk has opened and that webview should redirect to the return url which throws the intent right? but that does not happen the webview just closes and my app does not receive any data in the onactivityresult function
If the webview is closing then it means the return URL was hit so I can't imagine why that wouldn't result in your onActivityResult getting called, that's how the SDK should work(when it sees the return url getting visited it closes the webview and invokes onActivityResult )
unfortunately I don't have any way to test this myself with a real iDEAL setup and it works fine in test mode, if you're still seeing issues with this I would write to https://support.stripe.com/email with the full exact code of your Activity, what version of stripe-android you're using, a PaymentIntent ID pi_xxx of a livemode attempt, and other context like screenshots/screen recordings of the flow you're seeing so that we can dig into it.
@vocal wagon we're working on figuring out what changed. In the meantime as a quick fix you could use files.stripe.com instead of uploads.stripe.com and it should work
alright. thank you. much appreciated π π
thanks, I'll do that
Hey guys, can the webhook send data even if I'm hosting locally?
@regal orchid hi! you'd need to expose the endpoint publicly either using something like ngrok.com, or you can use our stripe-cli tool to forward events to a local server : https://stripe.com/docs/stripe-cli/webhooks
Gotcha. Thanks
Heya! π
hello there
@loud fable do you have the evt_xxx event ID where this happened?
@meager hawk yip
@meager hawk happy for me to send it here or can I send it privately?
Or rather, point me in the direction I need to look? π
you can just paste it here
evt_1JBIpQJKeVa5XhCE7Znno0pE
@loud fable look up your domain name on https://www.ssllabs.com/ssltest/analyze.html , your server is not set up correctly for SSL β it's missing a certificate chain is the specific problem
nice!
To resolve this, I recommend visiting the issuer you bought the certificate from and re-installing your SSL certificate, including any 'bundle' file that comes with it. If you're having trouble with this, or have questions, I'd suggest sharing your SSL Labs results with your issuer, they can guide you in locating any intermediary certificates and resolving this.
thanks @meager hawk
usually this comes from not installing the 'bundle' of intermediate certificates
browsers usually don't check this, but our servers that send the webhooks strictly check the full certificate chain
awesome, thanks for that π
@meager hawk can you check one last event for me please
evt_1JCPopJKeVa5XhCE7aD85Luw
never mind π same issue
thanks for your help!
Hello there, I'm facing with this issue when launching my app on IE 11? Are you guys still supporting this browser?
SCRIPT5009: 'Promise' is undefined
stripe.js (112,1)
@stripe/stripe-js: ^1.11.0
Browser: IE 11
Node: v10.4.1
Thanks.
@vocal wagon we do support IE11 yes : https://stripe.com/docs/js/appendix/supported_browsers
Complete reference documentation for the Stripe JavaScript SDK.
are you that sure the error comes from stripe.js and not some of your own code? (what is at stripe.js (112,1) ?)
ah, well, hmm, I suppose that is our script, but hard to say, I'd have to spin up a virtual machine
@meager hawk here
Hi there π
I have a question today about the ConnectedAccount "Lifetime total volume".
I want to get acces to this information with the API.
Do you think there is a way to retreive this amount ?
It works fine when I remove @stripe/stripe-js so I guess
@vocal wagon yeah it's just that https://github.com/stripe/stripe-js (the wrapper ES module) doesn't support IE11
the actual library itself (https://stripe.com/docs/js/including) does. If you want to support IE11 you'd have to not use that wrapper or add a polyfill step to your build.
@winter moat hi! there's no direct way no
Ahhh, maybe I should drop that browser from now on?
you'd need to calculate this by looking at all payments/transfers for the account and computing it
@vocal wagon that's your choice really in terms of what you expect the impact on potential customers is versus development effort
ok thanks @meager hawk ! this will be a long way but I will try to do that then π
Is possible to add Header data?
@rustic sand can you elaborate on that a little bit?
@winter moat you could also look into our reporting tools https://stripe.com/docs/reports/ , for example https://stripe.com/docs/reports/report-types#connect has some reports that can be used to get data on volume/activity on connected accounts
sure.. I am doing PayOuts via Stripe. here I used Dotnet Application with Stripe Dotnet packages. Here I need to add "Stripe_Account" in to Header data
but through the API there's no direct field for what you see in the dashboard as "lifetime total volume", it's a dashboard-only figure that's computed I believe
@rustic sand does https://stripe.com/docs/connect/authentication help?
it shows how to use that header with all our libraries including stripe-dotnet
Thanks let me try
thanks ! You mean I can trigger this report via API ?
Basically What I want to do is to get all connected Account that have a "lifetime total Volume" < 2000 and delete them.
I have currently 74,000 connected accounts... and a lot that will never be used.
So I need to clean a bit my account.
@meager hawk would you get any advises for me ?
@winter moat you can get reports from calling the API yes, the links there cover this. For your use case if it's a one off you might find it easier to just go to https://dashboard.stripe.com/test/connect/accounts/overview and sort by that column and manually take note of the accounts you want to delete then run a script to delete them
oh you said you have 74000
Hi, when upgrading or downgrading plan with different interval. How to start the new plan after end of current billing cycle?
@winter moat you don't have to delete them really, but sure. I can't really think of a clean way to do this since it really depends on what type of account they are as to how you would calculate volume. Maybe start by looking at doing https://stripe.com/docs/api/charges/list + https://stripe.com/docs/connect/authentication and experimenting with if that gives you an accurate enough idea of their volume for your use case
@vocal wagon hi! By default it happens at the time you make the API request. If you want to happen at a different time you'd have to use SubscriptionSchedules to set that up : https://stripe.com/docs/billing/subscriptions/subscription-schedules/
Hello! Will exposing the evt_xxxx ID of a payment bring any security risks or can only I and the buyer do anything with it even if it's exposed?
I'm not sure which one to store and show the user, ch_xxx, evt_xxx or txn_xxx
@regal orchid Hey! They're all generally safe to share as any sensitive data will be limited to access with your secret key.
@regal orchid What is it you're building to show your user?
Thanks for the quick response. I'm making a section where users can view their previous payments, and they can see all info about the payments they made.
@regal orchid I guess this depends on your integration, but I'd assume the PaymentIntent (pi_xxx) or Charge (ch_xxx) would be most relevant
Yeah well I'll actually use one of the IDs too, when a webhook gets sent, activate the user's product that they purchased. So after the webhook gets sent, I check in the database who the user is and what they purchased using one of those IDs
I think I'll use pi_xxx because it comes when a new session gets made.
@regal orchid Worth noting that the PaymentIntent object is essentially a state machine to facilitate a payment. So there may be instances when a PI does not reflect an actual successful payment. https://stripe.com/docs/api/payment_intents/object#payment_intent_object-status
Right, but when the payment status becomes successful/paid the webhook that gets sent includes the same PI but with status 'succeeded' doesn't it?
@regal orchid Correct, just wasn't sure if you were using the list endpoint for all PIs assuming they were successful payments π
Ah no, I store it in the database and set the status as pending. When the webhook gets sent with the status 'succeeded' I then change the status to paid in my database :))
@regal orchid payment_intent.succeeded is the event you want: https://stripe.com/docs/api/events/types#event_types-payment_intent.succeeded
Yup, I was sending that as a test event from the Stripe CLI
Thanks for the help btw :)
@regal orchid Np!
Hey, I have a simple solution: is that possible to receive payments on our website & directly payout to our users & pay one-time stripe fee?
@crimson needle Thank you so much... There was an issue with initilization of Stripe with connected ID... π
@spiral rose Hey! Yep, that sounds like Connect: https://stripe.com/docs/connect
@hollow prairie I have seen that. Do we have any SDK in PHP or laravel package for this?
@meager hawk thanks for youR detailed answer.
I will give it a try now with a API report in CSV then process the results
@spiral rose We have a PHP SDK: https://stripe.com/docs/libraries#server-side-libraries
There's also Laravel Cashier, but not sure if that supports Connect: https://laravel.com/docs/8.x/billing
Hey lovely people! Question: can I send a receipt using the receipt_email parameter to 5 people at the same time with just one API call? And if is possible, should I use 5 times the same parameter or should I create a nested list inside the parameter? I was taking a look at the web resources and this parameter doesn't seem to accept more than two values, but using 5 times the same parameter on a API call sounds weird too
@hollow prairie thanks I already reviewed both & fully aware of that. Just want to have an example that works with OAuth instead of creating accounts with Stripe Connect
@spiral rose Your users will need to onboard and be verified with Stripe in order for them to process payments/payout
@toxic lily Hey! The receipt_email parameter can only accept a single email I'm afraid. There's no way to pass multiple addresses currently
The only way is manually thought Dashboard, right?
I thought it could be emulated with the API too, since the Dashboard has this "multi recipient" receipt option
But it must be manually done
@toxic lily Yep, that's a Dashboard only feature right now
@toxic lily Np!
Howdy folks
Hi, I launched my store with bigcartel and I connected my stripe account to it but my customers can't buy my items. I think it s due to the time limit for the verification of my identity but how many time it will spend ? (sorry for my english i hope you understand my problem)
I'm trying to test the Stripe Terminal w/ Connect in test mode and am missing something about how it's supposed to be setup. I've got the connected user ("Anonymous (a test-only account)") logged in but am unclear how to enable Terminal ("Only account administrators can able this feature")
:question: @timid plume Have a non-technical question, account issue, or need one-on-one support?
We wish we could help, but this community is focused on developers and technical discussions. Our support team will be able to assist you better than we can: https://support.stripe.com/contact
@sand tusk hello! what exactly are you trying to do? as in, where do you encounter that?
I do the oAuth routine in our software and in the Stripe dashboard I use the returned account id to log in as that user. Under Settings > Terminal if I hover over the + symbol I get "Only account administrators can able this feature"
I'm trying to test the full Connect setup flow w/ Terminal in test mode (all the way through a purchase transaction).
@sand tusk The connected account is a full standard stripe acccount with dashboard access? ie, not a custom/express account? If so, AFAIK the account holder would need to enable this themselves when logged in. Have you tried the terminal integration flow already?
I apologize but I'm coming into this project at a late stage. I don't know the answer to the first question but I'm going through the oAuth flow with an account that is attached to the primary account and then I'm clicking the "Skip this form" button so I don't believe there are any credentials created. I'm not sure what is meant by the terminal integration flow. The terminal has been added to a different (non connect) account and processed a transaction but I'm trying to test in test mode the full connect process. I'll see if I can find more answers.
@sand tusk gotcha. Can you provide the account id of one of these connected accounts you're using?
Here's one: acct_1JClhgEDcMJyyzfD
Thanks - yea this is a standard account. Your platform does have controls for it for payouts etc, though: https://stripe.com/docs/connect/platform-controls-for-standard-accounts
You should try to work through the steps of the actual integration to use the reader with the connected account and conduct a payment etc. I don't believe you should need to do anything special to get that working in test mode.
Manage more features on behalf of your Standard connected accounts with platform controls
Can you point at docs on " ...work through the steps of actual integration..."? We've been integrated w/ Connect for years but I'm not sure the connection to Terminal as a third party did the integration. Right now just trying to figure out how to test.
This maybe: https://stripe.com/docs/terminal?
Yea was looking for a good resource for you. With standard accoutns you'll be using the stripe-account header/client option parameter frequently. This will allow you to set up locations etc under the connected accounts:
https://stripe.com/docs/terminal/creating-locations#creating-a-location-with-standard-connect
Group and manage your readers by physical location.
Ok I was thinking I could use the dashboard to setup a location and attach a Terminal
@sand tusk You'll want to review specifically this flow for direct charges on standard accounts:
https://stripe.com/docs/terminal/payments/connect#direct
Integrate Stripe Terminal with your Connect platform.
the Stripe dashboard
@sand tusk That wouldn't be how you manage this for a set of connected accounts, no
Ok clearly need to read the docs then. I was hoping to test but that will have to wait. Thank you.
How can I update a buisiness logo / icon through API?
I have read the docs on File and Account, and tried to update the account with a new file etc; however I receive the error 'This application is not authorized to edit this account.' - even though it has been connected
Stripe_Account::update($account->id, [
'settings' => [
'branding' => [
'icon' => $file_id
]
]
],
[ 'stripe_account' => $school->stripe_connect_id ]
);
This is how I am updating it
Hello everybody,
I am trying to retrieve the list of payouts from a connected account with API.
I have access to all report when i use chrome with "Connect as" dashboard.
And now i try with to get it with API,
I try \Stripe\Reporting\ReportRun but I have the error "Reports for connected accounts only reflect data from Custom but I cannot switch accounts to custom or express.
And i try with\ Stripe\Payout but there is no option to retrieve connected account payout.
Do you have an idea ?
Thanks for your help.
Hello, Iβm trying to create a 1 year free coupon for an annual subscription. Would I just create a 12 month free coupon or should I extend a trial for 1 year?
@sand tusk I recommend testing things out as you read through the steps of the docs - we're here to help if you have questions!
It seems like my issue is because I have to use a standard account; and only express and checkout accounts allow you to modify the branding through API
I'm trying but something isn't making sense. I'll reach back out when I figure out what I don't understand.
@vocal bison If these are standard accounts, you only have platform-level influence over branding when you have platform controls:
https://stripe.com/docs/connect/platform-controls-for-standard-accounts#co-brand-your-connected-account-experience
Manage more features on behalf of your Standard connected accounts with platform controls
@vocal bison Yes, that's likely the case. For full control of the experience, you'd want to be using express/custom accounts (though as i mentioned you get some control with new controlled standard accounts)
I'm confused as this appears like it's in test mode but is acting like it's not (see error).
Unfortunately we cannot use these accounts as our business will become liable incase of transaction disputes, so doesn't seem possible unfortunately π¦
Thank you for your help however
@vocal wagon You can retrieve the connect account payouts using the stripe-account header:
https://stripe.com/docs/api/connected_accounts
Complete reference documentation for the Stripe API. Includes code snippets and examples for our Python, Java, PHP, Node.js, Go, Ruby, and .NET libraries.
Hi there i don't know if i am in the right place but i have had money showing in my available balance on woocommerce account on Wordpress from a order placement. When will this be transferred in to my account. The order was placed 30th June but i only completed the order today as i didnt realise i had to do this part manually.
@gleaming urchin Depends on your billing interval. If you use an annual price/interval, I'd use a one-time 100% off coupon, but with monthly billing yea you'd likely want to use a 12mo coupon.
You can use a trial if you prefer, these are merely different ways of representing the payment status on your customer invoices.
@sand tusk that looks like some kind of onboarding/verification flow, which i wouldn't expect to be part of what you're trying to do.
Is it possible to disable certain types of cards in the Stripe Dashboard? (i.e AMEX?) Thanks
:question: @south oracle Have a non-technical question, account issue, or need one-on-one support?
We wish we could help, but this community is focused on developers and technical discussions. Our support team will be able to assist you better than we can: https://support.stripe.com/contact
@south oracle you can contact support (as above) but you also will likely need to reach out to woocommerce for support with their plugin.
It's Stripe's Connect onboarding flow supposedly in test mode.
@fossil crystal Not as far as i know. What are you trying to do that makes you ask?
@sand tusk I thought you were already past this with the Skip feature, though
Because most customers ask "do we accept AMEX", and when we say no - they they provide a different card type - one that isn't 3% on our IC++ pricing
We would ideally just stop accepting AMEX due to its extortionate rates
I can get an account id but can't configure anything so I thought I'd setup an account I could actually log into but it appears to be in some weird state where it's in test mode but trying to verify everything (EIN / Bank account etc) in "live" mode
@fossil crystal If you wanted to change your app behaviour based on card brand, you can programmatically inspect the payment method card.brand and process the payment or raise a suitable error at your discretion:
https://stripe.com/docs/api/payment_methods/object#payment_method_object-card-brand
Complete reference documentation for the Stripe API. Includes code snippets and examples for our Python, Java, PHP, Node.js, Go, Ruby, and .NET libraries.
Excellent, thank you
quite welcome π
Another quick question!
I just logged into the dashboard to see Discover and Diners is now accepted in the UK
Is this true for JCB, Unionpay (as shown in the available brands: "Card brand. Can be amex, diners, discover, jcb, mastercard, unionpay, visa, or unknown.")
I am having a hard time to find a way to simply charge a customer the right amount. Any one here can look at the subscription and let me know how I can fix the issue?
Thanks a lot, i'm try right now
@sage burrow Sure, do you have the ID of the subscription?
Hi all π I have a question.. When you look at a customer in the dashboard, you get a field called "Spent", a summary of how much this customer has spent. Can you get this from the API?
@hearty jewel Hey! There's no field for this on the Customer object, no. You'd need to compute this yourself
I'm not sure! It should be explicit if you're seeing something that enumerates support.
@hollow prairie sub_JqIoyQSukbwhnl. let me know if you want more information
@hollow prairie Ah, that's a shame, OK never mind, thanks
@sage burrow Looking. If you could let me know what the expected behaviour is, and what you're seeing
@hearty jewel You could populate the current total using payment intents / charge data today then update it dynamically by listening to suitable payment webhooks
@daring lodge Yeah, I think we also store amounts from payments in our local db so that's another optoin for us, I was just hoping for a lazy solution π
@hollow prairie sure. we have several plans/prices. The default one costs $588 and it has a trial period of 15 days. The example that you have is in test, so I am overriding it to 15 minutes. After the trial expires and the subscription status changes to past_due, my webhook receives that and locks the customer. The customer enter their credit card after choosing another price/plan which costs $1140. The customer should be charged $1140 instead they are charged 551.93. Based on the suggestions that I got here I m voiding oustanding invoices before changing the plan and also yesterday I added these as per the suggestion here: "payment_behavior" => "pending_if_incomplete"
and 'proration_behavior' => 'always _invoice',
@sage burrow what do you mean when you say you "lock" the customer?
@sage burrow when you updated to the new price you explicitly indicated immediately invoicing for the prorated amount, so the original plan amount is credited:
https://dashboard.stripe.com/test/logs/req_NKwcrEAruuE5xj
@sage burrow As you mentioned if you do not want to credit for the existing plan period then you should disable prorations
@daring lodge how can I let tripe know that I need the full amount to be charged and ignore the previous one because it is already voided?
@daring lodge I tried proration none but it didn't work
I cn give you another subscription using that
@sage burrow do you have an example i can look at disabling proration for the update not doing what you expect?
yes please
@daring lodge yes I do give me a sec
@sage burrow while the invoice is voided, the subscription is active with an existing plan. The credit is related to that current subscription period, not the invoice.
@daring lodge here is the subscription id where proration is set to none: sub_JqKQIl2uP60oZx
@sage burrow taking a look, but i'll point out that proration is only disabled per request -- it is not a persistent setting on a subscription
you must indicate that you want to disable proration in the update request that might cause a proration
@daring lodge that what I did in the second example that I gave you
Hi ! Is someone know the SOMU subscription plugin on WP ?
@daring lodge I am using these parameters in the php call
'proration_behavior' => 'none',
"payment_behavior" => "pending_if_incomplete"
Wonderfull, it's working ! thanks a lot for your help.
@daring lodge Can you tell me what should I do?
@sage burrow this looks right, the new plan is applied and no prorated invoice was generated. the next invoice should be for the full amount of 1140, and you can check that by looking at the upcoming invoice:
https://stripe.com/docs/api/invoices/upcoming
what are you trying to accomplish with pending if incomplete? What part of this is not what you expect?
@vocal wagon π huzzah! you're welcome
@daring lodge I am trying to charge them right away. Can I accomplish that?
@vocal wagon Hello! It's unlikely, you're much better off reaching out to them directly for support. I'm happy to help with any Stripe questions you have though!
@sage burrow Yea just a sec
@daring lodge awesome!
@sage burrow it looks like when you make that change the subscription is already out of trial, so that trial_end parameter isn't doing anything.
If you want to effectively ignore the unpaid period after the trial, you might want to instead reset the billing cycle to restart now which should invoice for the new period on the new plan
https://stripe.com/docs/billing/subscriptions/billing-cycle#api-now
(still disable prorations to avoid the credit being applied)
eg: replace trial_end=now with billing_cycle_anchor=now
@daring lodge awesome! Small question: that would work also if the trial didn't end right?
yea if it was still under trial when you changes the plan etc, ending the trial would actually do the same thing
(but doesnt in your case because the trial was already over)
@daring lodge This makes sense. I think you solved the problem I've been asking for help for for a while now. I'll test this now but it takes around one hour for the account to be locked ... Hopefully you'll be still here so that I can give you an update.
why does it take an hour?
@crimson needle I am not sure why probably some settings in dashboard that I don't have access to. The trial ends in 15 minutes but the subscription status doesn't change to past_due right away after the trial expires
@crimson needle my webhook relies on that to lock the customer and force them to pay.
@crimson needle maybe it doesn't make a difference in this case but I prefer to wait until the subscription status changes to past due just to be safe.
Ah that's because the invoice is created but not paid immediately. What you can do is wait for the invoice to be created and then call https://stripe.com/docs/api/invoices/pay to force a payment
but yeah you don't have to wait for the status change, it all works the same
you can also do a trial period of 1 or 2 minutes instead of 15
Hey, i'm sorry to bother you, but i'm stuck with something since this morning,i want to integrate sprite to my website (still in local), i used the basic integration to checkout my products, its worked, now, when i want to put dynamically my 'line_items' (when i create my session) i get a json syntax error, i'm knew to this, so i dunno how to fix it, actually, i just for the test copied this thing and assign it to a var, well the code will talk himself (i'm french sorry for the bad english lvl)
$temp= [
'price_data' => [
'currency' => 'eur',
'unit_amount' => 200,
'product_data' => [
'name' =>"AZE",
'images' => ["/assets/test.jpg"],
],
],
'quantity' => 1,
];
$checkout_session = \Stripe\Checkout\Session::create([
'payment_method_types' => ['card'],
'shipping_rates' => ['shr_1JCkYyKOHeNM9A4HUkXrtVo0'],
'shipping_address_collection' => [
'allowed_countries' => ['FR'],
],
'line_items' => [$temp],
'mode' => 'payment',
'success_url' => $YOUR_DOMAIN,
'cancel_url' => $YOUR_DOMAIN,
]);```
Note : its exactly the same things, but it caused an error :/
@steady thorn do you have an example request id (req_123) that you can see in your logs
Hi no, I am using the charge object to create a charge and then posting the customer information to Stripe with the Customer object (which checks if customer exists first).
I will try with Checkout to see if this can work though, thanks.
That said I'm also unable to connect an existing customer to a payment with the charge object:
** $stripe->charges->create([
'amount' => $stripe_amount,
'currency' => 'cad',
'source' => $order['token'],
// 'customer' => 'customer_id',
'description' => 'Order Charge for ' . $name,
]);
**
I use the customer key to try and do this as mentioned in the docs and the value is a string however the payment does not succeed, even if the customer_id value is returning an existing customer value. It works otherwise though. It will show in the payments page in the dashboard but there is no customer attached to the payments so I don't know who the charge is for.
Do you happen to know why this would happen? Or is there a way I could turn on debugging to print out the errors to see the issue?
the error is caused when i'm calling the create session, not when i'm 'buying' the products, i dont even have the page to buy something
btw im checking
ooooh, i have logs, lmao tks for that, I'll keep you informed
I think it's just an issue with a double array or similar
if you show me a request I can help
Hello Stripe folks. I have an issue with Stripe Subscription update, specifically with the proration behavior when the Subscription price changes.
The example I have is for this user: https://dashboard.stripe.com/test/subscriptions/sub_JqDaKrY12rYw6d
User initially subscribed to a Subscription that is $0 (free). The owner of that Subscription later created a new price to amount 567, which triggers our event webhook to update the Subscriber's price to that new price object. This is done by using the subscription update endpoint; the proration_behavior is set to "none" at the time of Subscription creation.
The expected behavior: User remains at $0 until next billing cycle (monthly).
Actual output: User was invoiced $5.67 immediately when their subscription is updated to the new price.
Any insights for us?
error with the image directory
@pale aspen You can't pass a Token id (tok_123) in source if you pass customer. You have to first attach the card to the customer with https://stripe.com/docs/api/cards/create
i'll change that, thanks for the help !!
@steady thorn It needs to be a full URL yes
@mossy wren when you switch from a free plan to a plan with a fee, the billing cycle is immediately reset. That's how it works. You can stay on $0 until the next billing cycle that way
You need to use SubscriptionSchedule and defer the price change to the next period
@crimson needle Just to confirm, this is only when we're going from $0 to a paid plan. If it's a change from paid plan to another paid plan, then the proration_behavior of "none" should work as expected?
correct!
@crimson needle Awesome. Could you give me more guidance on SubscriptionSchedule?
it's It's documented here: https://stripe.com/docs/billing/subscriptions/upgrade-downgrade#immediate-payment
Ah for Schedules, the idea is to control multiple phases for the Subscription. So you have a phase that is on the free plan for a month and then a second phase that ends after the current period and that one will be on the new price
https://stripe.com/docs/billing/subscriptions/subscription-schedules#managing are the docs for schedules
Hello everyone. I'm trying to find out if Stripe sends out a WebHook event when someone completes the Connected Account onboarding form for our platform. I can't see anything here https://stripe.com/docs/api/events/types that seems to describe that scenario. I'm trying to find a way to know when someone has created a Connected account even if the final redirect to our site on completion fails.
@strange flax you would listen for account.updated to know the state of the account mostly and information being filled out and whether we need more details
Ah, i thought that was your own account. Will try it out now, thanks!
you would listen for the events on your Connect webhook endpoint: https://stripe.com/docs/connect/webhooks
@crimson needle Thanks for providing the resource for SubscriptionSchedule. Just a couple questions:
If a user is switching from free sub to paid sub, would that mean:
(1) We'd create a SubscriptionSchedule with the new price to start the same date the free sub is ending, and (2) put an end date on the existing free sub so they're only on one sub at a time?
Ah, that's what i was missing, duh! Thank you
@mossy wren no you would basically turn your existing subscription in a schedule. The schedule will "change" your subscription at each period
@crimson needle Got it, I'll play around with it. Another use case: if the Subscription owner changes a price with fee to another price with fee, and the subscriber already has a SubscriptionSchedule pending, instead of creating a new one, we'd simply update the SubscriptionSchedule to the new price with fee, correct?
correct!
@crimson needle You're the best. Thanks!
I would agree I am the best. Just need my team to notice :p
I'm pretty sure I have the solution but just want a sanity check. I have to update multiple customer's subscription charge date. Most were created with a subscription schedule. I would update the subscription schedule instead of the subscription in most cases with the first phase being my new recurring billing date, correct?
@worldly knoll yep but be careful with proration and such so that you don't give credit or charge them by mistake
@crimson needle What would you suggest is the best way to deal with this, some customers may have be billed say the 28th and the new billing date may be the 2nd of the following month.
it's always tricky but you set proration_behavior on each phase I'd say
Hi guys!
and you test it in Test mode first to be safe
Thanks @crimson needle !
Hi
Can someone help me with invoice draft that i want to delete
It has been created by the subscription process
you can't delete those
So the draft will remain in my invoices list ?
I'm using react native with graphQL and typescript and trying to list all cards but I have a problem with the return type: listAllCards: async (_: unknown, { userId }: { userId: string }): Promise<Card[]> => {
const cards = await stripe.customers.listSources(userId, { object: 'card', limit: 4 })
const cardsList = cards.data
return cardsList
the server crashes with error saying: Type 'CustomerSource[]' is not assignable to type 'Card[]'.
Type 'CustomerSource' is not assignable to type 'Card'.
Hi! I have a list of Plans from stripe api, I was informed that I could just plug the plan idβs into the βitemsβ array as βpricesβ in order to generate subscriptions, but these plan ids donβt look like the ones in the api docs, looks like they were created in 2016. They look custom made. Do I have to change them or something? Plus, they donβt seem to work.
don't know what type to use. i just need to get the array of cards so i can get the brand and last4 and use them in the frontend
@pure island type of what? I'm sorry I'm a bit lost. Usually you list cards server-side and then you loop over the response you get and return a subset of properties you want
your code will return a list of Card so https://stripe.com/docs/api/cards/list and they are Card objects https://stripe.com/docs/api/cards/object
yes i'm doing it server side but it's not returning the card object.
what does that mean? what do you get, what's not working?
it's saying: Type 'CustomerSource[]' is not assignable to type 'Card[]'.
Type 'CustomerSource' is not assignable to type 'Card'.
i have the Card type as {
okay so you're using stripe-node + Typescript server-side?
not sure what a resolver is
https://github.com/stripe/stripe-node/blob/master/types/shared.d.ts#L174-L180 that's where CustomerSource is defined and it's a "union type" and I think you can cast it in Card
i have a file resolvers.ts where i have the mutations and queries, when i add the loop, it doesn't recognize the brand and last4...undefined
I've noticed in a few places it mentions setting the type of a Product to "good" or "service", but the API docs for it don't mention it. Is it an old deprecated parameter or does the API doc need updating? https://stripe.com/docs/api/products
Here's an example where it is referenced https://stripe.com/docs/billing/subscriptions/products-and-prices#products
@pure island I'm sorry I don't understand the words you're using, what's a mutation and a query and a resolver?
that's graphQL
Wow @crimson needle are you the only person answering questions? Youβre doing great, thank you!
@gloomy girder it's a really old parameter that is actively deprecated/unused
sorry ab that
@pure island all good it's not your fault I must not be familiar with your stack
@sacred totem thank you! We're a team but we're doing it alternatively
thanks @crimson needle
@pure island but mostly you list sources, you cast them to card and then you turn those into an object with the properties you care about
yes i'll try again thank you.
let us know if you're stuck, someone else on my team might be more familiar with it!
sure thanks
Sorry, just reposting my question since I realized I wasnβt asking anyone specificallyβ¦. @crimson needle Hi! I have a list of Plans from stripe api, I was informed that I could just plug the plan idβs into the βitemsβ array as βpricesβ in order to generate subscriptions, but these plan ids donβt look like the ones in the api docs, looks like they were created in 2016. They look custom made. Do I have to change them or something? Plus, they donβt seem to work.
@sacred totem I replied earlier
[6:34 PM] koopajah: @sacred totem all Plans work as Prices so you pass the plan id in price and it will work! (also please use #dev-help for questions like this!)
did that answer not work for you?
Let me know if that was unclear!
@crimson needle I got back an invalid array message. Iβm basically sending something like this to create a subscription: (in php). [[βcustomerβ => βcus_β¦ β, βitemsβ => [βpriceβ => βtest_plan_hereβ]] where βtest_plan_hereβ is what Plans is giving me for the plan id.
yeah that's not plans that is the issue here, items is supposed to be an array of item.
you want 'items' => [ ['price' => 'test_plan_here'] ]
@crimson needle Iβm getting back some different errors, Iβm going to dig into this until I hit another wall. Thanks for your help!
let me know the error I can help you fix it!
@crimson needle actually it might have worked, the error must be on my end. Iβm pretty excited, tried setting this up for days thanks!
yay!
Hi
Hi again,
I would still need help.
I am unable to retrieve the information of a bank account for a connected account (ID : "ba _...").
With $destination = \Stripe\Account::retrieveExternalAccount($account_id, $ balance->destination);
I get the error "You cannot perform this request as you do not have Platform Controls for Standard on the account."
Can you help me ?
Thank you in advance.
Where can i contact Go support?
We are having trouble implementing Stripe Subscription where it stays in incomplete status. We started with the c# example from the fixed-price-subscriptions example https://github.com/stripe-samples/subscription-use-cases/tree/v1.0/fixed-price-subscriptions. We then replicated the code from BillingController into our own code (we are using Azure Functions). We are able to create the customer, payment, and subscriptions. However, the Subscription stays in the incomplete status. The code is almost verbatim from BillingController
Hello! Do you have a request ID I can take a look at?
This is a channel for technical/developer questions about Stripe - do you have a question about our Go client library?
Yes, Request req_mf2ZlF7BmTT2yl
thanks
Can you send over a subscription ID so I can see what state it's in?
@dim hearth Here is an example sub_JqWKWZQMus4aCD
It's in our test environment.
Here is an example: sub_JqWKWZQMus4aCD. thx
Ah, that request is trying to retrieve an external bank account for a Standard connect account. For standard connect accounts you have no control over their external accounts at all - we mention this in our docs here (https://stripe.com/docs/connect/bank-debit-card-payouts)
Thanks for sending that over! Give me a few minutes to take a look
The only thing you've done to this subscription is create it - you haven't actually attempted payment on the subscription yet, and it'll stay incomplete until you do. That specific step is covered here(https://stripe.com/docs/billing/subscriptions/elements#complete-payment) but I'd recommend reading through that whole guide just to get a better understanding of the flow for subscriptions
Yes, i dont whant control external accounts, i need to display on my connected account dashboard a list off payouts with the informations amount / external account / id / create date / arrival date.
I have the payouts list with :
$balances = \Stripe\Payout::All($filter, ['stripe_account' => $account_id]);
I need to avec account information to display it.
there is a way ?
Oh - I was under the impression that by attaching the paymentMethod to the subscirption, it would get paid. Reading the link, it seems that attempting the payment actually happens on the frontend?
Hello ! i have a question about order refunds : i have a marketplace of clothing, if a customer return any articles, i have to refunds money to my customer ( i have 30 days on legislation rules ) do i have any fees by stripe for this kind of transaction ?
Also, i make funds transfer to seller Stripe Account after charge, if a refund is asked by customer, how can i refunds money to customer ( with fees keep by my marketplace + money trasnfered to stripe account of seller )
You can only do that for standard accounts where you have platform controls - that standard account was connected last year, before platform controls were introduced. If you were to create/connect a new standard connect account, you would have platform control and would be able to retrieve the external accounts
Yes, when you create a subscription with payment_behavior: default_incomplete you need to confirm the first payment intent separately - if you want payment to be attempted when the subscription is created you want to be using payment_behavior: allow_incomplete which is a slightly older flow. You can read more about it here https://stripe.com/docs/billing/subscriptions/fixed-price
Learn how to offer multiple pricing options to your customers and charge them a fixed amount each month.
Hello! For your first question about fees on refunds - there are no additional fees for a refund, but Stripe won't refund any of the fees from the original charge ( see https://support.stripe.com/questions/understanding-fees-for-refunded-payments). For your second question, are you using destination charges to automatically transfer a portion to the connect account? or are you doing separate charges/transfer?
Thanks. I must have been looking at different examples from different flows. Let me dig into it some more. Really appreciate the help!
Happy to help! Also want to add - if you don't have a strong business reason for using allow_incomplete, I would strongly recommend using default_incomplete. The way things work with default_incomplete puts it more in line with how one-time payments work, and it makes handling the failure case way easier π
thanks, separate transfer because after customer order, the seller can " accept / refuse " an order, and funds are not transfered if he refuse.. i don't know if it's a good practice but i use this today. What is your solution for my second question ?
If you're doing separate charge/transfer then you would reverse the transfer (see https://stripe.com/docs/connect/charges-transfers#reversing-transfers) and then create the refund (https://stripe.com/docs/connect/charges-transfers#issuing-refunds)
With Connect, you can make charges on your platform account on behalf of connected accounts, perform transfers separately, and retain funds in the process.
@dim hearth okay thanks, i haven't got any fees to reverse transfer ?
I don't believe there are any Stripe fees for reversing a transfer, but if you want to be sure (or have more questions about fees) I'd suggest asking support https://support.stripe.com/contact
Find help and support for Stripe. Our support center provides answers on all types of situations, including account information, charges and refunds, and subscriptions information. Get your questions answered and find international support for Stripe.
Hi Stripe. I have a question about creating a SubscriptionSchedule for an existing Subscription. If the existing Subscription already has attributes such as proration_behavior, transfer_data, and application_fee previously set, do I need to explicitly set them again in my SubscriptionScheduleCreateParams?
Hello! I don't believe you would need to set transfer_data or application_fee again, but I also want to mention - proration_behavior is something that is set on a per-request basis. It won't be persisted across multiple requests.
Hello, I have a customer who has an annual subscription with the billing period of August 21stβ¦ The customer pays manually, so we have it setup to send the customer an invoice on August 21st and they have 30 days before the account goes into βpast_dueββ¦. We want to send out the invoice to the customer 1 month BEFORE August 21st and have it go into βpast_dueβ after August 21st.
In this case, should we just update the billing cycle?
@dim hearth Thank you, I'll leave out the transfer_date and application_fee but continue to set proration_behavior (it's really just a boolean anyway). Just for my own sanity check since it's my first time playing with scheduling a subscription, could you double check if this is all I need for my SubscriptionScheduleCreateParams:
customer (customerId), start_date (same value as existing subscription's next billing period date), phases.items.price (id of the new price), and from_subscription (id of the subscription we're targeting).
Hello everyone
I need a help
i want to schedule a cancellation of subscription, basically i want to cancel a subscription in future date. I have gone through the subscriptionSchedule doc but i haven't found schedule of cancellation of subscription.
If your goal is to send the invoice out one month before Aug 21st and have the invoice transition to past_due right on the 21st, then yes you would want the billing cycle to be a month before August 21st. I just want to check one thing though - is your goal to have the invoice transition to past_due or for the subscription to transition to some other state?
HI! I made a stripe payment on my new webpage hosted by aws. After that the page shut down (it always returns error 500: internal server error. I tried a lot of things, also shutting down the instance and rebooting it. It still returns error 500. I'm not very experienced in this topic so I don't know what information you may need so feel free to ask. I also don't know if this is more of a stripe or aws issue. I would be very happy if someone could help me to get my webpage back running normally. Thank you in advance!
I believe when you create a subscription schedule using from_subscription you can't set any of the other parameters - if you want to make any changes to the subscription schedule you need to do so in a follow-up request
The goal is for it to go into past_due on August 21st @dim hearth
Gotcha, if you just want the invoice to go past_due then yes, you'd have the subscription w/ a billing cycle date a month before and have days_until_due be 30
There are multiple ways to cancel a subscription in the future, and you don't necessarily need to use subscription schedules. If you're fine with generating prorations you can just set cancel_at on the subscription to cancel it at a specific timestamp
If these are 500s you're getting back from Stripe (you see the requests in your dashboard, and have request IDs for them) then this would be a Stripe issue. If these requests aren't even hitting Stripe then it would be an aws issue. Have you talked to your hosting provider to get more details?
@dim hearth I'm a little confused with the from_subscription param and the suggestion of making 2 separate calls. May you walk me through how to achieve what we're attempting to do with subscription schedule? Our goal is when a Subscription's price changes from free to paid, we don't want the billing cycle to reset immediately; instead, we want the billing cycle to finish running its course before charging users at the new subscription price.
When you're changing the subscription from free to paid, are you updating them one price ID to another, or are they previously on a trial that ends?
@dim hearth we are updating them from one price ID to another.
@dim hearth I initially thought setting proration_behavior to none would suffice, but I learned from koopajah this morning that it only works for plans with a fee. This is why I'm trying to remedy the situation of Free to Plan with a fee setup.
okay but i didn't get you, let me explain my use case
so i have a requirement where in YEARLY subscription if the user cancel or switch the subscription in the last 3 months of the subscription period then this will cancel their 3 period subscription not the next period
Example, i have a subscription from 1 jan, 2021 to 31 dec, 2021, so if user cancel or switch the subscription in the last 3 months then it will cancel the subscription period from 1 jan, 2023 to 31 dec, 2023 not the next upcoming subscription period from 1 jan, 2022 to 31 dec, 2022.
Ahhh, gotcha - yeah when you transition from a free -> paid plan we will always reset the billing cycle. So what you want to do is first make a request to create the subscription schedule that just sets from_subscription - this is just turning your existing subscription into a schedule, we don't allow you to set other parameters when you set from_subscription. Once you've made that request, you can then update the created schedule and add an additional phase for the upgrade to the paid plan. Does that make sense?
Hey, I have linked my stripe account to Docu-sign. I have save payment info for recurring charges....
But not sure where it goes lol
@coarse panther hello
@coarse panther that would be a good question for the Support team at https://support.stripe.com/contact , please write in to them and they should be able to help you!
Find help and support for Stripe. Our support center provides answers on all types of situations, including account information, charges and refunds, and subscriptions information. Get your questions answered and find international support for Stripe.
Hello! I plan to use Connect for a savings jar app, where users can add money to savings jars. If all the deposits go to the same bank account, how should I distinguish between jars? For example, how would I use the Stripe API to check how much money is in a particular "jar"?
Awesome,t hanks
@lost turtle hello, why do you say "If all the deposits go to the same bank account". If you're using Connect, the savings would go to each Connect account's Balance, and would eventually be paid out to whatever external account they have connected to their Connect account.
Yes, for that case cancel_at is still an option - you would set cancel_at to the timestamp of Dec 31 2023. The only problem with this option (as I mentioned earlier) is that it'll generate prorations unless you have the cancellation timestamp to be exactly when it's supposed to renew. If you want to do this with subscription schedules you would turn your subscription into a schedule using from_subscription (see https://stripe.com/docs/api/subscription_schedules/create#create_subscription_schedule-from_subscription), you'd make sure the current phase has an end date of Dec 31 2023 (either by setting end_date or iterations on the phase, and then set end_behavior to be cancel (see https://stripe.com/docs/api/subscription_schedules/create#create_subscription_schedule-end_behavior)
Complete reference documentation for the Stripe API. Includes code snippets and examples for our Python, Java, PHP, Node.js, Go, Ruby, and .NET libraries.
Ok, I'm still unfamiliar with how it works. Connect was recommended to me by the IRC chat. They said since money is moving into the app and then back out to the users, Connect would be the way to do that
Hey guys, I am with a small startup, and we are just starting out. We recently purchased a verifone p400 plus reader (thru Stripe), and we were wondering how we can get it to interact and display a GUI. Does Stripe handle that? Or do we need to build our own pos system in order to use the reader?
@lost turtle yeah I think you need to read up on Connect more thoroughly. Basically in a food delivery scenario, there's say Doordash, the "Platform", then drivers who are Connect accounts (with individual attached bank accounts) and customers. Customers pay the Platform, the Platform pays the Connect accounts.
@narrow whale hello, all of Stripe's Terminal readers require you to develop an integration to interact with the reader. So you have to build the GUI and integrate with the SDK and to Stripe's APIs to get an up and running integration
Hi, is there an account link page to add bank accounts to a custom connected account? or is this something I need to handle myself?
@serene spoke hello, you have to add support for that on your end, it isn't supported on the Custom Connect onboarding "hosted UI"
thank you!!!
@bold basalt ok, will do
Is there a way to add tags or labels to transactions? So I could add for example a savings jar's id to some transactions, to query them later?
@lost turtle in metadata
@lost turtle but metadata isn't queryable
@bold basalt so really you should store your internal jar ID and the PaymentIntent ID on your end.
are there any good walkthrough examples on doing this?
I also got you from your last reply, but as you mentioned the timestamp of dec 31, 2023, i guess this timestamp will cover the 2023 year also, i only need to cover the next year if the user cancel the subscription in last 3 months of the period.
I think i will need the timestamp of starting date of the next year subscription and this will also cover the year and also perform cancellation after that year.
Please correct me if i am wrong?
@serene spoke https://stripe.com/docs/connect/payouts-bank-accounts and https://stripe.com/docs/api/accounts/update#update_account-external_account
Managing bank accounts and debit cards on your Custom connected accounts.
Complete reference documentation for the Stripe API. Includes code snippets and examples for our Python, Java, PHP, Node.js, Go, Ruby, and .NET libraries.
@bold basalt does the verifone have a functionality which senses when a credit card is inserted?
@narrow whale your integration asks P400 to "collect" a payment method, and then it supports dip, tap and swipe.
This is all logic you would build into your integration - if they cancel within the last three months, then your code would update the subscription and set cancel_at to the date you want. If they cancel before the last three months, then you'd simply set cancel_at to something else.