Stripe: Killer Payment Processing + ??? = Profit


What you'll be learning

You've already got the unstoppably amazing product, you just need to get out there and sell it! Knowing that almost every payment-processor ever is a huge pain you choose Stripe (you're so wise).

In this tutorial, we'll build a full checkout system for our awesome product and learn all about:

  • Handling the Stripe.js checkout & token process
  • Associating cards and creating Charge objects
  • Creating Stripe customers and connecting them with users
  • Building an embedded and a completely customer checkout form
  • Formatting your card & expiration fields like a pro
  • Being super graceful when things go wrong
  • Organizing everything with Stripe invoices

In Part 2, we'll handle subscriptions, webhooks, discount and more!

Your Guides

Ryan Weaver Leanna Pelham

Buy Access

Questions? Conversation?

  • 2019-05-11 Camille Seuvin

    Thank you Diego Aguiar !

  • 2019-05-11 Camille Seuvin

    Thank you Victor Bocharsky !

  • 2019-05-11 Victor Bocharsky

    Hey Camille,

    Agree with Diego. But along with error messages Stripe also provides you error codes, you can check them here: - thought not sure if it's the full list of possible errors or no - most probably it's full, at least for now. So, instead of translating full strings - better to translate error codes because there's much less chance that they will be changed, though Stipe may tweak error messages.

    So, for example, instead of translating "The card has expired. Check the expiration date or use a different card" translate this "expired_card".

    I hope this helps!


  • 2019-05-10 Diego Aguiar

    Thanks for your kind words Camille Seuvin :)

    I think you can do something similar as we do with security messages. Just get the full string (stripe message) and add a translation, but don't forget to actually translate the text before rendering it


  • 2019-05-09 Camille Seuvin

    Thanks for this tutorial, with your help, I was able to set up my payment system (single payment) with Symfony 4 and the new version of Stripe. So I thank you very much. Your tutorial is worth gold.

    Do you know if it is possible to translate Stripe's message errors?

    Thank you.

  • 2019-04-17 Camille Seuvin

    Thanks !

  • 2019-04-11 Diego Aguiar

    Hey Camille Seuvin

    Not really, although Stripe already re-designed his dashboard but everything been taught in this tutorial is still relevant and useful


  • 2019-04-11 Camille Seuvin

    Hello, is this tutorial outdated?

  • 2017-01-02 weaverryan

    Sorry - no progress to report - it's not one of our highest priorities! I *can* tell you that our Braintree setup is very similar to our Stripe setup: we have all the same webhooks and all the same flow (creating customers, subscriptions, etc). The biggest difference is just learning the differences between the API's themselves. If you have some specific questions, we can do our best to help - we do have a wealth of knoweldge on this... but won't be able to publish anything too soon about it!


  • 2016-12-31 garfieldmypet

    If we have braintree tutorials, it would be excellent! I am looking to implement braintree and after reading the documentation, I am still lost! Please do update us if there are any progress yet. Really in love with your videos!! and thank you so much for your effort.

  • 2016-10-25 weaverryan

    Yes and no :). Our courses mostly fall into 3 different categories

    1) Courses about Symfony where we're teaching Symfony (e.g. anything on
    2) Courses about some topic (REST, Stripe, Behat). We *often* use Symfony in these, but we try to keep the information as "agnostic" of Symfony as possible, trying to use only the more basic features of Symfony so that someone who doesn't know Symfony well can learn the topic.
    3) Beginner courses that are not built on any framework (e.g. and

    So, the trickiest ones are category (2) - it's not very realistic to build real application without a framework... but you also don't want the framework to be a barrier to entry. So, we do our best :).


  • 2016-10-25 Rodolfo Velasco

    So as I'm understanding right now, every course in this site is built on top of symfony framework? I'm telling you this because in the course description you don't mention anything about symfony, so I'm deducting that It's because of every course here is built with symfony

  • 2016-10-25 weaverryan

    Hey Rodolfo!

    Absolutely :). I don't think I used any features that are new in Symfony 3.1 for this tutorial, so everything should work fine. The "newest" feature I use is service autowiring... which is optional anyways (there are a few minor things with autowiring that were improved in 3.1, so it's possible that autowiring may not work in some cases... but it probably will). The biggest difference will be to translate the different directory structure from Symfony3 to Symfony2 - most importantly that bin/console in Symfony3 is app/console in Symfony2, var/cache is app/cache and a few other minor things.

    So yea, get to it! If you have questions along the way, just let us know.


  • 2016-10-25 Rodolfo Velasco

    I have a question here, can I combine the content of this course with symfony 2.8 in order to create payment method in my site?

  • 2016-10-13 weaverryan

    Unfortunately, it's not on the schedule for any time too soon :/. I'll add a vote for you on that topic - which always helps! But we've got some other tutorials we need to get out first before considering it. But definitely, Braintree makes it *somewhat* simple - it's similar to Stripe in many ways. If you do start implementing Braintree and have any questions, feel free to ask.


  • 2016-10-12 jb10210

    PayPal would be great! Any idea when this would be coming?

  • 2016-09-06 Shairyar Baig

    Thanks Victor

  • 2016-09-05 Victor Bocharsky

    Hey Shairyar,

    Yes, it will. Actually, the downloaded course code always contains 2 directories: the "start/" directory holds initial data at the start of course, so you could easily start coding from there when you start a course. The "finish/" directory holds the code of all chapters, i.e. the code after the latest chapter in the course.


  • 2016-09-04 Shairyar Baig

    If I download the source code of chapter 13 in this series, will that include the code of all above chapters as well?

  • 2016-08-25 Dan Costinel

    Life saviour.

  • 2016-08-22 Shairyar Baig

    Could not stop watching it, great job. Can't wait for the next part. You made the integration seem so easy.

  • 2016-08-17 weaverryan

    Awesome - thanks for the nice message :). We're already recording part 2 about subscriptions. And it's big!

  • 2016-08-17 Isaak Ordoñez

    Hello, This was a great tutorial.

  • 2016-08-12 weaverryan

    Awesome! Yes, we use PayPal here on KnpU (in addition to Stripe) - via Braintree. It's not *quite* as smooth as using Stripe, but it makes life much easier than working with PayPal directly. We've had someone else already ask about PayPal as well, so it's on our list!


  • 2016-08-12 Christophe Lablancherie

    This tutorial was so handsome !

  • 2016-08-11 weaverryan

    And part 1 is all up! Next up: - video already recorded. It's big and fun :D

  • 2016-08-11 Garfieldmypet

    Thank you so much for the reply! Would be great to have PayPal integration too as many of us still use PayPal along with other payment processor such as PayPal Express Checkout. I do really appreciate you putting up the Stripe tutorial, as we are planning to add Stripe support soon.

  • 2016-08-10 Victor Bocharsky

    Hey Jovan,

    More videos should be in 1-2 weeks. Stay tuned! :)

  • 2016-08-09 Jovan Perović

    This was sweet. :) Can't wait for future videos :)

  • 2016-08-08 weaverryan


    We'll release this tutorial this week! And I've added PayPal to our list of ideas - we actually integrate with both Stripe and PayPal (via Braintree) here on KnpU - and it was a bit difficult to support both - and interesting topic!


  • 2016-08-06 Garfieldmypet

    Hi, there,

    Will this tutorial be available soon? Can I also suggest that we have a tutorial on how to integrate with PayPal.