#dev-help

1 messages ยท Page 125 of 1

languid bolt
#

@dim hearth Actually if the invoice item that is related to that subscription (for example a signup fee that is created as an invoice item and passing the subscription id as a param to it) will get auto-wiped when the actual cancelation happens or if I need to take care of it "manually"?

dim hearth
languid bolt
#

Thanks @dim hearth ๐Ÿ™ I've seen it throughout the docs but kept wondering if that still held true when having it directly linked to a subscription that was canceled instead of just to the customer. Thanks again for your time, have a good one!

dim hearth
sterile turret
#

i have currently created an accout

stable viper
#

I'm using Fixed Price Subscriptions with php but it gives me the following error on this line const {customer} = await search ('/ create-customer', {}

apparently create client does not exist, how do I solve it?

sterile turret
#

for integration

dim hearth
sterile turret
#

yes

#

but i am adding a subscription amount

dim hearth
sterile turret
#

i have done single charge payment

#

with the help of that

dim hearth
stable viper
dim hearth
sterile turret
#

where did you find that

#

can you please tell me more

dim hearth
sterile turret
#

yes

#

so how is that possible

#

i am charging these payment to another account

#

that is what you are saying

dim hearth
dim hearth
stable viper
sterile turret
#

oh great

#

i have checked that i was using the incorrect keys

#

or maybe last keys were expired

#

thanks alot

#

my payment is done

dim hearth
stable viper
#

This is how it is to use xampp and not only clone the repository, it included the .env and execute everything fine at the beginning but apparently it does not work.

dim hearth
stable viper
#

sorry "create-customer" is a file?

rough spire
#

Hello!

#

How can I retrieve charges of an especific card??

dim hearth
# rough spire How can I retrieve charges of an especific card??

Hm... the best way I can think of doing this is to list all of the charges for the specific customer that the card belongs to (https://stripe.com/docs/api/charges/list#list_charges-customer) and then loop through the results and keep any that match the card you want

outer hatch
#

Is there anyway to test 3D Secure/SCA with PaymentRequest button if I don't have one myself (the card)?

dim hearth
outer hatch
#

I'm just trying to make sure what I wrote works ๐Ÿ™‚

#

I already have it working using stripe elements

stable viper
dim hearth
stable viper
dim hearth
dim hearth
outer hatch
#

@dim hearth I see. Ok, I just wanted to check as there's a test for a response of 'requires_action'. I guess if there's no error, it'll just continue on.

stable viper
dim hearth
# stable viper This is how I install it through Stripe CLI

Got it - but from what you mentioned earlier it also sounds like you're using xampp? I personally don't use xampp so I can't give you guidance there, but if you use the guides without xampp they should still work fine (and we already provide the instructions for this).

minor cipherBOT
#

๐Ÿ‘‹ 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

stable viper
dim hearth
stable viper
#

do not execute a command only accessed using the address localhost / stripe

or should I have used a command?

dim hearth
#

@stable viper if you have further questions over the weekend you're welcome to ask here, but you may not get an answer right away as Stripe engineers don't staff this channel on the weekends. If you have an urgent question please ask support at https://support.stripe.com/contact

stable viper
#

Thank you very much for everything I will be reviewing more thoroughly.

abstract compass
fast mantle
shell latch
#

New potential user and going through the api to see if it will work for me. Am I understanding correctly that you when you want to change/update a subscription (https://stripe.com/docs/api/subscriptions/update) you list every product/item? I just want to make sure that I can easily change products/items and/or their quantities - particularly when using multiple product subscriptions (where they all keep the same start/end/renew dates).

steady thorn
#

plz help, im stuck with this since a lot of time

require_once('https://hasnia-art.fr/vendor/stripe/stripe-php/init.php');
require 'https://hasnia-art.fr/vendor/autoload.php';
\Stripe\Stripe::setApiKey('sk_test_xxxx');```

"Class 'Stripe\Stripe' not found", i've already installed composer and stripe
minor cipherBOT
#

๐Ÿ‘‹ 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

vocal wagon
#

Hi, they asked me for photos with date and tracking code of what I sell, after how long do blocked payouts unblock me?

winter pumice
#

@languid tulip after refunding amount for customer. customer balance does not reduces.

What steps should be used to refund the extra amount in balance

#

Any please suggest how to refund amount so that it also reduces the balance from the party account

late hull
#

I would like to integrate klarna payments with stripe how could i do that?

minor cipherBOT
#

๐Ÿ‘‹ 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

viral mango
#

I need help

#

Would you help me

slate lichen
#

Hello

#

i was blocked at the confirmCardpayment flow in stripe

#

is any one can help me to get out from this?

toxic lily
lost turtle
#

Most of the text is the same, but the payment is a little different

#

The PaymentIntent

#

Basically the only difference is in the first one, you create a standard account and do something with a "Stripe-Account" header. In the other one, you create an express account and do a destination charge?

toxic lily
lost turtle
#

Direct vs destination sound similar. They both end up going from and to the same place, and the platform still ends up taking a fee

#

Theoretically, why couldn't you use destination charges in every case?

rapid imp
#

You can but refunds are easier to handle if your connected account user has to be responsible and their balance is where the refund is issued from vs having to have all transactions be on your account. All your balance transactions can simply be a collected application fee AND you don't have to calculate Stripes fee when passing the application_fee to payment calls to account for stripes fee and your fee. You can only focus on your fee.

toxic lily
lost turtle
#

Nice that makes sense

cloud timber
#

Is there a way to run a report showing how much tax you've collected?

toxic lily
#

If you're collecting this info in your Metadata for some reason, you would need a custom report at the Financial Reports section

cloud timber
toxic lily
cloud timber
#

Thank you, I appreciate that

#

(brb)

toxic lily
#

Test it out :)

#

There is one for Stripe Checkout too, but the information is mostly the same

#

Now I wonder what's the usage for the Tax option at the Payment Export too; it's probably for Stripe Tax, but I'm not able to test it at the moment

cloud timber
#

That looks like exactly what I need, but when I click on the link in that doc to take me to the Tax Rates List page, it brings me to the "test data" section of my dashboard. When I turn off test data I don't see Tax Rates List anywhere...

#

Oh! I found it through the search bar...

#

I think that's got it, thanks!!

#

Strange though, the amounts exported are two decimal places off, so instead of $500 it's being displayed as $50,000

#

@toxic lily thanks pal, that really helped me out!

lucid hill
#

Hello - I have been reading the Stripe API docs and I am uncertain which webhook endpoint to use for when a user's subscription is charged? For instance, the users with subscriptions, when their subscription is "renewed" or otherwise when their card is charged, I would like a callback to my webhook endpoint. At first I thought it was "subscription_schedule.completed", but the more I read about that one, I am questioning if I am mistaken.

toxic lily
lost turtle
#

I just read through the Connect docs and I think I have a rough plan for my app and am ready to start writing code to see if it works. Could you guys let me know if this makes sense? The app is a savings jar app that people can use to save money with their friends, and get all their money back out later -- kind of like a group bank account. Here is my plan:

  • When someone creates a new savings jar, an Express account is created for the jar (not the user)
  • When someone joins an existing savings jar, no Express account is created because the jar already has an account
  • Any user can send money to the Express account representing the savings jar
  • When its time to empty the jar and distribute all the money back to the users who made deposits, use the card info that is associated with each deposit to send all of the money back to whoever put it in
minor cipherBOT
#

๐Ÿ‘‹ 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

pastel hemlock
#

Hi, Is it possible to use the paymentMethod update to change the credit card associated with a subscription?
Or should I create a new one payment method and update the subscription?

errant sky
#

Hi, anyone know if there is supposed to be an event triggered to the webhook when a Checkout session is canceled? We get a payment_intent.created but we dont get payment_intent.canceled?

cloud pasture
#

What event type will my webhook get for successful refund ?

cloud pasture
#

.. Why payment_intent.succeeded isnt firing by stripe ?

#

a webhook

#

It used to work fine

#

Suddenly it doesnt now

#

when i do stripe trigger payment_intent.succeeded, it works fine

minor cipherBOT
#

๐Ÿ‘‹ 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

rare cairn
#

Is there any way how I can automatically include the taxes in php api?

livid blade
#

is it possible to get the review ID over checkout.session.completed webhook? I need the ip adress and the geolocation ip

#

or do i need first retrieve Payment Intent and then retrieve review?

livid blade
#

I didn't think that I will ever miss Paul โœŒ๏ธ

fast kayak
#

Hello
Im work right now with api (create custom account with business_type company) and i can't find info about which field say me that registration was successful (not charges_enabled & payouts_enabled)

slate lichen
#

hi, i am getting this error while integrating the stripe card
Uncaught (in promise) IntegrationError: Please use the same instance of Stripe you used to create this Element to create your Source or Token

#

can you please help me to get out from this

exotic shale
#

Can I pass custom data to success page from Stripe checkout session?

#

need addition to line_item data

minor cipherBOT
#

๐Ÿ‘‹ 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

cobalt roost
#

Can I create Stripe account just for testing purposes?

stark tide
#

yeah, that's fine - you can just use it in test mode, and don't need to activate it

cobalt roost
#

but when I try to login it asks me to enter a valid bank account information

stark tide
cobalt roost
#

I arledy have an acocut but I havent use it for a year or so

stark tide
#

it sounds like it's trying to confirm your identity because you haven't used the account in a while

#

iirc, it's not asking you to enter a valid bank account, it's asking you to enter the specific bank account you used when setting up the stripe account initially, to confirm you're you

cobalt roost
#

ok thanks a lot

fast kayak
stark tide
#

wdym by checking that registration was successful?

#

that the account was created?

fast kayak
#

something like "complete"

stark tide
#

what specifically do you mean by complete?

fast kayak
#

like status complete on main dashboard (list all accounts)

stark tide
#

that's equivalent to checking that requirements.currently_due and requirements.eventually_due are both empty (ie: stripe will never ask you for more information about this account), and that all the capabilities on the account you requested are active

clever crystal
#

Hi guys
I am trying to set up express accounts through onboarding pages.
I've got some questions regarding two Refresh url and Return url which will be used for redirection in onboarding page.

  • Does Stripe use POST verb on calling this urls ?
  • What is the data stripe will include in the request? (I could not find any sample request in the docs)
fast kayak
#

One more question. When im load file (file.create) take id and want update account profile "SS-4 Confirmation letter", "Letter 147C" and can't find which field need to fill

stark tide
#

stripe doesn't make any requests to those URLs itself

#

the user's browser would make a GET request to those URLs. there wouldn't be any additional parameters passed, though you will get any cookies associated with your domain on the request

#

@fast kayak iirc, that's documents.company_tax_id_verification

clever crystal
#

Thanks for reply @stark tide
However, about refresh url, the doc says:

Your refresh_url should trigger a method on your server to call Account Links again with the same parameters, and redirect the user to the Connect Onboarding flow to create a seamless experience.

if there is no data associated with this req, how my server should know which user should receive the new generated on boarding url ?
should I listen to webhook for this case too ?
if yes, which message please ?

stark tide
#

@clever crystal it depends on how you implement authentication on your side, but typically you'd have a session cookie that you'd set when a user logs in. because cookies will be set on any subsequent request by that user to your domain, you can look for that cookie when handling the return_url/refresh_url endpoint to know which user it is

frank mountain
#

is anyone else seeing this error from CardField of @stripe/stripe-react-native v.0.1.5?

No command found with name "blur"

I see this error appear when i focus on the CardField then tap outside of it. if i add keyboardShouldPersistTaps="always", then i don't get this error. However, the error appears again when I navigate away from the screen. This only happens on iOS:

      <ScrollView
        keyboardShouldPersistTaps="always"

the onBlur callback also never seems to get called whenever the CardField is blurred (tap to another form field on the same screen or anywhere outside of the CardField).

<CardField
  postalCodeEnabled={true}
  onFocus={() => {
    console.log('this gets called')
  }}
  onBlur={() => {
    console.log('this never gets called <<<<')
  }}
  onCardChange={(cardDetails) => {
    console.log('this gets called')
  }}
/>

I also have StripeContainer as suggested here https://github.com/stripe/stripe-react-native/issues/429#issuecomment-881353718

GitHub

Describe the bug On v0.1.5's CardField, when executing the imperative onBlur method on Android it closes the keyboard successfully, but focus moves to the card number input. The same behavi...

vocal wagon
#

How exactly do webhook endpoints work with gated content?

#

I am using Gatsby private routes so users can log in and make purchases, how exactly do I set the endpoint url?

mossy cape
#

in test mode, for user on boarding, when trying to use the test ID document for a users identity, itโ€™s saying the DOBs donโ€™t match on the document and the account ๐Ÿค”

main needle
#

Hi, I do not understand why he tells me that my transfer is expected by today but he still gives it as expected future transfers and not in transit. can you help me? I tried to put in manual payments and it doesn't make me withdraw it

#

Help?

vast grove
#

is there anyway to contact the devs over the weekend?

meager oasis
#

Not usually, but someone is usually here to help, whether they work for stripe or not

fair axle
#

does anyone ever have the issue of their redirect to checkout page not working on mobile browsers?

near vortex
#

Does Stripe offer any micropayment friendly options?

bleak breach
unreal ingot
#

Hi, I'm trying to use the stripe api. I noticed that the product api doesn't have an easy way to add product variants. Am I missing something? As of right now I would have to make like 10 different products, one for each size of a shoe.

#

How would I even query for the parent object of that

bleak breach
unreal ingot
#

Oh, ok ill look at that again. Thanks for the help!

#

Could you give me an example of the Price and product object that works for variants?

bleak breach
unreal ingot
#

Thanks, so I took a look at it and it doesnt really show an example regarding multiple prices for a single product

bleak breach
#

Simply create a product and then create some prices for that product

unreal ingot
#

ok, thx for the help

#

on the invoice it doenst really show the details of the "price"

bleak breach
#

It should do

#

but you have to have a description on your Price

unreal ingot
#

Yeah, I put one, the description does not show on the payment link invoice

#

What if I want multiple descriptions, like Medium, White

kindred cedar
#

Hi, I am developing a shopping delivery ecommerce platform in Australia where customers place orders of products they want to purchase from local shops (similar to Instacart). However, many times there are changes and variations to the final order as products are out of stock or prices are different to what was earlier anticipated. For this we take permission from clients to make changes to the final order price. So wanted to ask for the best solution that will allow us to bill the client at the time of the purchase and allow us to make final changes plus/minus based on the actual final price. Please can someone help on how to achieve this?

unreal ingot
bleak breach
unreal ingot
#

I see in the api i can add meta-data

#

so programmatically i can add it to the Price object

bleak breach
#

Yes but metadata won't show up in the Checkout UI

unreal ingot
#

But, through the user interface they cannot, so i guess my own platform will have to allow that

bleak breach
unreal ingot
#

So the thing I am afraid of is, a vendor can use my stripe connect feature to create a connect account under my platform. They will have access to this Stripe dashboard and they could basically make all the prices and products using this dashboard. But I don't want them to. I want them to use it through my app platform

#

Is there any way to disable them creating products?

#

Or do I just tell them in my app, to ONLY create products and prices through my platform

bleak breach
#

With Custom, there's no dashboard for them to log in to at all and you completely control the creation of Products and Prices

kindred cedar
#

hi @bleak breach, the users get charged at the time of placing the order (eg. 5 items total $100). Then our shopper goes and purchases and delivers the goods and there may be a change to the final order if certain product was not available or there has been been a price change at the time of shopping for the user. So the end result can be a total final cost of $90 or $110 which we need the control to manage as the users give us permission for such flexibility.

unreal ingot
#

I guess I will just let them know to only make products and prices through my platform

bleak breach
# kindred cedar hi <@!849111733481504780>, the users get charged at the time of placing the orde...

Hmm that complicates matters somewhat. You probably would need to get explicit permission from your user is the total ends up being more than what you quoted them, but this depends on local laws and I'm not expert on Australian law. What you could do is use separate auth & capture (https://stripe.com/docs/payments/capture-later) to authorize the initial amount (e.g. $100) and then only capture if the amount ends up being lower or the same as the initial quote. In the case of the end total being more than what you quoted, you'd probably need to get your user back on-session and create a new PaymentIntent for the new amount

bleak breach
unreal ingot
#

Alright, thanks for the help Paul. Good night!

kindred cedar
#

Thanks @bleak breach . So lets say we take authorisation of the maximum possible charge. How do we mange the final amount if the final order is less than the full authorisation amount?
I mean, if we get an authorisation of $150 but the final bill is only $110, then how do we only get the $110 processed as final amount instead of $150 ?

bleak breach
# kindred cedar Thanks <@!849111733481504780> . So lets say we take authorisation of the maximum...

When you capture the amount, you can specify exactly how much you'd like to capture: https://stripe.com/docs/api/payment_intents/capture#capture_payment_intent-amount_to_capture So if you auth'd $150 but the final bill is $110, then you'd pass in amount_to_capture: 11000. The remaining "uncaptured" amount of $40 will then be released back to the customer.

potent bronze
#

Hi,

I'm using Stripe Connect (custom) and noticed that many payment intents for Virtual Credit Cards (VCC) are failing to complete in Europe because of 3DS being required (requires_action).
These VCC payments are initiated off session, i.e. not initiated by the cardholder and they used to work fine.
This is an example PI payload:

{
    "confirm": "true",
    "transfer_data": {
      "destination": "acct_REDACTED"
    },
    "amount": "8000",
    "metadata": {},
    "on_behalf_of": "acct_REDACTED",
    "setup_future_usage": "off_session",
    "currency": "gbp",
    "application_fee_amount": "100",
    "payment_method": "card_REDACTED",
    "customer": "cus_REDACTED"
}

I'm aware that SCA is being rolled out in this region but as far as I know VCCs are meant to be exempt from 3DS.
Could the fact that I'm not setting off_session: true when creating the PI cause this exemption to not apply?

Thanks in advance

lucid raft
#

@potent bronze do you have a payment_method ID that I can check? or PaymentIntent ID ? it is ok to share those IDs here.

potent bronze
cursive sigil
#

hi

lucid raft
#

@potent bronze Ok that PI is created with setup_furture_usage=off_session, that's the direct reason why the PI is in requires_action status where Stripe is expecting your app to ask your customer to authenticate this payment so that the card could be saved for future offline use where Stripe will seek exemption for you

#

To step back a bit

cursive sigil
#

i am just using your services and I wanted to know how I can connect Strip to WordPress and WooCommerce websitesุŸ

lucid raft
#

In order to have SCA exemption, (regardless if it is credit card or vcc), you will first need to set up the card so that Stripe will seek exemption on your behalf during transactions.
There are two ways to do it

  1. Using Setup Intent with the card. Card can be setup to save to a customer, and the card could be used for recurring charges online or offline in the future. When charging the card off line, stripe will automatically seek exemption for you
#
  1. Using payment_intent with setup_future_usage=off_session; you complete the payment and user authentication at the same time. Then the card is saved and could be used for recurring charges. Stripe will automatically seek exemption for you.
meager oasis
#

Is it worth it to get any kind of PCI-DSS Certifications?

#

I'm looking at getting a QIR certificate, but want to know its worth it first

slim wagon
#

Hey guys ๐Ÿ‘‹ ๐Ÿ‘‹ ๐Ÿ‘‹ ๐Ÿ‘‹ I need to update the satement descriptor but it seems that Phone number is required to be filled in Public business information. Is it safe to say that that number won't be showed anywhere if I untick the setting below? I am planning on putting a fake number as we don't have a US number

vocal wagon
#

Does anyone have experience with using Netlify Functions webhooks with firebase?

#

I want to update my firestore after a successful payment but im having difficulty in doing so

lucid raft
slim wagon
meager oasis
#

It can make the dispute process hell if an issuing bank needs to contact you

#

You can get a Google Voice number, if you're located in the USA, and use that for support

#

or if you're in canada, there's multiple companies that offer Voice Over IP phone numbers

lucid raft
#

@vocal wagon What issues are you seeing?

potent bronze
lucid raft
#

@potent bronze correct

#

@potent bronze but as I said, regardless, you will have to obtain your customer's consent / authentication before Stripe could ask for SCA exemption for you

#

@potent bronze How do you collect customer card information?

potent bronze
vocal wagon
#

I want to just be able to use Firebase in my Netlify functions

#

I can send logs if that would help?

lucid raft
#

@potent bronze Yeah, if you don't own the customer relationship, you will face higher declines because of SCA as you cannot obtain customer authentication for exemption.
One possibility is that your service provider sending you the VCC might have obtained consent from customer, you can probably import that to Stripe. But that is subjected to approval which you can check with our support https://support.stripe.com/contact/

meager oasis
potent bronze
lucid raft
vocal wagon
#

Yeah, Iโ€™ve gone through this and a few posts regarding the issue

#

No luck

#

I get two instances error since I initialize firebase through gatsby already

#

So when I initialize in my function I get two instances even with separate package.json

lucid raft
potent bronze
# lucid raft Yup, that. I assume when the provider charges the customer, they would have to g...

Hmm so you're saying the same cryptogram (generated for the original charge with the user's credit card) may also be used when charging the VCC which may be issued by a completely different issuer ๐Ÿค” ? Also, according to this documentation: https://stripe.com/au/guides/strong-customer-authentication#corporate-payments shouldn't VCCs be exempt from this? If I still have to collect and pass the cryptogram around, it sounds like there's no exemption being applied?

meager oasis
lucid raft
#

@potent bronze Hmmm, ๐Ÿ‘๏ธ SCA is hard.
Based on the docs, it seems that VCC exemption request is entirely controlled by the issuing bank.

The exemption itself can only be requested by the cardholderโ€™s bank, as neither the business nor payment providers (like Stripe) are able to detect whether a card belongs in these categories.

I think I might need some help from the expert in Stripe.

Just curious, will the transaction goes to frictionless by skipping the authentication when you do NOT pass off_session=true nor setup_future_usage=off_session

potent bronze
# lucid raft <@!862903647024971806> Hmmm, ๐Ÿ‘๏ธ SCA is hard. Based on the docs, it seems tha...

SCA is hard.
Tell me about it ๐Ÿฅฒ

will the transaction goes to frictionless by skipping the authentication when you do NOT pass off_session=true nor setup_future_usage=off_session
I'm not sure, that's what I intended to find out when writing the first message here. It doesn't seem like there's an easy way for me to test this without doing it live hence I wanted to get some guidance from you first.

potent bronze
meager oasis
#

Sometimes Expedia and Booking.com tend to be weird with their virtual cards

#

I only ask because I work at a hotel and experience their Weirdness first-hand

lucid raft
#

@potent bronze I am checking internally now

lucid raft
#

@potent bronze Ok, got suggestions from our expert.

  1. The cause of the 3DS is setup_future_usage=off_session parameter passed in. In this case, our internal SCA engine will by-default trigger 3DS regardless of the card type.
  2. The recommended path to try: (1) remove setup_future_usage=off_session (2) pass off_session=true when you create the payment intent, Stripe will bypass the rule engine and let the issuing bank to handle the exemption.
    Can you test and let me know if that resolves the issue. I think you are talking to another Stripe too; he will have the same information for you but let me know if there are discrepancies on the message
potent bronze
#

@lucid raft Thanks for that, will give it a try. I assume there's no easy way to replicate this in test mode right?

lucid raft
#

no I am afraid

hollow nebula
#

Hello, I was trying to use https://github.com/stripe/stripe-mock for my integration tests. But it doesn't seem to be able to keep the state intact. Plus in the documentation, it says it sends a single type of response for polymorphic endpoints (like getting card information). If I am not wrong, it doesn't send error responses when we use different cards mentioned on the Stripe test page.

Since it has a lot of drawbacks, could you please suggest the next best solution to mock Stripe?
I am looking at https://github.com/adrienverge/localstripe and https://github.com/stripe-ruby-mock/stripe-ruby-mock.

Any advice? ๐Ÿง‘๐Ÿปโ€๐Ÿ’ป

timber kernel
#

Hello, I was trying to use ACH Direct Debit (https://stripe.com/docs/ach#ach-specific-webhook-notifications) in my application which uses Stripe Connect for payments. I have been trying to listen to webhook notifications for the charges created (charge.pending, charge.succedded, etc.) but I am not receiving any webhook notifications for the charges created via ACH. Can someone please help me with it, want to know if this is different for test and live mode or some other issue. I have webhook setup for connected accounts as well which works fine, just facing the issue with the ACH charges. Thanks!

lucid raft
#

@timber kernel are you using destination charges or direct charges?
For destination charge: you will need to set webhook endpoints on your platform listening to these events
For direct charge, you will need to setup webhook endpoints in the connected account session on your dashboard . https://dashboard.stripe.com/webhooks

timber kernel
hollow nebula
#

For smart retries in subscriptions, does the webhook event has a property to get the number of attempts? Or what is the way to calculate the attempt number?

bleak breach
hollow nebula
#

@bleak breach Thank you for the quick answer. Could you explain what is the difference between charge.failed and invoice.payment_failed ?

bleak breach
#

You'd get a charge.failed event for every failed payment (Invoices, PaymentIntents etc) invoice.payment_failed will only fire if specifically an invoice's payment failed

hollow nebula
#

Got it, thank you @bleak breach ๐ŸŽ‰. Do you have an idea about Stripe mock? I had another question just few questions above

bleak breach
#

That behaviour can't be configured at this time

flat flicker
bleak breach
#

Yup

flat flicker
pure finch
#

Hey there, when the user makes a subscription he waits 50 min - 1 hour for the payment to change to succeed, and then he will see the confirmed payment on his Bank app, as a developer, I can I set the time to be less time?

lament leaf
#

Hi, a quick question re customer portal sessions. Is it possible to show the history of payment intents made via a payment intent checkout session in the portal as well? At the moment it only shows the history of invoices

bleak breach
# pure finch Hey there, when the user makes a subscription he waits 50 min - 1 hour for the p...

When creating a subscription the invoice should be created immediately. At the end of a billing period a draft invoice is created and finalized/paid approximately 1 hour later. If you want to skip this delay you can finalize and pay the invoice manually via the API: https://stripe.com/docs/api/invoices/finalize https://stripe.com/docs/api/invoices/pay

bleak breach
winter pumice
#

@bleak breach how can I adjust customer balance with API

winter pumice
vocal wagon
#

Is sending card information not according to PCI compliance? If I use the card field component that Stripe provides and set it to use dangerously so I can send the card info, can that be considered against the rules?

bleak breach
#

By not using Stripe's predefined elements you likely will have to prove that you are PCI compliant

vocal wagon
#

So is the CardField component in React native, Stripe's predefined element?

bleak breach
#

Yes

vocal wagon
#

Even if I set it to dangerouslyGetFullCardDetails?

bleak breach
#

If you want to send card information to CardField, then that means you are collecting the card details in your own form/UI somewhere, which has PCI compliance repercussions

#

Basically if you have access to raw card details in your code, you need to be PCI compliant

meager oasis
#

If your system touches card data, in any regard, youโ€™re automatically in the SAQ-D category, the strictest form of PCI compliance

vocal wagon
#

But it touches the data in the way that I get the 16 numbers and when the card expires, which I can access from the CardField

#

I dont save it inside my server/database

meager oasis
#

Automatically SAQ-D

#

It doesnโ€™t matter if you save it or not

vocal wagon
#

So I can't use the CardField

#

I should use the payment sheet

#

Ok I got it

bleak breach
#

You can use CardField, just don't use dangerouslyGetFullCardDetails. From the link I shared earlier:

Should you do otherwise, such as writing your own code to handle card information, you may be responsible for additional PCI DSS requirements (6.3 - 6.5) and not be eligible for an SAQ A. In this case, weโ€™d suggest you reach out to a PCI Qualified Security Assessor (QSA) to determine how best to validate your compliance according to the current guidance from the PCI Council.

vocal wagon
#

Got it, thanks guys

deft grail
#

Hello Guys,

Can I embed the Stripe part into the website instead of having the customer open Stripe on a separate web view page?

bleak breach
delicate apex
#

Good morning,
I have a question about Stripe's integration, I should be able to pay with card (visa, mastercard, etc), I also have a paymentIntent, when I send a request with stripe.confirmCardPayment, an exception is throw to told me there is missing parameters (card.exp_month and card.exp_year), according to the documentation I should create a paymentMethod but stripe.js told me it doesn't exist ? I don't know neither how to attach the paymentMethod to the paymentIntent
Someone can help me, please ?
Thank you

bleak breach
delicate apex
#

Thank you @bleak breach

hushed escarp
#

Sorry for late reply. so how could i differinate between non-decimal currencies etc...? will the unit_amount always reflect the same (in pennies regardless of currency being taken) and would i have to make some sort of function to manually reflect the price dependant on if the currency is a non-decimal one or not

meager hawk
#

@hushed escarp the latter I would say. unit_amount:4000, currency:"usd" is $40.00 and unit_amount:4000, currency:"jpy" is 4000ยฅ so you need some custom formatting for that on the display level.

limpid scaffold
#

Hello there!

Have a question regarding Google / Apple pay

I want to implement paymentRequestButton to the custom signup page, but the cusomer will subscribe to the trial period, so there wouldn't be any immediate charge
Can I somehow request a Google / Apple pay card just for the future payments, without any charge? Or the only way is to set $0 total and show it to the customer?

Maybe there're some other stripe elements that would help to do that

Thanks

meager hawk
#

@limpid scaffold you can show a $0 total yes. In general though Google/Apple Pay's user interfaces don't really have a good way to communicate a trial period so there's no great solution

#

for example in our Checkout product, we don't give Google/Apple Pay as an option when creating a subscription with a trial period and just show a normal card form. Google/Apple Pay are really optimised for flows where the customer actually gets charged, not just saving a card

limpid scaffold
#

Ok, got it, as I thought

Thanks

#

Also, some quick note

I used to write in your freenode chat, and somehow missed that you moved to discord
Had to knock there for a few days before get here

Maybe you'd want to leave some quick note for other dummies like me in freenode ๐Ÿ™‚

meager hawk
#

thanks for the feedback!

livid rover
#

Hello.
I am using laravel cashier, i want to know how can i customize the webhooks?

meager hawk
#

@livid rover hello there! what kind of customisation exactly are you looking for?

solid ridge
#

Hey! Is there any docs on how to save a card to a customer on the base platform, so then you can reuse that payment method for other connected accounts?

meager hawk
livid rover
#

Hello, @meager hawk
I am using stripe.js on frontend and cashier's create subscription on backend, should i start customer's subscription soon after calling create method? Or wait for a webhook? Also, i couldn't modify default webhooks, how to modify those?

#

Laravel cashier by default sends a response of 200 to stripe and saves any necessary info into cashier's table, but i want to create some rows in other tables, that kind of customization i need

meager hawk
solid ridge
analog mantle
#

Hi. I'm trying to setup a card for future charges. I've looked at this https://stripe.com/docs/payments/save-and-reuse - the sample is useful but Swift/Objective C specific. I've implemented the server side end points for createSetupIntent and confirmSetupIntent. The first issue I have run into is supplying a payment method and customerId to the createSetupIntent:
{
"customer": "cus_Jvvvvvvvvv",
"payment_method": "card",
"payment_method_types": {
"0": "card"
}
}
To which the server replied:
No such PaymentMethod: 'card'
My question is, why is card not accepted as it is one of the listed payment methods and this is only the setup step?

meager hawk
#

@solid ridge yeah the docs badly need to be updated. Ignore what it says about Tokens, you want my second link, the one about PaymentMethods(the yellow box at step 2 alludes to it), you'd always use those.

And yes you need a card already created on the platform before you can copy it to other connected accounts. It depends what you need though, like you could instead just create the card directly on the connected account in the first place and don't do any cloning. (that's what we do at https://stripe.com/docs/connect/creating-a-payments-page for the Direct Charge examples, if you set stripeAccount when initialising stripe.js that means the details the customer enters gets saved to that account directly) That way though you can't charge the card on your platform, or on other connected accounts, but that might not matter to you; setting up the cloning can be fairly complicated though.

#

@analog mantle hi! hmm. "card" is not an object ID. The payment_method is the ID of an PaymentMethod (pm_xxx ) that you collected from the customer previously. I think you're a bit confused. You also should not be passing payment_method on the server side. You collect and pass the PaymentMethod on the frontend : https://stripe.com/docs/payments/save-and-reuse?platform=ios#ios-collect-card-details using STPPaymentMethodParams and STPPaymentHandler.confirmSetupIntent

#

to be clear, "card" is a payment_method_type (like type:card, type:ideal, type:sepa_debit) ,it's not a PaymentMethod object itself.

livid rover
#

Ok thanks for helping @meager hawk

#

If anyone else has any knowledge about laravel cashier, please let me know

analog mantle
meager hawk
solid ridge
meager hawk
#

but again you shouldn't need to pass on your backend server. You omit that parameter, and instead your frontend takes care of confirming the SetupIntent and providing the PaymentMethod

#

@solid ridge sure, at the time of making a payment, you can list payment methods of the platform cus_xxx, then clone the selected one to the connected account, and charge it one-off there with a Direct Charge PaymentIntent.

analog mantle
#

I think I should be able to figure it out, thanks @meager hawk

past heath
#

hey is there any stripe devs here? got a question to ask

#

lets say I have this in my frontend:

      const { error, ...appleResponse } = await presentApplePay({
        cartItems,
        country: 'HK',
        currency: 'HKD',
      })

if (!error) // create payment intent

Then i want to confirm the intent in the server side, so I do:

await stripe.paymentIntents.confirm('pi_blabla', { payment_method: 'pm_blabla' })

When i do it this way, it seems the payment process on apple pay was not completed, but the stripe payment was "completed". Attached is the screenshot

#

payment confirmed

meager hawk
#

@analog mantle the screenshot is showing how you'd confirm server side using a test token (https://stripe.com/docs/testing#cards, see the PaymentMethod tab, pm_card_visa is a special magic string for testing) as a demonstration, you you would just follow the guide for the specific thing you're building(so the save-and-reuse guide). PaymentMethods should always be created on the frontend for PCI reasons

#

@past heath there's a completion block you have to call to tell the OS that Apple Pay completed and it can close the sheet. You're using React Native, just checking? (so I can find the relevant docs)

past heath
#

yes, I am using React Native

#

so, no matter what, I would have to call the confirmApplePayPayment in the frontend?

meager hawk
#

@past heath yes

past heath
#

hmm, i see

meager hawk
#

I was just going to say that, why do you confirm on the backend

past heath
#

ah, its just on my side we have some extra auth steps in the backend, therefore I wanted to confirm on the backend

meager hawk
dry hatch
past heath
#

I see I see, i understand now, thanks alot @meager hawk , kudos to you brother

meager hawk
past heath
meager hawk
#

@past heath it's not really related, you just set capture_method:"manual" on the backend when initially creating the PaymentIntent, everything else proceeds the same way

past heath
#

i see, i understand, thanks alot @meager hawk

meager hawk
#

it's just so you have the option to refund the authorised payment if you can't fulfill the customer's order for instance

vocal wagon
#

Hello, how are you ? I have a question about the payment validation:

  • All things works until here : a user is request for 3D secure
  • 7 minutes after, the Charge is capture
  • After that, nothing happen, it seems that the next step into the javacript code seems not to be executed

Have you ever seen this statement before ? Thanks a lot ๐Ÿ˜‰

#

It happend sometimes (1 time for 3 days)

analog mantle
deft grail
meager hawk
#

@vocal wagon well in general there's no guarantee any client side code will get called after the customer authenticates through 3D Secure. They might complete it and then immediately close the browser tab for example and never return to your site. So it shouldn't matter, as you always use webhooks to handle the outcome of the customer paying!

#

@analog mantle no, the flow is what's in the docs (https://stripe.com/docs/payments/save-and-reuse) :

  • create SetupIntent on the backend and associate it with a Customer ID
  • pass the SetupIntent to the frontend
  • the frontend collects the PaymentMethod from the customer's card details directly on your website/app etc
  • call confirmSetupIntent on the frontend which completes the SetupIntent with those details the customer selected.
  • done!

You never call confirmSetupIntent functions on the backend really. The point of using a SetupIntent is it can present the customer with a 3D Secure interface to authenticate their card when saving it with you. So it's entirely a frontend thing since that 3D Secure UI has to be shown on your frontend where the customer is.

bright hearth
#

I cannot get back into my account

vocal wagon
#

@meager hawk so I have to change my "then" step into Javascript which do the whole last step, by the "webhooks" system which handle the whole issue like : payment bank validation, or a closing browser after payment ?

#

So a solution full server side ?

cerulean pineBOT
#

:question: @bright hearth 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

meager hawk
vocal wagon
#

So @meager hawk in my JavaScript I don't have to check anymore if the payment_intent has succedd, this action will be dedicated into server side directly ? ๐Ÿ™‚

hollow prairie
#

@vocal wagon Correct! You should handle any post payment actions via webhooks, listening for the payment_intent.succeeded event

fair axle
#

has anyone experience setting cookie behavior for stripes redirecttocheckout?

#

I am getting a few errors from stripe, one is about sameSite settings for it's cookies, and the other is [violation] messenger handler took 526ms any advice on fixing either?

hollow prairie
#

@fair axle Hey! Can you share the specific cookie issue?

fair axle
#

sure thing onesec

hollow prairie
#

@fair axle On a related note, you can actually opt out of redirectToCheckout now and do server-side redirects if that is better suited for your integration. The Checkout Session object now includes the url field directly: https://stripe.com/docs/api/checkout/sessions/object#checkout_session_object-url

fair axle
#

Indicate whether a cookie is intended to be set in a cross-site context by specifying its SameSite attribute cookies: _gcl_au .stripe.com/
17 requests```

fair axle
# hollow prairie <@!772410946747760660> On a related note, you can actually opt out of `redirectT...

js.stripe.com/v3/checkout-inner-address-autocomplete-212a7b6de75afaaa791ea6a81b3e08c1.html#publishableApiKey=pk_test_51Iy5BwIzXo7BVw214tu7VmnejDcK2xWudnRISkloeDQUSUabQTTzKQ4ru75ZDoC5ieRyiFjb7mwC7HNx7kSQY6dv00Moihf4wQ:1 Refused to load the image 'https://q.stripe.com/?event=rum.stripejs&event_count=1&timestamp=1626694060304&event_id=46147b50-9b96-4566-b42c-6947ce6a946c&os=Windows&browserFamily=Chrome&version=3&requestId=req_XfPd690Yxcyq89&tokenType=unknown&url=https%3A%2F%2Fapi.stripe.com%2Fv1%2Fpayment_pages%2Fallowed_origins&status=200&start=1626694060066&end=1626694060301&resourceTiming[startTime]=760.1&resourceTiming[duration]=167.7&resourceTiming[redirectStart]=0&resourceTiming[redirectEnd]=0&resourceTiming[fetchStart]=760.1&resourceTiming[domainLookupStart]=760.1&resourceTiming[domainLookupEnd]=760.1&resourceTiming[connectStart]=760.1&resourceTiming[connectEnd]=760.1&resourceTiming[secureConnectionStart]=760.1&resourceTiming[requestStart]=770.2&resourceTiming[responseStart]=926.7&resourceTiming[responseEnd]=927.8&paymentUserAgent=stripe.js%2Fca8ac073a%3B+stripe-js-v3%2Fca8ac073a' because it violates the following Content Security Policy directive: "default-src 'none'". Note that 'img-src' was not explicitly set, so 'default-src' is used as a fallback.

#

and and thats the other error message

#

I have a feeling that one of these 2 errors is the reason stripe checkout wont redirect to the checkout form on my mobile browser but works fine on laptops

hollow prairie
#

@fair axle These errors are from the checkout.stripe.com domain?

stripe checkout wont redirect to the checkout form on my mobile browser
That's strange, are you able to provide a reproduction of sorted?

#

@fair axle Generally those messages are safe to ignore as Checkout is a Stripe hosted solution, so there's no vulnerability for the user per se

kindred frigate
#

Hello Sir,

we have integrate stripecheckout in our react js application, i need 3d secure feature in this below code. can you suggest how can i do.

<StripeCheckout
token={this.onToken}
stripeKey="my_PUBLISHABLE_stripekey"
/>

hollow prairie
fair axle
hollow prairie
#

@fair axle Yeah, I can't open Checkout as the buy button is pointing at a localhost:5000 endpoint (to create the Checkout Session I'd assume)

#

@kindred frigate Our hosted solution handles 3DS/auth scenarios for you out-of-the-box. There's no additional work needed by you! Just make sure you're using a test card that will actually trigger 3DS: https://stripe.com/docs/testing#regulatory-cards

kindred frigate
#

i have use given code in API
StripeConfiguration.SetApiKey(System.Configuration.ConfigurationManager.AppSettings["Secret Key"]);

            // Create a Customer:
            var customerOptions = new CustomerCreateOptions
            {
                SourceToken = objRegInfo.token,
                Email = objRegInfo.EmailAddress,

            };
            var customerService = new CustomerService();
            Customer customer = customerService.Create(customerOptions);
#

Please suggest improvement for 3d secure

hollow prairie
junior ivy
#

Hi karllekko .. With the help of stripe im onboarding express account and setting it in destination charge during my invoice creation.. I see the events for invoice getting completed, payment_intent completed, the pay out to destination charge payed to connected account. But the thing is Im not able to figure out for which payment the payout have happened from webhook event. the payout object doesnt contain any information like payment starts with py_ or payment intent pi_ .. How to identify that ?

kindred frigate
hollow prairie
#

@junior ivy Hey! Which event are you looking at?

junior ivy
#

this doesnt contain any ways to track on for which payment this payout had happened

hollow prairie
#

@kindred frigate I'm afraid we don't have an official SDK for ASP Web API 2

#

@junior ivy Checking

vocal wagon
#

Thanks @hollow prairie ^^

hollow prairie
junior ivy
#

balance_transaction is in payout object.. so i shld check the same in charge object ?

hollow prairie
#

@junior ivy You could compare the 2 yes. But how would you have the Charge object?

vast grove
#

i have a reader in 3 different location (3 offices in my scenario)

Im searching the reader through:

discoverResult = await terminal.discoverReaders(config);
const selectedReader = discoverResult.discoveredReaders[0];
const connectResult = await terminal.connectReader(selectedReader, { fail_if_in_use: false });
if (connectResult.error) {
alert('Failed to connect')
}

all 3 location cannot connect to the reader, is it because the discoverReaders() is picking up the terminal discover in the stripe account setting? or is it suppose to pick up the terminal discover in the same Wi-Fi (which i thought it did)

hollow prairie
vast grove
#

im currently using verifone for all 3

hollow prairie
#

@vast grove Yeah, the P400 is Wi-Fi enabled. What is the value of the config hash you're passing to discoverReaders?

vast grove
#

const config = { simulated: false }

junior ivy
#

@hollow prairie This is my payment_intent - pi_1JCmO0ChHNy99f8cFiLOiPSy , payout is po_1JEkuJ2S6s26x9KeiRJ88dsS .. I dont find any relation here. this is my charge ch_1JCmOxChHNy99f8cALYfdYYN .. balance_transaction in po_ and charge are different. ..

vast grove
#

@hollow prairie is it possible if i DM you about this or do you prefer to speak here?

hollow prairie
vast grove
#

yup, all 3 are register in the dashboard

#

originally the first one was working fine, after entering the next 2, i had an issue with all 3

hollow prairie
#

@vast grove Can you please share your account ID? acct_xxx

vast grove
#

acct_1HZeiMA9wGpti1sl

#

there should be 3 readers, all connected to Wi-Fi right now

hollow prairie
#

@vast grove Are you working in live or test mode?

vast grove
#

live

#

because in test mode (my company has 1 reader) while in live (this company has 3 readers)

#

im only experiencing the issue with 3 readers in 1 account

hollow prairie
#

@vast grove Weirdly all 3 are reporting as online in the past ~2 minutes

vast grove
#

yup

lethal mantle
#

Hi guys. Iam just facing problem with await stripe.handleCardAction(response?.data.payment_intent_client_secret). Iam 100% sure, that Iam passing the right client secret I get from payment intent, but still. I got this response

hollow prairie
#

@vast grove And discoverResult.discoveredReaders is just empty?

vast grove
#

discoverResult = await terminal.discoverReaders(config);
const selectedReader = discoverResult.discoveredReaders[0];
const connectResult = await terminal.connectReader(selectedReader, { fail_if_in_use: true });

if (connectResult.error)
//error happens here

hollow prairie
#

@lethal mantle Hey there. Are you using the same API key (live/test) with Stripe.js for handleCardAction as you are to create the PI?

#

@lethal mantle Can you please paste that pi_xxx ID?

lethal mantle
hollow prairie
#

@vast grove What is the actual error/outcome you're seeing?

#

@lethal mantle Please don't share the secret! Just the actual ID of the PaymentIntent (as shown in your first screenshot)

hollow prairie
#

@lethal mantle Looking now

vast grove
#

@hollow prairie im having an issue with this part unfortunately

exotic shale
#

Is it somehow possible to pass more than 500 character long string in Stripe as a metadata or something else?

vast grove
#

since it is in production and i didnt log it anywhere, i suppose i can ask the customer to open console lol

hollow prairie
#

@lethal mantle Looks like you're working with Connect, right?

lethal mantle
hollow prairie
#

@vast grove Yeah really need to see the actual error/outcome you're seeing. It might be worth setting up the readers in test mode to debug what you're building

sudden ingot
#

Looking for a little help on using the Expand functions to retrieve the Fee associated with a given payment. When we try to use this, the fee returns NULL. Is there something we need to send on the Intent side in order to retrieve the Fee on the payment?

hollow prairie
#

@lethal mantle Yet that parameter wasn't used to create the PaymentIntent, hence the error you're seeing

hollow prairie
#

@sudden ingot Hey there. Can you share the ID of the payment? pi_xxx or ch_xxx?

sudden ingot
#

This is one from Test: pi_1JEtDjKzsQLdHgSOZls1UW3T

hollow prairie
tropic laurel
#

I didn't get a clear answer from customer service so I'm asking here:

Can Tax Rates be applied to payment link feature? I tried and no tax was applied into the invoice after payment thru the link. Even though all tax rates were set up properly in dashboard. So I'm wondering if this is a limitation from the payment link feature.

vast grove
#

@hollow prairie before i proceed, the below:

            discoverResult = await terminal.discoverReaders(config);
            const selectedReader = discoverResult.discoveredReaders[0];

should net me the reader that is connected to the Wi-Fi between our current application and the terminal; correct?

sudden ingot
#

Yes, that is what we followed. We can see the return for Fee, but it shows NULL, not the value.

tropic laurel
hollow prairie
#

@vast grove That will return all accessible/online readers for your account

#

@tropic laurel There's no tax support with Payment Links currently

vast grove
#

ahh, is there a way to net me the reader that is only discovered in the current location without inputting locationID?

if not, then i might need to add input a locationID when discovering reader

tropic laurel
hollow prairie
#

@vast grove I'm afraid not, you'd need to pass the parameter

#

@tropic laurel I don't think we have anything to share on that front right now

vast grove
#

@hollow prairie is there an API to return all locations w/ reader in the account

hollow prairie
#

@sudden ingot Still checking

exotic shale
#

Any way to surpass the 500 character limit in the metadata of Stripe Checkout?

daring lodge
hollow prairie
#

@sudden ingot Both fee and fee_details are null?

daring lodge
hollow prairie
#

@sudden ingot We recommend using the fee_details hash over fee. Alternatively you could deduct net from amount

exotic shale
vast grove
#

@daring lodge @hollow prairie ty for both of your help!

hollow prairie
daring lodge
exotic shale
#

Thanks ๐Ÿ™‚

exotic rain
#

Hi everyone,

#

I used SubscriptionSchedule to update the price in existing subscription on a future date

#

SubscriptionScheduleCreateParams params = SubscriptionScheduleCreateParams.builder()
.setFromSubscription(userSubscription.getStripeSubscriptionId())
.setStartDate(startingDate.toEpochMilli())
.setEndBehavior(SubscriptionScheduleCreateParams.EndBehavior.RELEASE)
.addPhase(
SubscriptionScheduleCreateParams.Phase.builder()
.addItem(SubscriptionScheduleCreateParams.Phase.Item.builder()
.setPrice(subscriptionPlan.getStripePriceId())
.setQuantity(1L)
.build())
.setIterations(1L)
.build())
.build();
SubscriptionSchedule schedule = SubscriptionSchedule.create(params);

#

but i got exception
com.stripe.exception.InvalidRequestException: This value must be less than or equal to 9999999999 (it currently is '1656567570000')

sudden ingot
#

@hollow prairie I think that did it! Thank you for your help!

daring lodge
#

Specifically: startingDate.toEpochMilli() looks incorrect

limpid scaffold
#

Hello again

I'm adding PaymentMethod to the customer (that I got from paymentRequestButton) and assigning it to default_payment_method for the customer
But when I'm trying to make some Charge via API - I'm gotten an error: Cannot charge a customer that has no active card

Does it mean that to make some custom Charge / Hold on a customer PaymentMethod i need to move to PaymentIntents instead of Charge?

daring lodge
#

So, yes ๐Ÿ™‚

#

However: there might be alternatives depending on what you're trying to do

#

Are you already integrated with the Charges API?

limpid scaffold
#

Not so much

Just placing some holds on a customer cards

#

At the moment we have a custom sign up form, with StripeJS simple card editor

#

And trying to extend it to PaymentButtons and some other stuff

daring lodge
#

If you're building new, definitely use the Payment Intents API. It's the current API supporting the latest features.

slow widget
#

Hi there,

I needed to include custom metadata while exporting from https://dashboard.stripe.com/balance
How to achieve that? I tried adding that metadata in creating subscription, but that metadata was not included while exporting.

limpid scaffold
exotic rain
#

i am setting 'from_subscription' for existing subscription and 'start_date' to update on the start_date

daring lodge
# slow widget Hi there, I needed to include custom metadata while exporting from https://dash...

What metadata are you expecting to be included, exactly? Can you provide an example object/request with the metadata you'd want?
For help with dashboard reports I would recommend reaching out to support: https://support.stripe.com/contact

daring lodge
#

@exotic rain What are you trying to do / what are you expecting the start date to affect?

exotic rain
#

okay,
then how can i update the existing subscription with new price on future date?

junior ivy
#

Hi all .. is there a way to provide express account holder to edit their bank details like the accountURL that we use to onboard the express account ??

daring lodge
#

@exotic rain note that you need to include the current phase in the update request (and the new phase)

daring lodge
daring lodge
exotic rain
daring lodge
little bone
#

Hi, we're building a standard connect integration, controlled by a single platform, and i'm wondering if it's possible to view events relating to direct charges that the platform account creates on its connected accounts?

exotic rain
junior ivy
daring lodge
daring lodge
storm walrus
#

hi, have a trouble with integration flow for recurrency payment after first on-session paymentIntent. someone can help me ?

daring lodge
#

@exotic rain After creating from the existing sub, you'll have a schedule with a single phase and can reference the existing phase values when updating to add a phase

daring lodge
storm walrus
#

i try to migrate from old process with createCharge to new process, its for integrate 3D secure flow. For the first payment i use PaymentIntent and all is good, but for my recurring process (it's plan product) i don't understand how i can pass 3D secure on a off-session of my user

daring lodge
#

@storm walrus then you use that payment method with off_session=true

storm walrus
#

i already do that i think

daring lodge
#

@storm walrus Note that the bank may still decline the payment requiring your customer to authenticate, but it will be an immediate decline, different that the requires_action state of the initial payment

exotic shale
#

is it possible to retrieve PI ID from stripe checkout?

daring lodge
exotic shale
#

thank you

daring lodge
exotic rain
exotic rain
# exotic rain creating a subscriptionSchedule without modification:- SubscriptionScheduleCrea...

And then update it:-

SubscriptionSchedule subscriptionSchedule = SubscriptionSchedule.retrieve(schedule.getId());
SubscriptionScheduleUpdateParams updatedParams = SubscriptionScheduleUpdateParams.builder()
.addPhase(
SubscriptionScheduleUpdateParams.Phase.builder()
.addItem(SubscriptionScheduleUpdateParams.Phase.Item.builder()
.setPrice(subscriptionPlan.getStripePriceId())
.setQuantity(1L)
.build())
.setStartDate(startingDateSeconds)
.build())
.build();
SubscriptionSchedule updateSchedule = subscriptionSchedule.update(updatedParams);

storm walrus
#

for initial payment a do this :

$intent = \Stripe\PaymentIntent::create([
    'amount' => $PayCommand->getAmountTotal(),
    'description' => 'Nยฐ '.$PayCommand->getId().' - '.$user->getEmail(),
    'currency' => $PayCommand->getCurrency(),
    'customer' => $user->getStripeUser(),
    'metadata' => [ 'command_id' => $PayCommand->getId() ],
    'setup_future_usage' => 'off_session',
    'payment_method_types' => ['card'],
    'confirm' => true,
    'return_url' => $redirectedUrl
]);

so i use "off_session" i think
but after when a i createCharge on the card of customer the next mounts i have an error:

Stripe\Error\Card exception encountered when creating a Stripe charge: "Your card was declined. This transaction requires authentication."

i don't understand why, it's supposed to work with your test card ?

daring lodge
daring lodge
#

@storm walrus and which test card are you using?

past plank
#

Is it possible to use a existing PaymentIntent for an Invoice?

daring lodge
vast grove
daring lodge
vast grove
#

ic, when getting a list of reader, is it possible to display location name along with their id(tml_)

storm walrus
#

yes i follow the advanced integration, and it's a migration, we use the older advanced method before
i use card 4000000000003220
request_id : card_1JBGabKQQszY1BCq0O6LJZ6Y
that is this you ask ?

stark spruce
#

not sure if right place to ask, but basically a person i work with that i was supposed to pay charged my bank account 2 times without my aproval or me actually paying him using the discord receipt method. The receipt looks like this on my email, never did anything to pay it, regardless money was withdrawn from my bank

daring lodge
# vast grove ic, when getting a list of reader, is it possible to display location name along...

location is exandable:
https://stripe.com/docs/api/terminal/readers/object#terminal_reader_object-location
So you can use expand[]=data.location in your Reader list request to get the full object for each entry
https://stripe.com/docs/api/expanding_objects

daring lodge
past plank
storm walrus
#

ok thx u @daring lodge i'll going try

naive kettle
#

Is it possible to retrieve a customer without passing an id but passing a value stored in metadata? Like Stripe::Customer.retrieve({my_key: 'my_value'}

stark spruce
#

Do i have to report his as a bug or abuse or what ? Actually got charged 2x 70$ without my aproval, only paid the third one since it was made in proper method like so,

#

these however got charged without my aproval, 2x

#

there might be some bug with the receipt from discord method and the discord partnership if person can charge my cc without my aproval, or am i missing something ?

daring lodge
# stark spruce not sure if right place to ask, but basically a person i work with that i was su...

For help with this you should reach our to Discord directly, if the payment was from them, or Stripe support if this was an unexpected charge.
https://support.stripe.com/contact
If you are a customer without a stripe account you can email without logging in: https://support.stripe.com/contact/email or email support@stripe.com

stark spruce
#

ty

daring lodge
hollow prairie
#

@naive kettle Hey! I'm afraid that isn't possible, no. You could instead perform that lookup using the list method with our auto pagination feature

little bone
daring lodge
little bone
daring lodge
#

yes, but to be clear you'd set up a connect webhook on your platform not on each connected account

#

a single connect endpoint on your platform can get events from all connected accounts

vocal wagon
#

Hello, can i have help please

daring lodge
kindred frigate
#

hello ,

can i integrate 3d Secure (One time password) in given react js code.

render() {
return (
<StripeCheckout
name="Emaily"
description="$5 for 5 email credits"
amount={500}
token={token => this.props.handleToken(token)}
stripeKey={process.env.REACT_APP_STRIPE_KEY}
>
<button className="btn">Add credits</button>
</StripeCheckout>
);
}

loud wasp
#

Hi folks! I know that PaymentLinks cannot be created via the API at the moment, but if I have a standard connect platform, can I access the PaymentLink objects that my connected account created through the Stripe Dashboard via the API?

warm dust
#

Hi, I am trying to integrate Stripe with Unity. Is there any information or tutorial that you can recommend to me? Thank you! ๐Ÿ™‚

thick blaze
#

We integrating with metered subscriptions and trying to handle replacing subscription items using stripe.subscriptions.update We are passing price id's to the items property and also passing subscription item id's with deleted: true and we see an error message of:

invalid_request_error
When deleting the subscription item si_JsOJjXG2oXRuDM with a metered plan, all related usage records must be cleared too by setting clear_usage=true.

We do not want to clear usage for the un-invoiced usage on the current subscription items. We would like to to stick with using the update method. If we are able to update usage on those subscription items just before calling update, can we simultaneously mark those as deleted: true and use the add_invoice_items.price to cause one last invoice to be created for those subscription items that will be deleted from the subscription? If not we are looking for suggestions. Thank you!

daring lodge
# kindred frigate hello , can i integrate 3d Secure (One time password) in given react js code. ...

@kindred frigate Can you explain a bit more what you expect to do here? I'm not sure I understand what you're trying to accomplish.
If you mean supporting 3ds with a custom Stripe Elements payment in react then yes you can do that:
https://stripe.com/docs/payments/accept-a-payment?platform=web&ui=elements#set-up-stripe-elements (choose React tab/option)

civic eagle
#

Why its not working?? I use Prestashop plugin

#

Who can help me please??

daring lodge
daring lodge
daring lodge
civic eagle
north ether
#

Hi folks ๐Ÿ‘‹
I'm working on a GPay android stripe integration based on these steps: https://stripe.com/docs/google-pay
The flow works fine when using the test stripe publishable key and gpay test environment.
We've been approved in the GPay business console, however now we've changed over to using the live publishable key & env,
we are seeing this error in the GPay flow:

An unexpected error has ocurred. Please try again later. [OR-IDL-09].

We've also reached out to google as our apple pay integration is working fine,
but just wanted to drop in here to see if there's a known resolution for this?

loud wasp
daring lodge
pseudo cargo
#

Hi, Im trying to backdate a subscription thou the api. im setting the billing_cycle_anchor. But this doesnt seem to have any effect. Would anyone have an idea what I might do wrong?

north ether
thick blaze
#

@daring lodge We integrating with metered subscriptions and trying to handle replacing subscription items using stripe.subscriptions.update We are passing price id's to the items property and also passing subscription item id's with deleted: true and we see an error message of:

invalid_request_error
When deleting the subscription item si_JsOJjXG2oXRuDM with a metered plan, all related usage records must be cleared too by setting clear_usage=true.

We do not want to clear usage for the un-invoiced usage on the current subscription items. We would like to to stick with using the update method. If we are able to update usage on those subscription items just before calling update, can we simultaneously mark those as deleted: true and use the add_invoice_items.price to cause one last invoice to be created for those subscription items that will be deleted from the subscription? If not we are looking for suggestions. Thank you!

daring lodge
thick blaze
#

ok, thank you

pseudo cargo
vocal wagon
#

Hello
My Stripe account is blocked this stripe account is to promote our brand Sawora.

Please know that this blocking puts us again in a great difficulty because we have stock that costs us money, and a partnership with the production plant that we must respect.

I understand that you are just doing your job and that for you these stripe accounts are just that...but they are much more for the entrepreneurs who use them.

The employees of these companies have families that depend on the wages generated from their customers to live. When you deactivate a Stripe account, you directly impact the lives of these families.

I remain at your disposal, but please do what is necessary.

My best regards.
Thanks in advance

daring lodge
vale osprey
#

Hey guys. I need to take export of Customer Subscriptions from my Stripe Dashboard. I couldn't find it. Can you help me how to do that?

civic eagle
daring lodge
daring lodge
# civic eagle Is it possible? <@!837053243242446919>

I don't know -- can you share some example payment ids? It appears you must be setting the payments to manual capture. If you let these use automatic capture instead (the default), then it wouldn't be a problem for you.

cerulean pineBOT
#

: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

north ether
daring lodge
thick blaze
#

@daring lodge So would we want to watch for the invoice.finalized webhook event and then delete the old subscription items with deleted:true and clear_usage:true ?

daring lodge
#

Can you paste that pi_123 id here please?

north ether
daring lodge
#

and do not share private information in the channel - it is public with many users

civic eagle
daring lodge
north ether
daring lodge
daring lodge
thick blaze
#

@daring lodge also does metadata from a subscription get added to the invoice event data that is sent to the invoice.finalized webhook?

civic eagle
daring lodge
daring lodge
kindred frigate
# daring lodge <@!865153115648688180> Can you explain a bit more what you expect to do here? I'...

web api we have use given code,

StripeConfiguration.SetApiKey(System.Configuration.ConfigurationManager.AppSettings["Secret Key"]);

            var customerOptions = new CustomerCreateOptions
            {
                SourceToken = objRegInfo.token,
                Email = objRegInfo.EmailAddress,

            };
            var customerService = new CustomerService();
            Customer customer = customerService.Create(customerOptions);
            
             Charge charge = new Charge();                  
             var chargeService = new ChargeService();
             charge = chargeService.Create(chargeOptions);

after click on pay button it is showing below message

Your card was declined. This transaction requires authentication

can you suggest how can i modified this code for 3d secure (One Time Password)

daring lodge
daring lodge
kindred frigate
#

can not do in legacy charge API?

north ether
#

I can't find any test ones, but here's a successful apple pay one: pi_1JExhPLZMMa5HMOVEvhya9Sa
and a failing g pay one: pi_1JExhzLZMMa5HMOVdx5tahxN
(both in live)

bold basalt
#

@north ether hello, having a look one sec

vocal wagon
thick blaze
#

@daring lodge thank you for your help

vocal wagon
#

pi_1JEzAZBfAoJM0K2y1JXcxhoQ

bold basalt
#

@vocal wagon hello having a look

#

@vocal wagon can you send me the request ID where you get that error? From your Dashboard logs?

#

@north ether I looked at the second PaymentIntent, nothing failed there? It was never confirmed, had no PaymentMethod attached. There isn't a failure there.

north ether
bold basalt
#

@north ether this is on web right? Not on an Android app, correct?

vocal wagon
#

@bold basalt My tests are in test mode, do you find with PI_ID given just before? pi_1JEzAZBfAoJM0K2y1JXcxhoQ

bold basalt
#

@north ether does it work in test mode, with your test mode API keys, can you check?

north ether
north ether
bold basalt
#

@vocal wagon I can pull up the PaymentIntent but no errors on any of the requests I see there, which is why I asked if you have a request ID

#

@north ether yeah it could be a few things, I'd first verify in test mode, and then have a look at whether you're set up for Google Pay in production. There's a few factors that can cause issues here, like GPay payment sheet validation, the card you select, things like that

north ether
# bold basalt <@!691373164952944762> yeah it could be a few things, I'd first verify in test m...

Thanks. I'll move back over to test tomorrow and have a look - should we be using a real card to test or should we use a GPay account signed up for google's "Google Pay API Test Cards Allowlist" google group? I think we've got the GPay production approval (based on our GPay console) sorted but I've reached out to google to confirm this. Could you point me in the direction of more info about your other suggestions - sheet validation and card selection?

bold basalt
#

@north ether real card to test, it doesn't charge the real card but charges a test mode card instead (as long as you're using test mode API keys).

tepid gust
#

a real card in test mode would cause an error wouldnt it? Im pretty sure it gets rejected

bold basalt
#

@north ether there's no directions for the other things unfortunately, GPay payment sheet is an opaque box basically but have identified a handful of things over time that can have issues

vocal wagon
bold basalt
#

@tepid gust not with Google Pay or Apple Pay, for GPay specifically, Google creates a test mode token for 4242 instead of your real card

tepid gust
#

ah that makes sense

bold basalt
#

@vocal wagon I'm not sure I understand. Like from the PaymentIntent perspective you've mostly done the right thing, it sounds like an integration issue in your PHP code? which line of code is running into an error, the server-side confirmation of the PaymentIntent?

vocal wagon
#

@bold basalt Here is the code: https://pastebin.com/A0UUWvhi
On line 233 because of what is happening on line 207 to trigger the 3DS (when it is needed)

unreal ingot
#

So i talked to a Dev yesterday, and he said to handle Product Variants, I should use the Price object, I just took a look at the SKU object, how does that relate?

bold basalt
#

@unreal ingot hello, not sure what the conversation was yesterday but you would just create Price objects for a particular Product. You wouldn't create SKU objects.

unreal ingot
#

OK, thx for the help

bold basalt
#

@vocal wagon so you're calling handleCardAction() correctly, after that once you get the PaymentIntent status, you need to confirm it server-side.
I don't think that is what you're doing in your handleCardAction() completion. You need to POST to a page or send an AJAX request to send the PaymentIntent to your backend PHP code and confirm it again.
It is a bit hard to follow the code flow in the pastebin but I'd trace that a) you have code to confirm a PaymentIntent server-side and b) you are calling that code (by adding logs etc) after you handleCardAction()

vocal wagon
#

@bold basalt My concern is that after calling handleCardAction, I have no control over the event once the user has confirmed via the popup returned by Stripe?

bold basalt
#

@vocal wagon you do though, when the promise resolves? i.e. the .then() part after your handleCardAction() ...

vocal wagon
#

@bold basalt Before the call took place in FrontEnd and Stripe took care of it directly, I didn't have to worry about it in BackEnd

#

@bold basalt Ok, I'll try, wait a minute thank you hmunoz

bold basalt
#

@vocal wagon yes that is still possible, without manual confirmation. so your code is using a non recommended flow

#

@vocal wagon why are you using manual confirmation?

vocal wagon
#

@bold basalt I have several uses in Custom, sometimes the capture is confirmed later, when I get the IBAN from the service provider.

north ether
bold basalt
#

@vocal wagon that can also work without manual confirmation. Beyond card payments, manual confirmation isn't intended for any other payment methods though

vocal wagon
#

@bold basalt Ok, if it doesn't work better for this case, I'll switch manual to automatic, thanks.

bold basalt
#

@north ether looking

#

@north ether ok so here's what I see

#

@north ether your code is probably creating a PaymentMethod but isn't actually doing the rest of the integration i.e. confirming a PaymentIntent with that PaymentMethod. So something is missing here, could be client side or could be server-side, can't say as it depends on how you're integrated. But your integration isn't confirming the PaymentIntent with the Google Pay PaymentMethod.

north ether
vocal wagon
#

@bold basalt If I pass capture_method & confirmation_method to automatic, I no longer have the 3DS request at all?

#

@bold basalt Ditto if I leave capture_method in manual and I pass confirmation_method in automatic

dim hearth
sterile hatch
#

hello, I'm looking at subscription schedules and have a question re: the end_behavior attribute. If my schedule has 2 phases, each with a different price associated with them. Which price will be used once the schedule ends and the end_behavior is set to 'release'? I assume it will be whatever price is associated with the 2nd phase (e.g., the most recent phase) but want to double check

dim hearth
lusty umbra
#

hi

sterile hatch
#

A follow-up question for you as what I really want to do is:
phase 1: Price A, iterations 1 PLUS an additional X days.
phase 2: Price B, iterations 1. Starts after completion of phase 1 (including additional days)

In theory, we could use trial period but that means customer is not charged upfront which is not what we want. Could make it work by setting a trial period on phase 2? But that seems a bit awkward.

lusty umbra
#

my Live API key not working

sterile hatch
#

Really Phase 2 should go on indefinitely but I assume we can accomplish that by having Phase 2 be a single iteration and then letting the schedule revert back to a simple subscription.

dim hearth
dim hearth
lusty umbra
sterile hatch
dim hearth
# lusty umbra

Have you checked that your site is using your live publishable key? That error is occurring because that token was created with your test publishable key (pk_test_xxx), but then you're trying to use it in a follow-up live-mode request.

sterile hatch
dim hearth
# sterile hatch The goal is to not charge the customer for those extra days with the caveat that...

Gotcha - given all your requirements (charging for full phase upfront, not charging for the extra days), your best option is to create a subscription w/ end_behavior: release and the following phases:

I think you could also technical do this:

  • phase 1: price A, 1 iteration
  • phase 2: price B, 1 iteration, set phases.trial_end to the timestamp when you want the additional days to end.
    This way has fewer phases, but only works if the X additional days is less than the length of the billing cycle, and may result in the first payment at price B to be prorated (although I would have to test to confirm)
sterile hatch
versed helm
#

Also, an idea, it would be really cool if the Docs showed which Invoice object key's are used to populate Stripe Invoice PDF.

dim hearth
thick blaze
#

Is there a size limit on metadata values? (Thinking of storing a bit of JSON)

dim hearth
dim hearth
versed helm
dim hearth
versed helm
#

OK. Thanks. Yeah, I think sending a Receipt makes sense after invoice.paid since we work on Subscriptions and use auto-pay - not sure if sending the Invoice as well was a "best practice" sort of thing since Stripe does send both I think

blazing raft
#

[โ“ Question] I added some metadata to an issuing transaction (ipi_...), but these metadata are not showing up when I download the financial reports. What am I missing?

dim hearth
dim hearth
blazing raft
dim hearth
pale belfry
#

Hi guys, this is the current bug I get with this

#

Any thoughts? Ref to previous cases on discord?

sick talon
pale belfry
sick talon
stray skiff
#

It should be

stripe.tokens.create({
  bank_account: {}
})``` I believe
#

@pale belfry

sick talon
pale belfry
stray skiff
#

Could be the API was updated since the video

sick talon
#

more than likely, yeah

dim hearth
# blazing raft yes exactly

I tried a couple of things, but none of them panned out - I'd recommend writing into support and asking which (if any) reports will include issuing transactions metadata on them. I know the csv export will, but couldn't get it to work for reports ๐Ÿ˜ฆ

pale belfry
#

is there a proper way to paste code in here? Like /code or something?

sick talon
pale belfry
#
    const accountform = React.useRef("account-form")
    const formdata = new FormData(accountform)
    formdata.set('external_account', bankToken)
    fetch('/create-account', {
          method: 'POST',
          headers: {
            'Content-Type': 'application/json'
          },
          body: JSON.stringify(Object.fromEntries(formdata))
        }).then(function(r) {
          return r.json();
        }).then(function(response) {
          JSON.stringify(response, null, 2)
        });
      
  }
  const handleStripeConnectBtn = (event) => {
    event.preventDefault();
    console.log("hello");
     createBankAccount()
    .then(CreateAccount);
  };
#

Woops, thanks, well anyway I have a button which is supposed to lead to the Account Link, but I get this error, sorry I'm a noob guys

sick talon
#

Where are you defining that?

pale belfry
#

I have it defined right above the code I just pasted ๐Ÿค”

sick talon
pale belfry
#
     stripe.tokens.create ({
    bank_account: {
    country: 'US',
    currency: 'USD',
    accountnumber,
    routingnumber,
    account_holder_type: businesstype,
    account_holder_name: businessname,
    }
  }).then(function(response) {
    // debug("created bank account" + response.token.id)
    return response.token.id; // btok_xxxx
    })
  }
  
  const CreateAccount = (bankToken) => {
    const accountform = React.useRef("account-form")
    const formdata = new FormData(accountform)
    formdata.set('external_account', bankToken)
    fetch('/create-account', {
          method: 'POST',
          headers: {
            'Content-Type': 'application/json'
          },
          body: JSON.stringify(Object.fromEntries(formdata))
        }).then(function(r) {
          return r.json();
        }).then(function(response) {
          JSON.stringify(response, null, 2)
        });  
  }
  
  const handleStripeConnectBtn = (event) => {
    event.preventDefault();
    console.log("hello");
     createBankAccount()
    .then(CreateAccount);
  };
#

I'll work to figure it out, but atm, I hover over .then and see this as well

sick talon
#

Have you done much asynchronous programming (Promises, await/async) in JS before?

pale belfry
#

Haha, I'm working to get better, I definitely need to grasp those concepts better

sick talon
#

No worries. Let me change a couple things to make it flow better, one moment.

sick talon
# pale belfry Haha, I'm working to get better, I definitely need to grasp those concepts bette...

I haven't tested this yet but try removing createBankAccount()'s definition and use this modified version which calls the function directly

const CreateAccount = (bankToken) => {
  const accountform = React.useRef("account-form")
  const formdata = new FormData(accountform)
  formdata.set('external_account', bankToken)
  fetch('/create-account', {
        method: 'POST',
        headers: {
          'Content-Type': 'application/json'
        },
        body: JSON.stringify(Object.fromEntries(formdata))
      }).then(function(r) {
        return r.json();
      }).then(function(response) {
        JSON.stringify(response, null, 2)
      });  
}

const handleStripeConnectBtn = (event) => {
  event.preventDefault();
  console.log("hello");
  tripe.tokens.create ({
  bank_account: {
  country: 'US',
  currency: 'USD',
  accountnumber,
  routingnumber,
  account_holder_type: businesstype,
  account_holder_name: businessname,
  }
}).then(function(response) {
  // debug("created bank account" + response.token.id)
    CreateAccount(response.token.id); // btok_xxxx
  })
};```
#

you may need to change the references to things like businesstype

wary spade
#

I have a question about the testing of errors in your API.
I am using a credit card 4000000000009995 Which is supposed to get declined for insufficient funds.
I first create a customer and then a payment method with this credit card number and then I attached that payment method to the customer that was created and then I error stating the card has insufficient funds.
Why is that happening?
I would have assumed that the card would have been declined when the payment intent was created and I actually put the amount of the charge and was attempting to charge the card.

The line that is error with
paymentMethodService.Attach(paymentMethod.Id, new PaymentMethodAttachOptions()
{
Customer = customer.Id
});

#

Is this something that only happens when using testing card numbers?

sick talon
wary spade
#

I was expecting this to only happen when confirming a PaymentIntent. Like, how does it know there is an 'insufficient funds' error when I haven't told you the amount?

unreal ingot
#

In the Product API documentation, there is no mention of the field "type": {
"id": "prod_JsoAYdmTa8V3HD",
"object": "product",
"active": true,
"attributes": [],
"created": 1626724497,
"description": "TestDescription",
"images": [],
"livemode": false,
"metadata": {},
"name": "TestProduct",
"package_dimensions": null,
"shippable": true,
"statement_descriptor": null,
"type": "service",
"unit_label": null,
"updated": 1626724497,
"url": null
}.

sick talon
#

@dire shadow oh and there's a missing s on the stripe. line in my example

unreal ingot
sick talon
wary spade
#

Thank you

mighty hill
#

@unreal ingot Hello! The type on Products is for our deprecated Orders API and can safely be ignored.

unreal ingot
#

ok, ty!

plush lintel
#

hi i run prestashop, orders are not visible in my back office ๐Ÿ˜ฆ

mighty hill
pale belfry
sick talon
unreal ingot
#

So im putting in metadata such as this: "metadata": {
"attrs": [
{
"name": "Heel Height",
"value": "High (2-1/2 to 4 in.)"
},
{
"name": "Upper Material",
"value": "Synthetic"
},
{
"name": "Toe",
"value": "Open toe"
},
{
"name": "Brand",
"value": "Metaphor"
}
]
},

#

And it fails: stripe.error.InvalidRequestError: Request req_BnPI0BBsyq84mY: Invalid value type: {:"0"=>{:name=>"Heel Height", :value=>"High (2-1/2 to 4 in.)"}, :"1"=>{:name=>"Upper Material", :value=>"Synthetic"}, :"2"=>{:name=>"Toe", :value=>"Open toe"}, :"3"=>{:name=>"Brand", :value=>"Metaphor"}} must be a string

#

Does metadata only take in key: str?

mighty hill
#

@unreal ingot Yep, metadata in the Stripe API only allows for keys and values that are both strings.

unreal ingot
#

oh man! RIP

mighty hill
#

@unreal ingot You can serialize to JSON and store the JSON as a string, then deserialize after reading the value back, as long as you're careful not to go over the limits listed at the link above.

unreal ingot
#

ok, ty

#

In the metadata for Prices, I saw stripe plugins for Product Variants, and they use Family: Attribute: Value

#

can i do {"Family": "Attribute": "Value"}?

mighty hill
#

@unreal ingot No. Where did you see this?

unreal ingot
#

Some weird youtube video lol

#

Eh, nvm lol

#

How does a Connect Account add a product specifically under that vendor's connect account?

#

When I add a product, it goes under the main account

mighty hill
unreal ingot
#

Are there any benefits over: Server-side with the Stripe-Account header and the connected account ID, per request VS.
Client-side by passing the connected account ID as an argument to the client application

vocal wagon
#

hey guys, totally new here, I'm building a platform using Stripe Connect. Anyone knowledgeable about Standard Connect accounts and such?

mighty hill
#

@unreal ingot Client-side you only have your publishable key which can only perform certain operations.

#

@vocal wagon Hello and welcome! What are your questions?

unreal ingot
#

Ok, that's what I thought, thanks

vocal wagon
mighty hill
vocal wagon
#

yes i have this one: req_pYMajHL5HLntwH

#

But please let me share some background info if i may

mighty hill
#

@vocal wagon That looks like a successful request with no error; do you only see the error after loading Checkout?

vocal wagon
#

see it in the Dev tool

plush lintel
#

orders are not visible in my back office prestashop

mighty hill
#

@vocal wagon I'm not seeing any errors. More details/a screenshot of the error you're seeing would be helpful. ๐Ÿ™‚

vocal wagon
plush lintel
#

im lost guys, my customer has paid and ordered something from my prestashop but i didnt get thsi order

mighty hill
#

@plush lintel As I mentioned earlier we're unable to help you with PrestaShop here. Have you reached out to PrestaShop for help?

plush lintel
#

they are useles

mighty hill
#

@vocal wagon I'm not seeing an error there, and the id property is populated with the Checkout Session ID.

vocal wagon
#

The error appears in the Console

mighty hill
#

@vocal wagon Can you provide a screenshot of the error?

vocal wagon
#

1/ I created my session in 'setup' mode with Connected Acct and platform SK in the header. Is that correct?
2/ I "save" the cs_ID.
3/ Then I retrieve this ID in Retreive Checkout Session API, which generates the seti ID.
4/ Then I retrieve the setup intent with this seti ID.
5/ Then create paymentIntent (for auth then capture later) with the On-behalf_of (?)

mighty hill
#

@vocal wagon I don't understand steps 3-5. Can you tell me at a high level what you're trying to build?

vocal wagon
#

Can we create a side room where we can chat?

mighty hill
#

@vocal wagon We try to help people here so others can follow along and learn from the discussion.

vocal wagon
#

Ok, understood,
So we have people with Connected Account offering services. Users would pick their service and book.
When they book, they submit their cc for a charge later.
So we use session.create in 'setup' mode, then,

#

we want user to send funds direct to connected account and the platform take an application fee.

mighty hill
#

@vocal wagon What type of connected accounts are you using? Standard?

vocal wagon
#

Yes Standard Connect sorry

mighty hill
#

@vocal wagon Okay, so generally speaking it sounds like the flow you want would be something like this:

  1. Create a Customer on the connected account
  2. Create a Checkout Session in setup mode for that Customer
  3. Send the customer to Checkout
  4. Later...
  5. Create a Payment Intent on the connected account with an application fee
  6. Specify the Customer and Payment Method set up for future use by the Checkout Session
  7. Confirm the Payment Intent
#

@vocal wagon Does that line up with what you've been working on?

vocal wagon
#

I am at 3/ right now

#

Trying to send customer to checkout. I have my cs object created, then, a url is generated but I need to redirect

mighty hill
#

@vocal wagon What code are you using to redirect to the URL?

vocal wagon
mighty hill
#

@vocal wagon There's nothing special about it or unique to Stripe. It would work like any other HTTP redirect.

vocal wagon
#

The lines of code before are done. The redirect is confusing

mighty hill
#

@vocal wagon You're using PHP, correct?

vocal wagon
#

yes

mighty hill
#

@vocal wagon It would be something like this:

<?php
header('Location: https://example.com');
exit;
vocal wagon
#

I could not find a way to fetch that 'url' in the session object response somehow...

mighty hill
#

@vocal wagon Oh, you can get the URL using $session->url

solid ridge
#

When doing a payment intent with a connected account. Is there a way to attach the card back to the base platform? It just seems to save to the payment on the connected account

mighty hill
#

@vocal wagon So putting it together would be:

<?php
header('Location: ' . $session->url);
exit;
solid ridge
vocal wagon
mighty hill
#

@solid ridge You don't need to process a payment on the platform. You would create the Payment Method on the platform, clone it to the connected account, then charge there. Can you talk about what you want to build/what issues you're running into so I can assist further?

#

@vocal wagon No need to ask to ask, just ask. ๐Ÿ™‚

vocal wagon
#

Now, Im confused about the Connected Account, platform API sk to put in the headers and where to use the on_behalf_of

mighty hill
#

@vocal wagon Can you give me an example scenario with specific timelines? Do you want to authorize/place a hold a specific amount? How long do you want to wait to capture that amount?

vocal wagon
#

User books the service on day1. Cc authorization then.
Service is rendered on day 3. End of day, both user and service renderer click to confirm service rendered.
So it is a "manual" payment.
Capture happens off session, when user is offline.

stray skiff
#

If someone switches from a yearly subscription to a monthly one, is there a way to have it only update when the yearly one finishes rather than charging it straight away?

vocal wagon
mighty hill
abstract compass
#

We are doing fixed price subscription. We notice that Stripe allow the user to purchase multiple concurrent subscriptions of the same product (& price even). We want to avoid double charging the customer, so we would like to make sure the user doesn't get a second subscription if they already have one. Or if they have a cancelled subscription, that they just restart it. What's the best way to doing thot?

mighty hill
#

@abstract compass That's logic you would need to add to your integration on your end.

stray skiff
#

Fab, cheers

mighty hill
#

@abstract compass Basically you need to put checks in place to determine if a Customer already has an existing Subscription and do things accordingly from there.

#

@vocal wagon Does that make sense?

vocal wagon
#

Having a hard time here. user submits cc but is not charged right away. Auth is now, but capture is 3 or 4 days later

#

So if not save and reuse, what API then?

mighty hill
#

@vocal wagon Yep, that's how manual capture works. You specify the amount you want to charge in 3-4 days, a hold is placed on that amount after they go through Checkout, then you capture when 3-4 days later.

vocal wagon
#

So which API shall I call then?
1/ create customer API
2/ paymentIntent API? that is it?

mighty hill
#

@vocal wagon Well, if you're using Checkout, it's:

  1. Create a Customer
  2. Create a Checkout Session with the appropriate options
  3. Later, when you're ready, capture the funds placed on hold by the Checkout Session's Payment Intent

No Setup Intent is involved in that flow.

vocal wagon
#

When/how does the user submit his cc details to the "card element' safely?

mighty hill
#

@vocal wagon To clarify, the docs I linked earlier about placing a hold don't cover Checkout specifically, so you won't be able to use them directly.

#

@vocal wagon That's the basic flow though. I don't think we have a Checkout-specific guide for exactly what you want to do.

vocal wagon
mighty hill
#

@vocal wagon The Checkout Session mode would be payment

vocal wagon
#

In checkout session: 'payment' mode then paymentInent with 'manual' capture method, correct?

mighty hill
#

@vocal wagon Yep!

vocal wagon
#

in the header of this API, the Connected Account right?

mighty hill
#

@vocal wagon Yep, you want to create the Checkout Sessions on your Standard connected accounts, not your platform, so you need to specify the connected account's ID when making the API calls.

vocal wagon
#

got it

#

so now the session will generate a paymentIntentID which I need to save then retrieve later for the capture

mighty hill
#

@vocal wagon Correct.

vocal wagon
mighty hill
#

@vocal wagon That seems fine, yep.

vocal wagon
#

sorry typo :p

mighty hill
#

@vocal wagon I think you need the literal { and } characters in the URL to get the Checkout Session ID in there though, not the URL-encoded versions.

#

@vocal wagon I don't know if that was Discord messing around with the URL or not.

vocal wagon
#

discord messing around

#

Are you a Stripe tech team?

mighty hill
#

@vocal wagon I'm an engineer at Stripe, and I'm part of a team that helps developers use Stripe.

vocal wagon
#

So grateful to have you here man

mighty hill
#

@vocal wagon Happy to be of service! ๐Ÿ™‚

vocal wagon
#

Greetings from Europe. Will touch base again if I run into another "wall" Are all you guys based in America?

mighty hill
#

@vocal wagon I'm in America, but we have people on our team from all over the world that are in here most of the time during weekdays.

vocal wagon
#

Got it. Quick question, the application fee amount should be set in the session create or when i retrive the payment intent and capture?

mighty hill
#

@vocal wagon I believe you can do it in either place.

solid ridge
# mighty hill <@!359247414143746050> You don't need to process a payment on the platform. You...

Yeah sure! We have a connected account for different regions on our website. For the customers we just use the platform cus_ key. So we don't have to have different keys for different regions. Previously using the Charge API. So was easy to just use the Token to save the cards.

So we currently moving from the Charge API to Payment Intent. Got everything working except for being able to save the card to the platform customer as it just saves to the connected account payment.

pearl bridge
#

Hi There, I am looking for a inperson payment capture solution. I need some information on PCI certification on the devices that stripe is supporting. Any help on this will be grately appreicated. https://stripe.com/terminal

crimson needle
#

@solid ridge You would do this
1/ Create a PaymentMethod client-side with the platform's API key (pm_A)
2/ Attach the PaymentMethod pm_A to a customer in the platform
3/ Clone the PaymentMethod pm_A on the connected account and get pm_123
4/ Use the PaymentMethod pm_123 to confirm the PaymentIntent on the connected account

brittle stump
#

Hey there, I got a question about the invoice object. I'm looking for a way to identify whether an invoice is coming from a subscription original purchase or is a subscription renewal. Is there anything on the invoice object that would tell me? I'm currently using billing reason. When that's set to "subscription_cycle" I believe that's a renewal. Does anyone know how reliable that "subscription_cycle" string is? It's not going to change anytime soon is it?

crimson needle
solid ridge
pearl bridge
#

Do we need to do it as terminal (SAQ-C)?

brittle stump
#

Thanks @crimson needle

crimson needle
#

@solid ridge yeah it's a bit different to save on the platform but charge on a connected account but the steps I outlined should work for you

#

@pearl bridge yes, it's the Terminal product but we pre-fill it for you as mentioned in the doc I linked earlier

wraith hound
#

quick question re: billing_cycle_anchor in test mode. the shortest interval is 1 day. is there any way for us to trigger an invoice before the current anchor time? it would expedite testing a bit if we could manually trigger invoice processing since we cannot manipulate the billing_cycle_anchor time

solid ridge
crimson needle
#

@wraith hound no you can put billing_cycle_anchor a few minutes in the future for example

#

@solid ridge let me know if you're stuck

wraith hound
#

ok. we tried to do that using subscription.update but we got an error

pearl bridge
#

Thank you .... Does it matter who the acquirer is in this case when Stripe is perfilling the SAQ questionnaire

crimson needle
#

@wraith hound yeah that can't work on update. It's only settable on a new subscription

#

@pearl bridge I don't know much about PCI, or at least I can't really comment here. You might want to talk to our support team if you have more questions

pearl bridge
#

Sure .. thanks

wraith hound
#

@crimson needle thank you for the confirmation. suppose we can go through the entire subscription process. at least its a solution.

crimson needle
#

yeah the idea is to create a subscription with billing_cycle_anchor to a few minutes. It starts and pretends the period ends in 3 minutes for example and then it looks like a renewal

wraith hound
#

to be clear, billing_cycle_anchor accepts this as valid: (Date.now() / 1000) + 120

crimson needle
#

yep

pearl bridge
#

Any idea when stipe reader device will be Available

crimson needle
#

@pearl bridge what do you mean by that exactly? There are many readers and it also depends on your country

bronze sigil
#

how do people usually unit test their stripe code?

is using the testing keys on stripe's servers best practice? I've been looking around for an offline mock stripe server for local development.

crimson needle
bronze sigil
#

and that would mean putting down an auth key since stripe mock talks to stripe server right

crimson needle
#

no, stripe-mock does not talk to stripe servers, otherwise it wouldn't be a mock. It returns fake data

solid ridge
crimson needle
#

@solid ridge woot!

thick blaze
empty bloom
#

Hello, I changed my phone number recently. The password I am using for my account that I saved seems to not be working. I'm unable to change my password because I no longer have the phone number that's connected to my account. How can I get help?

crimson needle
#

@thick blaze whether you have usage or not you have to pass that parameter to be explicit

thick blaze
#

@crimson needle was under the impression we did not need to set clear_usage:true . If we set clear_usage:true on the invoice.paid webhook, it is 100% safe at that point, right? Is that clearing all usage ever on the subscription item?

cerulean pineBOT
#

:question: @empty bloom 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

crimson needle
#

@thick blaze no it's just removing the price for the current cycle mostly

empty bloom
kind python
#

Anybody know where I can find a tutorial for the server side code to accept a payment with stripe using Node.js?

crimson needle
#

@empty bloom there are many options one of them being

Missing a recovery code or locked out of your account?
That's what you need to choose. We can not help here with questions about your account unfortunately

empty bloom
kind python
crimson needle
#

@kind python you need both client-side and server-side code for it to work and yes all examples would work but they really are just demos/examples. We expect you to build your own code end to end

kind python
#

Ok

empty bloom
crimson needle
#

@empty bloom Then you should email support@stripe.com with as much info as possible and they'll help you get access back to your account

empty bloom
#

Thanks! The website should have better options to contact support when you can not get into your account. I was not able to find this email anywhere..

crimson needle
#

yep that's totally fair

hollow hawk
#

Hi all! got a question regarding schedules. How can I charge immediately when upgrading a subscription via schedules? The billing cycle stays the same. Essentially trying to mimic proration_behavior=always_invoice when updating a subscription

crimson needle
#

@hollow hawk that's not possible with schedules today

hollow hawk
#

@crimson needle So do i have to release a schedule and then update the subscription itself to achieve this? (Not sure if releasing a subscription will trigger any charges?)

crimson needle
crisp falcon
#

Hi, is there a way to lookup Invoices by Invoice Number via the API?

dim hearth
sacred crest
#

Hey #dev-help, I'm getting a CORS error when trying to redirect to Stripe Checkout. I'm using an express back end and I am enabling CORS for any (*) origin. I'm also getting a 404 on preflight OPTIONS request. Is this something anyone has dealt with before?

#

Here's a screenshot for more information:

dim hearth
sacred crest
slim wagon
#

Hello,
I recently changed our phone number in account settings (as this is required to save anything on that page) and customers started calling that number even if I unchecked the option to hide it on receipt and invoices. How can we remove that number from customers? Can you confirm that, if unchecked, this won't show on bank statements? We don't actually have any support numbers. Thanks

dim hearth
slim wagon
dim hearth
dim hearth
# slim wagon Bank statements

This isn't a question we typically answer here, but from what I understand displaying your phone number (as a merchant) is entirely up to the bank and is something out of our control. We (Stripe) send them information as part of the charge (like statement descriptor, phone number, etc.) and the bank decides how to display that back to the customer. If that's something you want removed, I'd suggest contacting the bank that's displaying these numbers and ask if it can be removed

drowsy glen
#

Anyone got a quick pointer to API call that I can use to download Stripe PDF's of invoices?

slim wagon
#

Thanks @dim hearth. Why setting that as mandatory then...?

dim hearth
# slim wagon Thanks <@!845165114360856596>. Why setting that as mandatory then...?

๐Ÿคท That's out of my wheelhouse - I just know collecting the phone number is mandatory to use Stripe, but don't have any context about why (that's for the lawyers/other policy folks). I do also want to mention, you can contact the bank but it's really just a suggestion and there's no guarantee they'll remove it completely from customer bank statements

drowsy glen
#

Taa

dim hearth
#

๐Ÿ‘‹ Hi folks - Tomorrow is a holiday for the team in Singapore, so messages are unlikely to be seen from now until 1AM PT when Europe comes online. If you have urgent questions then you should reach out to Stripe support directly at https://support.stripe.com/contact.

pearl bridge
#

And we are in US

dry hatch
abstract compass
#

When checking Subscription status, what is the best way to figure out if the user still has auto-renewal turned on, or if the user had already cancelled renewal (but the subscription may still be active because the current/last period isn't over yet).

vocal wagon
#

How do you handle situtations where customers do not enter their name and zipcode and fill it with fluff in a purchase? e.g. name: sfasfasfsf, zipcode: 12345

toxic lily
vocal wagon
#

Does stripe checkout already apply radar basic rules?

#

the redirect method

toxic lily
#

I think some of them are available but disabled by default, like the Zip rule

#

You should check that one out

vocal wagon
#

ok thank you

vocal wagon
#

If I am selling a personal product (online document), is 3D secure reasonable to ask or would it be overkill?

dry hatch
# abstract compass When checking Subscription status, what is the best way to figure out if the use...

The corresponding parameter to look at is cancel_at_period_end: https://stripe.com/docs/api/subscriptions/object#subscription_object-cancel_at_period_end But you can detect those changes in webhook events as well. Detail here: https://stripe.com/docs/billing/subscriptions/cancel#events

dry hatch
vocal wagon
#

@dry hatchjust enable it in rules for checkout with redirect

#

it's one of the pre-defined rules

#

it's disabled by default

dry hatch
#

Which setting/rule are you referring to? (Sorry didn't have the context)

vocal wagon
#

Request 3D Secure if 3D Secure is recommended for card

#

the first set of rules, 2nd option

#

@dry hatch

dry hatch
#

Ah I see. Radar rules are completely up to you, I think

sacred jetty
#

I am trying to connect a react stripe front end form to the backend . Any tutorials or guide. I literally copy and pasted off the docs and it wasnโ€™t connecting

exotic rain
dry hatch
exotic rain
dry hatch
exotic rain
dry hatch
#

Sorry, I meant I will take a look after coming back from lunch later

rapid parcel
#

hi, i have a question about the PaymentsIntents api. i had thought that when the user completes the payment, the paymentintent api would fire a webhook to let my server know the payment was completed but the documentation doesn't seem to imply that, does that mean i have to poll the paymentsintent to see when it's completed?

languid tulip
rapid parcel
languid tulip
rapid parcel
#

thank you!

north ether
#

Hi Team, Is there any way to fetch charges those hase source connected Account Id

#

If we are using "Stripe-Account : connectedAccountId" it gives charges those have passed connected Account Id as destination

languid tulip
#

@north ether sorry I'm not really understanding what you mean here. Can you explain another way? What exactly are you trying to retrieve?

#

Direct charges on your Connected Accounts?

#

Or the Connected Account ID for destination charges?

#

Or something else?

#

@exotic rain did you hit an error? What are you trying to accomplish?

#

@exotic rain a Subscription Schedule is indeed the way to update on a future date

north ether
languid tulip
#

Ah I see, you are using Account Debits

north ether
languid tulip
#

@north ether one sec, I'm looking. Can't remember.

north ether
north ether
languid tulip
#

@north ether I think you want to list charges and expand the source_transaction

#

But testing cause can't remember

exotic rain
# languid tulip <@!702201921339129867> did you hit an error? What are you trying to accomplish?

I have a requirement where in YEARLY subscription, if a user is in the last 3 months of the period then if user switch the subscription it will take action or active after the next subscription period
Example, suppose i have a current subscription period from 1 jan, 2021 to 31 dec, 2021 and now if i switch the subscription after september then it wil active in the 1 jan, 2023 not from the next subscription cycle i.e. 1 jan 2022 to 31 dec, 2022.
So for this i am updating the existing subscription with new price on future date.
and logic i applied is if the user switch in the last 3 months then i will update the price on the starting date of the next subscription cycle i.e. 1 jan 2022 after the invoice paid for 2022 period so as i updated the price on this 2022 period then when the new invoice comes for the 2023 period then the invoice is paid by new updated price.
Please correct me.

languid tulip
#

@north ether sorry had to step away for a moment. Meant source_transfer not source_transaction (typo)

rapid parcel
#

when setting up the stripe CLI to listen to events, should i use the CLI key when creating the stripe object on my server or the test data secret key?

languid tulip
rapid parcel
#

gotcha. if i want to give another developer access to the stripe cli to be able to listen to my test events, do i need to login to my stripe account for them or is there another way i can grant them access?

languid tulip
north ether
#

@languid tulip what is the use of this webhook type "Endpoints receiving events from Connect applications"?

languid tulip
north ether
#

Suppose we are using webhook and try to create a dispute from our salesforce org in that case shall we receive the event from that org?

north ether
exotic rain
languid tulip
languid tulip
north ether
languid tulip
north ether
#

yes

languid tulip
# north ether yes

Okay then you do want to use the Connect Endpoint to listen for the events that occur with those charges. Feel free to provide an example charge ID and I can verify.

languid tulip
exotic rain
languid tulip
# exotic rain Yes i have executed this code

I can look at a Subscription ID if you like to verify that it is doing what you desire? Would that be helpful? I'm sorry, I still don't really understand if there is an issue here.

exotic rain
left valley
#

How can I hide the country or region section in paymentSheet(React-native) ?

vocal wagon
#

Hi. I have a problem I created a subscription with a daily billing period. Subsequent invoices are created by Stripe, but remain in Draft status. A message appears in invoice details. The hour has been changing for 48 hours ๐Ÿ™‚

Has anyone had a similar problem?

languid tulip
languid tulip
languid tulip
exotic rain
vocal wagon