Platform Payments
Learn how to use Transfer as a Payments Platform
API Reference
View Transfer requests, responses, and example code
View Transfer APIQuickstart
Learn about Plaid's key concepts and run starter code
Get startedTransfer is only supported in Plaid's Sandbox and Production environments.
Overview
For Platform Payments (beta) customers, the Platform Payments APIs provide a scalable method to onboard new end customers, or Originators, onto your platform. With Plaid’s hosted onboarding UI, you can collect and send Originators' required business data to Plaid without needing to build and maintain form fields.
Platform Payments (beta) allows you to onboard your business customers and initiate ACH transfers on their behalf. To onboard your customer, you will generate a unique onboarding URL via the API and redirect them to that URL. This onboarding URL will have an application form where they can provide necessary information such as their business details and bank account. After completing this form, they will be redirected back to your website or app. Upon approval, you can create ACH transfers on their behalf by specifying their unique ID. All funds for that particular customer will be swept to or from their business checking account, which they will connect during their onboarding.
Note that Platform Payments (beta) uses a hosted onboarding UI and cannot be used with Transfer UI.
Integration process
To onboard an Originator onto your platform using Plaid’s Platform Payments and move money on their behalf:
- Create a new Originator by calling
/transfer/originator/create
, which will generate anoriginator_client_id
. - Generate a unique onboarding URL by calling
/transfer/questionnaire/create
and redirect the Originator to that URL to complete their application with Plaid. - Retrieve onboarding status updates for an Originator by calling
/transfer/originator/get
or/transfer/originator/list
. - Create an Item (
access_token
) for an end user using Plaid Link,/link/token/create
, and/item/public_token/exchange
. - Move money for an Originator by calling
/transfer/authorization/create
and/transfer/create
and specifying theaccess_token
andoriginator_client_id
. - (Optional) Retrieve money movement updates via
/transfer/list
,/transfer/event/list
, or/transfer/sweep/list
.
Creating a new Originator
Within your current onboarding flow for your customers (i.e. Originators), create an Originator in Plaid’s system by calling the /transfer/originator/create
endpoint. This endpoint will return an originator_client_id
, which you should store associated with the Originator's customer profile, since you’ll need to provide it when moving money on their behalf.
Generating a unique onboarding URL
Pass the originator_client_id
and a redirect_url
to the /transfer/questionnaire/create
endpoint, which will return a unique URL that you should redirect the Originator to. It will take the Originator to a Plaid hosted onboarding UI where they can provide the required details and agree to the Plaid terms and conditions for ACH money movement. After clicking submit, they will be redirected back to your application via the redirect_url
provided.
Retrieving onboarding status updates for an Originator
Call the /transfer/originator/get
endpoint with the originator_client_id
to receive the status of their onboarding or call /transfer/originator/list
endpoint to receive status updates for each of your Originator’s onboarding. If Plaid requires any additional information for your Originator, we will reach out directly to them to obtain it. Once an Originator's status is approved, you can move money on behalf of that Originator.
If you qualify for delegated diligence and the Originator does not fall under Plaid’s restricted use-cases, the Originator will be instantly approved. To find out if you qualify, contact your Plaid account manager.
Creating an Item for a user
Using your own client ID (i.e. not the Originator’s client ID), create an Item (access_token
) for a user using Link, /link/token/create
, and /item/public_token/exchange
. Note that this Item can be used to create transfers with any originator_client_id
that you have onboarded.
Moving money for an Originator
Provide the originator_client_id
of the Originator when calling /transfer/authorization/create
to authorize the Transfer. Then, with the returned authorization_id
, call /transfer/create
to move the money.
Receiving money movement updates for an Originator
Provide the originator_client_id
of the Originator when calling the /transfer/list
, /transfer/event/list
, or /transfer/sweep/list
endpoints to get money movement updates.