# Payment Processor

In many web applications, you are going to be charging your customers. That is, receive credit card, PayPal or Bitcoin for services (well, not Bitcoin). Even though theoretically, you can implement payment processing yourself, it’s not recommended. You’ll have to deal with [PCI compliance](https://en.wikipedia.org/wiki/Payment_Card_Industry_Data_Security_Standard), security issues, different laws in different countries (like GDPR), frauds, refunds, invoices, exchange rates, and a million other things.

There are several big commercial players in this field like [PayPal](https://paypal.com/), [Stripe](https://stripe.com/), [2checkout](https://www.2checkout.com/), and [BlueSnap](https://home.bluesnap.com/). Those have a rich API and you can integrate the payment in your own site.

Here are some things to consider when choosing a payment processing company:

* **Security and PCI Compliance** – Make sure your chosen payment processor has PCI compliance. Any company that handles credit card has to uphold this standard. All the major companies will be PCI compliant.
* **Fees** – The standard fees in the industry are 2.9% of the transaction + 30 cents. Maybe some companies offer a cheaper rate.
* **Exchange Rates** – If you have international customers, they will pay in their own currency. Check which exchange rates the payment processor charges.
* **Ease of API** – One of the most important considerations is the ease of API. Be sure you will have a lot of interaction with the payment processor. You’ll want hooks on transaction events, modification of invoices, adding discounts or more fees, refunds, and so on. Stripe, in particular, is known for it’s excellent API.
* **Popularity** – Big companies will have more forums and internet discussions. With PayPal or Stripe, that’s not going to be a problem. With big companies, you’ll also find more developers familiar with the framework.
* **Data portability** – If you ever wanted to change payment processors, the current processor needs to allow that option. PayPal, for example, just won’t give you your customer’s credit card data. Whereas Stripe [allows to export card data](https://support.stripe.com/questions/export-customer-card-data-from-stripe).
