Dear StackShare Community,
I am seeking inspiration on creating a billing & subscription stack and came across this wonderful website and community.
From what I understood so far, I need something like Stripe or Braintree to collect payments without dealing with PCI compliance or setting up merchant accounts, etc... Additionally, services like Chargebee, Recurly, Chargify, etc. are said to make life easier when dealing with recurring billing.
Stated below, I've tried to give you some context on what I want to achieve. I am very curious about your ideas and how you'd configure an optimal stack.
Project context (very high level):
Loyalty program for local merchants (stores, restaurants,...).
Customers support their community and merchants by shopping local.
Merchants grant points to customers based on a customer's value spent in a store, restaurant, etc.
Customers can redeem their points at any participating merchant.
Billing / Subscription scenarios to be considered:
(affecting merchants only)
One-time setup fee
What: Merchant pays a setup fee by signing up for the service
Where: Order placed on the website
Monthly retainer fee
What: Merchant pays a monthly recurring retainer for the service.
Where: Order placed on the website
Manually initiated payment
What: Merchant initiates a payment to top up his virtual points wallet. E.g. pays 100 USD to top up 100000 points which then can be used by the merchant for granting points to customers.
Why: Points issued to members need to be paid for by the merchant. We first considered billing the merchants post-ante, e.g. monthly based on the points they've granted to their customers in the last 30 days, but this seems too risky: If they can't / won't pay we'd still have to pay out points to the customers (technically to the merchants where the customers redeem their points). Thus, the pragmatic idea to reduce risk by having the merchants to pre-pay for their points by topping up their balance.
Where: Web application (with the merchant logged in)
Nice to have: Opt-in for automatically initiated top-ups if a merchant's balance falls below a certain amount.
What: After every transaction (setup, retainer, top-up,...), we need to automatically issue and send (E-Mail) an invoice to the merchant.
Nice to have: Customer portal with all their invoices.
Other potentially relevant parameters
Currency: Only Euro
Country: Only Germany (so far)
Tax: Only one tax rate
Payment for setup & retainer: Credit Card; ideally SEPA Direct Debit (but that still causes headache due to the SEPA regulatory and risk of chargebacks still after weeks), PayPal?
Payment for top-up: Same as above plus any other that makes sense (Klarna, Sofort, PayPal...)
Again, thank you very much for sharing your ideas and thoughts! I'd highly appreciate any input :-)
Overview: To put it simply, we plan to use the MERN stack to build our web application. MongoDB will be used as our primary database. We will use ExpressJS alongside Node.js to set up our API endpoints. Additionally, we plan to use React to build our SPA on the client side and use Redis on the server side as our primary caching solution. Initially, while working on the project, we plan to deploy our server and client both on Heroku . However, Heroku is very limited and we will need the benefits of an Infrastructure as a Service so we will use Amazon EC2 to later deploy our final version of the application.
Serverside: nodemon will allow us to automatically restart a running instance of our node app when files changes take place. We decided to use MongoDB because it is a non relational database which uses the Document Object Model. This allows a lot of flexibility as compared to a RDMS like SQL which requires a very structural model of data that does not change too much. Another strength of MongoDB is its ease in scalability. We will use Mongoose along side MongoDB to model our application data. Additionally, we will host our MongoDB cluster remotely on MongoDB Atlas. Bcrypt will be used to encrypt user passwords that will be stored in the DB. This is to avoid the risks of storing plain text passwords. Moreover, we will use Cloudinary to store images uploaded by the user. We will also use the Twilio SendGrid API to enable automated emails sent by our application. To protect private API endpoints, we will use JSON Web Token and Passport. Also, PayPal will be used as a payment gateway to accept payments from users.
Client Side: As mentioned earlier, we will use React to build our SPA. React uses a virtual DOM which is very efficient in rendering a page. Also React will allow us to reuse components. Furthermore, it is very popular and there is a large community that uses React so it can be helpful if we run into issues. We also plan to make a cross platform mobile application later and using React will allow us to reuse a lot of our code with React Native. Redux will be used to manage state. Redux works great with React and will help us manage a global state in the app and avoid the complications of each component having its own state. Additionally, we will use Bootstrap components and custom CSS to style our app.
Other: Git will be used for version control. During the later stages of our project, we will use Google Analytics to collect useful data regarding user interactions. Moreover, Slack will be our primary communication tool. Also, we will use Visual Studio Code as our primary code editor because it is very light weight and has a wide variety of extensions that will boost productivity. Postman will be used to interact with and debug our API endpoints.
I like the tech stack you guys have selected. You guys seem to have it all figured out, and well planned. Good luck!
RDBMS like Postgres can also store, index and query schemaless data as JSON fields, while also supporting relations where it makes sense. A document model is actually a downside, since usually data will still have relations, and it makes modeling them inconvenient.
We use GoCardless to simplify the way clients and partners pay for our services. What intrigued us is the quick and easy ACH feature that gives our clients the option to log in with their bank account and shoot the funds directly to our account. The fee, compared to Stripe is less. Stripe and PayPal charge 2.9% + 30c and Stripe also forces the client to enter in all of their payment details manually and then if the payment doesn't work, the client has to try all over again. GoCardless charges 1% + 25c which is much more reasonable dealing with the large projects that we are currently working on.
We integrate GoCardless with Xero to easily send out quick invoices, receive the funds and track all revenue in one place.
Hi there, I am trying to figure out if it's worth creating a Braintree account to do subscription billing in my Shopify store. The goal is to have as little custom code as possible for the store but be able to do subscription billing services, we already have a PayPal business account, but from the looks of it, we can't use PayWhirl directly with Paypal.
I represent Showwcase, which is a network built for coders.
We're introducing a paywall for content creators on the platform to start accepting payments from their Followers for premium and unique content over and above the general free content. We are internally considering either Stripe or PayPal to handle this for us.
If we take the pricing out of the debate, what's the go-to choice when choosing which to integrate? Our current standpoint is that Paypal has wider consumer adoption, and since most creators are individuals, it makes sense to just use Paypal because they already have an account. However, our business uses Stripe, and so it makes it easier if both the platform (Showwcase) and creators to be on the Stripe platform. That being said, if creators don't already have an account, they will need to sign up with Stripe on the spot, which is a friction point.
I would like to hear the pros and cons in developer environments as well as any other things we might not know.
I prefer Stripe for developers' ease of integration and PayPal for providing the simplest user experience (i.e., improved revenue.) In my experience, neither platform requires a user register to pay via credit card. However, as noted, many people have a PayPal account, which allows quick and easy payments through a "more" trusted name.
I used Stripe and Paypal and settled on Paypal for the customer. However, the PayPal web hook back end is a complete mess (at least in PHP). Unless they have improved very recently, PayPal web hook integration is poorly documented and barely supported with bits and pieces of important code on GitHub and elsewhere. I can't speak for other languages. But given the popularity of Paypal (i.e., improved revenue), I decided to keep using Paypal after I got the web hook integration worked out.
PayPal is a dinosaur and a nightmare to work with, both in terms of API as well as on the business side. We support both because our A/B tests showed a material increase in conversions by offering both, but I would drop PayPal in a heartbeat if I could. Stripe is a joy to work with.