#tikitikitero88

1 messages ยท Page 1 of 1 (latest)

craggy sandBOT
#

Hello! We'll be with you shortly. Below are links to other discussions we've had with you in the past week in case you want to review that information. If your question is related to one of these previous discussions, please provide a comprehensive summary of the current state and what you need help with now. We help many users simultaneously, so a summary allows us to resolve your issue as soon as possible.

quaint pulsar
#

It is a new question

rustic gulch
#

Hi
First, what charge type will you be using ? destination, direct or separate charge and transfers ?

quaint pulsar
#

Mm what do you exactly mean by charge type? The idea is to add the connected account of a Seller in the destination field. The question is, how should we specify the Platform account?

rustic gulch
#

First you need to choose what Charge type will you be using in your Connect integration

craggy sandBOT
brave osprey
#

Hi ๐Ÿ‘‹ when you're making the Transfer, it will always be made from the account making the request. That is typically the account associated with the secret API key you're using, the one exception that comes to mind is you're using the stripeAccount header to adjust the account that is making the request.

quaint pulsar
#

Ok, that sounds good. In general I think that we are always using that Stripe Account parameter for all our current payments (Payment intent creation, update, capture, etc.)

#

For example:

                .builder()
                .setStripeAccount(merchantAccount)
                .setIdempotencyKey(UUID.randomUUID().toString())
                .build();

        final PaymentIntentCreateParams createParams = PaymentIntentCreateParams.builder()
                .setAmount(amountInCents)
                .setApplicationFeeAmount(taxInCents)
                .putMetadata("discount", discount)
                .putMetadata("tax", totalTax)
                .putMetadata("commission", "")
                .putMetadata("order_id", "")
                .setCurrency(currency.getCurrencyCode())
                .setCustomer(stripeCustomerId)
                .setPaymentMethod(paymentMethodId)
                .setConfirm(true)
                .setConfirmationMethod(PaymentIntentCreateParams.ConfirmationMethod.MANUAL)
                .setCaptureMethod(PaymentIntentCreateParams.CaptureMethod.MANUAL)
                .build();

        return PaymentIntent.create(createParams, options);```
brave osprey
#

Then why are you creating Transfers?

quaint pulsar
#

I am not being able to find where we specify the secret API Key.

brave osprey
#

If you're processing payments directly on your Connected Accounts (as you're doing by using the stripeAccount header), I'm not sure what you're using Transfers for.

quaint pulsar
#

We need to integrate transfer in the next Sprint for some specific scenarios. So, based on your comment I guess that we should build our request like:

                .builder()
                .setStripeAccount(platformAccount)
                .setIdempotencyKey(UUID.randomUUID().toString())
                .build();
        
        final TransferCreateParams transferCreateParams - TransferCreateParams.builder()
                .setAmount(amountInCents)
                .setCurrency(currency.getCurrencyCode())
                .setDestination(merchantAccount)
                .setDescription("Coupon")
brave osprey
#

Not if you want to Transfer from your Platform

#

You omit the stripeAccount header then

quaint pulsar
#

Setting the platformAccount id in the stripeAccount RequestOption header and the merchantAccount id in the destination param.

brave osprey
#

Nope, you should never need to put your Platform Account's ID in the stripeAccount header, you only use that to make requests for your Connected Account.

quaint pulsar
#

Ahh, so, how should I do the call then?
I am not being able to find where we specify the secret API Key.

brave osprey
#

You set it when you initialize the library

#

It's likely already set

quaint pulsar
#

Makes sense. I am new in the project so I am just trying to understand how this is setup.

#

Please give me a few minutes to check this and confirm to you

#

Any clue to find it?

#

Ahh I have just found it

#

I found 2

#

Client key and Server key
Just to validate:

1 - where I should see those values in the Stripe Dashboard?
2 - Why there are 2 different keys?
3 - I have found this definition Stripe.apiKey = Config.getParameter("stripe.server.key"); . Is that the one doing the magic?

brave osprey
#

I'd take a look through here: https://stripe.com/docs/keys
I think it will answer those questions and help build your core understanding of how to authenticate against our APIs.

#

Seems like it, but it's your code that I can't see so I'm not entirely sure.

quaint pulsar
#

Good I will take a look at the documentation. It seems that with that sentece we set a variable in a Class of your library. And Probably that variable is used when building the request. Am I right?

brave osprey
#

I think so, but I can't see what you're looking at so I can't say that definitively. Does your code align with how we show you should initialize the library you're using:
https://stripe.com/docs/api/authentication

quaint pulsar
#

I guess that setting the variable we are setting we don't need that.

#

And it is being done automatically by you

#

that is your code

#

So this is confirmed

#

Thanks!

#

How can I access to the Developer Dashboard to see the api keys?

#

Ah sorry, I have just seen the tab

#

Fixed!

#

Last question

#

Based on what I was able to figure out with Business, the current bank account attached to Stripe platform account is a lockbox account (money only flow into the account, not out).

So, in case we need to do the transfer from a different Stripe platform account to the seller:
is this the correct way to do that?

                .builder()
                .setApiKey(secondPlatformAccountServerApiKey)
                .setStripeAccount(merchantAccount)
                .setIdempotencyKey(UUID.randomUUID().toString())
                .build();
        
        final TransferCreateParams transferCreateParams - TransferCreateParams.builder()
                .setAmount(amountInCents)
                .setCurrency(currency.getCurrencyCode())
                .setDestination(merchantAccount)
                .setDescription("Coupon")```

Setting:

- `secondPlatformAccountServerApiKey` key in the `apiKey`  RequestOption (not the key of the original platform account server api key)
-  `merchantAccount` id in the `stripeAccount`  RequestOption  
- `merchantAccount` id in the `destination` param
brave osprey
#

Are you Connected Accounts connected to both of your Platforms?

quaint pulsar
#

will that will be requirement to make that option work?

brave osprey
#

Yes, you can't arbitrarily transfer funds between Stripe Accounts, they have to be associated with each other.

craggy sandBOT
quaint pulsar
#

Good! So, we should duplicate all the connections between Original Platform Account and Second Platform Account

brave osprey
#

Which you might not be able to do depending on how you have things set up.

#

Can you share the ID of one of your Connected Accounts?

quaint pulsar
#

I don't think I am allowed to do that for security/privacy purposes

brave osprey
quaint pulsar
#

How can I see the type of connected account?

brave osprey
#

It's done when you create the Connected Account.

#

You can't change it once the account has been created

quaint pulsar
#

I can see in the dashboard a Type field: Standard

#

at least for one of them

#

in our test environment

#

I found another one with Express Type

#

Yeah, we have both types

#

I mean the idea we are evaluating is to Connect that second platform account with the same sellers accounts.

#

You are saying that is not possible and that it will probably ends creating new seller accounts in the "connection" process?

brave osprey
#

I'm saying it depends, and I can't be more clear without looking at a specific account.

quaint pulsar
#

I would like to understand what is the actual dependency there

#

I need the details to mention to the business if this is an option for our problem or not

#

Probably another option is to connect another bank account to the Platform Stripe account

brave osprey
#

It depends on whether the Connected Account is controlled by a platform, no way for you to check or know that.

#

Platform Accounts can only have one bank account per currency.

quaint pulsar
#

How can I check if a Connected Account is controlled by a platform?
What happen if a Connected Account is controlled by a platform?
What happen if a Connected Account is NOT controlled by a platform?

brave osprey
#

You can't
A new Connected Account is silently created
The Connected Account is connected to the new platform

quaint pulsar
#

Ah. So we cannot connect multiple platform accounts with one Connected Account

brave osprey
#

You might be able to, but without being able to look at exactly how you're doing things to confirm that, it's safer to assume you can't.