#dev-help
1 messages · Page 120 of 1
@cosmic galleon hmm that's really weird. I think I'd need to see your exact code and a stack trace ideally. This might happen if there's something in the JSON the library can't handle for some reason but it shouldn't really be happening
@dreamy karma it's in the wrong place, it goes inside payment_intent_data , not the top level https://stripe.com/docs/api/checkout/sessions/create#create_checkout_session-payment_intent_data-application_fee_amount
now getting this
Can only apply an application_fee_amount when the PaymentIntent is attempting a direct payment
yep because you're not using Connect in that code.
any solution without connect
if you're trying to do a Direct Charge you would pass [stripe_account] like the docs say https://stripe.com/docs/connect/creating-a-payments-page?platform=web&ui=checkout#web-create-checkout
that question makes no sense because if you're not using Connect there's no concept of a 'commission' or fee since it's just you and the end-customer involved.
i am using transfer_group instead of connect
the main reason is because i can't force my sellers to setup the account so that why i am using transfer_group when they setup the account then i will release the payment
yes
I think that's a really bad idea to be honest, you should fix whatever reason there is they can't create accounts instead of doing it this way.
I highly highly recommend rethinking your approach here.
but anyway if you're using https://stripe.com/docs/connect/charges-transfers then you cant' use application_fee_amount or anything like that. Instead, when you do transfer the money, you simply transfer an amount that is less than whatever you charged through Checkout. So effectively you take a commission which is that difference.
Should I raise a proper support request?
@cosmic galleon it might be easier! I do want to test this myself too to try to replicate but I'm juggling some other things and have to leave soon, so it will take me a while to get my Java server set up
something else a bit odd. I've never installed anything but v1.6.4 of the CLI via tar download (but I did follow instructions to setup autocomplete)
mark@ubuntuvm:~/Stripe$ stripe -v stripe version 1.5.14 mark@ubuntuvm:~/Stripe$ ./stripe -v stripe version 1.6.4
not sure I follow, what's odd about that?
ok I just tested this and I don't get the same issue
stripe listen --forward-to localhost:4567/webhook_java
...
stripe trigger subscription_schedule.canceled
and for the endpoint :
post("/webhook_java", new Route() {
@Override
public Object handle(Request request, Response response) {
String sigHeader = request.headers("Stripe-Signature");
String payload = request.body();
Event event = null;
try {
event = Webhook.constructEvent(
payload, sigHeader, endpointSecret
);
} catch (JsonSyntaxException e) {
// Invalid payload
logger.error("invalid payload : " + payload);
response.status(400);
} catch (SignatureVerificationException e) {
// Invalid signature
logger.error("invalid signature : sigheader:" + sigHeader + " ; payload : " + payload);
response.status(400);
}
logger.info("handling event " + event.getId());
if ("subscription_schedule.canceled".equals(event.getType())) {
SubscriptionSchedule sched = null;
Optional<StripeObject> obj = event.getDataObjectDeserializer().getObject();
if(!obj.isPresent()){
try {
// this might fail if the the event is sufficiently different
// in this API version from the model used in stripe-java for that object.
// see https://github.com/stripe/stripe-java/wiki/Migration-guide-for-v9#event-deserialization
sched = (SubscriptionSchedule) event.getDataObjectDeserializer().deserializeUnsafe();
} catch (EventDataObjectDeserializationException e) {
logger.error("failed to unsafely deserialise event : " +e.getMessage());
response.status(400);
return "";
}
}else{
sched = (SubscriptionSchedule) obj.get();
}
logger.info(sched.getEndBehavior());
}
response.status(200);
return "";
}
});
maybe it helps to compare what you have?
hmm though you're right, it does enter that branch that calls deserializeUnsafe (though that works and doesn't crash for me) so it seems like there is maybe some issue
oh, never mind, I forgot --latest on the stripe listen call. When I do that it's all good. So yeah, I can't replicate what you're seeing unfortunately.
👋 I am stepping away for the moment so a Stripe engineer might not see your message here for an hour or so from now — please contact https://support.stripe.com/contact for a guaranteed response!
Can Stripe payment be used with Amazon Alexa or Google Assistant?
I doubt it, but we really have no specific support for those types of integrations even if they're technically possible.
Hi.
Is there anyway to use Stripe in South Africa
@polar cradle You'd need to ask the support team via https://support.stripe.com/contact
Thank you! I will check
Hi is there a way to only list all paymentintents where payments succeeded? Kinda like the dashboard does
and if that is not possible, what is the best way to verify payment? I;m now checking amount_received
You'd have to filter locally on the status field from the results of https://stripe.com/docs/api/payment_intents/list
uff, so i tried status but i now that i check it i see that i tried it on a checkout session. Thanks for helping!
oh and another small Question. How do you set limit to infinite. ('limit' => ?]
because it seems to be set on 10 as a standard
Karlekko mentioned that i didn't need to parse any json to check if x user was subscribed or not, i could just use subscription.getStatus(). I can't find that function anywhere. Do i get that from the SubscriptionService object?
Hello everyone, I have a slight issue. We have an old school customer that wants to pay by check. So we have scheduled invoices to go out once a year. However, we want to schedule the invoice to go out 30 days before - currently it’s being sent out 7 days. In order to change that, it wants us to update the billing cycle. Is there a way to update the invoice to go out 30 days before it’s due?
You'd use auto-pagination instead of raising the limit. https://stripe.com/docs/api/pagination/auto
I'm not familiar with getStatus but you can retrieve the Subscription via https://stripe.com/docs/api/subscriptions/retrieve?lang=dotnet and then look at the status property https://github.com/stripe/stripe-dotnet/blob/7adfbb212db227a3125dcdfd821459daafe70a05/src/Stripe.net/Entities/Subscriptions/Subscription.cs#L442
Can you elaborate on what you mean by it's currently being sent out seven days in advance? Invoices are created when the billing cycle starts. Do you perhaps means the upcoming invoice notification?
@sick talon yes, sorry, that’s what I meant - upcoming notifications.
The 'status' property only seems to check whether or not the actual product is active or archieved. I'm trying to figure out whether or not per customer is subscribed to the product or not.
@sick talon we want to send a invoice notification 1 month in advance so their services don’t get cutoff.
What object are you looking at the status of? The one I linked to is the Subscription, not the Product.
that setting is on https://dashboard.stripe.com/settings/billing/automatic
I'm looking at the subscription object, i can test again. But what i did was make an if statement so that if a user was subbed a text would change to subscribed, so i tested and then unsusbscribed but nothing changed. Hmmm
You'd check the status of the Customer's Subscription(s) as well as which products are associated with the Plans/Prices in the Subscription's items https://stripe.com/docs/api/subscriptions/object?lang=dotnet#subscription_object-items
Complete reference documentation for the Stripe API. Includes code snippets and examples for our Python, Java, PHP, Node.js, Go, Ruby, and .NET libraries.
There isn't a way to go from Product to get all of the Subscriptions or Customers that are subscribed to the given Product, you have to go from Customers->Subscriptions->Items and compare
Could i just use items.price.active?
That will just tell you if a Price is active or not, nothing about who is subscribed
oh lol
Hello
I have a question about the bacs debit payments
I am trying to trigger the async payment failed / succeeded events
@sick talon it looks like the earliest notification that can be sent is 10 days.
Hi, I was wondering if there was a recommended way to set up subscriptions with the new stripe-react-native library?
It seems to only handle paymentIntents and setupIntents
@sick talon do you know if it’s possible to extend this to 30? Possibly via Stripe’s API?
I was hoping for a way to get the customer sourceId so that I could use that and purchase the subscription on our server?
You'd use the test cards on https://stripe.com/docs/payments/bacs-debit/accept-a-payment#testing
Learn how to use Checkout to accept Bacs Direct Debit payments.
Thanks
Are you using this field?
You would use any of our backend libraries for that, the ReactNative library is just for frontend usage.
Yeah, but I want to let the user select which card they want to use
using the paymentSheet
I've tried 90012345 and 92222227 but haven't received the async events :/ (I have waited more than 3 minutes)
You'd use a backend library to list PaymentMethods (https://stripe.com/docs/api/payment_methods/listand then display a selector to the user. It's not a built-in function of Stripe.js because you need to use your secret key to list them.
What's the id of one of the payment intents where you didn't get an event?
Ok, I had set it up like this before with tipsi-stripe, but it feels a shame not to be able to leverage the payment sheet and it's ability to manage payments. It also means I don't get to use google or apple pay?
Turbo, do you think its okay for me to privately message kalekko about the subscription.getStatus(). Perhaps he's got an easier solution to my problem. I just know that some discord communities do not allow private messaging to admins.
Why would you not be able to use Apple/Google Pay? Usually what you'd do is offer the customer to select an existing PaymentMethod or add a new one, and that latter would mean you display the sheet.
Lemme find it thanks. I have the event id right now :
evt_REMOVED_ID
setup intent?:
seti_REMOVED_ID
karllekko likely isn't around right now
Yes i see he's away, which is why i'd like to message him. So that he sees it when he comes on 🙂
A SetupIntent doesn't actually make a payment (it just sets up the PaymentMethod). Have you used that PaymentMethod with a PaymentIntent yet?
I'll check the events
I dont think there are payment intents
Doesn't that happen automatically?
Thanks for your help by the way, I really appreciate it
ahh, looks like the invoice is scheduled for an hour after the creation of the subscription
Hey everyone! We're having the following issue:
We have set up our checkout in an electron app using Stripe elements. Everything works fine in test mode, but in live mode we get the following error when performing a payment with 3DS for a specific provider.
electron Refused to display in a frame about:blank:1 because an ancestor violates the following Content Security Policy directive: "frame-ancestors 'self' https:"
We're then stuck at the 3DS popup with the only option to cancel and go back...
Anyone have any ideas on how to fix that?
I'll try clicking charge customer to speed it up, hopefully the payment failure / success events will be triggered
@safe comet hello, reading one sec
@west pivot yeah Invoices finalize and automatically pay in 1 hour (outside of the first Invoice), you can manually finalize and pay them through the Dashboard or the API.
Awesome thanks
Though one thing I have realised.... invoice.payment_failed and payment_intent.payment_failed events happen but not checkout.session.async_payment_failed like the documents suggest? https://stripe.com/docs/payments/bacs-debit/accept-a-payment#async
Learn how to use Checkout to accept Bacs Direct Debit payments.
charge.failed too
@west pivot can you share just the CheckoutSession ID? So I can look up what events it sent and which ones it did
lemme see
@bold basalt cs_test_c17ZsgIZpGmxCd9G0ZnjFfPPcb7OxDCT9lUGvCqQra5CDC52SoVABxk7tL
Thanks
Late to respond, but thanks @sick talon - I believe that was it.
@west pivot how did you create the failing Subscription / Invoice ? was it manually or via Stripe Checkout also?
I get the payment method from stripe checkout but then manually create the subscription as I have a custom subscription schedule
I can use invoice.payment_failed though, it's no problem.
Hi Is there a full source available for https://stripe.com/docs/webhooks/build#example-code - I'd like to know the types to better understand a problem I'm having
Write the code that properly handles webhook notifications.
specifically Java
@cosmic galleon There's a lot of samples here in many languages: https://github.com/stripe-samples
Learn how to set up and deploy a webhook to listen to events from Stripe.
@west pivot yes so that is expected then that you don't get a checkout.session.async_payment_failed event.
You created a CheckoutSession in setup mode which succeeded and gave you the Customer's bacs_debit PaymentMethod. The payment failure was outside of the scope of Stripe Checkout, therefore no CheckoutSession "payment" failed hence no checkout.session.async_payment_failed event.
Thanks @bold basalt , though that is rather confusing as that is the only way the bacs_debit can be used with checkout if I recall correctly
I could be mistaken, or it may be a recent update to stripe checkout
@west pivot not sure why that is confusing. As an integration, you used CheckoutSession in setup mode and that worked to give you a PaymentMethod. Checkout itself didnt try to create an async payment then later failed, your code used Stripe's API to create a payment which failed.
Oh, my bad. I've just realised why I was confused. Is it correct that bacs_debit can only have recurring prices and not one_time?
@west pivot it does support one time payments, on Checkout in payment mode: https://stripe.com/docs/payments/bacs-debit/accept-a-payment
Learn how to use Checkout to accept Bacs Direct Debit payments.
Okay thanks
I really appreciate it
Ah, I was following this guide and used setup:
Learn how to create and charge for a subscription with Bacs Direct Debit.
I can't remember why exactly, but at the time there was I reason why I had to use setup
@west pivot since you're using Subscriptions you need to obtain a Bacs Debit PaymentMethod with the right mandates etc and Checkout helps you do that, which is using setup mode for Checkout. So you can continue creating recurring payments on the fully "set up" PaymentMethod later.
Thanks
Here's the full error:
Refused to display 'https://3ds.borica.bg/way4acs/pa?id=YOhtR_DpPUvcYbJE62W4ZA.MA' in a frame because an ancestor violates the following Content Security Policy directive: "frame-ancestors 'self' https:".
@safe comet ah I see, not super familiar with CSP issues in electron apps, so not sure I know the answer but can ask internally
Great, much appreciated! Let me know if I can provide more details.
Hi everyone
we have got some issue regarding payments
Steps
user added the payment card and it went fine
user scan QR Code of asset and process the payment and got the message "Payment failed" user tried the same with different cards and message was same but when i check stripe dashboard there were NO declined transaction, how can we trace this issue ?
@vocal wagon hello, what is the QR code for? What Stripe product are you using? Checkout? Elements?
This QR code belongs to kayak and project is about kayak rentals
we are using checkout
@vocal wagon do you have a CheckoutSession ID that is incomplete? Have you traced down to the PaymentIntent that they attempted charges on (which declined)
we have traced down to payment intent and we got response object and this thing is happening only with USA based while other cards from EU ,india and australia are working fine
@vocal wagon can you share the PaymentIntent ID (just the ID, not the full object) so I can look it up and maybe try see what the issue was?
hi , i am not my workstation right now, is it ok to email or private message you ?
@vocal wagon you can share here in this Discord #dev-help channel when you get a chance
ah thanks : )
i will ask my dev team to join this channel and discuss this issue here
Hey! Short question, because it is missing in the doc: May I assume ,that metadata I write to a subscription schedule object is saved to the subscription (which is created in the future) as well? Thanks!
@viral bane hello, I don't think it is copied down to the Subscription ? I would try it in test mode and double check if it is or not
Thanks! Any idea how to get my metadata in a future subscription? 😅
@viral bane you'd have to copy it from the SubSchedule to the Subscription
Let me guess, there is an event/webhook for it? Thanks! Will look it up!
Fast support, love it 🥰🥰
@viral bane the customer.subscription.created event, which will be sent when a Subscription is created. a Subscription object has a schedule field that you can use to grab the associated SubSchedule: https://stripe.com/docs/api/subscriptions/object#subscription_object-schedule
Complete reference documentation for the Stripe API. Includes code snippets and examples for our Python, Java, PHP, Node.js, Go, Ruby, and .NET libraries.
@viral bane thanks for the feedback! we love supporting users directly here too, so easy to bounce ideas etc
@safe comet Do you know what protocol your electron app is using? I'm not the best w/ CSP issues, but from the error it sounds like that specific provider is requiring their content be framed from their own origin, or from a page that is loaded w/ https
Hello, i hope all is well, can anyone help me with stripe new check out and getting it integrated into my bigcartel website? I have chargeback protection enabled but it isnt working because its requesting that i have the new stripe checkout, however, no idea how to get this into the site
@unreal moon Hello! Unfortunately we can't help with third-party integrations as we don't own or control their integrations. You would need to reach out to BigCartel for help.
Hey all, I was wondering if there's a way to list all the payments associated with a connected account? I'm essentially looking to return all this data: https://peepoclap.com/u/FGW3ZIoS1.png to display to my end user on my website. I've been looking myself but other than creating a loop that smacks the stripe API (which is not preferable) there doesn't seem to be an easy way to get all the information I need
Hello! Is there a way to create a subscription but delay the first charge? Would setting the trial be appropriate here or is there another way?
@stray skiff You should be able to use the List Charges API to do this: https://stripe.com/docs/api/charges/list
You would call that API on behalf of the connected account: https://stripe.com/docs/connect/authentication
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 add the right information to your API calls so you can make calls for your connected accounts.
I am trying to figure out abt when am supposed to receive my payout. Customer made a purchase 2 weeks ago via my website, order has been fulfilled and I am still waiting on my payout. it keeps giving me a different pay out day
Fabulous, thanks so much!
Totally missed that page
@balmy yacht Hello! Usually setting a trial is the best option, but you could also schedule the Subscription to start later with Subscription Schedules. Do you have concerns about using a trial?
@sleek furnace Hello! I wish I could help, but this chat is focused on developers and technical questions. Our support team will be able to assist you better than I can: https://support.stripe.com/contact/email
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.
@mighty hill trial sounds great, but does subscription schedule allow term limits? for example a monthly recurring product but only charging once a month for 12 months
Yes, we tried multiple ways, but none of them seems to work. We tried setting to https, but the error remained the same…
@balmy yacht Yep, you can do limits like that with Subscription Schedules. See here: https://stripe.com/docs/billing/subscriptions/subscription-schedules
Learn about the Subscription Schedules object and how to use it.
Incredible - did not know schedules was a thing - we've been having to build into webhooks to stop subscriptions after specific terms (ie 1 year/2year/3year subs)
Hey all! New to Stripe and struggling a little grasping everything. Because it relates to payments, it's not something I want to debug in production 😉
I'm building a solution based on the Subscription with Checkout sample (https://stripe.com/docs/billing/subscriptions/checkout).
My backend is in Golang and I'm less familiar with JavaScript.
Couple of "architecture" questions:
My (required) auth step (always) yields an email address that I correlate with the Stripe Customer ID and persist.
If I have the email address and no Customer (ID), I route to Stripe checkout and it pre-pops the email.
If I have the Stripe Customer ID, I don't pass the email and Stripe Checkout prepops the Customer's details. All good.
But what if the Customer has an active subscription? Is the correct flow to persist the Customer and Subscription IDs, lookup the Customer and, if the customer has a valid ("active") Subscription (!), then just continue (without navigating the Stripe Checkout flow)?
@vocal wagon Hello! I'm not sure I fully understand your question around a Customer with an active Subscription. Can you provide more details about the specific flow you're trying to build and what's blocking you?
Hmm... that's strange - I would've assumed switching to https would've resolved the issue. How are you setting it https?
Hey @mighty hill thanks! I always have an email address.
First time through, the user needs to create a Stripe subscription. I have an email address, start the Checkout flow and it will either lead to them backing out or creating a subscription ... if they proceed, the session that results includes a Customer ID and a Subscription ID (I persist this)
Next time they visit, if, when I look them up (in my user database), I just have an email, I prepop the Checkout with the email and route them back to it, they may subscribe this time
At some point when they visit, I'll have an email, a Stripe Customer ID and a Subscription ID.... If I have the Subscription ID, should I lookup the subscription on Stripe and, if it's active, just continue assuming they're a paid up user?
The example doesn't include anything beyond the initial flow.
@vocal wagon Yeah, that sounds like a good approach. No need to send them to Checkout if they have an active/paid Subscription, right?
you might want to keep a copy of the subscription state in your own db, though - doing a lookup to stripe to check if the user is active is slow, esp if it's on every page load or something
Great, thanks! That was my thought... I'm updating CheckoutSessionParams with the Customer ID and|or Customer Email before session.New(params) and wondered whether, the correct approach was to put the Subscription ID in there too (CheckoutSessionSubscriptionDataParams) but couldn't find an obvious way to do it. Thinking more about it, to your answer, if I have the Subscription ID and I confirm it's active, it seems I just avoid checkout altogther (until the subscription expires). Thanks!
@vocal wagon Checkout is only used to start Subscriptions. Are you asking how to use a Stripe-hosted surface to let your Customers modify existing Subscriptions?
We have tried many things, but after we build the app, the protocol is file://
@vocal wagon If that's what you're looking for we have the Customer Portal, which is separate from Checkout: https://stripe.com/docs/billing/subscriptions/customer-portal
The simplest way to offer subscription and billing management functionality to your customers.
No, I'm just looking to build a comprehensive flow, given a user (email), to ensure they have a valid subscription before I let them use my app
... and to ensure that their flow my app is minimal i.e. they only need to visit checkout if they're not already subscribed
@vocal wagon It sounds like you're on the right track to me. 🙂
Super! Thank you for your help
Hello, it seems the trial period didn’t get activated correctly and a customers was invoiced prematurely… is it possible to change the subscription start/end date?
@gleaming urchin Hello! You can add a trial period to an existing Subscription (this won't refund the existing payment; that would need to be done separately) or you can adjust the billing cycle: https://stripe.com/docs/billing/subscriptions/billing-cycle
Subscriptions are billed on a cycle, learn how to set the billing date.
Hello! Is there a way to add information to an invoice? I have a customer who asks for specific information to be on their invoice.
add it as a metadata
and that will show up on each new invoice for them?
@distant jay Hello! You can add info to an Invoice in the description: https://stripe.com/docs/api/invoices/update#update_invoice-description
Complete reference documentation for the Stripe API. Includes code snippets and examples for our Python, Java, PHP, Node.js, Go, Ruby, and .NET libraries.
On Connect, how can you transfer an amount to a connected account or what's the best way to ensure the account has balance to be able to transfer to connected accounts?
I am having a hard time with invoices. When the trial ends and the customer changes to another plan than the default plan, they are charged for the new plan and the old invoice retries and they get charged for it too. So now what I am doing before changing the plan i am voiding the old invoice. However I noticed that makes the new invoice stay in draft status ... Any insights?
@wheat wing We have documentation about this here: https://stripe.com/docs/connect/account-balances
Learn how Stripe account balances work when using Connect.
thanks!
@sage burrow Can you provide a Subscription ID showing this behavior so I can take a look?
@mighty hill if I switch the Payout schedule to manual, does that apply to the connected accounts?
@mighty hill sure I'll get it for you
@mighty hill sub_Jp1oX35qEAeeee. Keep in mind that for this one I finalized the invoice thinking that by doing so the client would be charged (to avoid it staying in draft status)
@sage burrow Thanks! Taking a look now...
@sage burrow Wow, you're on a very old API version. Any chance of upgrading that? 😅
@mighty hill I agree. But unfortunately not soon.
@sage burrow This request to void the Invoice made the Subscription switch from past_due to active: https://dashboard.stripe.com/test/logs/req_32mb1v1c3TwauT
I'm actually not seeing an Invoice after that associated with this Subscription. Do you have an ID of the draft Invoice?
In my case I cannot to find a way to apply coupons/promo codes successfully. Customer comes, applies coupon and purchase Product from Connected Account. Using the API we setup an intent to charge with "confirm"=true, the amount is the Product price - coupon's "amount_off"
Only if you set it on the connected accounts themselves. Your platform's payout settings are separate.
if the setupintent is success we do a Stripe\Transfer::create(to the connected account)
Coupons only apply to Invoices, but it sounds like you're using Payment Intents directly?
@mighty hill yes this one is the original one that I voided in_0JBO1AtC5CmKO3CdDC29pPFY and the second one that I had to finalize in_0JBNkrtC5CmKO3CdftUG7l90
then we attempt to do a 2nd transfer for the coupon price
the coupon cost is on us not on the connected account
@safe comet was saying earlier that this was only happening with certain providers, correct?
@sage burrow Sorry, I think I'm missing something. in_0JBNkrtC5CmKO3CdftUG7l90 is a $0 Invoice that covers the trial period. in_0JBNkrtC5CmKO3CdftUG7l90 is the only non-zero Invoice associated with this Subscription that I can see, so I'm not sure what you mean by "they are charged for the new plan and the old invoice retries and they get charged for it too" in your original message. Can you clarify?
@mighty hill yes, we do
- PaymentIntent::create(['amount' => product price - coupon, 'confirm' => TRUE])
- \Stripe\Transfer::create(intent->amount) <<< to the connected account
- \Stripe\Transfer::create(coupon amount_off) <<< to the connected account
but #3 fails
"You have insufficient funds in your Stripe account"
@wheat wing Can you give me the request ID showing the failure details for #3? Here's how you can find a request ID: https://support.stripe.com/questions/finding-the-id-for-an-api-request
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.
req_AyJ4llS6kttx6N
@wheat wing You likely don't have enough in your available balance to cover the transfer. You need to make sure your available balance can cover a transfer like this: https://stripe.com/docs/api/balance/balance_retrieve
Complete reference documentation for the Stripe API. Includes code snippets and examples for our Python, Java, PHP, Node.js, Go, Ruby, and .NET libraries.
checkout the description on this req_HcMVWi4nVenNHu
@mighty hill in_0JBO1AtC5CmKO3CdDC29pPFY has a field amount_due = $588 but I voided it and in_0JBNkrtC5CmKO3CdftUG7l90 has $0. Do you know why it has $0?
@wheat wing That transfer succeeded because you specified source_transaction as the source of the funds.
@sage burrow Yeah, that Invoice is for the free trial period. Look at the line items, there's a description there.
@mighty hill is it possible to have it withdraw or use the bank account connected with my account?
@wheat wing No, not directly. You would need to add funds to your platform balance: https://stripe.com/docs/connect/top-ups
Platforms can add funds to their balance from a bank account.
@wheat wing Also, be aware that in test mode you can use test card number 4000000000000077 to create payments that will bypass your pending balance and land in your available balance immediately.
@wheat wing The test card is, but top-ups are not.
@mighty hill makes sense. So definitely what I did didn't solve my problem. I am gonna ask the original question that I asked last time. I am looking for the ids to copy them here
if I can't do the top-ups in Canada that means I can't use coupons
is there anyway you see that I could do this
@wheat wing Can you give me an example scenario with actual amounts? As I understand it you want to handle a scenario where you have a $15 price and a $5 coupon, so you create a $10 payment on your platform ($15 - $5) and then you want to transfer all $15 to your connected account. Is that correct?
correct
@wheat wing You can't transfer more than you have available, so no, that won't work.
so the platform cannot hold funds to cover future costs (coupons)
@wheat wing I recommend writing in to support to ask about your use case to see what we can do to support you: https://support.stripe.com/contact/email
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.
Thank you
@wheat wing A platform can switch to manual payouts and hold funds, but it sounds like you would never have enough in there to cover the transfers you're talking about.
@wheat wing If you explain your use case to support hopefully they have a solution that will work for you in Canada.
@mighty hill this is the original subscription sub_JYtGMRNwoXfC6g where the problem occurred. They were charged for the original default plan and they shouldn't. Basically their trial expired, we locked them, then they entered their credit card info after choosing a different plan $115 a couple of days later stripe charged them for the original default plan $588
@mighty hill what do you think I should do to prevent this?
@sage burrow You should void the outstanding Invoice when they switch to the new plan.
@sage burrow Invoices created by Subscriptions will continue to attempt payment unless you explicitly tell them not to by voiding them, canceling the Subscription, etc.
@mighty hill That's what I did. Maybe I didn't do it correctly. I am relying on the latest_invoice field. Is there another way?
@mighty hill in other words how do i get all the outstanding invoices right after they change the plan?
@sage burrow You would need to look at the latest_invoice on the Subscription before making the change.
@sage burrow Honestly, to be on the safe side, you should probably list all Invoices associated with the Subscription and make sure all the outstanding ones are voided before making the change: https://stripe.com/docs/api/invoices/list#list_invoices-subscription
Complete reference documentation for the Stripe API. Includes code snippets and examples for our Python, Java, PHP, Node.js, Go, Ruby, and .NET libraries.
@sage burrow I have to run, but @sick talon should be able to help you if you have further questions! 🙂
@mighty hill sounds good. Thanks!
I'm trying to understand something... So we have a customer paying manually and their trial end August 21st... We set "Email invoice to the customer to pay manually" 30 days after invoice is sent. Does this mean the invoice will be sent on July 21st and the invoice is due August 21st?
Only one that we know of at the moment. It could potentially be happening with others as well. Most banks in our country (Bulgaria) use the same provider (Borica), so we can’t really test with many others. Revolut worked fine.
Can you clarify what you mean by We set "Email invoice to the customer to pay manually" 30 days after invoice is sent.?
@sick talon
That means the payment is due 30 days after the invoice is created. The invoice will be sent when it's created.
Ok, so it will be sent on August 1st, but the account won't go into past_due status until after 30 days. Correct @sick talon ?
The invoice won't be past due for 30 days, correct. Whatever your settings on that page cause to happen for something that's past due will happen at that point.
Thank you again @sick talon
You wouldn't commonly use the CLI in live mode. Can you clarify what you mean?
why can't a use the CLI in live mode?
So, it traps all of my hooks and forwards to localhost
If you mean taking a webhook live, you wouldn't redirect via the CLI for live mode as a permanent thing. You'd use a web server that's directly accessible.
I'm on a webserver
My site's live
I use Express
but I'm listening on a specific port in my code
so, my site's port is 443
I listen on 8000
I have no webhooks in test mode
OK, let's take a step back. You have the CLI tool listening for webhooks in test mode and forwarding them to a local webhook endpoint?
--forward-to localhost:8000/hooks
my Express (node.js) code is listening on port 8000
yes, forwarding to local webhook endpoint
local = web server since cli is running on web server
OK. In live mode you would not do that. You would instead have a hosted webhook endpoint that isn't on localhost, and point webhooks directly to its URL instead of through the CLI tool.
ok, so how?
I'm running express that's listening and acting on the hooks that it receives
Express is the web server
However you want to set up a web server, e.g. on a hosted service, or on a server you control, or on AWS, etc. The only different is instead of using the CLI, you add the URL directly. You'd follow https://stripe.com/docs/webhooks/go-live
Complete your tested webhooks integration by enabling it on production.
so, if I add a webhook like "https://mydomain.com/hooks" how does the Express engine no it's a stripe hook
I'm not sure what you mean by that. In Express you would set up a route for the endpoint.
ok, can you give me an example web hook url, and route to an endpoint. just make up anything
I mean, an example webhook url would be whatever URL you set up your endpoint at. e.g. https://www.myserversomewhere.com/webhooks (that's completely up to you).
In Express you'd just use something like the example code on https://stripe.com/docs/webhooks/signatures
Verify the events that Stripe sends to your webhook endpoints.
@sick talon Good evening I was passing by there just to thank the support team because I set up a wonderful marketplace thanks to stripe API. Some hard work left but you helped me a lot Thank you very much every single one (You, Karllekko and the Owl ^^)
Stripe is amazing and I will not move from that stance ever
Unless they somehow commit some major human rights violation, in which case then that might be tarnished from “amazing” to “still pretty good”
Sorry for the long wait - Unfortunately I don't really have a great answer. From my understanding of 3ds v2, providers are required to allow for framing but I don't know the specific of whether they're allowed to have an restrictions/dictate how their content is framed (which they're doing by specifying frame-ancestors 'self' https). There are two things I can suggest from here:
- Contact Borica and ask whether it's intentional that they have all these restrictions on framing and whether they have any plans to change it
- Handle this flow in a webview so that the content source is https
may I request to add confirmCardSetup() to the @stripe/stripe-react-native sdk? if possible, can we also make it possible to pass the metadata as well? the current JS api is https://stripe.com/docs/js/setup_intents/confirm_card_setup. instead of card: cardElement, we could just pass in our own card details from CardField
Hi all, I'm trying to integrate Stripe on my Woocommerce/Wordpress store. I need to access my API keys. All the support links tell me the keys are located on my dashboard. However, my dashboard only shows me me name, store name and payment card details.
Hello! With the react native SDK instead of confirmCardSetup you would use confirmSetupIntent. You can see an example of it being used here: https://stripe.com/docs/payments/save-and-reuse?platform=react-native#react-native-collect-card-details. I don't believe you can pass in metadata into that call, but you can update the setupintent server-side with that information.
Learn how to save card details and charge your customers later.
Yeah, you'd want to check your API keys at the link that @slender relic gave (https://dashboard.stripe.com/apikeys)
Quick question: can we have multiple defined Customer Portals, each with their own products so I can redirect the different types of users to their portal with their respective products? I can't seem to find any option to set the plans in the API, only to change settings. Thanks
currently, i'm calling confirmCardSetup with metadata and listening to the "payment method created" event through the webhook and pulling that metadata out and using it. If we use confirmSetupIntent, the webhook doesn't get called
Hi all! Had a quick question about the Firebase-Stripe extension, specifically about how to make the association between the customers UID in firestore and the customers ID from stripe
I've got 90% of the way there and have even been able to run the portal and checkout correctly, but when I go to make a subscription purchase it doesn't populate in my firestore db
This is my entire dashboard. When I click that link, it asks me to login. Then it sends me here.
I haven't tried this myself (so I'm not 100% confident in it), but I believe you can create multiple portal configurations (https://stripe.com/docs/api/customer_portal/configurations/create) and when you create the portal session for your customer you would pass in whichever configuration you want (https://stripe.com/docs/api/customer_portal/sessions/create#create_portal_session-configuration)
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.
It looks like you have an express (or maybe custom) account that is connected/controlled by a different Stripe account (which is why you can't see a full dashboard). Have you already integrated w/ woocommerce through a different plugin? I'm surprised they are asking you for your api key if you are already connected to them
I've seen that, but in there I don't see where I can set the products/prices for each configuration. I have some type A users and type B. The type A can subscribe to prices X and Z and the type B can subscribe to J and K.
I can only seem to change products in the portal settings on the dashboard, and that stays the same for all users. Only via API it seems we can update/create more than the default.
You would set that in features.subscription_update.products right? (https://stripe.com/docs/api/customer_portal/configurations/create#create_portal_configuration-features-subscription_update-products)
Complete reference documentation for the Stripe API. Includes code snippets and examples for our Python, Java, PHP, Node.js, Go, Ruby, and .NET libraries.
Do you maybe mean the payment_method.attached event? There isn't a payment_method.created event that I know of
@dim hearth That seems to be it. As it read "update", it mislead me. But yeah, that should be it. Will run some tests with this. Many thanks for the help. You're awesome!
yes you're right i meant that one
Hello! Let me see what I can find - I don't touch the firebase stripe extension often so I don't know off the top of my head
Do you mind sharing a request ID or a payment method ID I can take a look at? Calling confirmSetupIntent should still trigger a payment_method.attached event as along as you created the setup intent already has customer specified
@dim hearth Awesome, thank you so much. I think I found something on github going into the specifics of the functions, so I'm going to explore that as well
Just to confirm - you've got your webhooks set up correctly, right? And are you seeing any errors in your logs?
the metadata won't get passed through though, is that right? i was under the assumption that passing in metadata to confirmCardSetup would then pass it through to the web hook. if we set metadata on createSetupIntent do u know if it would still pass that metadata to the webhook event payment_method_attached?
Yup, what I am thinking is happening is that I inadvertently created two paths; I think the issue is I am calling stripe checkout through a js script that I made from the stripe documentation rather than calling it through the firebase functions; the error I see in the firebase functions log is "User not found!"
Interestingly enough the payments and everything went through on Stripes side
Sorry I glossed over that initially - you're correct that if you want the metadata on the Payment Method itself then just setting on the SetupIntent wouldn't be enough. You'd have to do something like listen for setup_intent.succeeded events, grab the metadata on the SetupIntent, and update the PaymentMethod with the correct metadata
ok perfect! appreciate the help!
That sounds like that's the problem - I assume that your customers are being created during the checkout process which is not calling out to firebase functions and as a result, you don't call the createCustomer cloud function (which is what populates the customer into your database). As a result, the subsequent calls to update the customer fail (because it was never added to the database in the first place)
@dim hearth I was thinking that as well. Luckily I have the function creating a customer everytime a new user signs up in my web app through firebase, I need to figure out how to call the createCheckoutSession and the createPortalLink functions through my web app to make that connection. Thank you so much!
👋 Messages in this channel are unlikely to be seen by Stripe engineers on weekends. If you have urgent questions then you should reach out to Stripe support directly 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.
shoot, it really is friday isn't it
Good night,i bought 30m runescape gold, normaly it would take a few minutes,waiting for over half a hour now,the live chat said i needed to contact you guys
I am having an issue with invoices. I void outstanding invoices before changing the plan but no new invoice is generated?
@bright hamlet you'd need to reach out to the site that sold you the gold, not stripe. ooc, which site was it?
Its sorted out now, took some pretty Fing long time ,bit its good now
which site, if you don't mind my asking?
@sage burrow: are you changing the plan with proration turned off?
Np,i dont want them to have any probs because of me ,but they got me sweating thats for sure
when i create a checkout session and pass a customer, why is the email changeable? can i lock it?
Hey, so, I'm creating a checkout session with setup_future_usage: off_session, but for some reason I don't see the payment method attached to the customer after? Do I need to do that via a webhook or something?
Ok so it seems adding a card is different than what checkout sessions do, so basically, if I wanna reuse the cards from a checkout, I need to move all my backend stuff to use paymentintents instead of charges?
Does anyone knows if Stripe works in India as individual ? (Vs corporation)
that should be fine, yeah
when you're filling out the account profile, there should be an option to set it up as an individual account
Hi, need to ask that what can be possible reasons if i am not getting entries of failed transactions in stripe dashboard?
what sorts of errors are you getting when you create the transactions?
getting error from bank like do-not-serve
what's the exact error message?
"failure_message": "Your card was declined.",
"seller_message": "The bank returned the decline code do_not_honor.",
ok - that should definitely be creating failed payments in the dashboard
is it possible you have two stripe accounts, and you're logged into a different one?
@stark tide sorry, didn't got your question. do you means i am checking for entries in different account?
that'd be my first guess, yeah
No, i am checking in the only account which i am supposed to check. there are many entries missing for failed transactions.
do you have a request ID from one of the failed txns? it should look like req_***
yes, it is req_kWpOssllCH0fQ0
that's got a different error
You cannot combine currencies on a single customer.
that's an invalid request error - it won't even try to run a charge
Hi Team,
can you please help me please read my scenario
i am charging my client 400$ and want to transfer 350$ to my freelancer that is connected with stripe connect and 50$ is platform commission but during charge i want to give 100$ discount to my client so how it's possible i am using express account stripe
👋 Messages in this channel are unlikely to be seen by Stripe engineers on weekends. If you have urgent questions then you should reach out to Stripe support directly 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.
I am trying to figure out what causes the card box widget to execute
On the left is my integration
Could someone point out in the right hand code what calls the widget, that would help me a lot.
Hello there, I've recently been trying to set up a Stripe checkout website, and it has been going great, until now. It all works locally, but when I try to set it up on a remote linux server via nginx, it just doesn't want to work. When it tries to access the /create-checkout-session it gives me a 404 error. It really feels like a simple fix, but I can't wrap my head around it. I know it can't find the files, but I have no idea how to fix that.
Hi There I am facing a problem on our webiste when my customer from india ry to check usingGPay but evertime it comes with message saying the eslected paymetn mentod is not usable. please select and another any try again. anyone can able to let me know how i can restore this issue
👋 Messages in this channel are unlikely to be seen by Stripe engineers on weekends. If you have urgent questions then you should reach out to Stripe support directly 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.
CORS related problem. Getting this error: Access to fetch at 'https://www..com/create-payment-intent.php' from origin 'https://.com' has been blocked by CORS policy:
No option to set it up as individual. I have the option for other countries but not India. Conceptually, based on stripe webpage, this should be possible but it’s not possible on implementation but I’m not sure if this is an issue with my account. Can you check on you set up if this is possible? Right now, it only allows me to set it up as company
Olá.
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://checkout.stripe.com - Reason: CORS request did not succeed
and same but also with Reason: CORS header ‘Access-Control-Allow-Origin’ missing
frontend:
fetch(`/api/payments/stripe/session`,
{
method: 'POST',
body: JSON.stringify({id: id, amount: amount, name: name}),
redirect: 'follow',
headers: {
'Access-Control-Allow-Origin': '*'
},
mode: 'cors'
}
).then(res => {
console.log(res)
})
.catch(err => {
console.log(err)
})```
backend:
```js
const session = await stripe.checkout.sessions.create({
payment_method_types: ["card"],
line_items: [
{
price_data: {
currency: "usd",
product_data: {
name: name,
images: ["https://i.imgur.com/EHyR2nP.png"],
},
unit_amount: amount * 100,
},
quantity: 1,
},
],
mode: "payment",
success_url: `${base_url}/pay?success=true`,
cancel_url: `${base_url}/pay?canceled=true`,
});
res.redirect(303, session.url);```
I'm not sure why. Can someone help?
Access-Control-Allow-Origin is a response header - specifying it in the request shouldn't do anything
I'm confused - that fetch call is what's throwing the error?
.htaccess might have had something to do with it. Also I modified requests to ensure both were similar with www specified, i think one was non-www. I'm not sure exactly what was causing it but for now the problem seems to have gone away.
I think the stripe package is giving that error, let me recheck
@regal orchid the path you're fetching is relative. I'm not especially familiar with frontend, but something doesn't smell right to me. how are you getting a CORS error on a query to a relative resource?
because
in the backend, the stripe API returns a URL which I redirect to, and the redirect URL is different than the local URL so that's why I'm getting a CORS error. Does that make sense?
yeah it's not the fetch that's catching the error, just the browser itself is giving the CORS error
I think I'll just a response with the URL and redirect in the frontend, maybe that'll work
ooooh hold on
redirecting in the frontend is the right way to do this, yeah
if you redirect in the backend, you're doing a redirect on an ajax request, not a page load from the browser
the ajax client is trying to follow the redirect which a) is a CORS violation b) even if it could fetch the checkout URL, that would just return the checkout page body to the fetch call, not redirect the user
sorry, I didn't fully internalize what the backend was trying to do there
Alright great, and no worries thanks for the help!
np!
hi all, having some trouble setting up woocommerce payments. gone through all the setps and just get this in the overview.
and account details - rejected
no idea why, have entered all company details etc
:question: Tamadotchi 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
ok great but when i click learn more it just says this
nm i wait for support to contact back
sorry to bother you lot
np
I have a cancellation button in C# WPF, and when it is clicked it cancels the subscription. Is there an option not auto-renew the subscription, basically the user will keep the subscription until it runs out.
EDIT: I just found a variable in the JSON. Perhaps cancel_at_period_end can be used? If i just set that to true?
When using the new PaymentMethods instead of storing on customers, how do you choose the payment method a subscription should use?
Yep, cancel_at_period_end sounds like it's what you want!
https://stripe.com/docs/api/subscriptions/update#update_subscription-cancel_at_period_end
Complete reference documentation for the Stripe API. Includes code snippets and examples for our Python, Java, PHP, Node.js, Go, Ruby, and .NET libraries.
There are different approaches.
Set at the Subscription level: https://stripe.com/docs/api/subscriptions/create#create_subscription-default_payment_method
Set at the Customer level: https://stripe.com/docs/api/customers/create#create_customer-invoice_settings-default_payment_method
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.
@mighty hill but when i tried to use the paymentmethods list and set default with an id from the results, it didn't work
hmmm
@burnt needle Did you get an error message?
lemme look
i'm not seeing any error
it just looks like it didn't do it
@mighty hill yeah i'm getting no such source
but its in the list
@burnt needle Can you give me the request ID showing the error? Here's how you can find a request ID: https://support.stripe.com/questions/finding-the-id-for-an-api-request
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.
req_2fOciwKgRHGkol
the pm_ shows as the only method on that customer
so it definitely exists
@burnt needle You can't set a Payment Method as a default_source.
@burnt needle default_source is an older property that only works with our older Tokens/Cards/Sources APIs. The alternatives to that are different properties that I linked above.
which is kinda annoying
the whole default source thing was great
now i have to have sales people select a card when making a charge because a payment intent requires it?
@burnt needle Did you look at the two links I sent you?
just an extra step for non technical people
yes
that that makes it easy for the invoices generated by subscriptions
which helps for 1 of my companeis
but the other company is manual charges
which will require a salesperson to select a card each time?
@burnt needle Okay, so set the invoice_settings.default_payment_method and write some code to use that by default for Payment Intents.
so add an extra api call before a charge?
just seems dumb
anyway
so
with invoice_settings.default_payment_method
can an old style card be added to that?
Yes, that should work fine if you're talking about a card_ object.
so both pm_ and card_ can be added fine?
Generally speaking card_ can be used as if it was a Payment Method, yeah.
and that will override the default_source property?
What do you mean by override? default_source is an entirely separate property with a different purpose and functionality.
well default_source applies to invoices and charges
so if default_source is set
and invoice_settings.default_payment_method is set to something different
which gets used
for a subscription invoice
The invoice_settings.default_payment_method should be used for a Subscription if both it and default_source are set on a Customer and no default_payment_method is set on the Subscription itself.
ok so that's where i'm confused
i'm not going to set it on the subscription
i want to set invoice_settings.default_payment_method on the customer
which currently has a default_source set
both apply to an invoice being collected on
so which gets used
I just answered that question above. Was my answer unclear?
very
What part was unclear?
lemme re read
ok
so the new one will override default_source
got it
i don't have to change anything with subscriptions right?
I don't understand your question. Change from what? I don't have context.
Existing Subscriptions will continue to work as they always have unless you change them, or something external impacts them (like a recurring payment being declined).
ok
@burnt needle I have to get going in a minute, any other questions before I leave?
How can I create a test Standard account with payments enabled to test the final stages of my on-boarding experience? It seems that creating new accounts in the dashboard is very quick but leaves the accounts in a restricted state. Creating with my test key through the app only allows me to prefill the banking data form with test data, the rest requires real live phone numbers and social security numbers, etc
@mighty hill i don't believe so, seems like i'm good to go, thanks
actually yes
if i add metadata to a payment_intent
what's the best way of adding that metadata to the charge itself
@tranquil nacelle I'm on my way out, but hang on...
@burnt needle You would need to set it in your own code. There's no way to tell Stripe to copy it from one to the other.
so a webhook?
@burnt needle Yep, you could trigger your code using a webhook.
or i guess i can just expand the intent on the charge list?
@burnt needle That could work too, yeah, depending on what you're using the metadata for.
👍
Hey question, so after the user pays and gets redirected to a success page. Where does the payload go? Shouldn't it be in the request body?
when you make the checkout session, you can add ?session_id={CHECKOUT_SESSION_ID} to the end of your url
ah, and then verify if it was paid with the stripejs API correct?
@tranquil nacelle Sorry, I need to go, and I wasn't able to find an answer for you. I recommend you reach out to support for help or return here on a weekday. You can contact support here: 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.
that's what i'm doing
grabbing that id, then checking for payment_status = paid
not 100% sure that's the best way, but it's working for me
I see, but as you can see here https://stripe.com/docs/payments/checkout/fulfill-orders they mention a payload. Do you know how to get that payload?
looks like a webhook for checkout.session.completed
yeah they're getting it from request.body but my request.body is empty x))
what language?
node
ah ok, i'm not sure, i use php for my webhook handlers so i don't wanna give you wrong info
the checkout.session.completed webhook is really just for your backend records
I know you've got a life and it's saturday night. I appreciate the response. I'll keep plugging away at it. Have a good one!
to have the front end know it was successful its fine just to verify the session_id
i do have a webhook for the checkout.session.completed too though
but that's just to notify our discord server and update a tag on our crm
I'm actually passing it to the backend
yeah so you wanna do the webhook way then
maybe someone that uses node for a webhook listener can help you
The request body is populated in the calls to your webhook.
yeah but I don't think I need a webhook, I'll just use this way success_url: `${base_url}/api/payments/stripe/capture?success=true&session_id={CHECKOUT_SESSION_ID} and verify and process everything from there
ah ok, yeah idk about node
The reason webhooks are used is because the payment may not have completed by the time your user is redirected to your success url. You'll have to implement the webhooks for other things anyway (refunds, etc) so that's the recommended place to handle it with the checkout.session.completed event
👋 Messages in this channel are unlikely to be seen by Stripe engineers on weekends. If you have urgent questions then you should reach out to Stripe support directly at https://support.stripe.com/contact
I see, but I'm a bit confused on how to do so because as I've mentioned before I'm not sure where to get the payload from.
You’ll need to create a new post endpoint in your api and set that url as your webhook url in your stripe webhook settings in your store dashboard. Then when events hit that endpoint you’ll see the payload populated.
You can use the stripe cli to send test events to the endpoint while you’re developing it
Hi there! I'm currently building a platform with React Native and would like to know the best way to let my users create Connect accounts and onboard to my Stripe? Is it possible to do it within the React Native framework (such as using stripe-react-native)?
Thanks in advance!
👋 Messages in this channel are unlikely to be seen by Stripe engineers on weekends. If you have urgent questions then you should reach out to Stripe support directly 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.
Can I speak on the phone with an Italian operator? Thanks so much
Hello everyone,
is there any way to change CardInputWidget into custom UI for android/ios🍉
Hi there,
anyone knows why I have this issue ?
I'm using react native 0.64 and without expo..
thanks a lot for any help
it comes with this one :
Just ask the question you want to ask here and someone that knows the answer will give you a reply.
Hello, I'm using webhooks to listen for subscription payments. Based on the period.end value I prolong the subscription. It worked for initial payments, but all dates in the last payment object were dated 1970. I don't know what's causing this. Thanks for the help
Anyone have any info on Onlybands? They are a discord group with a Stripe account. Turns out to be scamming people and had Stripe account shut down.
👋 Messages in this channel are unlikely to be seen by Stripe engineers on weekends. If you have urgent questions then you should reach out to Stripe support directly 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.
@dense pebble i need help about tax and discount
Hallo, we have trouble with the new official flutter_stripe plugin: https://github.com/flutter-stripe/flutter_stripe
specifically saving a credit card on iOS with .confirmSetupIntent() will return an error, or an empty object.
I see that in the official stripe doc the confirmSetupIntent() is deprecated, but the plugin is out since a couple of months...
can you help me here?
Hello thank you for the add, I want / need to change my phone number
@night kite what error are you getting?
@halcyon sequoia for two factor authentication?
I can not get the f2a code as I changed my number
do you have the recovery code from when you set up 2fa?
No I’m sorry I do not
ok; you'll need to use https://dashboard.stripe.com/recover
Thank you
np
@dreamy karma I don't know anything about tax or discount. Sorry
Hi there. I am not a marketplace, but my clients give me their Secret keys and I create webhooks for them. Then my app is listening for those events. The matter is that I can't differenciate events by account_id. Have no idea how to do that. Please, help
Stripe Connect shouldn't be my use case
tbc, you can still use connect even if you're not a marketplace - it can be used as a generic way for accounts to delegate access to you
it'd definitely be a lot cleaner for the case of receiving webhooks you're describing
@wooden cradle if you don't want to use connect, though, you'd need to give each of the webhook endpoints a separate route (eg: /webhook_receiver/acct_123), or add a different URL param to each of them (eg: ?account=acct_123)
there are some other disadvantages of doing it this way, though
the webhook you get will be rendered according to the API version of your client's stripe account, not your account, so you have to handle any of the API versions your clients are using. this makes the code more brittle (eg: if a client upgrades their API version without telling you, it could break the webhook endpoint)
also, depending on your threat model, you can't rely on webhook signatures for verification of the events
the client also knows the webhook route and webhook secret (since it belongs to a webhook endpoint in their account), so they could send forged events to you
you'd need to fetch the event from stripe before processing to verify that it's a real event on their account
the .g file says that [] is called on null, my assumption is that the apple native library is not getting the payment method from the parameters, or is missing something to create the response
that beats me :/
I don't really know much about flutter; you might have better luck emailing support, or trying on a weekday when there are more people in discord
ok :S thanks anyways. This flutter plugin seems limited and unstable...
As I understand Connect is not my use case. I've tried to use Connect, it looks like I need to create accounts. The matter is that my clients/users have already created their Stripe accounts. I wasn't able to see an option to "connect" their account to my MAIN stripe account
I am not able to create endpoints dynamically and initialize them dynamically. I am not a programmer and I use special platforms to build my MVP
This approach disappoints me, because I need to rebuild what I've already done. And it seems to be not that smart, because why do I don't have an option to retrieve account_id from webhook event? I can get customer_id, subscription_id. What is wrong with account_id? I just can't understand, I really got stuck
Hello I m new to all of this and I could really use some help lol
@wooden cradle it sounds like you're building what stripe would call an extension? https://stripe.com/docs/building-extensions#connect-accounts
Learn how to build Stripe extensions. To see what others have built, check out a prebuilt solution created by one of our verified partners.
you can connect your platform to pre-existing accounts using oauth
the reason you don't get the account ID as part of the webhook event when not using connect is that the webhook is only for a single account
it's assumed that you already know which account you're getting events for
you can build something like an extension where your clients give you their secret key, but it's discouraged (people shouldn't be giving their secret key to anybody else), so the product isn't designed to support this
building it this way is going to be challenging
@zinc radish shoot
I’m wanting to connect my stride account to a mobile app I’m creating please help 😩
what are you stuck on?
why challenging
I mentioned some of the reasons above; webhooks are probably the least well supported bit
also the onboarding flow is a bit of a drag
you have to get the user to navigate to the right part of the stripe dashboard, and mint you an API key
do they need to give me another API key once I set up Connect?
Right not the give me secret from "API keys" sectio
connecting their account to yours allows your key to access their account
they don't need to give you their own key
I know that onboarding is not simple, I plan to connect their Stripe account via my app using Stripe Sign In
wdym stripe sign in?
then why is it challenging?
(I mean they wouldn't need to give you an api key if you were using oauth)
instead of "write your API key in this input" there would be a button "Connect Stripe acc"
ie: connect?
That's literally what connect is
I am curious about extensions, but I am afraid that it can be not my use case and I would just spent a lot of time
I don't want to use complex solution, want the easiest one
I've already implemented functionality where they have input to write Secret and button "Connect Stripe" then I make POST request to create webhook in their Stripe account
but as I realized today I can't differentiate webhook events by account ID
my recommendation for the simplest solution is to set up your app as an extension
Do I need to pay more with Stripe Connect?
if you don't want to do that, my next suggestion would be the workaround I suggested above where you create webhook endpoints which embed the account ID somehow
no, creating an extension doesn't cost anything
I can't afford dynamically creating endpoints
wdym can't afford?
I don't code
I use no-code platform to build my MVP
they have webhooks feature
endpoints
ok, that complicates things for sure
what exactly can you do with the endpoint? you must be able to take some action from the HTTP POST body (ie: event itself), otherwise the whole thing would be useless
can you extract info out of the URL params?
if so, you could add a ?account_id=acct_123 when you create the webhook endpoint
- I can't dynamically set parameters to endpoint URL 2) Even if I would have been able to do that, I can't initialize it automatically
but what about connect?
in principle, it should work? but I'm struggling a bit here to give you suggestions, because I don't have a good mental model for what's possible or impossible to do with the no-code platform you're using
It's just very strange you don't share account ID within event. It seems to be not that complex and it solves use case
The only limitation of No-code platform is that I can't dynamically create endpoints
and can't dynamically initialize them
actually I don't need it. I can get events from any Stripe account
just can't differenciate those events from different accounts
when you say you can't dynamically create endpoints, do you mean the WebhookEndpoint object within stripe, or the route on the no-code platform that events are delivered to?
2nd
is it possible to trigger a test payout?
Do I need to dynamically create several endpoints per each accountID if I use Connect?
@wooden cradle then I don't get why the ?account_id=acct_123 suggestion doesn't work. you'd have a single route that has an account_id URL parameter
you need to plumb a different account ID into the URL you pass to stripe when you're creating the endpoint, but you're saying that that's possible, right?
I can sent to Stripe different URLs, but as far as I remember I can't initialize single route that has dynamical parameters, let me check one more time
@mossy cape an automatic payout, or a manual payout? for an automatic payout, you'd need to create a payment (probably using the pm_card_bypassPending card so you don't have to wait while the payment is pending), then wait for stripe to create an automatic payout (once per day). for a manual payout, you can just trigger a payout as normal once you have a test balance in your account
@stark tide I think you pushed me to rethink my approach setting up my endpoint in no-code platform. I have an idea now that maybe can work for ?account_id . How can I know what value to write in this parameter?
do you have some sort of identifier for the client?
you could fetch their stripe account ID with a slightly silly trick (querying /v1/account with their secret key), but you'll never need it when interacting with stripe
because you're using the client's own secret key, stripe thinks that you're the client querying the API for their own account
the account ID is only useful if you have >1 account, and stripe won't think that you do
which is the crux of your initial problem with the webhook endpoint
this is useless, because I need Account ID when event comes
If you’re looking for no code with connect, you can create unique 1 time use connect on-boarding links from the dashboard?
That’ll give you an account ID to work with for that account
@wooden cradle what I'm saying is that you need some identifier to put in the webhook URL
I understand
when you create the webhook endpoint in stripe, you'd pass url=https://yoursite.com/samplepathhere?account_id=<the identifier>
like any random value that I generate on my side?
it doesn't really matter what the identifier is
you could use the account's stripe account ID if you wanted to, but it could be anything
it just has to uniquely identify that user
Potentially even just use that accounts associated email?
I think it would work, the only problem is my lack of knowledge of how to do that
That should be unique as is
I would pass account ID, it's not a problem
the problem is to set up endpoint
give me 20 minutes and I would come back with the results
👍
@stark tide yes automatic. is there no way to bypass the waiting? i’ve been waiting since last week to test my payouts 😅
no, unfortunately not
@stark tide why do event doesn't return its webhook URL in response JSON?
@mossy cape it should only be a <24h wait if you're using the pm_card_bypassPending card, though
@wooden cradle because the event is being posted to that URL
including the URL in the POST body is duplicative
can I somehow get URL of the webhook when event occurs?
like, can you get the value of the account_id parameter from the URL?
you presumably already know the rest of it, because you set that route up
@stark tide it’s for acss_debit
You can test them in test mode and trigger them on demand. You probably shouldn’t test with live payments. (Keep in mind test mode payouts aren’t paid out with real money)
@meager oasis yep only with test payments
@mossy cape I don't think there's a way to accelerate those, though the payout should behave the same no matter what the payment method was
@meager oasis wait, is there a way to trigger automatic payouts in test mode?
If it functions in test mode, it’ll function in live mode
@meager oasis still waiting for it to occur in test mode 🙂
I believe so
I’m not in front of my dashboard but give me 10 minutes to check
I want to do this, but I don't get webhook URL when event occurs
I recall doing it in the past
@wooden cradle that's really a question about the no-code framework you're using
why?
my understanding of the question you're asking is;
after stripe delivers a webhook event to the endpoint you've set up, you want to inspect the value of the account_id URL parameter that you told stripe to use when you created the WebhookEndpoint earlier.
in principle, this is "just an http request" - you should be able to inspect the URL params of the request. I don't know whether or not the framework you're using supports that
if you were writing this in PHP or whatever, it'd be $_GET['account_id'] - I don't know what the equivalent in your framework is
I know how to inspect parameter, but I need the URL to do it
does the framework offer some way to get the URL?
the framework internally must have the URL and the URL params; it's just a question of whether there's some way to get at them
it just sounds strange. this use case
I don't disagree
I would go as far as agreeing
Are you trying to test payouts to a connected account?
@meager oasis yes
Before going live, test your Connect integration for account creation, identity verification, and payouts.
If you use these specific IBAN numbers in test mode, it’ll work
By specifying the country code, you can test payouts for each specific country
but i still have to wait right?
It should trigger instantly if you use
US89370400440532013000 in the us
Replace “US” with the relevant country code if need be
@stark tide, hey man, I managed to retrieve account_id
i’ll try it out but i’m doubting as it doesn’t say instantly
Now I need to do the same for Paypal
just that it will succeed
That IBAN should trigger a successful payout API response
@meager oasis but there's still no way afaik to trigger an automatic payout in test mode
you have to wait for the daily payout run (as you would in livemode)
Oh automatic payouts yeah
wouldn’t it be the same for canada’s bank numbers? (i’m doing acss debit
But you can use the Canadian account number routing number:11000-000 acct:000123456789 if you want to test using Canadian account numbers
is it a good idea to specify secret in webhook URL?
@meager oasis yeah i’ve been using those numbers and i have to wait
not canadian sorry just setting up direct debit 😂
Never ever ever ever ever do this
This is a bad idea
how to retrieve customer if it's data.object.customer?
How can I then retrieve Customer Name without Secret?
It’s just as secure as me saying “my secret key is ‘sk_jwi73beoBG7395bdne993jeo’ “In this server
Is it though? Kidding
@wooden cradle I probably wouldn't recommend it. 1) the webhook endpoint isn't meant to be secret, so the value isn't redacted in the client's dashboard 2) you probably would want to use an identifier which doesn't change if the client rolls their keys
so we can’t bypass the wait? 🥲
ig not sorry :/
that’s okay 💜
another question to do with acss_debit: when configuring if the mandate transaction_type is business or personal, what are the main differences between these two? is this property super important? with my application this can change frequently between payees
i guess it should be correct for a legitimate mandate?
I would, yeah
🥲 not sure how i’m gonna determine it atm lol fml
Give me an example transaction
say a tenant paying a property manager their rent invoice. what if this tenant is a business or just an individual
A tenant paying rent is a business transaction
A personal transaction would be like "I'm paying my friend back for the beers he bought me at the bar last night" or "My friend loaned me $30 for groceries and i'm paying him back"
those are personal transactions
okay so that makes any transactions to do with that tenancy business, right?
Yes, the tenant is making a payment in relation to a service offered by a business
perfect makes total sense
Property rental is still, at it's core, a service offered by a business
true thanks ☺️
Can I Trigger a Event for webhook in test mode?
I tried but didn't get any trigger I'm not sure where I'm wrong
You can, either via the dashboard or via the CLI: https://github.com/stripe/stripe-cli
Yes, webhooks will trigger in test mode too
Idk exactly what it is I need to copy and paste into my app
Sorry for the late response
@zinc radish Can you be more specific? What part do you need help with?
Hello all, is it possible to change the refund description?
The refund object doesn't have any value that will change this description.
I don't think this is customizable, unless yuo send the receipt yourself
Thanks. Noted.
https://stripe.com/docs/api/checkout/sessions/create#create_checkout_session-client_reference_id
client_reference_id
A unique string to reference the Checkout Session. This can be a customer ID, a cart ID, or similar, and can be used to reconcile the session with your internal systems.
is this option for customers that are not linked to Stripe customers or does has behind something else
does the system search for the ID or does it assign?
HI, I have a question. Stripe comes up with recurring payment, so is there any option that we can delay payment for specific time frame, i.e 7 days before making the payment and let it recurring onward?
When Checkout Sessions were first introduced you couldn't set metadata on it. Instead of metadata you could set this reference ID. Since then we've introduced metadata to Sessions so the client_reference_id is mostly just around for backwards compatibility
ty ^^
Are you looking to pause payment or just delay it for a while?
I am looking for delay. I guess I found it on the subscriptions payment with delays. But can you send me the docs to make sure I have correct documentation. Thanks.
If you want to pause the subscription, then have a look here: https://stripe.com/docs/billing/subscriptions/pause
You might also get what you want by using trial periods: https://stripe.com/docs/billing/subscriptions/trials
Thanks Paul. That's what I want. Cheers.
Can anyone tell me if allow_promotions_codes is supported in redirectToCheckout?
in loadStripe from stripe-js?
I can't use the webhook events properly, The event that should be triggered is checkout.session.async_payment_succeeded
The Endpoint Type is Connect (I also t tried on account)
I actually want get a webhook to verify the payment and give the download link to the customer but the webhook never trigger, what can be wrong?
Hello ,Admin ,our customers' credit card information can not be updated in the stripe systems, after they have made the payment through other browers. it is a big problem as we need to do the monthly payment on them.
If you're using client-side only Checkout, then no. Promotion codes are only available when using Checkout Sessions: https://stripe.com/docs/api/checkout/sessions/create?lang=php#create_checkout_session-allow_promotion_codes
Are you creating the Checkout Session on behalf of the connected user or on your platform account? When setting up a webhook endpoint you specify if it's a regular webhook endpoint or a connect webhook endpoint
@lethal meteor Are you getting an error?
how can i check this? I'm using this example(Node.js, my web framework is Fastify) https://stripe.com/docs/checkout/integration-builder
Thanks Paul, shame 😦 I will have to implement checkout sessions then 😬
can't see any error , the payment is success , Stripe have been received payment , but only can't save the credit card record . because my customers direct at company website payment . not directly through stripe platform .
@lethal meteor do you mind copy/paste the payment id pi_xxxx here and I can check?
While you are doing that, can you explain a bit how you save the credit card as you mentioned can't save the credit card record. Just to be clear, payment and saving credit card are totally two different things
how to show saved card checkbox in Payment Sheet "react-native-stripe" i have already created the issue (https://github.com/stripe/stripe-react-native/issues/412) but its urgent so if someone aware of it please help
@lethal meteor the issue here is that you are creating subscription with collection_method: send_invoice which will NOT automatically charge the customer's saved card (see your dashboard request https://dashboard.stripe.com/logs/req_6BNoDw6vnkb0py). If you want to immediately charge the customer, you should use collection_method:charge_automatically. If you means that your customer did not see their saved card, then no, when an invoice is sent to the customer, they will not see their existing saved card, it is just not supported for invoice sent to the user.
Hii, i am using paymentSheet in react native for payment, the issue I am facing is when the payment sheet opens in app US as a default country is coming in COUNTRY OR REGION section with another country name,soo I want to set default Australia as a default country or region in paymentSheet
@compact sinew For use saving credit card information, you will need to pass the ephemeral key see the details here https://stripe.com/docs/payments/accept-a-payment?platform=react-native#add-server-endpoint
@compact sinew all the configurable items on payment sheet shows here. https://github.com/stripe/stripe-ios/blob/master/Stripe/PaymentSheetConfiguration.swift
Based on that, you can not really set the default country as of now.
soo can i hide the country or region section from paymentSheet ?
pi_1J8q3oENp0hYcrNhdSRQc9HQ
Soo the point is, Currently We are working on Australia only, soo there is not meant to show all country list on paymentSheet, help me with any alternative if you have or can we hide the country or region section?
"pi_1J8q3oENp0hYcrNhdSRQc9HQ" this payment , as you can see, there is no payment method even though the customers already paid $500 by credit card.
but why it can be saved before under same situation?
@lethal meteor What exactly is the problem that you're facing?
Can you share the ID of the PaymentIntent you're creating for the payment sheet?
customers make payment through the company website payment , payment received but we can not find the payment method, we need it because we have to debit automatically for instalment purpose.
Maybe should I open issue on github for this ? #dev-help message
Have a look here, you likely need to update expo: https://github.com/stripe/stripe-react-native#troubleshooting
I dont use Expo 😩
That PaymentIntent you linked was created via a Checkout Session, however you didn't specify that you want to use the PaymentMethod for future payments, so it wasn't saved to a customer and consumed instead: https://stripe.com/docs/api/checkout/sessions/create?lang=php#create_checkout_session-customer
If you want to save PaymentMethods created via Checkout you need to specify so here: https://stripe.com/docs/api/checkout/sessions/create?lang=php#create_checkout_session-payment_intent_data-setup_future_usage
I try to upgrade to react native 0.64.2 and come back to you
how to get external Account(bank account / card) of platform account ?
Okay thanks will try this
Okay will remove the option
@true mural you can retrieve your own account information using this API https://stripe.com/docs/api/accounts/retrieve and the account will contain the external account id https://stripe.com/docs/api/accounts/object#account_object-external_accounts
ok thanks for help👍 😀
i have some problem with my stripe
@vocal wagon hi, can you share more?
doesn't work 😩
paymant message says: Could not process
Hello. I got a question regarding 3DS. If auth fails payment fails, correct?
So what if the customer doesn't authenticate. Should I be setting a time out period? How long (max) will my code have to wait for a response?
@compact sinew you will need to create ephemeral key in your server side. follow the doc here https://stripe.com/docs/payments/accept-a-payment?platform=react-native#add-server-endpoint
@vocal wagon where do you see the message? do you have a payment ID?
Okay thanks
@teal cobalt If the authentication fail, the PI will be back to require_payment_method status without processing any payment so that you can ask your customer to try again.
There is no really timeout for how long your customer to complete the authentication.
Regarding setting timeout, it is really not necessary if you follow the standard integration path https://stripe.com/docs/payments/accept-a-payment?platform=web&ui=elements
Hi @lucid raft I tried testing a payment. It says The customer failed 3D Secure authentication. then the payment showed as failed.
It says PaymentIntent status: requires_action
But it already failed. Will the status change if I ask the customer to authenticate? @lucid raft
@lucid raft what is api version is it something unique that we have to provide or today's date in string format 'YYYY-MM-DD' ?
@compact sinew you need to pass the API version 2020-08-27 as indicated in the code
@teal cobalt Do you have an example PaymentIntent id (pi_123)?
Hi, anyone familiar with Homebrew ? I've got some difficulties for installation. I receive this message : fatal: '...' does not appear to be a git repository
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
I've deleted the customer but here's a sample: pi_1JCB2iK8kySrDAbUgisyI4SQ @crimson needle
@vocal wagon what are you trying to install? And do you have the full error message?
@teal cobalt that PaymentIntent has status: "requires_payment_method" now
well, for now I'm trying to install Stripe CLI. The support recommend Homebrew to do so.
what I sent is the full message
What operating system are you on? Does brew usually work for you?
here's the message
Iterm on Mac OS
It's the first time I'm trying to use this
brew*
oh wow ... wasn't you "redacting it" lol never seen this. Let me google
Hi, My name is Edina Gyocsi, I'm from Hungary. I have a question! I'm new on stripe. Will I get a contract?
sure. Thank you for your help
What contract are you referring to here? You don't need to sign a contract to open a Stripe account, just agree to Stripe's T&Cs
@vocal wagon no contract no, you just sign up with Stripe
@vocal wagon what does brew -v return?
Oo, thank you 🙂
brew -v
-bash: brew: command not found
ah so you just don't have brew installed at all?
Correct, I'm struggling in installing it ^^'
Have you tried https://stripe.com/docs/stripe-cli#install => MacOS instead of brew?
might be a lot easier to at least start. I can't really explain how to install brew beyond following the docs on https://brew.sh/ otherwise
Okay, I'll check this out thank you
sure thing! Sorry, brew is super useful as a tool when it works, but I'm not great at installing those third-party tools. And they came pre-installed with my laptop since I work at Stripe 😅
hello we have installed and tested succesfully the test environment on Stripe's vpos
what are the next steps to switching to live?
@vocal wagon usually you would change your code to use your live API keys and make sure that you configured all products you use in Live mode too. That depends a lot on your integration and what you use
where can I find the live api keys
in the dashboard I saw api keys but I am not sure if they aren't just for the test environment
There's a Live/Test mode switch on the left bar. And it changes the view. Live keys are sk_live_1111 and pk_live_1111 and Test keys are sk_test_111 and pk_test_1111
thanks a lot @crimson needle
sure!
Hi is it possible to have a "Save Card Later" checkbox using React Stripe? (https://stripe.com/docs/stripe-js/react#customization-and-styling) I dont see it in the docs at all
@noble sonnet you would control this entirely yourself, it's your payment form. We don't have a pre-built checkbox for this
Ok got it and lets say I already create a checkbox and have the value of it, how do I tell Stripe to save this card for later use?
Is there a flag with stripe.confirmCardPayment that I need to pass?
Yes you use setup_future_usage: https://stripe.com/docs/js/payment_intents/confirm_card_payment#stripe_confirm_card_payment-data-setup_future_usage
Hey guys, is there any way to resend all the failed webhooks in test mode?
I have like 350 failed webhooks which I want to resend
@oak haven you could use the Stripe CLI to re-send event one by one and you can script it https://stripe.com/docs/cli/events/resend
isn't there any way to resend all of them ?
or maybe in a batch, like send 20 of them first then next 20 and so on
Hi, can't find a reference in the documentation about this report type: tax_product.transactions.summarized.1
I need to know the available columns
thank you
it's in beta so you should talk to our support team https://support.stripe.com/contact/email
hello
Why can't I use USD for settlement when I register?
😩
Why can't I use US dollars to collect money when I register?
?
Is there a way to create webhook in Stripe, which would have URL that includes DYNAMICAL parameter
?
@loud wren USD settlement depends on the country associated with your Stripe account. https://stripe.com/docs/payouts#supported-accounts-and-settlement-currencies
@wooden cradle I'm not sure what you call a "dynamical parameter" but yes you control the URL for the endpoint yourself, either in the Dashboard or via the API
I needed to get account_id from my events coming to my endpoint and I solved it by creating webhooks with parameters https://stripewebhook/webhook?acct_id=123
now I also need to include in the link Customer ID of the event. Because I can't retrieve it from nested JSON
on my side
yeah that is impossible. The customer id would change based on the event being sent, so that'll never work
🥲
Hi, is it possible at all to link stripe to kobas?
@cobalt moss I haven't heard of kobas before but a quick google says yes: http://help.kobas.co.uk/online-ordering-stripe-settings
🥲 🥲 🥲
Hi, I have some difficulties to integrate a payment method on Stripe. I'm traying to integrate OXXO which is a mexican voucher. I am following the stripe guide but I get this message : "error": {
"message": "The payment method type provided: oxxo is invalid. This payment method is available to Stripe accounts in MX and your Stripe account is in CH.",
"param": "payment_method_types",
"type": "invalid_request_error"
}
@wooden cradle that's kind of by design, it wouldn't make sense to put URL params when we already send you the entire raw JSON payload of the event
@vocal wagon the error message explains the issue here
how can I store Stripe Secret API keys in my database? It sounds unsecure
@wooden cradle if you think it's not secure then a better solution is to use environment variables
Yes I understand the issue but Is it possible to do something regarding this?
how
@vocal wagon you need to open a Stripe account based in Mexico instead and test on that Stripe account
@wooden cradle what do you mean by how? It depends a lot on your own server's configuration and the language you use. I'd recommend googling how to handle environment variables in your stack
what are environment variables? Stripe feature like subscriptions?
How can I add a US dollar payment method? My area is allowed to charge USD.
Hi everyone! I have 5% of my payment which fail because the 3Ds confirmation never opened.. i have this error ' "dict" object has no attribute "client_secret" '
@wooden cradle no this has nothing to do with Stripe. Environment variables are something related to computers/servers and how to set up information. Not really sure how to explain this, if you've never heard of this before I'd just ignore and put the keys in your database
Hi!
I bought ransom beatz an instrumental July 7th (Labaja)
https://www.beatstars.com/beat/labaja-4468302
The payment has been accepted but I still haven't receive the receipt and the instrumental in my orders. Please give me a feedback about this problem.
The usd collection button on my registration page cannot be selected.
i don't understand i have tested which several and usally it's work but not every time..
:question: @vocal wagon 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
@loud wren you can charge in USD on most Stripe accounts/countries. This is unrelated to "adding a payment method", so I'm not sure what your question means
@quasi flicker it's hard to say without more details about your code. You need to add logs/before after that line to understand what the object you're using looks like
(also would be great to switch names without a curse word if possible)
guys how much time does a payment intent take,
i'm doing some testing and initiated a payment intent against a test users but and api response id 200 but balance is still showing 0
I am in the HK area, why can't I choose the USD withdrawal method?
how to set checkout price on android/ios/web , template checkout with default age does not know where
@river portal 1/ You need to confirm the payment intent and make it succeed, have you done that? 2/ even with that, funds are pending for 2+ days in the US
@loud wren you can charge in USD and you can receive funds in USD if you are based in HK as documented in https://stripe.com/docs/payouts#supported-accounts-and-settlement-currencies
You should reach out to our support team to discuss this, it's not a question about code/for developers
@jaunty scaffold not sure what you call "default age". But you set the price/amount server-side. Depends a bit on your integration and which Stripe product(s) you use
ok, after the user shopping is done, how to set the total to stripe payment
@jaunty scaffold same answer really, it depends on your integration. If you use PaymentIntent, you set the right total amount in https://stripe.com/docs/api/payment_intents/create#create_payment_intent-amount
is it secure to store API key in my database if I just encrypt it with aes-256-gcm encryption
?
@wooden cradle it's hard to say, I'm sorry. You don't seem familiar with environment variables and a lot of it depends on how familiar you are with code, server maintenance and security
But overall yes it's fine to keep the keys in the database as long as your database is secure
can I use Oauth2 to work with Stripe API, generate temporary access tokens?
@wooden cradle no
Just trying to get my head around how to handle a member subscription that has a one-off fee, a monthly recurring meeting subscription and a annual recurring subscription. Is it feasible to process this in one transaction/payment initially? Or how would one approach it?
@burnt violet So you can add a one-off fee to the first invoice using https://stripe.com/docs/api/subscriptions/create#create_subscription-add_invoice_items so that part is easy
For the second question, it's not directly possible unfortunately as you can't mix billing cycles in one subscription so you can't have a yearly and a monthly plan together.
The best solution is to have 2 separate subscriptions one for the monthly fee and one for the yearly fee. But once a year you'd get to 2invoices and 2 payments when they both renew together
why payment method is so necessary for payment intents i'm using apple pay and google pay nut there is no option for both of them??
@river portal Apple Pay and Google Pay work perfectly with PaymentIntents
they are just relying on the card PaymentMethod
Hello, we are using Stripe NodeJS SDK, we retrieve a subscription using stripe.subscriptions.retrieve . The response we get is of type Stripe.Subscription. Now when we try to get subscription.default_payment_method , the type of that is string or Stripe.PaymentMethod. How can we know which type we will get? How can we handle each case?
In which scenario will we get a string and in which scenario will we get Stripe.PaymentMethod?
@hollow nebula by default it's a string. It's only if you expand it (https://stripe.com/docs/expand) that you'll get the full object, in which case your code is asking for it explicitly so you know it would happen
Great, thanks for the quick response 🍻
Thanks @crimson needle but I can process them in one initial payment from a client as one transaction initially?
@crimson needle Can we expand the nested attributes?
i'm trying to transfer amount from my personal stripe account to connected account how can i possibly do that
I am not sure I understand what you mean here
Yep it just works! Like you can expand invoice_settings.default_payment_method on Customer for example
@river portal https://stripe.com/docs/api/transfers/create is how you transfer funds between your platform's balance to a connected account
Sure, so client has a form with three products, the one-off fee and the two subscriptions, I am assuming I can process them in one transaction?
@burnt violet you can't, that's what I explained earlier, you can't have a yearly and monthly Price together on one subscription
The only solutions are
1/ have 2 separate subscriptions where once a year you get 2 invoices and 2 payments when both monthly and yearly renew a the same time
2/ Have a monthly subscription and once a year add an extra line item for the yearly price (but that means no easy proration calculation when they change their pricing plan over time
Thanks for the help ! What if the nested attribute I am trying to expand is an attribute of item, element of the items array of the subscription ? Would something like this work stripe.subscriptions.retrieve(id, { expand: ['default_payment_method', 'items.data[0].price.product'] }); ?
OK, just a misunderstanding with terminology. I was talking about two subscriptions being handled separately as different products in one initial transaction and then being provisioned separately after that.
Hi Team, Is there any way to paginate Stripe charges with Order By concept?
@warped torrent hmmm I think you want without the [0] part! Easiest is to try quickly in Test mode
Stripe by defaults give latest changes first. Is there any way to set order by ?
@burnt violet yeah that won't work either. I mean you could always put one of the prices as an additional invoice item on the first subscription creation but then it will hurt proration later and metrics too in the Dashboard so I would just have 2 separate subs from day 1
@north ether no, the order is always most recently created first
@warped torrent Let me know if you have more issues with expand, happy to provide more details
OK, thanks @crimson needle you have saved me a lot of time
glad to hear that!
stripe.error.InvalidRequestError: Request req_fJyM4tsrrd2mLf: You have insufficient funds in your Stripe account. One likely reason you have insufficient funds is that your funds are automatically being paid out; try enabling manual payouts by going to https://dashboard.stripe.com/account/payouts.
any one can help me with this i've amount in my stripe account as well ?
@crimson needle it works great , thanks. Here is the working code : this.stripe.subscriptions.retrieve(id, { expand: ['default_payment_method', 'items.data.price.product'] })
@river portal that's expected. You need funds to transfer them and funds are not available immediately after a charge. You need to read https://stripe.com/docs/connect/charges-transfers#transfer-availability or use the test card from https://stripe.com/docs/testing#cards-responses 4000000000000077 for funds to be available immediately
@warped torrent perfect!
Hello, someone has experience with flutter_stripe plugin?
Hi guys, does anyone know how/where I can extract the "card" type/brand and hopefully last 4 digits from the API (hopefully via a Payment Intent)? where the status is "succeeded" or "requires_capture"? Thank you
@fossil crystal Hello! You can expand the payment_method field on the Payment Intent: https://stripe.com/docs/api/payment_intents/object#payment_intent_object-payment_method
@fossil crystal More on expanding resources: https://stripe.com/docs/api/expanding_objects
@night kite Hey! Not specifically, but I can try to help
Thank you!
Hi everyone!
I'm implementing a subscription payment system using dj-stripe and I can't seem to get my stripe webhooks to update the dj-stripe Subscription model after a successful stripe.checkout.Session.create call.
I am creating the customer successfully on both djstripe model and the Stripe database is updating though, using the djstripe Customer.create function.
Could someone help out please?
I'm following the docs (https://dj-stripe.readthedocs.io/en/master/installation/) settings for the webhook but on my server I receive a "Not Found: /stripe" and I get 404 responses for the events when running stripe listen --forward-to localhost:8000/stripe
Thanks in advance!
@tight parcel Hello! Can you please provide me with a specific event ID that is erroring? evt_xxx
This is testing mode data only btw, let me see
evt_1JCNBtFNwHCdHHFK2vbDCc3R
@tight parcel I'm not really expecting to see any indication of an actual error in our logs, as it generally sounds like an implementation issue rather than a Stripe problem. Your local /stripe endpoint is not found for whatever reason
We have problems with the new plugin, confirmSetupIntent only works in Android and not in iOS. Error is in the .g file of the plugin. It gets an empty or null json and gives error
@tight parcel Ok, that event is shown as successfully delivered (i.e. your /stripe endpoint returned a 200 response). Which specific part is returning a 404?
this is what I get when doing stripe listen --forward-to localhost:8000/stripe
[404] POST http://localhost:8000/stripe [evt_1JCNBtFNwHCdHHFK2vbDCc3R]
@night kite I'd recommend filing a ticket on the GitHub repo: https://github.com/flutter-stripe/flutter_stripe
It's not an official library and I don't have any personal experience using it unfortunately
We’ll do, seems the most official thing stripe has for flutter yet
@tight parcel Are you sure the server is running on port 8000? Does the stripe route/endpoint definitely exist? Can it handle POST requests?
@night kite Yep I believe we sponsor the project so it's definitely the best library to use
I was able to handle webhooks on this server before when I configured a view for the webhook.
But using dj-stripe I don't need to create the view, since it's already implemented on their package, right?
At least according to the docs, the only things required are setting up the URLs
@tight parcel From reading here (https://dj-stripe.readthedocs.io/en/master/installation/#configuration), it sounds like the path should be /stripe/webhook
Ok thank you, last general question: is there a difference in how iOS and Android “confirmSetupIntent” is processed in stripe native integrations?
@tight parcel So: stripe listen --forward-to localhost:8000/stripe/webhook
@night kite The underlying API call will be the same. There's good guides on this flow for iOS/Android here: https://stripe.com/docs/payments/save-and-reuse
Learn how to save card details and charge your customers later.
That's right! it's working now 😄
It's actually stripe listen --forward-to localhost:8000/stripe/webhook/ unless you have APPEND_SLASH=False on settings.
Thank you very much!
@tight parcel Awesome!
Hi
@sterile night Hey!
This is Pradeep Chaturvedi.
I have created one demo for Google/Apple Pay integration but getting an error related to webhook. Can anyone help me here how to create webhook or how to setup webhook
website demo link: https://devdining.wpengine.com/google-pay/
Thank you in advance 🙂
@sterile night Can you share a specific error or an event ID (evt_xxx) that's not working as expected?
Actually, I am new to stripe integration.
Hey, is there a test card number that allows you to add the card via a setup intent but have that card return "expired" when charges are attempted? Or is this a bit too specific test case? I've tried a few of the test cards listed in Stripe docs but I can't seem to find one for this.
@sterile night No problem! I'd recommend reading our documentation on webhooks: https://stripe.com/docs/webhooks
There's a full integration example there you can use too
Listen for events on your Stripe account so your integration can automatically trigger reactions.
@outer lion Hey! There is not I'm afraid. 4000000000000069 will return an expired_card error. But no test card that will be successfully authorised for off-session charges only to error when actually try to charge via the SetupIntent
No problem, thanks anyway!
Did this Discord server replace the freenode channel by the way? I went in there earlier and it was empty.
@outer lion You can read more here: https://dev.to/stripe/introducing-the-stripedev-discord-community-server-5g3l
Still not able to create webhooks 🙂
Can you please my demo URL: https://devdining.wpengine.com/google-pay/
If you need also I can share my stripe account and javascript/html code
@sterile night What do you mean by 'still not able to create webhooks'? Have you created a webhook in the Dashboard?
@sterile night Can you share your account ID? acct_xxx
@sterile night Thanks, looking
hi
@sterile night There's no test activity on your account that warrants firing an event to your webhook handler. You need to try processing a test payment in order for the webhook to be invoked
@lucid bloom Hey!
we are using stripe connect , many users have connected their stripe account with us,
one question from a connected account is :
when a customer buys my product only SOMETIMES their IP address is collected in Stripe? I talked to Stripe about this and they said it has to do with Platform account
As a platform account do we need to do something to save Ip address in connected accounts?
@lucid bloom Is there any example payment were an IP address is not collected?
We havenot checked, Shall I ask this to them?
@hollow prairie
@lucid bloom There's nothing specific required by you as a platform to enable IP address data, no. I'd ask them to provide specific examples (ch_xxx or pi_xxx IDs) of where there is no IP data and write in to 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.
ok thnxs
@sterile night I can't see any errors or API calls in your account logs relating to that, so there must be something in your code that is throwing that error
@sterile night i.e. it's not coming from Stripe as the request never reaches us
Hi again, does anyone know of the API flag to pass in for MOTO credit/debit card capturing? To bypass 3D secure for telephone orders. Thanks
@sterile night It's the call to your /create-payment-intent endpoint that is erroring, in your server/API. There's no handler for that in the code you've share
Hi everybody.
Stupid question. We had last night some stupid bot creating 53k accounts using probably stolen emails. We are going to be removing them today, and I saw that I could "reject" accounts or delete them. Rejecting allows me to add "fraud", "other". while delete simply gets rid of them.
We would like to delete them, but I am not sure if you guys (Stripe) will use any additional tag to notify that those accounts were wrongly added. I don't mind updating users in a different way
@fossil crystal See here: https://support.stripe.com/questions/mail-order-telephone-order-moto-transactions-when-to-categorize-transactions-as-moto
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.
@hollow prairie do we need to write code in "/create-payment-intent" or not
@cinder vale Can I please ask you to write into support? They're better at answering account related questions like this: 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.
@hollow prairie no problem! I'll do that thanks!
@hollow prairie Stripe developer Cary answered this question
@sterile night Yep! You need to create a Payment Intent, which has to be done server-side. See here: https://stripe.com/docs/stripe-js/elements/payment-request-button#html-js-create-payment
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.
@sterile night It's not a webhooks issue I'm afraid. Webhooks handle events on your Stripe account (such as a successful payment). Right now there's no events on your account because your code to create the Payment Intent is failing
Hello everyone
I need help
So i have a requirement where in yearly subscription if the user switch or cancel the subscription after 9 months then this will not allow them to cancel or switch for next period subscription, this will take action for their third period.
Basically if there is any action performed after 9 months, this will take action on the third period subscription not on the next year subscription period.
Hi,
if I create a payment method using a set-up intent with off_session usage... how can I charge them without asking them for 2-step auth again? I thought that when payment methods were set-up this way, no more authentication steps would be required after the initial set-up..
@rigid ridge you'd follow https://stripe.com/docs/payments/save-during-payment?platform=web#web-create-payment-intent-off-session and make sure you're using the 3155 card (https://stripe.com/docs/testing#regulatory-cards) in the tests as it's the only one that supports this.
no more authentication steps would be required after the initial set-up
That's not true, it just makes it less likely it's required, but there's always a chance. See https://stripe.com/ie/guides/strong-customer-authentication#exemptions-to-strong-customer-authentication. The 3155 simulates successfully getting an exemption, the other cards don't.
Thanks, I believe we have MOTO enabled, but how do we specify a MOTO transaction in the API (during the PaymentIntent setup?)
What happens if I don't give this info
@exotic rain there isn't really anything in the API itself involved there. The only way to do that is write code on your side so that you don't call the API to update the subscription during that 3 month period for example. If you want to the change to happen later, you can look into using a SubscriptionSchedule (https://stripe.com/docs/billing/subscriptions/subscription-schedules/) to set that up to happen.
Learn about the Subscription Schedules object and how to use it.
:question: @vocal wagon 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
Live chat couldn't help
@vocal wagon you could reply to that email as well
but we can't help here either way I'm afraid, sorry.
Hello community! I'm trying to test SEPA payments refunds, but I can't create a test that asserts the status of a SEPA refund immediately to 'succeded' as It could take up to 5 days to process. Is there any other way to do it?
@fossil crystal You should have received a full documentation link when your account was granted access to the MOTO feature. If you're logged in (and your account has access), you can find what you need here: https://stripe.com/docs/payments/payment-intents/moto
okay, and what about the Amex cards? I was making some tests with those, and it requires confirmation of the payment even though the subscription is set to collect automatically, but there is no interaction from the user's end when confirming it with Stripe JS... it's a bit confusing
Thank you - that was over a year ago - only now getting around to migrating to Stripe 😉 But i remember specifying with our account manager the need for MOTO, Thanks
@rigid ridge I really don't follow as there's nothing Amex specific here I'm aware of, I'd need to look at a clear example like the sub_xxx subscription ID.
there is no interaction from the user's end when confirming it with Stripe JS
that can happen sometimes, the user still has to go through the 3D Secure challenge, but the issuer might not have implemented it on their side so there's no page to visit, or they authenticate the user 'frictionless' via browser cookies for example
@hollow prairie Do we have any working script where just I need to change the publishable key?
in any case only that 3155 card makes sense for trying to test recurring or off-session payments with 3D Secure at the start and then not on future payments, that's what it's for , the other cards don't really simulate that
@torn stratus I don't think we have a specific test IBAN for influencing the refund behaviour unfortunately. I'd suggest mocking the result for a test.
okay, the frictionless auth would explain many things.... I thought that it was either explicit authentication or none. Thanks!