Introduction to Payment Initiation

Initiate payments within your app using the Payment Initation (Europe) product.

Explore API


Plaid's Payment Initiation product enables your users with UK-based bank accounts 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.

Payment Initiation is UK and Europe-only. Looking for similar capabilities in the US? Check out the Bank Transfers (beta) docs.

Payment Initiation Flow

  1. 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.

  2. 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/create to create a recipient_id.

  3. Provide the recipient_id, payment amount, and frequency (optional) as input to /payment_initiation/payment/create, which will return a payment_id.

  4. Provide the payment_id to /link/token/create, which returns a link_token. If the user has an existing Item, you can also optionally provide that Item's access_token to /link/token/create to configure that particular Item to be used as the funding source. This can be helpful for streamlining the Link flow, or if using Balance to verify that the account has sufficient funds to make the payment.

  5. Finally, initialize Link using the link_token.

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.

Standing orders

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.

Payment Monitoring

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.