#julian_fetchpay
1 messages · Page 1 of 1 (latest)
Hi
Not sure I understand what is the exact ask here, but you can collect payment method first, compute fees, then create the PaymetIntent with the Destination charge:
https://stripe.com/docs/payments/finalize-payments-on-the-server?platform=web&type=payment#insert-custom-logic
@wide crow let's keep talking in this thread
To provide some additional context, we currently use separate charge & transfers. In other words, 100% of the payment goes to our merchant account and then we transfer ~98% to the connect account, keeping the remaining amount as our commission. But this presents problems when we deal with international customers. In this scenario we would pay an FX fee to transfer from the foreign currency to £ to get it into our master merchant account, and then another FX fee to transfer from £ back into the foreign currency to get it into the connect account. This means we’d essentially be paying 2 x 2% FX fees on every transaction! What we’re trying to do is only pay the 2% FX fee on our commission and have the remainder go directly to the connect account so it doesn’t need to be converted between currencies.
Can you please remove your follow up message from the main channel please?
Unfortunately this doesn’t work because we need to know the card type that was used to determine the fee. That happens after the payment intent.
Because we charge different fees for, let’s say, visa versus Amex, I can’t see how destination charges would work.
it does work, in the last week we launched a new "deferred Intent creation" flow where you can see the PaymentMethod before creating the PaymentIntent. https://stripe.com/docs/payments/accept-a-payment-deferred
Ah ok, let me look into that. Would you recommend that over the “application_fee_amount” method?
in any case, you can also change the fee on capture yes, that works fine. I don't see why you'd need on_behalf_of for that though, maybe for the FX part to change the settlement but that's a complex subject overall(https://stripe.com/docs/connect/currencies#example-scenarios)
Well if we don’t use on_behalf_of, how do we define which connect account the payment is being created for when setting up the intent?
I think I would, that was one of the use cases that used to be really hard/impossible and is why we designed a new flow that returns the 'old' way of using Stripe where you can see a PaymentMethod(and thus details like the card.brand or such) before the payment
if you're using SC&T, well you don't define it(if you did define it, it would not be a SC&T)
No this would be where we avoid SC&T, and use the application fee in the capture to take our commission.
to be clear actually, you can't use application_fee_amount with SC&T. So you must actually be using Destination(where you pass transfer_data)
Yes we would use transfer_data and on_behalf_of when setting up the intent, and then application_fee_amount when making the capture.
makes sense. Then your FX treatment is https://stripe.com/docs/connect/currencies#destination-charges-on-behalf-of
for the varying the fee part, you have the option of specifying the fee at capture time, or you could use the new deferred intent creation flow to mount a PaymentElement, get the PaymentMethod details, and then create the PaymentIntent with the right amount upfront, either would work here I believe.
Ok got it. How about this scenario: Our merchant account is set up in GBP. We onboard a customer in UAE that has a connect account in AED. We take a payment for them in AED. The funds sent to the connected account are not converted, i.e. it is AED to AED. If application_fee_amount is used, the application fee is converted from AED to GBP. So we pay a 2% FX fee but only on the small amount of commission that we take. Does that sound right?
per https://stripe.com/docs/connect/currencies#destination-charges-on-behalf-of
The application fee remains in the connected account’s currency
...
For example, the connected account accepts a charge in USD but settles in EUR. The charge is converted to EUR and sent to the connected account in EUR. The application fee is collected in EUR.
so
If application_fee_amount is used, the application fee is converted from AED to GBP.
is not what happens.
What happens is your platform accumulates an AED balance from the application fee it receives
at some point to realise those funds you either need to add an AED-denominated bank account to your platform(if that's possible for your account, it depends on its country https://stripe.com/docs/payouts#supported-accounts-and-settlement-currencies ) or convert them to another settlement currency via a manual payout(https://stripe.com/docs/connect/currencies#application-fees-for-destination-charges-and-converting-balances)
at a high level and if you're using the latter option then yes, the AED is converted to GBP when you make that manual payout and that's the only FX involved
gotta run for lunch but hopefully that's all clear