
Stripe Would Be Perfect If... - liamk
http://liamkaufman.com/blog/2012/11/09/stripe-would-be-perfect-if/
======
peteforde
I'm sympathetic to Liam's grief with calculating taxes, and handling the edge
cases of people moving around different tax zones. It's not exclusive to
Canada, of course.

However, my perspective is that Stripe sits one level lower on the
infrastructure map than a service like Recurly (<http://recurly.com>) which is
designed to abstract the pain of subscription management away from app
developers. I use Stripe first and foremost as a best-in-class one-time
payment processor. There's nothing stopping me from building a subscription
management solution on top of Stripe; I'd just be re-inventing the wheel.

Stripe's subscriptions strike me as a good compromise between nothing at all
and something that becomes more sophisticated over time. If they try to stamp
out all of those edge cases, they will inevitably break someone else's
application that relies on a slightly different interpretation of "the way
things are supposed to be".

I sincerely hope that Stripe continues to say No to feature requests far into
the future. Where does PDF invoice generation (with HTML templates of course)
fit into "the simplest thing that works"? When Stripe notifies you of a sale,
generate your own invoice. Maybe even consider open-sourcing that code. Adding
it to Stripe is not the best thing to do.

~~~
jd
Exactly. Stripe can't support every bit of functionality out of the box,
because then the API would get really convoluted. Just think about what sort
of discounts are commonly use: absolute discounts, percentage discounts,
coupon codes with expiration dates, conditional coupon codes, bulk discounts,
discounts that only apply for the first month. And so on. When dealing with
billing logic there is a tremendous amount of accidental complexity.

Stripe offers a low-level API and a higher level API and framework can be
built on top of that. So what we really need are some high-quality
django/rails modules that deal with all the mundane bookkeeping. Then you can
easily fork the module to make adjustments where needed.

------
shazow
Everyone is piling on the "stop trying to feature-creep Stripe!" wagon but
there is at least one reasonable suggestion in this post: A per-user fee
tacked onto an existing plan.

> In total there are 4 different tax rates and then no taxes for international
> customers, for a total of 5 different tax levels. We currently have 3
> monthly plans, and their 3 yearly equivalents. This means that we had to
> create (3 + 3) x 5 = 30 plans within Stripe.

This is definitely not ideal.

Agreed with everyone that asking Stripe to take care of figuring out the tax
rates is far too much, but being able to say "Subscribe customer X to plan Y,"
which already exists, "and in addition add a Z fee to each charge." Z could be
a percentage or an absolute value.

Maybe Z is tax. Maybe Z is shipping for a monthly package subscription.

Now Understoodit can keep their 3 + 3 plans. +1 to this.

~~~
bkorte
Agreed.

People are sure piling on OP for mentioning taxes -- I think you are all
interpreting his request as "Stripe, please add tax calculation" but he's only
asking for an additional charges field so he can track his subscriptions +
taxes instead of his subscriptions with taxes.

------
the_bear
Every time I sign up for a service and receive an email from recurly (or
similar services), my first thought is, "this company doesn't care about user
experience if they're trusting recurly to send me important communications."
The email content is always generic and cold, and it's particularly
unimpressive when I sign up for a free trial and receive a "thanks for
subscribing" email telling me that I was successfully billed $0.00.

I'm glad that Stripe keeps their hands off my invoices. You could argue that
Stripe could just let me turn that feature off, but Stripe understands that
their customers are 100% responsible for the end-user experience, and I
respect their decision not to get involved in that at all.

------
richardlblair
When I read this article I honestly thought to myself "Are you kidding me??"

Stripe makes receiving payments incredibly easy; easier than it has ever been
before. Yet, somehow you complain that you need to deal with edge cases? There
will always be edge cases... if your biggest issue in dealing with payments is
handling taxes then I would say you are doing alright.

Would it be a useful feature? Sure. Is it worth taking the time to write
about? Hell no.

~~~
JimmaDaRustla
Also, there are scenarios when taxes are exempt on particular items and
services. This could even occur on a per-item level.

Multiply that by your regional settings and you got some nice bloat.

~~~
otakucode
Absolutely. Even the StreamLined Sales Tax Governing Board rules are not
comprehensive. They have many different product categories, but they do not
have them all. They pay various companies to provide sales tax data to
Internet businesses, but the companies I've dealt with basically do the
minimum possible and aren't terribly interested in improving. The bottom line
is that if you want to be safe around taxes, you have to hire a lawyer and
have them investigate the tax situation with your particular category of
product in all the different areas it's going to be offered. Really, that's
not something I envision anyone doing for free. It's not something you could
just do once. Podunk, UT might have a city council meeting next week decreeing
a 27% tax on your product/service with penalty of death if you do not charge
the tax to your customers.

------
Bakkot
It seems to me that creating several dozen subscription plans on Stripe is
indicative of a deeper problem: that you have several dozen different prices
consumers end up paying. How about instead you advertise the prices that
consumers will actually have to pay? Bump up all of your prices across the
board by the expected cost of taxes to even out the cost.

(Unless there's some law about not charging consumers in different provinces a
different pre-tax cost, or some province charges so much tax that to make
other provinces eat a share of that cost would be unreasonable.)

~~~
tucaz
It's funny how different countries and cultures have different views over the
same thing. I'm not sure about Canada, but in the US taxes are added on top of
each purchase so you advertise a price of 14USD and end up charging X% on top
of that price.

If I understood your suggestion correctly people dealing with these problems
should do like we do here in Brazil: use the taxes to compose the final price
so if I have a product that I want to sell for, let´s say, 10USD and will cost
me an average 10% in taxes I would advertise it for 11USD and just deal with
the taxes problem internally in my app and not by creating N different plans
on the payment processor.

------
jusben1369
This is a good write up. This is a challenge for Stripe though. They're a
payment gateway that can manage recurring payments. Things like taxes and
invoices are usually supported by additional applications that run on top of a
payment gateway. Edge cases too. So I'm sure they're there saying "Where do we
draw the line between where we end and other offerings/services begin"

~~~
liamk
If they support coupons, I don't see why they can't support taxes. Taxes are
just the opposite of coupons and should be relatively easy for them to
implement.

~~~
peteforde
One of my developer pet peeves is when 3rd parties (especially ones that think
they're helping you) tell you that something they want should be "easy" to do.

Changing the interface to a payment processing gateway, including all of the
support documentation and code/security audits, is not easy.

If everyone that wanted something from you prefaced their request with "I
don't see why they can't"... you'd probably get annoyed, too.

------
anujkk
... available worldwide.

~~~
phatbyte
Exactly, I came here to say this. Instead I will just upvote you.

------
otakucode
I can entirely understand why Stripe doesn't deal with taxes. They're insane.
I was involved in implementing a site that sold off-site discount parking
reservations near airports and dealing with taxes was certainly no fun. And
this was restricted just to the US. There is a national consortium of states
that makes getting state sales tax slightly easy.... but all the services that
offer the ability to look up tax rates didn't cover the service we were
offering, parking reservation. So we had to investigate the rates ourselves...
and it's a good thing we did. Some counties or municipalities have created
special taxes to apply specifically to this kind of service in order to make
things more expensive so that parking at the airport isn't such a terrible
deal.... oh and those laws don't stay static, of course. You have to keep on
top of them, and modify your code/data/whatever when new laws take effect or
old laws are repealed.

The most fun was when an area in Texas passed one of these laws taxing parking
near airports (even if that parking is offered by a hotel or some other
established business... if it has shuttle service to the airport, it must be
taxed) but all the various people offering parking through our site didn't
want to comply with the law, so they wanted us to not charge the tax to
customers! Worse, the business types wanted to actually cater to these
scofflaws. I refused to implement it though, because that's just stupid. We'll
collect the tax, if the clients don't want to actually pay the municipality,
that's their business... but we do have to keep track of who charges it, how
much, when those rates change, etc... it's a a bit of a pain, and even the
services dedicated to tracking this kind of stuff are not comprehensive.

------
frankdenbow
You can make invoices by using their webhooks
(<https://stripe.com/docs/webhooks>). Just email your customers when a billing
event occurs

~~~
liamk
Indeed, and that is what we're doing right now. However, it would be nice if
they dealt with creating nicely formatted invoices and emailed them so we
don't have to.

~~~
jonknee
Where does that end? They're taking your payments, making your invoices, why
not be an OAuth provider for your users? Host your app? Store and ship your
physical products?

I love Stripe. They do one thing well, better than anyone else I have used.
It's not perfect for everyone, but anytime someone tries to be perfect for
everyone they stop being perfect for anyone.

~~~
pbreit
I don't think it's that crazy to wish for emailed invoices from a payment
processor. Unlike the examples you provide, it's a pretty natural and easy
add-on to such a service which many providers (eg, PayPal, Square) do.

~~~
jonknee
PayPal and Square are user facing companies. Stripe is currently strictly a
developer facing company (I mean look at their home page, they have code
samples!).

Stripe provides hooks that allow you to easily send your own invoices--that's
a developer friendly feature that maintains flexibility (everyone will want
invoices to work differently).

------
misshap
I'd also agree that dealing with taxes on Stripe is much more complex than it
should be. It could be that there is no way to simulate time. It would be nice
to see how Stripe reacts after one month subscriptions, or at least a few
days, to get a real sense of how pro-rated prices are calculated in practice.
I'd also like to see a better way to test webhooks in two cases: 1. when they
are not successful and 2. be able to test webhooks with your application
specific parameters.

------
scrame
The author is not suggesting that Stripe handle taxes, he is suggesting that
Stripe have an option within plans to handle different tax rates, rather than
having to create a separate plan for each district that has a different tax
rate, and the ability to have that calculated in to the total charge.

------
Bockit
I quite like the suggestion at the end of the article, that there may be
benefit taking some user-centric design methodologies and applying them to API
design. I wonder if there are any APIs that already do this and what the
general consensus is on their perceived quality.

------
loceng
Great writeup. Hopefully they will implement all of this before the time I
need to use Stripe (still planning to at this point anyhow).

------
Kluny
The diagram is really helpful, thanks. I'm currently trying to use Stripe in a
school project about REST APIs, and it helped make the concept more concrete
in my mind.

------
JimmaDaRustla
Who's the picture of the guy in the banner? It doesn't look like "High
Expectations Asian Father"...

------
nckbz
I feel this is more a case of poor user experience. This is a company who
couldn't mark their service up 10-20% to account for taxes and a unified
price.

...And the fact that Stripe doesn't generate and email out PDF invoices FOR
YOU? Common now.

