Introduction to Payment Initiation
Initiate payments within your app using the Payment Initiation (Europe) product.
View Payment Initiation requests, responses, and example code
Learn about Plaid's key concepts and run starter code
Plaid's Payment Initiation product enables your users to make real-time payments without manually entering their account number and sort code, or leaving your app. For example, your app might allow users to accumulate a credit balance that they can cash out to a bank account, or it might allow users to pay you. You can also provide transfers to a third party, such as in a marketplace application. You can create both one-time payments (also known as Single Immediate Payments) as well as standing orders that make recurring payments on a regular schedule.
There are two ways to integrate with Plaid for Payment Initiation: Modular Link, which allows customers to own the end-to-end experience, and Classic Link, which allows customers to use existing Plaid Link front-end components to get up and running quickly with our payments products. The default experience is Modular Link. You can choose to create your own custom loading states to completely own the UI/UX or use Plaid loading states to save developer time.
Payment Initiation is UK and Europe-only. Looking for similar capabilities in the US? Check out the Transfer (beta) docs.
Payment Initiation Flow
Before beginning the Payment Initiation flow, you must determine the payment amount and recipient. The recipient must be in Europe, within a country that is a member of the Single Euro Payment Area (SEPA). Depending on your use case, the recipient may be you, one of your users, or a third party that your user has provided information about. If the recipient is one of your users, Auth can provide a convenient way to collect their name and account information.
Once you have the recipient's name and bank account information (either an IBAN or an account number and sort code), use
/payment_initiation/recipient/createto create a
recipient_id, payment amount, and frequency (optional) as input to
/payment_initiation/payment/create, which will return a
payment_id. If you'd like to enforce that the payment only be sent from a pre-specified account, you may provide that account's details via the
bacsparameters in the
/link/token/create, which returns a
link_token. Note that Link tokens created with a
payment_idhave an expiration time of 15 minutes.
Finally, initialize Link using the
Because Link has access to all of the details of the payment at the time of initialization, it will display a screen with the payment details already populated. All your end user has to do is log in to their financial institution through a Link-initiated OAuth flow, select a funding account, and confirm the payment details.
Once the payment is confirmed, you can track its status with the
/payment_initiation/payment/get endpoint. Plaid will also fire a webhook to alert you when there are any changes to the status of an initiated payment. Payments will generally complete immediately if the recipient account is in the UK, or in one business day if it is elsewhere in Europe.
Enable your users to make Variable Recurring Payments and set up Standing Orders. With Variable Recurring Payments (VRP), your users can set up repeat payments for different amounts and intervals. With Standing Orders, your users can set up repeat payments for a fixed amount.
Variable Recurring Payments (coming soon) (UK)
If you’re interested in participating in a pilot or beta of the product, please contact your Plaid Account Manager.
Standing Orders (UK)
A standing order is a recurring payment, which can be created with the Payment Initiation product. For a standing order payment, the recipient must be in the UK. The standing order creation flow is the same as the Payment Initiation flow described above. When creating a standing order, the frequency of the payment must be provided to
/payment_initiation/payment/create. Note that standing orders are billed at a different rate than other calls to
/payment_initiation/payment/create; for details, contact your Plaid Account Manager.
Testing Payment Initiation
In order to test Payment Initiation either in the Sandbox or against live Items in either Development or Production, you will need to first request access by submitting a product access request Support ticket explaining your use case.
Payment Initiation can be tested with real money using the Development environment. However in the Development environment, payments must be below 5 GBP / EUR; otherwise they will be blocked.
QR code authentication
For some institutions, Plaid supports the use of QR codes to streamline the OAuth authentication process that may be required during the Payment Initiation flow. For more information, see the OAuth guide.
Plaid monitors all recipient and payment creation attempts to review and block suspicious activity. If your payment is blocked,
/payment_initiation/payment/create will return a
PAYMENT_BLOCKED error code. In the Development environment, payments must be below 5 GBP / EUR. For details on any payment limits in Production, contact your Plaid Account Manager.
To get started building with Payment Initiation, see Add Payment Initiation to your App.
If you have feedback to provide, please let us know in our Developer Feedback repo on GitHub (beta).