#lost.prototype
1 messages ยท Page 1 of 1 (latest)
Hi ๐ it depends on the type of Connect flow that you're using, whether you're using Direct Charges or Destination Charges. The steps for each are discussed further here:
https://stripe.com/docs/terminal/features/connect
I know that these are terms
But I'm unclear as to what combination of each results in.
It's not clear when terminal and connect are used together
It seems like I can inadvertently create a destination charge without using on_behalf_of
Simply by setting stripe_account in my request options to the connected account
I'm trying to put together a matrix of all this as it's making me crosseyed, haha.
Here's an interesting one.
Setting the stripe_account header does not create a Destination Charge, it creates a Direct Charge.
First thing to do with Connect (regardless of whether you're using Terminal) is decide on the charge flow and type of Connected Accounts that best fit your use case.
Start with the charge type:
https://stripe.com/docs/connect/charges
Then from that you'll decide which type of Connected Account to use:
https://stripe.com/docs/connect/accounts
So, I want my customers to be able to bill in their currency.
I don't want to be a restriction on them.
(they interact directly with their customers)
The settlement currency can be based on the connected account with either flow, but that message is the important part. You wanting the customers to feel like they're interacting directly with the Connected Account means Direct Charges are likely going to be the best fit, which we recommend using Standard Connected Accounts with.
The message you sent here where you said:
(they interact directly with their customers)
Yeah, I know I want standard accounts.
That makes sense to me.
What doesn't make sense is understanding if/when I have a customer charging their customers in EUR or USD
Will I accidentaly set things up incorrectly, based on how I create all the charges.
And then how does stripe terminal impact any of this.
(if at all)
My bank will always be CAD. But I want to support people doing stripe terminal charges around the world.
Your Platform creates the Payment Intents that your Connected Accounts use, so you will have control over setting the currency being used. Do you have more details about what part of the process you're uncertain about that I can help clarify?
So I need to let them charge in:
- Their bank currency
- In the currency they are geographically permitted to
pi_3NkC3DLTob6XZrOy0o3eKw39
Looking at this
(the screenshot above)
If the currency had been let's say in GBP. Would everything have worked?
Hello! I'm taking over and catching up...
Yep, that Payment Intent was created on the connected account, which means it's a direct charge, which is appropriate in this case sense you're using Standard connected accounts. If you had set the currency on this to GBP I believe it would have worked just fine. Did you try that and it didn't work?
Also not sure what you mean by, "the currency they are geographically permitted to" as this connected account is in Canada?
Yeah, it's hard for me to simulate payments for accounts outside of Canada because the Stripe Terminal SDK doesn't allow me to simulate taps from different geographies.
Some of it is still hard coded ๐ฆ
What are you trying to test exactly?
I want to test tap to pay on my app, where the tap is coming from a connected account with a different currency to my platform account.
And the tap is ideally simulated to be done in a non-CAD geography
Okay, and what specifically is preventing you from doing that?
I believe the tap to pay simulator does a GPS lookup
and because I'm physically always in Canada during development
I don't think your physical location will prevent this from working in test mode.
Have you tried?
Did you get an error?
I did early on.
I'll have to set the scenario up again.
There's so many variables.
๐
Also: Stripe Location
Also: Bank account currency
To clarify, you're talking about tapping a card on a Stripe Terminal reader, right? Not Tap to Pay as in the feature where you can tap directly on an iPhone or Android device?
Ah, okay, so why are you using Canadian Stripe accounts? Tap to Pay on Android is not available in Canada... unless you're in the beta?
That's outdated information
it is available now
(I've confirmed this two different ways with Stripe now)
Anyway, I have way too much confusion around this, it's just so many different variables that aren't clearly listed in a matrix.
But my original question for now was just around this:
- I create a token for tap to pay on Android
- I have options that I can set on the intent
- I have options I can set on the request
I have the account ID of my connected account
I have my credentials for my platform account
What should I be using?
When I generate my token for stripe terminal server side, should I use stripe_account of my platform, or the connected account?
(does it matter?)
Then...
Can you be more specific? Which options are you referring to? Which credentials?
var tokenCreateOptions = new ConnectionTokenCreateOptions
{
Location = request.LocationId,
};
var requestOptions = new RequestOptions
{
StripeAccount = stripePaymentProviderConfiguration.AccountId,
};
(I'm in C#)
Ah, okay, so the Terminal Connection Token.
Yes! ๐
Which account should I be issuing those tokens for? The connected one "in question", or just my overall platform one (my app).
And then I kind of have a similar question then for when I'm creating the payment intent.
I think we've ascertained that I don't need to use on_behalf_of
You would create the Connection Token using your platform's secret key and the connected account's ID as documented here: https://stripe.com/docs/terminal/features/connect#direct-connection-tokens
But still:
var requestOptions = new RequestOptions
{
StripeAccount = organizationConfiguration.AccountId,
ApiKey = domainConfiguration.ClientSecret,
};
You would not use on_behalf_of because you're using direct charges.
I'm not sure what to make of that last code snippet, there's not enough context. Do you have a question about that code?
I'm still fuzzy on direct vs destination charges
The documentation doesn't help
It just leaves me confused
I know that might just be me
But it's really hard to chew through
For direct charges the payment objects (Payment Intents, Charges, etc.) all exist on the connected accounts. An application fee is optionally sent from the connected account to your platform account.
For destination charges the payment objects exist on your platform account, and optionally a portion of the funds are transferred to a connected account.
With direct charges the connected account can see the transactions on their account in their Dashboard and manage things like refunds, disputes, etc.
Also with direct charges, because the payment objects all live on the connected accounts, those connected accounts are the merchant of record.
Let me know if that helps or not.
Sec
That's helpful
So it's significant in terms of where the record lives
I think that's what was missing for me
So in cases of on behalf of, stripe just has some logic to make it seem like it was a direct charge
Even though it would be my platform account that owns the records
Yeah, it's significant for that reason, but also others which are covered on this page: https://stripe.com/docs/connect/charges#types
No, on_behalf_of is used to set the merchant of record. It's not about making it seem like a direct charge.
So I can set merchant of record with the object still existing on my account
Yes, that's what on_behalf_of is for.
But you're using Standard accounts, so you should not be using destination charges.
Yeah, not interested in it
You should use direct charges as you're already doing.
Just curious
Seems right
And then the terminal tokens I'm generating should always be for the connected account
Yes.
The Terminal Reader objects, Terminal Locations, Connection Tokens, Payment Intents, etc. all need to be created on the connected accounts.
Ah! Perfect
I get that, that helps ok ok
Because of regulatory stuff
If I charge a fee, stripe exchanges that and puts it into my account as cad, right?
(say the charge is in GBP or USD)
It will eventually settle in whatever currency you have a bank account set up for, yeah, and you'll be charged a currency conversion fee if needed.
Great
Okay, I think I'm good for know
Until it comes loose again
Lol
Thank you for your help
It's going well ๐