#Nathan Ward
1 messages · Page 1 of 1 (latest)
That's tricky because the applied balance here is seen as a credit
That makes the invoice $0 and application fees just don't apply to $0 invoices
You can't really take a fee on a $0 transaction is what I'm trying to say I guess
Yeah we were thinking it was an edge case that might not be applicable to many use cases of connect as our application fees change depending on what product is being purchased. The current issue we have is if we issue a refund for a lower application fee product and they then purchase a higher application fee product we will not be receiving the difference and thus be out of pocket the difference. We aren't too sure on a solution to the issue or if it will become a large problem just wanted to know if there was a known way to go around this.
We also ran into another issue around if the user has a balance that will cover some of the invoice and the remaining due amount is less than the application fee we will end up taking everything so we end up with some cases taking nothing and others taking partial fees: in_1MmeGSPdT5x46F2RsKFpbod2
The current issue we have is if we issue a refund for a lower application fee product and they then purchase a higher application fee product we will not be receiving the difference and thus be out of pocket the difference
Not sure I understand this part, can you explain more?
We also ran into another issue around if the user has a balance that will cover some of the invoice and the remaining due amount is less than the application fee we will end up taking everything
Yeah that's just a limitation of application fees. It's called out here: https://stripe.com/docs/connect/direct-charges#collecting-fees
The value of application_fee_amount must be positive and less than the amount of the charge. The application fee collected is capped at the amount of the charge.
So each product has an amount that is our application fee e.g. for a $20 product we may take a cut of $5. If that payment is then refunded to the customer, the stripe connect account will retain $15 and the customer will have an account balance of $20.
If the customer then purchases another $20 product but this time there is a $10 application fee, the stripe connect account will keep $15 and we will be left with $5 instead of the intended $10 for the new purchase.
Is there a better way to go around this sort of situation?
You could refund the application fee too
If we did that then the stripe connect account would have $20, the customer would have a balance of $20 and we would have nothing until the user purchased something else but if they never used the credit we would essentially be giving the stripe connect account everything?
Can you share the code you're using for issuing refunds? If you use the above linked method, the funds should be refunded to the customer's payment method
There really shouldn't be any balance credits happening here
The refund comes from us removing a subscription item or reducing the quantity on a pro rata basis instead of directly on a charge
Ah ok so it's a prorated subscription update not a refund at all
This is making more sense now
So you do want to charge prorated amounts then I'm assuming when the updates happen?
Yes we generally have pro rata enabled when doing subscription item updates
Sorry for not being clear about it relating to subscriptions in my previous messages
we set the behaviour to always_invoice
so the application_fee_amount is generated from the subscription application_fee_percentage
Ok thanks for the details
Yeah this is a tricky scenario. This limitation of application fees is unavoidable: The value of application_fee_amount must be positive and less than the amount of the charge. The application fee collected is capped at the amount of the charge. And if it's a requirement for you to always invoice these prorated invoices, then you'll run into it.
I think the ideal situation would be to be able to update the subscriptions application_fee_percentage and that would then either refund or charge the connected account
or even being able to set an application fee amount to a product
but those are just ideal situations I dont think there is a work around at the moment really
Hi 👋
@heavy spruce has to step away but I think your read of the situation is correct.
Is there any way to submit a feature request for this sort of thing or is there anything on the roadmap for connect related to this?
Is the feature request for the line_item application fee?
Yes that would be ideal
but a way to automatically reconciliate/pro rata a change in the application fee on a subscription
So you want to pro-rate the application fee when updating the subscription?
Hmm sorry starting to confuse myself with what we are looking for. After some discussion with the team we basically need to take an application fee when any items are added to a subscription regardless of how the invoice is paid for.
We are currently manually adding an application fee to the first invoice that is generated for any additional subscription items that are added within the month as recommended when we last talked to Stripe support.
Once this is done we also have to then update the overall subscription application fee percentage so that subsequent months are correct.
But we are now running into an issue of if an account has a balance that was generated through pro rata of removing subscription items we will then not charge an application fee to the stripe connect account when their customer makes an additional purchase with the account balance. It feels like we will have to somehow manually track invoices paid by account balances and add manual charges to the connect account to resolve this?
I hope that makes sense, let me know if I can explain anything further.
👋 hopping in here since snufkin has to head out - give me a minute to catch up
the previous messages may confuse things, hope that I have compiled everything within my last message regarding the issue
Let me make sure I understand - you want to collect an application fee for EVERY subscription invoice and running into an issue where some invoices are paid down by the customer balance (which is happening because of proration credit) and the application fee is larger than the amount owed on the invoice
yes I think that summarises the issue quite well, essentially our connect customer resell our products so we need to take x amount for everything they sell and that is what we are using application fees for
but yes as you say we cant take the fee because the invoice becomes $0 due to the account balance
One way to think about it: if there is a credit balance on a customer, **the application fee has ALREADY ** been taken from the funds - I'm pretty sure the credit balance is from AFTER the application fee...
Yeah that is true but they could get a balance from another way too right? this current issue is refunds but thats not always going to be the case
...or at least, that seems to be how the engineers conceived it...
I know (as a User) that "Credit Balances" started from invoices, so there may not have been another way to create a credit balance at the time
Yeah that is true but they could get a balance from another way too right?
If you're talking about the customer credit balance then there's really only a few ways for that to happen (https://stripe.com/docs/billing/customer/balance#types)
Yes and a connect account could add a balance to a customers account which would then bypass all application fees, right?
Standard, Express or Custom Connect Account? I think the first (as an independent business) could add cash balances to direct customers of their platform, but I rather suspect not on your platform - and the others can't do it at all...
We create a standard account or they can connect an existing one
So they have access to stripe and could do this
Let me check one thing really quick - give me a minute
Okay, thanks
So for some context here - I've seen this issue also pop up in various other connect scenarios and it really boils down to the fact that you (as the platform) don't have control over how the customer credit balance is applied to your subscriptions. There's no way for you to guarnatee that any balance that is applied to your subscriptions came from your subscriptions (vs coming from the connect account doing their own thing, or even a different connect application if they're connected to more than one)
And we could only do a charge if they were express or custom account, right?
Well, in Express or Custom there isn't any mechanism for the Connect Accounts to arbitrarily create a credit balance
They are much more limited, by design
Yeah but if they ended up with an account balance due to a refund we could then create a charge to take the required fee from an express or connect account right?
But with standard we are more limited
Correct me if I'm wrong, but in Express and Custom,you (the platform) create the refund - and haven'tyou already collected an application fee from those funds?
essentially a one off invoice but that would incur additional stripe fees potentially
We are using standard accounts just to clarify
if an end user gets a refund from a connected account that is on the connected account to take the cost, we dont provide refunds for connected account application fees
From an Engineering Manager and Business Unit manager perspective: is this a situation you expect to encounter frequently?
we are unsure at the moment but we are also not sure how to monitor it as its quite hidden within invoices
we are in the early stages of our roll out of stripe connect, previously only using stripe directly
How about talk through the entire flow, and see if it makes sense:
=> Lets assume your platform collects $5 fee
=> Customer makes a purchase, say $100, from a Standard Connect account via your platform.
=> User (Standard account) gets $95, and pays Stripe fees from it
=> Customer gets a refund for whatever reason, and you've stated above the application fee is NOT refunded
=> So Customer get $100 credit; Platform has $5, and Standard account is negative ($5 + Stripe Fee)...
=> New invoice, customer applies $100 credit
=> User (Standard Account) now has ($100 - ($5 + Stripe fee) ), Platform has $5
=> Seems you're right back where you were before the refund/credit?
Yes in that flow we should end up with $10, its also worth noting that this is part of a subscription so the account balance will be used for the next months subscription payment and we could end up receiving no application fee for it
AH, so you want the $5 each time you process, regardless
Yes
($5 === what ever actual fee)
Yeah basically base cost + their markup and we take the base cost regardless of what happens
As a business decision, I would build my application fee to cover the % of corner cases (i.e. if I expected 5% refund rate, I'd charge $5.25).
It's not really what Stripe Credit Balances are designed to cover, and it's hecka easier to NOT have corner cases.
Yeah I think there is an argument for that and has been mentioned that it could just be the cost of doing business but as an engineer it doesnt sound great
I'm engineer/entrepreneur/business unit/CTO/CEO (current and past), so I empathize
yeah the credit balance just comes from the removal of a subscription item
but really, as an engineer, it's the corner cases the will leap up and bite you in the ass
Yeah my main concern is this feels like it could go unnoticed for a while and cause significant losses but its difficult to know that at the moment, I think I knew coming into the conversation that we would end up that its just an edge case that there is no real solution for but its good to know for definite
Well, I'm very certain there are webhook events for refunds, so you should be able to track them quite directly.
other than creating some kind of reconciliation that finds invoices paid by cash balances and generates a one off invoice to the connect account
"Invoice to the connect account" isn't really a "thing". In Stripe Customers and Users are utterly separate
Although you could have a "Customer" account for each of your "users", but that's entirely at your end
my usual boilerplate Stripe is, in general, a ONE-WAY payment processor - FROM "Customers who make payments via various methods" TO "Business Accounts that take payments" - either the Platform, or connected Accounts.  Stripe generally does NOT make payments or transfers to "Customers", and generally does NOT transfer funds between Connected Accounts.  It does not behave like a "banking system". ALL payment systems are required to follow Laws and Regulations that require KYC (Know Your Customer) and AML (Anti-Money Laundering) identification and verification for any monies paid out.
we have a subscription with the connect account as they pay us x amount for things so we could just add it to that, right?
I'd guess
But unsolicited business relationship advice: your users/connected accounts won't like that flow
Yeah I agree
KISS
we would much prefer it was just all handled within that invoice payment
but alas
we will just have to monitor the situation and see if it becomes a problem for now
Make sure your fees cover your anticipated expenses. Track them so you can keep your fees appropriate. But really, the actual cost to you for the 2nd invoice is pretty minimal
it could be minimal it could not be, all products that can be added to a subscription have varying application fees
so they could make a purchase for an item that we receive $5 on and refund it and then make a purchase for something that we should receive $100 on
but we will receive $0 as we got the $5 for the first purchase/invoice
Well, we could go back and forth quite a bit on that (for example, wouldn't that $100 app fee be on a much higher cost purchase that the credit balance wouldn't cover?), but at least you know the limitations.