
Stripe Checkout - illdave
https://stripe.com/blog/stripe-checkout
======
aresant
One of the bread & butter services @ ConversionVoodoo.com is fixing broken
UI's around checkout / carts.

I have yet to meet a retailer that we can't hit at least 15 - 25% improvement
in sales by testing and fixing their checkout.

Take those gains and multiply that times the entire internet and Stripe has
the opportunity to make a major impact on the GDP (I'm only half kidding).

A few years back I shared one of our "low hanging fruit" cart optimization
strategies that almost always works:

[http://www.conversionvoodoo.com/blog/2010/07/proper-
placemen...](http://www.conversionvoodoo.com/blog/2010/07/proper-placement-of-
trust-logos-can-make-a-huge-difference-in-conversion-rate/)

Despite being nearly 3-year old advice, moving security / trust symbols into
the visual field of sensitive information remains an easy conversion gain that
we see STILL work nearly every time to the order of 5 - 10% gains.

But the current reality is that even being able to test your checkout process
on most of the leading "off the shelf" ecommerce platforms is an incredible
pain in the ass (I'm looking at you Magento, Oracle ATG, etc)

If Stripe executes on this idea - scaled cart testing - every dollar that an
organization pays for Stripe fees is easily cancelled out by a properly
optimized checkout form. This is huge.

~~~
kami8845
>I have yet to meet a retailer that we can't hit at least 15 - 25% improvement
in sales by testing and fixing their checkout.

>make a major impact on the GDP

I agree on the percentages (I'm myself a big advocate for A/B testing), but I
do think that a lot of those gains are made because a certain company becomes
a lot "better" than their competitors by employing these kinds of techniques.

Example from my personal life today: I looked at gyms in London. After about
looking at 5 I got slightly annoyed: They tried to hide their prices,
generally broken UI and I felt they were trying to trick me into a high-paying
contract. I then stumbled over site 6: Clear value proposition, not afraid to
ask their prices and super easy to do a first training. Sold.

If every single gym out there had a great website, I still would only get 1
gym membership. Though it would probably help if it didn't cause me so much
time & pain to do it. But most of the pain is not in the checkout process
(punch in credit card numbers). In fact I don't think I've ever not made a
purchase because the credit card form wasn't to my liking, the buy/no buy
decision generally gets made much earlier and that's an issue that I don't
think is for Stripe to fix, but rather for individual companies learning about
& implementing great sales channels.

~~~
loceng
Gains eliminated once everyone on level playing field.

~~~
reitzensteinm
I don't think that's true at all. It will certainly disproportionately benefit
companies that smooth out the kinks before their competitors do, and that will
be eliminated with industry wide adoption.

But take the inverse; if every transaction in the world were made more
difficult (eg, by removing credit cards and bank transfers, leaving cash and
mailed cheques), do you believe that wouldn't shrink the economy?

Worldwide adoption of best practices certainly wouldn't suddenly increase the
worldwide GDP 20%, but the rising tide of demand due to reduced transaction
friction would lift all boats, so to speak.

~~~
loceng
I think people would make better and smarter purchases if things weren't so
easily purchased.

~~~
jfoster
That could be one effect, but another effect could be shrinking of the
economy. (eg. cases where someone would have made a good & smart purchase but
didn't due to amount of effort involved)

~~~
loceng
Why the high value for a constantly growing economy? GDP is the wrong set of
metrics to follow anyway because if you do something that causes pollution and
harm to people and the environment, it's recorded as a positive increase.

~~~
jfoster
I'm not sure whether a constantly growing economy is good or bad. Seems very
multi-faceted and almost meaningless, really. An economy could be growing or
shrinking for so many good or bad reasons.

I think the point we're making is that if people couldn't make the
transactions that they wanted to make, it would definitely shrink. That feels
like a bad reason for why an economy should shrink.

~~~
loceng
Agreed.

------
slig
For those of you reading Third-party JavaScript[1], check out their source
<https://checkout.stripe.com/v2/checkout.js> (it's uncompressed!). There's a
lot of stuff to learn there.

[ 1]<http://thirdpartyjs.com/>

~~~
jashkenas
That is a very interesting bit of code. It would be even nicer if you could
somehow see the original CoffeeScript...

~~~
michaelkscott
Yes. Can someone reading from Stripe please provide the CoffeeScript version?
I'm really interested in checking it out.

------
vezycash
Hey stripe listen. Redirecting to stripe.com is STRESS but its good for users
because of security.

The overlay can (and would) easily be imitated by crooks who want to steal
credit card details.

It would be much safer for users if you offer a paypal-like service where you
store their credit details before hand. If you do this, then this is what
should happen.

If the users has already logged in, then the overlay would simply be selecting
the amount to pay (which coincidentally is shorter for users) and optionally,
which source of fund to deduct from if user has multiple credit cards stored.

Security of funds is more important than ease of use.

------
eagsalazar2
Unless you are doing very simple ala carte purchases this button reduces total
complexity by maybe 5%. If you are doing subscriptions, with coupons, with
trial periods, creating users at the same time, wanting to show the user their
coupon/trial status, last 4 of their CC, send emails on failed payments,
cancel accounts on failed payments, let people update their card, etc, etc,
etc it is still very complicated to get all that integration correct.

What stripe needs to do is sponsor the development of an official rails gem
that handles all these things like ActiveMerchant (plus views people can then
hack on like normal rails views). Many people are implementing these things
over and over again, probably including stripe developers themselves for their
own side projects. It is a huge waste of effort and source of bugs for
everyone.

One nicely written gem that integrated easily with common practices for User
models and people could integrate stripe with a simple "stripe_user
:subscription, :email_notify" whatever. That would be awesome.

I realize rails is not the entirety of their business but I'm just saying it
would make me and a lot of other people happy.

~~~
dasil003
It's not clear to me what you are envisioning here.

ActiveMerchant is a payment gateway abstraction layer, and in fact it already
supports Stripe. It has two use cases: A) legacy gateways with shitty APIs and
libraries (eg. Authorize.net) and B) theoretical portability between gateways.
At my company we recently swapped out AM for the Braintree gem because the
lowest-common denominator made it inferior for interfacing against Braintree,
and the payment interface surface area in the app is small enough anyway that
the theoretical advantage if we switch payment providers is negligible anyway.

Stripe if anything has a better API and ruby library than Braintree (Stripe
uses a lot of Ruby internally is my understanding), so what's missing?

A higher-level gem that gives you plugin payments would necessarily start
making assumptions and compromises that would quickly whittle down the number
of ideally-served use cases, whereas the Stripe API as it stands now is at the
granularity to fit the maximum number of use cases without being over-
complicated. If you want to make something easier I think you veer into clumsy
high-level components that is more akin to Drupal than Rails.

~~~
eagsalazar2
Sorry, what I described doesn't jibe with my comparison to ActiveMerchant as
you pointed out. However it would still be badass to get a dropin solution for
using Stripe in more complicated applications. And I know Stripe has a better
API than alternatives but that doesn't mean it isn't still tricky.

I'm not sure I agree that a higher level gem would be of limited use or only
of use to a few applications. I think it can definitely be done in a way that
would have helped me big time in all three applications I've integrated with
Stripe despite their unique needs.

------
callmeed
I'm hesitant to add this to <https://www.bngal.com> because it seems like
there could be usability issues if you need to capture other information on a
single checkout form (email address, shipping address, shipping method, etc.).

It seems like a customer would do the following:

\- Fill out all data _except_ billing info

\- Click the "Pay with Card" button

\- Overlay comes up, they enter billing info, then click "Pay $X"

\- Overlay closes, token is passed back to form, form is automatically
submitted via JS

The proof is in testing and data of course, but my gut tells me people prefer
just a single form and button. That's why I like the original checkout method.

The mobile part is great BTW.

~~~
nicoritschel
Collecting addresses is as simple as adding a parameter:
<https://stripe.com/docs/checkout>

~~~
gregsadetsky
Although it is possible to collect the customer's billing address (using the
'address' option) using the Checkout form, it isn't (yet?) possible to add
other, arbitrary fields.

For instance, collecting an email address would have to be done elsewhere.

~~~
jh3
Not having the ability to add an email address field to the checkout form is a
real deal breaker for me. I wonder why they did not implement an optional
email field.

------
juzfoo
Just confirming, this is the same solution that was earlier published as
Stripe Button right?

~~~
gregsadetsky
Yes. The Stripe Button documentation even redirects now to
<https://stripe.com/docs/button>

Fortunately, the "old" Button <script> still works for now. i.e. <script
src="<https://button.stripe.com/v1/button.js> ...>

------
orangethirty
Dear stripe,

Hurry up and offer a _ckeckout with stripe_ option. I'm tired of dealing with
Paypal. Thank you.

~~~
icelancer
Good god yes.

That being said they're making insane progress. I am very happy with them.

------
jhuckestein
This is great, good work!

It looks like `token` is the only callback you can pass to the popup and it
receives nothing but the stripe token. Is there any reason not to include more
information?

For comparison, this is what stripe.js gives you

    
    
      {
        id : "tok_u5dg20Gra", // String of token identifier,
        card : { // Dictionary of the card used to create the token
          name: null,
          address_line1: "12 Main Street",
          address_line2: "Apt 42",
          address_city: "Palo Alto",
          address_state: "CA",
          address_zip: "94301",
          address_country: "US",
          country: "US",
          exp_month: 2,
          exp_year: 2012,
          last4: "4242",
          fingerprint: "BzXGiNioaEH4iECL",
          object: "card",
          type: "Visa"
        },
        created : 1358552058, // Integer of date token was created
        currency: "usd", // String currency that the token was created in
        livemode: true, // Boolean of whether this token was created with a live or test API key
        object: "token", // String identifier of the type of object, always "token"
        used : false, // Boolean of whether this token has been used,
      }
    

My app uses this information. So as much as I want to, I can't just drop in
the new code.

I could use Stripe.getToken but I don't see why I need the extra roundtrips to
the server (one for stripe.js, one for getting the info about the token)

 _Edit: Never mind, I didn't read the docs carefully enough. The callback
receives all that, my bad. In the stripe.js docs the parameter is called
response and in the new one it's called token. Sorry ;)_

------
goronbjorn
This is kind of similar to Gumroad's Overlay: <https://gumroad.com/overlay>

~~~
mstefanko
It is, and oddly enough they both use "4242 4242 4242 4242" as the test card
number.

~~~
asselinpaul
there isn't many test numbers if I can remember correctly. 4111-1111-1111-1111
is another.

~~~
kapilkale
Oddly enough Stripe won't accept that as a test number.

~~~
sheena
Here's the full list of cards we let you use for testing, including some that
trigger specific responses:

<https://stripe.com/docs/testing#cards>

------
josscrowcroft
Christ alive I hope Stripe get over to the UK soon.

~~~
StavrosK
Paymill is a clone that looks nice: <https://www.paymill.com/en-gb/>

~~~
nhangen
Please don't support that company of cloners (Samwer).

~~~
buro9
Why not?

Stripe isn't here, and any desire to support their innovation whilst waiting
for them to arrive leads to European startups potentially missing opportunity.

It's our responsibility as European startups to get money through doors, and
if Paymill is here doing that for us today, then give us a good reason not to
use them.

If and when Stripe arrive, I'm sure that many HNers would switch to Stripe as
the innovation and support is great. But fact is, they are not here yet... and
the only thing that matters is how to process payments in a way that is smooth
and minimises our dev time to implement.

If Stripe want our business, then on the day they launch across Europe then
they can fight for it.

Until then, Stripe are not here... they aren't even a contender because they
are not here. Startups are not going to wait for them on a promise that it
will be "soon".

The great thing about the Paymill API is that it is such a Stripe rip-off that
if we implement out payment flow based on their API, then we have in fact
given ourselves the least painful route to later transition to Stripe.

Implementing Paymill gives us a more likely route to transition to Stripe than
implementing one of the incumbents flows (PayPal, MoneyBookers, etc).

So of all options actually available to European startups, Paymill look pretty
good.

~~~
nhangen
Because these guys are notorious for copying every startup in the valley:

<http://www.pinspire.com/> <http://www.wimdu.com/> etc

------
ChuckMcM
That is really nice. Love the integration hooks as well. Next up is a 'we know
who you are' stripe cookie that would let you "pay with stripe" on web site A
without entering any of this data. Or, for the paranoidish "Enter your
StripeID: xxxx" pause "Enter the code we just texted you: xxx" thanks!

~~~
jarek
Paypal 2.0

------
askar
Stripe is pretty cool. We've been using it on
<http://www.IslamicEventFinder.com> and was the best library experience to
integrate. A few things we noticed, the CVC check is not as impressive, it
charges the card even if the CVC is not correct, at least we've seen in a few
instances. Other than that it looks solid.

Would prefer some sort of a seal or something on the popup to indicate that
their payments are safe, a few clients asked. At least an option to customize
displaying that seal would be great and also may be the type of credit cards
Stripe accepts.

Is this Checkout thing same as Stripe.js? I didn't get a chance to checkout
(lol) this fully yet!

~~~
pc
> it charges the card even if the CVC is not correct

Some users want that behavior. But we're rolling out tools that give you the
option to decline charges if the CVC fails.

~~~
driverdan
Why would any user accept cards with invalid info? That's just asking for
chargebacks.

~~~
eridius
Because the assumption is it's a valid charge but the user simply mistyped
their CVC (or don't understand what that number is and put in the wrong thing
entirely). If these purchases are rejected, the user may never complete the
sale.

------
sjs382
This is great, and I've implemented it on two different sites so far. It's
great to be able to tell a client "Just go to Stripe.com, link it to your bank
account, and add my email to the account" rather than setting it all up from
scratch.

------
tocomment
I'm confused, so say I put this button/form on my site.

How does my app tell the button the final price?

How does the button send the token to my app?

What does the user see after they pay? Does the button display its own receipt
or do I build that?

~~~
maccman
The charging isn't done on the client, it happens later on the server. All
this checkout does is turn a user's credit card into a token that you can
safely send to your server. Then, server side, you can charge the card or sign
the user up for a subscription.

So, in other words the price is client-side, and only used for display. The
token gets submitted in a form to your server. And you build the receipt page.

~~~
shennyg
Are customers not concerned that stripe is storing their CC info for any use
in the future?

I normally uncheck the "Save This Card" option, with Stripe they don't allow
this.

------
sachinag
Why ask for the name on card? That's not auth'ed.

~~~
pc
Many users want to collect names, and it can be helpful for fraud purposes.
We're still evolving and testing, though. We might not keep it forever.

~~~
Nycto
At a previous company, we also found it to be a usability issue. Customers
were confused when they were looking for a place to put their name, but
couldn't find one. Incidentally, we encountered the same problem when we
removed the "State" field from the address section (we could glean it from the
zip).

Sample size of one company, so take this for what it's worth.

~~~
mathrawka
I like having the city and state filled from the zip code. That way the user
can see that it is being used and will not be confused. Plus, pushing a button
to enter text that you normally would have to spend time filling out feels
like a reward.

~~~
schiffern
>pushing a button

Why doesn't it auto-fill when the user types a valid zipcode? Seems like cheap
satisfaction.

~~~
mathrawka
Still not common enough that it would confuse most people.

------
silverlight
Does this mean the older Stripe Payment "Tag" is deprecated? We're currently
using it to great success, but I'm no longer seeing it mentioned in the docs.
I don't really want my users to have to press an additional button -- right
now as soon as they're on the payment page the form is right there waiting to
be filled in.

~~~
pc
Yep, we think that this is a better solution than the tag (which we never
really launched). But I'm glad to hear it's working well for you!

~~~
silverlight
Well, for what it's worth, I think it would be worth offering the ability to
embed this both as a button and as a part of an existing page without the
popup. In the meantime, I'll continue to use the payment tag.

------
pclark
Has anyone ever tried making the credit card box freeform? Where there are no
rules. Just type your credit card number, your 3 digit security code, your
expiry date, and name, and the form works out what entry is what data. I
wonder if it would be easier to out weight the confusion of a user trusting a
computer.

~~~
schiffern
Small point: You don't even need the name.

Big point: I wouldn't want it user-facing (e.g. the ubiquitous self-checkout
that is online shopping), but it might be a nice tool for power users (e.g.
cashiers).

------
vickytnz
Yeah, all good and well … but I just used this with a UK Visa Debit card
(which are pretty strict in terms of acceptance) on Gumroad, and not only did
the thing not verify without a name, but my card got flagged for fraud and
frozen until I contacted my bank! I'm pretty nervous about using it now.

~~~
ceejayoz
That's extremely unlikely to be related to the Stripe checkout widget.
International purchases often raise fraud flags.

~~~
vickytnz
An international purchase that doesn't ask for the name on your card though?
(I know most check as my CC has a weird format, if it's put in wrong it
doesn't validate.)

------
frankdenbow
Added this to <https://www.startupthreadsmonthly.com> a few weeks ago and have
had good success with it. Easy to implement and trigger from js. Still pulling
in conversion numbers but users have said they like the flow.

------
slajax
Very cool. Good job.

How about the ability to subscribe someone to multiple subscriptions now?

 _nudge nudge_.

------
knes
gaaaahhh please let me play with it! Can't you come to europe, or at least UK
?!?!

pweassee

~~~
cristinacordova
You can be notified the moment we launch by simply giving us your email here:
<https://stripe.com/global>

------
substack
What a crazy coincidence, I just factored out my company's payment widget code
into a reusable module a few days ago: <https://github.com/substack/pricing-
widget>

Basic example: <http://substack.net/projects/pricing-widget/basic/> Fancy
example: <http://substack.net/projects/pricing-widget/browserling/>

------
kemiller
Can you style it to match your page?

~~~
maccman
Yes, you can use your own submit button with the JS API:
<https://stripe.com/docs/checkout>

------
coderrr
Has anyone else not been receiving 'charge.succeeded' events on their Stripe
webhooks? We have been receiving all events except that one, even when all
charges are succeeding as verified through the management panel. This is a big
problem as that is the event that's used to actually process a payment and
create a new account.

The problem seems to have been going over for around 8 hours now.

We've received no reply from their support in 4 hours.

Anyone have any ideas how to get in contact with them at this time?

------
humbyvaldes
This is cool but Im confused about the workflow

On a signup form:

1\. Enter email

2\. Enter password

3\. Click the Stripe checkout button, div popup, fill in and click pay, popup
goes away, Token created and added to the form

4\. User clicks submit on the original form

Is that right?

~~~
pc
The idea is clicking submit on the host form would trigger the Checkout. Then,
after you enter your payment details, the whole thing submits.

~~~
humbyvaldes
Ah! got it, thanks

------
Goopplesoft
Great looking checkout form. Stripe's adding some clutch features, somewhat
seem to be evolving for just payments for developers to payments for
developers and others.

------
csense
The site describes the popup as an "overlay." Another commenter used the words
"div popup."

I'm writing this on a machine with Chromium and Firefox on a nearly new Linux
Mint 14 install (all packages are up-to-date) with no browser extensions or
other weirdness. When I click the "Pay with Card" button in the article, both
browsers open it in a new tab.

Are my browsers broken, is Stripe's code broken, or is there some
miscommunication about what the button is supposed to do?

------
jchung
Recurring payment friendly?

~~~
pc
Yeah, you can definitely use this with recurring payments. Once you attach the
token created by the Checkout to a customer, you can bill the customer
whenever you like. (There's more at <https://stripe.com/docs/checkout>)

~~~
mcherm
That link is broken (has an extra period).

~~~
pc
Thanks, fixed.

------
koa
Does anyone know of a tutorial or some skeleton code samples that allows you
to build an embeddable website widget like this?

From what I can see, there are 2 iframes for the button and the hidden
overlay. Clicking on the iframe button enables the overlay via some sort of
iframe to iframe communication on the parent(host) page

------
tocomment
Can anyone point me to a tutorial showing me how to integrate stripe with
Django?

I think it would be clearer if I saw some examples.

~~~
maccman
Here's one integrating Stripe with Flask -
<https://stripe.com/docs/checkout/guides/flask>

------
terrellm
Wow looks nice. Is an SSL certificate still required since the JS is on
Stripe's secure server?

~~~
latortuga
Yes, absolutely 100% yes an SSL certificate is still required. Look up mixed
content warnings and why they're a bad thing.

~~~
ceejayoz
You get a mixed-content warning for HTTP on HTTPS, but not HTTPS on HTTP as
you're already insecure on the original page anyways.

------
tocomment
Is there a way I can dynamically change the data-amount, data-name, and data-
description fields with Javascript depending on what the user clicks?

I'm picturing the user clicking a checkbox for an add-on product without
having to make a round-trip back to the server.

~~~
pc
Yeah, there's a full JavaScript API for setting these dynamically. Check out
(no pun...) <https://stripe.com/docs/checkout>.

------
programminggeek
This is going to lead to phishing. Obviously the possibility is already there,
but something tells me that once users get used to this, it will be lead to
credit card fraud.

Not on a secure site? Well, the stripe widget just popped up, so it looks
legit...

You get the idea.

~~~
ceejayoz
You shouldn't use it on an insecure site, just like any other site requesting
credit card credentials. If the site's insecure someone can MITM the whole
thing.

------
gfodor
Any Stripe employees want to comment on the idea of integrating this with a
native iOS app via a web view? My guess is it will still be too clunky vs
building your own, but the benefits of continued improvement may be worth it.

~~~
mikeevans
Does Apple allow that, without taking their 30%? I was under the impression
that's why Amazon doesn't allow you to purchase books through the Kindle app
anymore.

~~~
MBCook
Apple's cut doesn't apply to physical goods, which is how the main Amazon app
gets by. If you're selling some real widget you're in the clear.

~~~
thisishugo
I feel like an idiot for only just realising that this is why eBooks can't be
purchased from the Amazon app, but can be from the mobile site.

------
purephase
Very neat.

Just wanted to add, the demo works if you use the 4242 sequence for all fields
(YMMV).

~~~
agrona
I don't think I've ever seen a demo card that doesn't accept any valid string
for expiration/name/CVC.

~~~
ceejayoz
PayPal's PayFlow Pro product would return valid for 1XX, 2XX, 3XX CSCs and
different errors (mostly CSC verification related) for 4XX, 5XX, 6XX, 7XX,
8XX, 9XX. Was quite useful for testing.

~~~
purephase
I think you just pointed out about the only useful thing out of the entire
PayPal integration experience.

~~~
ceejayoz
I'd love to know how it got through their formal Make Developers Hate Us
processes.

------
MicahWedemeyer
I love it, but for my app we charge subscriptions with a free trial up front.
Do you have any suggestions on how to phrase the wording so it's clear that
the charge isn't going to happen right away?

~~~
pc
Yes -- you can change the text of the button in the overlay. See the "panel-
label" config option: <https://stripe.com/docs/checkout>.

~~~
aculver
Hmm. Thanks for the tip! So, I'm setting:

    
    
      data-panel-label="Begin Free Trial"
    

But on the button I'm still seeing:

    
    
      Begin Free Trial $20.00
    

Not sure if this is the intended behavior, but I just can't see how it makes
sense for a free trial.

~~~
pc
Ah; right, we should change that/add an option to override. Can you email me?
patrick@stripe.com.

------
nickporter
Thank you for mobile support! You guys are truly awesome. If only you would
allow me to accept payments without a business and bank account number, like
PayPal does...

~~~
boucher
Do you not have a bank account?

~~~
nickporter
Not yet for my startup/side project, no :/. No business number either.

~~~
boucher
Why not use your personal bank account?

~~~
nickporter
Yes, I could use my personal bank account. I guess the real blocker is the
business number.

~~~
boucher
We don't require a business number of any kind, you can sign up as an
individual (the question will be "business type", and individual is one of the
options).

------
zerop
Stripe, When are u going to support Micropayments??

------
tocomment
What do you recommend if I need to support users without Javascript? (I'm
guessing this button isn't for me?)

~~~
tomschlick
Make users turn on javascript or just use a regular form.

------
zyang
Does it do address verification?

~~~
pc
Yep; see the "address" configuration option at
<https://stripe.com/docs/checkout>

------
pdsull
Looks great. Any plans to include a coupon code field with this?

------
pbreit
Good idea but I hate the box rising from the bottom.

------
melvinmt

       data-amount="2000"
    

It looks nice but every payment solution where the client can arbitrarily
change the amount they're going to pay is inherently flawed.

~~~
pc
The amount is just for display purposes. You then charge whatever amount you
want on the server.

~~~
prezjordan
Could you deliberately deceive the user then? Put say, amount=500 and actually
charge $20?

~~~
pc
Sure -- but you can always deceive the user.

~~~
prezjordan
I guess my real question is - is there another page where it securely says the
actual amount? (Does that make any sense?)

~~~
nodesocket
The amount is charged server-side, no way.

------
jcarden
Awesome! I'm ready to use this.

------
flexterra
I'm going to use this to replace Paypal's "Buy now" button on my blog

------
pilom
Finally!

------
madaxe
It's nice that you say it works in all major browsers, but the mobile support
is poor. No chrome.

Short-sighted... Mobile is growing at a crazy rate in ecommerce.

------
meh01
Needs support for a list of items (like PayPal shopping cart API
functionality), not just one item.

