Since version 2.3 Subscriptio comes with a new built-in PayPal payment gateway extension which uses Express Checkout API. This extension enables both regular one-time payments as well as automatic subscription payments.
For automatic payments it specifically uses two PayPal Express Checkout API features: Billing Agreements and Reference Transactions.
Billing Agreement is the agreement established with user in order to be able to make transactions without the need for user to login and confirm them every time.
Reference Transactions is the type of such transactions, that "reference" the previously approved transaction (in which billing agreement was established).
Here's how to set up and use this payment gateway:
- Enabling Reference Transactions
In order to be able to use automatic payments, you'll need to make sure you have Reference Transactions enabled on your PayPal account. To do that you'll need to contact PayPal support and ask specifically for "reference transactions" (not to be confused with "recurring payments", "subscriptions" or other functionality).
When contacting PayPal support, you may get an automated response with some links to their knowledge base. In this case, simply reply to this message to get through to PayPal support staff.
PayPal has some requirements that need to be met before they can activate Reference Trasactions for your account. Those requirements aren't disclosed and you may not be allowed to use Reference Trasactions at all, with or without explanation what requirements your account doesn't meet. In general, your account should be trust-worthy from their point of view: relatively big volumes of transactions, returning customers, positive rating, etc.
PayPal may ask some information about your business and why you need Reference Transactions exactly. You can answer that you're using WooCommerce extension Subscriptio to sell subscriptions on your site, and it uses this feature to make automatic subscription payments.
Note that enabling this feature may require you to pay a monthly fee to PayPal.
Unfortunately, if PayPal refuses to enable Reference Trasactions on your account, you will not be able to take advantage of automatic billing and your customers will need to make manual payments at the beginning of every billing cycle. - Make sure you enable and use the correct gateway
While there's a lot of gateways created to accept PayPal payments in WooCommerce (like PayPal Standard bundled in WooCommerce itself) and some could be based on Express Checkout API or any other API, only built-in gateways (or those third-party ones that had added and declared Subscriptio support) will support automatic payments.
To use it, you'll need to enable it first in Subscriptio's settings: in your admin dashboard navigate to "Subscriptions" section, then open "Settings", and then select "Payments" tab.
There you'll need to check the "Enable PayPal Express Checkout" checkbox. - Configuring settings on WooCommerce Checkout page
On the same "Payments" tab you'll see "Settings" link, that'll lead you directly to specific WooCommerce payment gateway settings page (which you can also find by navigating to WooCommerce > Settings > Checkout > PayPal Express Checkout by Subscriptio).
On that page you'll need to make sure that "Enable/Disable" checkbox is also checked. But still - it won't be working until you enter API Credentials on this page. - Obtaining API Credentials
To make calls to PayPal API, you'll need to obtain API Credentials for Live and/or Sandbox accounts. This process is described in this PayPal article.
You'll need a set of API Username, API Password and API Signature, which will be different for Live and Sandbox modes. Add those credentials in appropriate settings fields. Note that you don't need to request and set AppID for this gateway. - (Optional) Configure other settings
You can enable logging, can set address override (so that address entered on your checkout page is sent to PayPal, instead of the one stored in user's PayPal account). You can also customize the PayPal Checkout page that user will see - add logo, change some colors, etc.