21/02/2023

Why stripe is such a good first payment gateway for many projects

Stripe is a payment services provider which allows individuals and businesses to make and receive payments.

By Rauvoun Walker in stripe

blog main image

What is Stripe?

Stripe is best suited for businesses that work primarily in an online capacity although point of sale is also supported using their own terminal. We believe that Stripe is an ideal payment services provider for projects due to the extensive API support which is explained in greater detail below.

API and Documentation

Stripe’s API is quite extensive with access to almost all the features that it has available. A user could programmatically create a product, create a customer, and charge said customer for the product they just created.

Stripe also features Webhooks which can be created programmatically or via the Dashboard to kick off API calls as soon as a specific event has happened. An example of this could be a scenario where an API needs to insert a note of each transaction that takes place for auditing purposes. The user could simply create a webhook, point it to their API endpoint and as soon as a charge goes through Stripe will ping that endpoint. The user is not limited in this regard either, with over 185 possible event types to choose from.

Requesting additional information on objects is also supported using the expand feature. An example of this would be a Checkout Session which normally just returns a Customer ID with which to link a customer. Using expand, the customer object itself would be returned so that the user saves on the number of calls to Stripe that are made. The user can chain these expands to fetch data via their relationships to other entities.

In addition to the previously mentioned API functionalities, Stripe also has extensive documentation on it. The documentation includes but is not limited to a list of endpoints with supported HTTP request methods, a list of attributes for each object type, as well as code samples in 10 languages along with expected responses. Stripe also has a list of test cards to use to test a myriad of possibilities including an expired card, a lost card, a Visa card, and a debit Mastercard. Stripe’s documentation also includes useful diagrams to help developers visualize flows and fully understand how they work.

Stripe includes Rate Limits to prevent bursts of traffic which can affect user experiences. Most of the APIs allow up to 100 read and 100 write operations per second when in Live Mode and up to 25 read and 25 write operations per second when in Test Mode. The Files API which is used to access files that are hosted on Stripe’s servers (such as dispute evidence), is limited to 20 read and 20 write operations per second. Finally, the Search API which is used to lookup objects using pagination (such as searching for all payments made during a specific time period), is also limited to 20 read and 20 write operations per second. A concurrency limiter is also in place to limit the amount of requests that are active at any given time which can prevent users from spamming the system with many long living requests in a short period of time.

Stripe has a few SDKs to interact with a user’s integration. Server side SDKs reduce the amount of work that is required to use the REST API by reducing the amount of code that a developer needs to write. These SDKs are available to .Net, Python, and Java to name a few. Web SDKs provide integrations with Stripe Elements (a set of prebuilt UI components to build a web checkout flow) which allows developers to create payment forms that securely collect customer details and other sensitive information without having to handle it themselves. These web SDKs are available to ES Modules and React Native. Mobile SDKs provide libraries to help developers create native apps for iOS and Android. The React Native SDK also assists in integration of Stripe to apps that have been built with React Native. Lastly, Stripe also has over 15 community supported libraries which helps cover areas such as Flutter and Dart that don’t have an “official” Stripe SDK.

Lastly, Stripe currently has over 60 code samples for perusal on their GitHub page.

Pricing models (and cost per transaction)

Stripe is free to set up and use without a monthly or annual fee. Stripe instead charges per transaction. Online payments are charged at 2.9% plus 30 US cents per transaction with an additional 1% charged if currency conversion is required and/or due to using an international card.

Businesses with large payment volumes, high value transactions, or unique business models can also have a customized plan which offers large volume discounts, and interchange pricing. To apply for a customizable plan a business simply needs to contact the Stripe sales team.

The standard payout time is two business days but users can set scheduled payouts daily, weekly, monthly, or a custom schedule. Stripe also allows for instant payouts (within 30 minutes of a transaction) at an additional cost of 1% of the transaction amount plus 50 US cents per transaction.

Stripe includes features such as 3D Secure authentication, custom payment links, and updating expired or renewed cards for customers that are saved on the platform for no additional charge.

As far as pricing models go, Stripe has Flat Pricing, Tiered Pricing, and Variable Pricing to name a few. Flat pricing is as straightforward as it gets, using a model called good-better-best. This is used in scenarios where, for example, the product has many tiers at flat rates, such as a basic tier, a standard tier, and an enterprise tier.

Tiered pricing represents scenarios where the unit cost can change based on the quantity purchased or the amount of usage. An example of this would be, a product where the first five items are charged at one price but subsequent items are charged at a slightly discounted rate as a way to entice customers to spend more. In a scenario where a customer wishes to buy eight items, this would result in the customer paying full price for the first five, followed buy the discounted price for the additional three items. Another example would be, a product where the first five items are charged at one price but purchasing six to nine is charged at a different rate. In a scenario where a customer purchases seven items, this would result in the customer paying the six to nine rate for all seven items.

For many projects these pricing models would be more than sufficient, providing many options and a lot of flexibility.

Subscriptions and recurring payments

Stripe allows users to make recurring payments in a subscription model as well. This is useful for scenarios where a customer would be paying for access to functionality or features. In addition to this, users can also create coupons or promotional codes to apply discounts to their subscriptions (and one time payments). Stripe creates Invoices to represent how much money a customer owes and can be automatically or manually created programmatically or via the Dashboard. Users can alter upcoming invoices to change the underlying price, the quantity, apply a trial period, or add a coupon.

Country and currency support

Stripe accepts payments from anywhere in the world although they only support business from 47 countries at the moment. A country does not need to be supported for business in order for their currency to be supported. For example South Africa is not one of the supported countries however the Rand is a supported currency. There are 3 sections in which currencies come into play in Stripe, the customer’s card currency, the currency of the charge, and the currency of the destination account. So a customer could pay in Rands for a product charged for in US Dollars whilst the business selling the product receives their payment in Pounds.

Security

Stripe is a certified PCI Service Provider Level 1 (service providers that store, process, or transmit more than 300,000 card transactions annually) which is the most stringent level of certification available in the payment industry. They use HTTPS using TLS(SSL) for all of their services including their public dashboard which ensures secure connections. Stripe also regularly audits the details of their implementation to keep on top of any new threats to their system.

Stripe encrypts all card numbers with their decryption keys stored on separate machines. None of their internal servers can obtain plain text card numbers. Stripe’s infrastructure for storing, decrypting, and transmitting card numbers also runs of a separate hosting environment from their API and their website which ensures that a vulnerability found in one cannot be used to access the secured information. Stripe also provides rewards for finding and disclosing vulnerabilities in their infrastructure.

Conclusion

In conclusion, for the reasons mentioned above Stripe is a wonderful choice for a first payment service provider for projects for its ease of use, modularity, and excellent documentation. A large community driven library of SDKs also assists in providing ease of use to many languages and frameworks.

Get Started With Full Stack!

Ready to transform your business? Contact us today to discuss your project needs and goals.