Stripe - payments in different currencies in different countries - stripe-payments

I am integrating my service with Stripe for subscription payment processing.
I want the service to be available in different countries. Therefore I would like to offer my subscription in different currencies in different countries.
For example, say my subscription costs 10 USD / month for American users.
What is the best practice with Stripe when it comes to offering the same product in different currencies depending on the user's location? (for example 12 EUR for Germans, 15 GBP for UK etc.).
One thing that comes to my mind is to have a single Stripe product, with multiple prices defined in different currencies, use some 3rd party IP location service to find out where the request comes from and display different pricing options depending on the user location. So I would have the price_ids mapped to countries on the server side, determine the location on the client side and pass it on to the server when fetching available products.
Is this the best practice or is it normally done differently?

Has this been solved?
I'm using Stripe Checkout (checkout system made by Stripe), which picks up prices for my products and CONVERTS them to user's local currency.
The problem, though, is that €99 gets converted to ~$118.02, but I'd like to specify the price for USD myself (would be $119). Can we do that?

Pretty sure you're right, it should also just convert the currencies through Stripe itself

Once you have created a Product, you can specify the currency when creating Prices. The amount will be converted to your default currency if you don't have a bank account in the specified currency.

Related

Stripe different currency for different plan?

I want to develop 2 subscription plans for a client. Plan A they will pay CAD $5/month. Plan B they will pay USD $10 / month. Because this is a special client so we have to design a new plan they will pay in CAD. How do I design in Stripe? since when I use API stripe.subscriptions.create, it shows this issue when they want to switch between plans
Error: The specified price uses `usd` which doesn't match the expected currency of `cad`. Use `cad` instead.
Customers are single currency, meaning that you can only have subscriptions (and invoices, balances etc) in one currency. Once the default currency for the customer is set, it cannot be changed. If you need Subscriptions in two currencies, you will need to manage two Stripe Customers for your real-world customer.
This does not restrict your ability to create one-time payments for that Customer (such as with the Payment Intents API) in any supported currency.

Is it possible to implement an international shopping cart using Stripe Connect?

Reading Stripe Connect's docs it doesn't seem like you can do this
Stripe supports separate charges and transfers in the following
regions: Australia, Europe, Japan, New Zealand, and the U.S. Separate
charges and transfers are supported only if both your platform and the
connected account are in the same region (for example, both in
Australia).
https://stripe.com/docs/connect/charges-transfers
From what I understanding, if someone has multiple things in their shopping cart they can't buy them all at once unless all the sellers are located in the same country.
Is there any way to work around this for a shopping cart feature?
It seems you can make multiple charges using destination charges and send payouts to the appropriate sellers.
I have yet to implement this solution. Once done, I'll update this answer with my findings.

Stripe Connect Fixed/Flat Fee based on value for Connected Accounts

I am creating a Stripe Connect marketplace which charges a fixed fee based on value of sales, e.g. up to £2500 of revenue (for a connected account in a calendar month) will incur a flat fee of £200 per month to the platform.
I have read the Stripe documentation but still quite unclear how I can achieve this using a Standard Connect account. I understand the concept behind adding a flat fee per transaction but my use case is based around the amount of revenue over a time period.
Any help is always appreciated.
it sounds like you want to keep track of the payments processed by your connected accounts in order to figure out what to charge them.
The best way to do this is probably to set up a Connect webhook and listen for events like charge.succeeded and keep a running total each month for each account.
You have a number of options for charging your accounts, but using Billing to create a subscription that you update as their revenue grows is probably the best experience. You could also use metered billing with pricing tiers based on the payments you track.
If you need to calculate historic revenue, you'd need to manually retrieve the payments and calculate the total for the month(s) you're interested in.
NOTE: For both the webhook events and the retrieval approaches you'd need to be aware of several different objects other than Charges that may affect revenue up or down, like PaymentIntents, Refunds, Disputes etc depending on the details of the connect account's integration.
Hope that helps!

Stripe Multi-Currency Transfers

I have implemented a marketplace with a cart, where users can add multiple services and can process payments in their local currency.
Currently each service is linked with a seller on stripe so when a user pays for the service a part of payment goes to the linked seller.
We have taken the following approach as we can have multiple sellers in one payment
Stripe separate charges and transfer
I am facing issue if the user's currency (USD) is not matching with the Platform Currency (EUR) the payment is processed but when we try to process transfer to the seller after the full payment its failing as Currency are not matching.
User makes a charge in USD (local currency) which is successful and stripe then internally process it to EUR as our base currency is EUR. After this we initiate a transfer in USD to the appropriate seller, which fails due to currency issue.
Possible solutions i have tried:
1) I have converted amount from the USD to EUR before making a transfer which succeeds but the exchange rate is not matching with the stripe exchange rate. As stripe also does an internal currency conversion after a full payment, so total after all payment and transfer doesn't match.
Stripe's API error message when you attempt this is pretty straightforward:
The currency of source_transaction's balance transaction must be the same as the transfer currency.
I'd recommend contacting Stripe's Support Team if you have additional questions about currencies and transfers, as they have full information about what may be possible.
Thanks all i have already contacted stripe support team. One possible solution which i came across is to maintain multiple currency balance which i am now looking to implement.

Programatic shipping and taxes with Stripe Subscription

I would like to use Stripe for a physical subscription site.
Small number of SKUs
Some customers pick up instead of ship
Customers whose addresses are in one state are charged state and local sales tax
I'd like to use Stripe Subscriptions to do this but shipping costs and state/local taxes will be slightly different for every single customer and but unlike in the Stripe Orders API, it does not look like Subscriptions allows for me to dynamically calculate shipping and taxes. Is my reading of this correct, or is there a way for me to programatically edit recurring shipping and taxes on a per-subscription basis?
Thank you!
Answer via #mattwc in #stripe freenode: An invoice is created by the subscription each period 1 hour before it is charged. You can subscribe to this event via webhook and edit the invoice to add shipping and tax information.

Resources