23 ms·
My Stripe Tax Story
- rwky 5y agoThings like this are why I do this internally and just use stripe and other payment providers for actually charging the customer. Granted it's a pain in the arse but you only need to set it up once and occasionally adjust the tax rates as they change. IMHO stripe has become far too complex and people are relying on them for a critical part of their products without a fallback. I've seen a few occurrences lately where bugs, random account blocks etc have taken Stripe payments offline and suddenly the revenue stream tanks. Always have a backup payment provider!
- posguy 5y agoWho are you using as a backup payment provider? Have you been able to get Stripe to export your clients card data and ACH details to your backup processor? Curious as I'd love to have automated payment provider redundancy and replication for recurring invoices. https://stripe.com/docs/security/data-migrations/exports https://stripe.com/docs/security/data-migrations/exports
- rwky 5y agoIt doesn't particularly matter. PayPal is a simple alternative (granted they have their own issues but it's unlikely both Stripe and PayPal will crap out at the same time). For recurring subscriptions it is a challenge since you'd need people to pay manually if you switched payment provider but for e-commerce that runs off one off payments it's no problem.
- mytailorisrich 5y agoPayments, invoicing, tax, etc are hard because the logic is complex and many things can fail in many places. Stripe has expanded by offering to take care of that for customers. That has two consequences: (1) obviously that means Stripe has to take care of the complexity with the added problem that each customer has a specific use-case and (2) customers must still make the effort to understand exactly how Stripe's system works and implement extensive checks and reports (That's always the case with payments but even more as you entrust more business logic to a third party). Not taking (2) seriously will hit you. If you notice an issue because a customer actually took the time to contact you because they have not been charged in several months, it definitely means that you have not followed through on (2) at all.
- unobatbayar 5y agoUsing GitHub Gist as a blog is such a cool idea that I might just do that.
- Shadonototra 5y agoI stopped using Stripe the day i had to pay for the chargebacks, fuck that, paypal is bad, but at least it's not that bad
- gw67 5y agoThank you for sharing this. I have just found dozens of invoices not charged!
- spoonjim 5y agoThe part about waiting 3 days for a reply was shocking. If you have a serious problem (with anything) get on the PHONE.
- rkagerer 5y agoI consider this a great example of why systems dealing with money should be carefully engineered with sufficient safeguards in place that even reckless kindergarteners could operate with reasonable confidence they can't shoot themselves in the foot. This is not a field where you want complexity or cognitive overhead. I've encountered some ugly code while consulting in the payments space and had to educate and advocate (sometimes less gently than that word conveys) with developers concepts like atomicity, rollback, instrumentation, reconciliation, monitoring, diagnosability, etc. even after their creations had misplaced literally hundreds of thousands of dollars. It's always easy to blame the user; a good developer/architect understands how their code/systems can fail and stays on the lookout for edge cases and potential gaps.
- unfocussed_mike 5y agoThe fact that it took the writer three months (!) to spot this problem sets up a situation (IMO) in which swearing for effect in a chat session is out of the question. It's partly on him. Anything to do with money and tax internationally is complex, and it should be monitored at least until you know it works, e.g. put dates in your diary to check your first international customers paid the right tax? I must say, the Stripe chat session support people are heroes when you consider the breadth of the topic area they are covering, and some of the random chat abuse they must get from confused end user customers, and I don't think they deserved the fake-swear or some of that tone. Especially when the writer concedes he could have been productive in the meantime. Some of this stuff just goes with the territory, and they are a business, not magicians. There's also a sandbox -- is the writer saying there was no way to find this out through testing in the sandbox? I have had one experience like this where I got a result I did not expect on live compared with the sandbox, which came down to quirks of my sandbox testing. Specifically to do with trying to speed up testing [0]. I was getting payment collection tested within the day, but that meant a setting that affected something that happened at the end of the billing day never showed an impact in testing; on live it always would. That outcome, I think, could have been covered in a footnote like the one that was added after the writer's experience. The reality is that Stripe's documentation is heroically excellent (a counterpoint to the Hugo story yesterday) but their system is vast and has all sorts of complex real-world interactions. They have shown they are responsive by correcting the documentation going forward. [0] About the only thing I wish you could do that you cannot, is accelerate time in the sandbox, to make stuff like this easier to test. I understand why you can't but this is my fantasy. A stateful Stripe Connect mock would be useful though; I had to add one to my app.
- emj 5y agoIf they do not have time acceleration I think it's clear that the fault lays with Stripe and their bad testing practices. I thought people paid Stripe to handle the "get money from humans" problem, that is a pretty broad problem though so Ig guess not. Considering it took Stripe, and lets be generous, 7 months to figure this out they obviously have problems with testing.
- 5y ago
- gzer0 5y agoStripe: "Upon checking, it appears that the concern has been escalated to our specialist who handles the concern for you." What a way to avoid saying "problem", "bug", "issue" or any other term that might be perceived negatively in a lawsuit.
- jokethrowaway 5y agoThanks for sharing, I was considering using them (and I was even in the beta) but the product seemed way lacking and I didn't want to pay the extra fees - so I stayed on my custom implementation. For small businesses, you probably know better than Stripe what taxes you need to pay (no wonder how complicate they may be). Besides, your reasoning that you need to charge only canadian VAT is incorrect. If you sell to EU non business customers you need to charge EU VAT. If you sell over a certain threshold in most US states, you need to charge their sales tax. Australia is also threshold based. Now, my business is small enough I can ignore safely all the threshold for the foreseeable future (sigh) but I do need to track every damn European penny (and I don't sell to EU customers some services just because of this).
- tut-urut-utut 5y agoI don't understand why would anyone use Stripe Tax? At that price range, suddenly one can also switch to something like Paddle, Gumroad, FastSpring, MyCommerce or some other Merchant of Record. The merchant of Record will then act as a middleman/reseller between your SaaS and a consumer, and will take full responsibility not only for calculating, but also collecting and filing taxes in any of the jurisdictions. As a SaaS, all you get from MoR is one payment at a defined schedule. Any errors in tax calculation, reporting, filing are not your problem, it's their problem. Stripe Tax costs the same as Merchant of Record, but it doesn't do anything they do. Yes, they help you calculate the tax amount, give you the summary, but it's you that still need to file taxes correctly everywhere in the world, and it's still you that is responsible for Stripe Tax mistakes. Until Stripe can act as a full Merchant of Record, I don't see a reason to use them unless one sells only in one (home) country.
- candiddevmike 5y agoWhich one do you use?
- tut-urut-utut 5y agoI currently use Paddle. There have been some issues with the lack of documentation during the development, but as a developer, I'd rather deal with that than filing taxes internationally. Gumroad is nicer from the indie developer perspective, less restrictive than Paddle regarding product types sold, but shopping card and pricing are more limited (USD prices w/o VAT only). Stripe is still better from the developer's standpoint, more mature and nicer integration / API, but doesn't handle tax filing. Would use it if developing a product for a single market.
- aetherspawn 5y agoI used to use Stripe to process payments. One day someone bought a huge item with a stolen card. Stripe sent me an email saying the payment had been “processed”, so I gave them the $3000 item. I later logged in and noticed “processed” meant “processing”, and the stolen card bounced at the bank a week later. They refused to take responsibility for sending me an email that clearly said the payment had been fully processed when it in fact had not been, allowing the item to be stolen. Stripe support mocked me. They refused to cover the money and I never used them again. The only redeeming factor was it logged their IP address in the card logs, so I gave it to the police and they caught someone who had stolen hundreds of other items (but still no recuperation of lost funds for me). I only use PayPal now. Never had an issue with PayPal, and they have always fully insured all transfers. No confusing transaction states that offload responsibility as a payment processor. None of this “we take a huge cut, but actually grant you no protection” garbage.
- kalleboo 5y agoI worked for a company that went bankrupt due to sudden massive fraud using stolen credit cards on PayPal, that all went to chargeback which also inflicted a $20/chargeback fee from PayPal. They were something like $6000 in debt to PayPal in chargebacks and fees when they just folded. PayPal does not protect you from stolen cards, at least they'd didn't back then (5 years ago maybe?)
- donalhunt 5y agoOh man... This is my experience with so many technology providers. /sadface
- tehwebguy 5y agoAn aside: It’s so absurd that someone should have to collect tax on behalf of a jurisdiction they aren’t even in. One the worst outcomes of Amazon reaching critical mass was their making agreements with various states and countries, making the tax collection moat wider and wider.
- cakoose 5y agoYeah, it's a huge distraction from your core business. I work at a company that tries to take care of it for you: https://anrok.com https://anrok.com I suspect (hope) that in a few years most billing/payment systems will take care of this for you (either natively or through a seamless partnership) so you just fill out a few forms and forget about it.
- fleddr 5y agoI don't disagree with the point that Stripe should have implemented failure handling in a much better way for something as important as this. Valid point. Still, the post is equally a massive self-own. In what business can you be so lax about cash flow, the most important business metric ever, as to concluding that it "feels" off after some 3 months and then think it will somehow even out over time? And only because you were alerted by a customer? What would happen without that customer? A few more months of tanking financials before you wake up? I must be a dinosaur to believe that order intake/management, invoices, tax and payments is something you're absolutely on top of, on a daily basis. It's the very core of every business. Either you do it or your accountant does it. It doesn't matter if you use Stripe or a piece of paper, this is a thing to be on top of. Did I get paid is the #1 business question, nothing else matter in comparison. Further, OP implemented a tax module, didn't bother to read the migration guide, and tested nothing. Same problem: an unmanaged business. You should not miss 3 months worth of draft invoices. Still, we all make mistakes, Stripe could definitely have done better as well, so some irrational anger is understandable. Yet I find it very sour how some poor support team is hung out to dry. Disclosing all of this in this amount of needless detail is close to doxing. Next, it is shared far and wide after which many people can pile on to the team. I find that disproportional and in poor taste. You can tell how even when the problem is clear and some acknowledgement is given, it's not enough. It's as if OP want theirs heads. Revenge. Don't humiliate support teams. If you want compensation, be clear about what you want exactly. They aren't going to rectify you with a full page ad in the NY Times.
- a13n 5y agoI had a similar horror story with Stripe recently where several customers got billed via payment methods that were explicitly disallowed on the subscription object. This cost us loads in unnecessary fees. When I reached out to support, I also felt insulted and like I was begging my cable company to refund the $5 they owed me. They refused to acknowledge that their product is broken or take any blame. I'm honestly just waiting for a good Stripe alternative to pop up so they can't get away with these product issues and bad customer support policies so easily.
- edwinwee 5y agoHm, could you email me at edwin@stripe.com and I can look into this?
- XCSme 5y ago> the tax engine knows that I do not need any additional information for subscriptions that are US-based or based in other countries as I have no obligations to collect tax there Is this true? Don't you always have to collect/pay local taxes if you are selling stuff in a country? For example, you sell to a customer in Germany, your price must include German VAT.
- rezonant 5y agoYou are right. It doesn't excuse Stripe Tax, but a business can have both presence nexuses (ie we sell from there) and sales nexuses (ie we sell enough to there that the local laws say we need to register and collect taxes). The details vary for the EU depending on whether the product is business-to-consumer or B2B and what kind of volume we're talking about. Some countries, such as the US, have a double taxation treaty with the EU that allows you to use a self-charge VAT structure when you do small amount of sales which has the effect of not needing the US seller to register for VAT, provided your tax authority (ie the IRS) authorizes you to participate under that treaty. Correct handling of sales tax/VAT globally is complicated and I definitely had a "oh honey" moment when reading that sentence as well.
- Irongirl1 5y agoDoes anyone know if this is just the implementation that came with Stripe's purchase of TaxJar? Because perhaps they just bought something that was working and when they merged it with the rest of their operations and expanded into Canada certain bugs became more apparent??
- eek2121 5y agoSo, this kind of sent me on an emotional rollercoaster. I empathized with both parties. That being said, my sites have thousands of subscribers. If subscriptions were off by a cent at any point in time, things would have been red flagged, and I would have contacted them (Strip, that is). I do have a backup payment processor, and assuming both are unavailable due to negligence on the providers' end or my own, I give the users the month for free. I had to do this exactly once in 15 years. Stripe, without a doubt, screwed up, and the writer was correct in taking them to task, however, end users should have been let off the hook. It sounds like the write wanted to back bill them for it. You should absolutely not be tossing this at customers, I would have thanked the customer, then I would have given them several months free while I resolved the issue. Customers should be first. I actually had to archive a site recently due to declines in my ability to update it. The customers involved weren't unhappy about my ability to keep it updated, they were unhappy that I was shutting out their ability to support the site. Treat your customers like gold. I promise you won't regret. I had someone try to donate thousands to me to keep a site online. I declined and kept the site online and archived for free.
- MerelyMortal 5y agoI hope OP is rewarding the customer that noticed and notified OP about the issue.
- ckdarby 5y agoThis started up as a good write up but quickly tanked when the article started to turn into just chat history pasting.
- neycoda 5y agoThis is a massive screw-up by Stripe, and the fact that you had such a difficult time communicating with them makes it ever more difficult to fix. We need intelligent humans overseeing this software, not a bunch of triggered bots and human script readers. I don't know how to get Stripe to fix this other than media embarrassment, which is an incredibly inefficient way to run customer support and QA.
- sbierwagen 5y agoHe wasn't collecting address information for US customers, so the invoices hung in a pending state. He didn't check to make sure the integration was working correctly until a customer emailed him to ask why they hadn't been billed three months later, so there were a lot of invoices to clean up, which he apparently found to be very annoying.
- civilized 5y ago> He didn't check to make sure the integration was working correctly But what is your definition of "check to make sure the integration was working correctly"? Once you know what was going wrong, it's easy but unhelpful to say "you should have checked to see if that thing was going wrong". He had dashboards indicating "situation normal", and there was no specific advice that he check that an avalanche of draft invoices was silently piling up. Given that Stripe advertises itself as making payments easy, it seems like it should take responsibility for making them easy, instead of having hidden pitfalls that silently tank your revenue.
- sbierwagen 5y agoIn the post he says: >I had noticed that my cashflow for the previous 2-3 months seemed to be tanking a bit A bit? Revenue from all US customers went to zero for three months! That should have been a giant hole. This is like driving your car into a lake, hearing a "bang" as the engine explodes, then complaining that there's no "you have driven into a lake" warning light on the dashboard.
- civilized 5y agoPeople are always going to have this feeling of "I can't believe Y was not as conscientious as I assume I would have been in X situation". It's hard to put ourselves in other people's shoes. I don't know what else is going on in this guy's life, except he's got kids so that's already a lot.
- sarlalian 5y agoYou are assuming that a large number of their customers are from the U.S. not knowing what business they are in, their customer pool might be 90% Canadian. The whole world doesn't necessarily target U.S. customers.
- edwinwee 5y ago(I work at Stripe.) This was a painful read. I'm sorry. We could have done a lot better. We're working on remediations now, and we're sending another, corrected email tonight with the updated CSV file of failed invoices as of March 1st.
- dannyw 5y agoPlease consider a financial goodwill payment instead of only sending updated CSVs. You charge an extra fee for Stripe Tax; your paying product had an issue.
- ovao 5y ago“Remediations” often refers to exactly that. Would suggest we wait for an update from the author to see how Stripe handles that, if at all.
- hackernewds 5y agodoesn't remediations imply accepting fault? wonder if there's legal grounds here. OP posting here could also be legal documentation in discovery
- mocheeze 5y agoAnd working in good faith to resolve the merchant's problem and rectify the issue can often prevent a lawsuit in the first place. You're overthinking it.
- sebastien_b 5y agoIf there are remediations, it might likely be done under NDA for legal reasons, so we may never hear anything back.
- mocheeze 5y agoI've never had a merchant sign an NDA for me to fix their problem and/or transfer funds to reconcile a processing error, lol.
- sleepytimetea 5y agoIs there an extra fee for this Stripe Tax integration extra ? If not a separate fee, will they refund partially given that no alerts or alarms were raised for this behaviour ? All I can say is they probably built this in a hurry and the workflows weren't really tested or checked by humans. I call it "But CI is green" syndrome.
- pxue 5y agoYes. it's 0.5% per payment* on top of 0.4% per "invoice". Quite hefty fees considering credit card fee is 2.9%
- deleted 5y ago[deleted]
- anonymouse008 5y agoWoa I’m selecting payment processors right now — does this mean the “subscription” / “billing” fees of 0.5% are on top of the 2.9%?! https://stripe.com/billing https://stripe.com/billing
- emptysea 5y agoSomewhere it says the first million is free, so if you're small time it's effectively free
- anonymouse008 5y agoStill — charging 0.5% for a cron job?! [edit] I’m willing to be educated, please tell me how this isn’t Invoices with stored payments (which I’ve now seen has an additional fee too)
- CamperBob2 5y agoMaking the cron job somebody else's problem has value in itself, though... see the cliched Dropbox example.
- tarr11 5y agoThis is why you need a good bookkeeper who will catch things like this when doing monthly reconciliation. There are so many ways that billing can fail and they all result in cash flow problems which is incredibly stressful.
- ovao 5y agoDepends on how the integration’s set up, and whether draft invoices in Stripe sync to whatever accounting package as open invoices.
- spamizbad 5y agoI've noticed Stripe products tend to be buggy and/or half-finished. What's the deal with that? Anyone know why a company with so much talent and great product that seem polished seem to have critical issues?
- gjsman-1000 5y agoI thought I was crazy looking at their API and thinking it was crap because everyone seems to praise the Stripe API. I ran into undocumented sections around line items for Checkout objects, and the whole loop-around to go from Checkout Session -> Payment Intent -> Charge Information -> Order Information -> Line Items (or whatever order the 4 separate, synchronous requests our app has to do to get cart line items) is overly complicated. Like, why do we even need Payment Intent? I just want to make a Checkout session, set a few variables, and have it return whether the same Checkout session was successful or not, how much was charged, and the line items for it in one request, not four, five if unoptimized.
- wnevets 5y ago> Like, why do we even need Payment Intent? Could be to support payment methods in Europe and countries other than the US?
- gjsman-1000 5y agoI am referring here to Stripe Checkout. https://stripe.com/payments/checkout https://stripe.com/payments/checkout It's supposed to make payments easier with a Stripe-hosted payments page. However, creating a server-side Checkout session, and then getting line items from an order, is an unnecessarily convoluted series of requests.
- WillPostForFood 5y agoYou can use "expand" to get multiple queries into a single request, kind of like a SQL join. I don't know if this is exactly your use case, but when we get a Checkout session, and want the customer and purchase line items, it looks like this (using the Stripe Ruby library). Stripe::Checkout::Session.retrieve({ id: session_id, expand: ['line_items', 'customer'] })
- dabernathy89 5y agoI'm not quite understanding the need to put them on blast here. Yes, they should have been more apologetic and they should certainly have escalated your ticket more quickly. But they made the changes you wanted seen: better documentation & better process, and reaching out to customers proactively when they see this problem.
- nrmitchi 5y agoI suspect, because I have been in a similar situation before, that the author is frustrated because the company first ignored/downplayed the significance of his concern, then blamed his issue on user error (without accepting responsibility), and then quietly modified their documentation and addressed the issue as if they had "just discovered it". When companies behave this way it feels like you're being gaslit, which is extremely frustrating. The author may have gotten the result they initially wanted, but it would have felt like a huge, disrespectful, slap in the face.
- dhc02 5y agoTech support gaslighting. Perfect encapsulation of the phenomenon. Someone make an urban dictionary entry.
- batch12 5y agoNo, I didn't change anything. It just started working again.
- judge2020 5y agoAn easy claim to make in the world of service auto-scaling and auto-replacement :)
- SilasX 5y agoInterestingly enough, I vaguely remember a pg article about how Lisp was so effective he could deploy fixes during a customer support call about the issue, to the point the customer thought they had messed up instead of the application. I can’t seem to find that now, but this one is close (in praising Lisp’s speed advantage for startups): http://www.paulgraham.com/avg.html http://www.paulgraham.com/avg.html
- deleted 5y ago[deleted]
- gelatocar 5y agoI also had issues with stripe's automatic tax. We use stripe's subscriptions with free trials but don't collect credit card details up front, preferring to make sign up simple and low friction. Automatic tax is charged at 0.5% of each transaction, and apparently a trial ending is considered a transaction even if the user has no payment method, so we were hit with automatic tax fees for every trial end even if we received no money for them. Overall my experience with stripe has been pretty negative and the large gap between my perception of the quality of their products, and the reality I discovered in actually using them has made me realize how much effort they put in to marketing to developers.
- edwinwee 5y agoCould you email me at edwin@stripe.com and we can dig a bit more into this?
- gelatocar 5y agoHi Edwin, I appreciate you offering. I did message support about this but it pretty quickly hit the limit of the time I was willing to put in to try and retrieve the money we lost (which wasn't all that much). It is one of those things where the way Stripe charges is technically correct as you need to calculate tax for all transactions even if they aren't fulfilled. But the odd behavior of trying to charge at end of trial even if a user doesn't have a payment method combined with charging 0.5% of all transactions whether fulfilled or not results in a pretty unexpected outcome. Changing any one of these behaviors, or even making the documentation clearer would stop this happening to anyone else probably.
- deleted 5y ago[deleted]
- edwinwee 5y agoIt'd be useful to take a closer look at your invoices, so let me know. The Stripe Tax fee is charged for the volume of the invoice—a trial invoice should have a volume of $0, so the Stripe Tax fee would not be charged. However, after the trial and when your customer starts paying, you'll have an invoice that's >$0—that's when the Stripe Tax fee would be charged. We talk about a bit about this in https://stripe.com/docs/tax/faq#when-do-you-charge-a-fee-for-stripe-tax https://stripe.com/docs/tax/faq#when-do-you-charge-a-fee-for..., but we'll try to update this with a clearer explanation.
- latchkey 5y agoTangental side note, I googled profitwell (mentioned in the gist) and the first result is an ad for another competing company (that I won't mention) which includes "profitwell" in the title tag. Super shady!
- Rastonbury 5y agoThis is a common phenomenon sometimes referred to as the Google tax. Which is why when you search for "company name" you still get ads for that company when the first actual result is their website, they bid on their own name so that competitors don't appear ahead of them.
- chrissnell 5y agoMy dad owns a successful chain of bicycle stores in Texas. He’s been in business for almost 51 years and he’s one of the largest bike dealers by volume in the country. He has nearly a hundred employees and a bookkeeper. Despite having a proverbial dozen balls in the air at any time and despite having people on the payroll to do bookkeeping, he sits down at his computer every night at home, logs into the ERP system, and reviews sales and receipts. He catches all kinds of crazy things. Credit card fraud (before the chargeback even comes), internal theft, mis-priced items, mistakes, you name it. He has great employees but even the best make mistakes and he’s learned this habit over the decades the hard way. I remember sitting next to him as a kid, watching him pour over cash register journal tapes that were yards long, looking for problems. My point: if you let this kind of fuck-up go undetected for over three months, you have to at least assume some of the blame and acknowledge that you probably could have caught it if you scrutinized transactions. Every good business owner does it.
- white_dragon88 5y ago[dead]
- lbriner 5y agoI think this is an unfair comparison. There is a big difference between checking the work of multiple employees who might type stuff in wrong or credit card fraud compared to OP who has a fully integrated billing system provided by a very large and well-funded company who have failed to get some real basics right. The MINIMUM most people would expect would be a notification either by email or on the dashboard to say that an invoice cannot be processed and at least that would highlight the problem. Even better, when you enable Stripe Tax, it should highlight the people who cannot be charged tax and likewise when you add a new customer who doesn't have the right info, it should notify you. I find it really frustrating when a multi-billion dollar company cannot think of UX 101 and the customer has to do the heavy lifting.
- kelnos 5y agoAgreed that Stripe has some product & UX issues here, but if I'm going to make big changes to how my customers are billed and taxed, I'm going to very carefully watch the result of those changes for a while to make sure it's working properly. Seems like OP didn't do that, and that's pretty irresponsible, IMO.
- kevinpet 5y agoThat sequence of events is exactly what I'd expect for a "we screwed up, but not in a way to incur any legal liability" 1. Generic answer that "yep, it's not working, here's how to fix it" 2. Updating documentation to make it better. 3. Somebody saying "what should we do about all the other customers in the same situation? can we just shut up about it?" leading to the last email. And then... yeah, you can't directly apologize and take responsibility because that would cost you a fortune (and really, back billing is the right answer, though maybe he could in turn offer his customers a month's discount or something). Maybe Stripe could waive some fees for a while or something, but you have to have some limits on hard to use but technically correct situations.
- floodyberry- 5y ago> And then... yeah, you can't directly apologize and take responsibility because that would cost you a fortune The system is truly working when you can just play dumb and rest easy knowing everyone you screwed is too poor to do anything about the situation in court
- deleted 5y ago[deleted]
- danity 5y agoSad to see Stripe fall to the bean counters instead of staying focused on customers. They were coming out with some cool innovations a few years ago. Even "don't be evil" Google is moving in this direction. Not sure why companies always evolve this way. Boeing is another prime example. Apple has maintained its focus on the customer and thrived, bucking the trend, which seems like it would be motivation for others to stay focused on the customer. Especially given when Apple hired the Pepsi guy to run things in the bean counter way, the company nearly died.
- colesantiago 5y agoI would only have to assume you haven't ran a business with over $2M ARR. Taxes, VAT, etc is a HUGE pain in the ass. It's been a long time for Stripe to introduce a solution for taxes after it was requested by lots of customers (and recently acquired TaxJar because of it)
- Aeolun 5y agoMaybe the taxes in my country are simple, but it’s never been particularly onerous to me. The US just has a convoluted tax system.
- stagger87 5y agoYou're making some huge hand wavy statements based on this single anecdote...
- asrossbach 5y agoAs someone who has used Stripe over the past 5 years for large scale e-commerce and marketplace startups Stripe has dropped the ball quite significantly over the past two or so years. Their customer support has gotten worst, their communication to customers has faltered quite a bit and they're starting to nickel and dime their customers for basic features (like support that responds within a day or two). I wouldn't go as far as to say they've fallen to the "bean counters" but they definitely aren't as customer obsessed as they have been in the past and quite a few gaps in their armor are becoming obvious.
- websap 5y agoI actually thought Stripe did decently here, there were periods of silence which sucks. It's odd that you feel they are obligated to explain their internal processes with you? Things they did right: 1. Immediately acknowledge the issue and raise it to a Specialist. 2. Give you a work-around, so that you don't need to be blocked. 3. Engage the lead PM, to speak to you, to address your concerns. 4. Fix the documentation first, so others know how to fix this and understand the cases. 5. Take feedback that they need to improve the API. 6. Find which customers had an issue and pro-actively reach out to them. (Isn't this what you wanted in the 1st place?) Things that didn't go well: 1. Long periods of silence between mails. 2. Lack of a bug bounty, sounds like a pretty big miss on their part and a bug bounty would be nice.
- klabb3 5y agoI think it's reasonable to expect either (1) support to be at least as responsive and competent as sales or (2) compensation or refunds for poor service. This works for any honest business. If you want a custom offering with hand holding, go with 1. If you want a scalable and streamlined unisize business which allows itself to make mistakes in order to build huge things for the masses, go with 2 and accept the losses. I really dislike the middle ground compromise of having useless conversations with L1 reps who are either incompetent or whose hands are tied. "We've escalated this issue to super-serious, an expert will reach out to you within the next decade".
- jrochkind1 5y ago> I think it's reasonable to expect either (1) support to be at least as responsive and competent as sales What do you mean by "reasonable"? Because, while I wish it were so, I have never ever experienced support as responsive as sales.
- oefrha 5y agoStripe Support did not engage the lead PM, OP happened to have the PM’s email: > In the mean time, I had also been reaching out to, who best I can tell, was the product manager or product lead for Stripe Tax because I had her email address and contact information from previously discussing Stripe Tax with her. Ironically the PM was a fair bit more responsive than Support.
- NorwegianDude 5y agoUpcoming problem: > Canada is the only jurisdiction I run my business, and therefore only need to charge tax to Canadian customers Where your business is located doesn't necessarily mean anything. The location of the customer is what usually matters. You'll most likely have to register in quite a few places and keep up with tax reporting, payments, and rules everywhere you're registered.
- harrisonjackson 5y agoHaving shipped a non-zero # of billing bugs with the Stripe API... One of the best things you can do is catch all their webhooks, handle the ones you expect to receive, and raise a serious alarm for ANY others. Then prioritize properly handling those unknown alarms and setup your own notification/escalation system as needed for the important ones. If you are short on dev hours, then use something like Zapier to catch the webhooks for you and forward critical ones to you in a way you will acknowledge. This strategy doesn't work as well with NEW webhooks so you'll still need to do the first option at some point.
- klabb3 5y agoThanks for the free documentation. (Companies should really be paying out "missing doc bounties".)
- chipotle_coyote 5y agoI don't know how Stripe's dashboard looks/works, and whether it easily displays the number of invoices left in "draft" state. But when the author writes about the silent failure here, > No failed API calls (as far as I could tell). I can't help but wonder whether that "as far as I could tell" is carrying a lot more weight than it might first appear. Stripe's documentation under "Collect taxes for recurring payments" explains, Creating or updating a subscription that causes an immediate invoice and payment attempt errors with an HTTP status 400 response. Updating a subscription that does not cause an immediate invoice or payment attempt returns an HTTP status 200 response. However, the customer location validation happens later asynchronously when the invoice is finalized. If the customer location is invalid during invoice finalization, Stripe sends a invoice.finalization_failed webhook. If you don’t take any action, the invoice remains in a draft state. Which at least suggests that Stripe's API will, in fact, inform you of invoices that fail for precisely this condition. So is it at least possible that the author "built out [their] Stripe Tax integration" either without implementing what would seem offhand to be an extremely important webhook, or implementing it but not surfacing its results in a timely, actionable way?
- whakim 5y agoOne thing that's confusing/annoying from the Stripe developer experience is that subscriptions generate an absolutely huge number of webhooks. There's probably 10 or 15 webhooks per recurring payment, and many of those contain the same data. Different pieces of documentation talk about the importance of different webhooks. Additionally, I've never found a good way to easily test webhooks related to recurring payments without resorting to manual testing. I could easily imagine the OP being confused by Stripe webhooks.
- Aeolun 5y agoThe goal of Stripe is to make things simple. I shouldn’t have to implement a webhook to discover that none of my invoices are actually being paid. I’d expect a notification email to be sent to the account until that is explicitly turned off.
- eertami 5y ago
- numair 5y agoBefore anyone gets too excited to talk about their problems with Stripe on HN, please know that my account is semi-banned and anything I post is flagged as “self promotion” after I wrote a negative piece on Stripe that reached the HN front page.
- CameronNemo 5y agoI mean... Have you tried posting links to articles apart from your own medium and twitter accounts? I think general etiquette with discussion forums is to post links to a variety of sources, not just your own content.
- anonymousiam 5y agoStripe is just awful. I have no experience from the vendor side, but as a customer, I've noticed that they seem to associate a credit card number with an email address. My business credit card is associated with dozens of different email addresses, but Stripe wants to use the one associated with my most recent purchase regardless of what email I provide to them. I get emails coming in to random (but valid) email addresses for purchases I make with vendors using Stripe. For example, I've seen Internet domain renewal charge confirmation notices going to my auto repair email address, and I've seen telecom hardware purchase confirmations going to my Jersey Mikes (sub shop) account email. I suspect that this is another example of "you are the product."
- withinboredom 5y agoThis is probably your browser's autocomplete and nothing to do with Stripe.
- anonymousiam 5y agoI cannot edit or delete the above post, but I made a mistake and I must apologize to Stripe. I had confused it with Square. The above post should apply to Square and not Stripe, which means it is now off-topic. Sorry.
- edwinwee 5y agoCustomer email addresses are only stored within a business’s Stripe account and aren’t shared across businesses when the same credit card is used—so I’m curious to see what’s going on here. Could you forward an example purchase confirmation to me at edwin@stripe.com?
- anonymousiam 5y agoEdwin, I began to draft an email with many attached receipts demonstrating the email confusion, but then I realized they were all from Square and not from Stripe. Please accept my apologies for the above post. I would remove it if I could.
- 5y ago
- drevil-v2 5y agoThere is a massive chasm between Stripe's perceived (for a lack of a better term) awesomeness vs the actual reality. I don't think I have ever had an actual good experience with Stripe Here is a couple of examples - The account manager assigned to us was absolutely horrible. Would not answer emails. Getting information out of him was like pulling water from stone. And our business is a global company with annual revenues in the hundreds of millions of dollars. He couldn't care less. - Stripe support... I have an email thread with these guys that reads like a "who's on first base" script. I still read it sometimes for a laugh and make sure I wasn't dreaming the whole thing. Boggles the mind that Stripe is worth many tens of billions of dollars. I want to invest in their marketing partners. Those guys are doing a fantastic job. EDIT: If anyone senior from Stripe is reading this; reply back and I might be able to provide you more details. I really want someone at Stripe to read that support email thread and tell me what they honestly think.
- justsomeuser 5y agoSupport has never solved any of the issues I have brought up either. They will relay some unrelated bit of documentation and then immediately try to close the issue as solved. It is like “Step 1: Understand the problem” and “Step X: Validate it solved the customers problem” isn’t even on the checklist. Just “reply something technical, close ticket, repeat”.
- treis 5y agoYou can't tease us with a chain like that and not post it!
- privatdozent 5y agoSupport has been dreadful for me as well. Had a few false fraud charges claimed on my Substack. Lost every single one. No explanation from Stripe and no opportunity for appeal.
- edwinwee 5y agoNot good. Can you email me those details at edwin@stripe.com and we can look into what went wrong?
- r_hoods_ghost 5y agoSo user didn't read guide properly, then after turning on a new tax invoicing system didn't check that all customers were actually being invoiced for three months... Obviously Stripes fault. /s
- bluelu 5y agoWell, the user only wanted to be half tax compliant (in his home country only), and not collect any taxes in the other countries where he is legally obliged to collect them to. Not sure how you can even start a business, sell stuff and not collect VAT right from the start. Here in Europe this is unthinkable.
- janci 5y agoYes, the documentation was lacking, the consequences were unexpected, the API design was not great to prevent this and the dashboard did not show the problem. They are all Stripe's faults. But enabling an auto-magic feature for a business-critical operation (invoicing and taxes) and not even checking if it worked? Sorry to say that but it is utterly irresponsible. Heck, even the invoice numbers must not have matched. And the draft invoices piling up for months must have been visible too.
- klabb3 5y ago> And the draft invoices piling up for months must have been visible too. I was wondering about this as well. Author seems to have checked several dashboards and metrics, yet still missed it. Feels like a clear UX bug if they didn't at least have a way to alert or monitor for drafts that are never sent, especially if they are recurring on the same accounts.
- thathndude 5y agoAside from a Stripe rep estimating a response in 12-24 hours, and then taking 3 days to give out a canned response, it seems like Stripe hasn’t don’t anything wrong. This potential issue was flagged in the documentation. I don’t want to “blame the victim,” but I don’t see Stripe As particularly culpable here.