Plaid logo
Docs
ALL DOCS

API

  • Overview
  • Libraries
  • API versioning
  • Postman Collection
  • Webhooks
Product API reference
  • Transactions
  • Auth
  • Balance
  • Identity
  • Assets
  • Investments
  • Liabilities
  • Payment Initiation
  • Virtual Accounts
  • Transfer
  • Income
  • Identity Verification
  • Monitor
  • Beacon
  • Signal
  • Enrich
  • Statements (beta)
Other API reference
  • Item endpoints and webhooks
  • Account endpoints and schemas
  • Institution endpoints
  • Token flow and endpoints
  • Processor token endpoints
  • Sandbox endpoints
  • Processor partner endpoints
  • Reseller partner endpoints
Plaid logo
Docs
Close search modal
Ask Bill!
Ask Bill!
Hi! I'm Bill! You can ask me all about the Plaid API. Try asking questions like:
    Note: Bill isn't perfect. He's just a robot platypus that reads our docs for fun. You should treat his answers with the same healthy skepticism you might treat any other answer on the internet. This chat may be logged for quality and training purposes. Please don't send Bill any PII -- he's scared of intimacy. All chats with Bill are subject to Plaid's Privacy Policy.
    Plaid.com
    Log in
    Get API Keys
    Open nav

    Transfer Platform Payments

    API reference for Transfer Platform Payments endpoints

    Platform Payments
    /transfer/originator/createCreate a new originator
    /transfer/originator/getGet the status of an originator's onboarding
    /transfer/originator/listGet the status of all originators' onboarding
    /transfer/originator/funding_account/updateUpdate the default funding account of an originator
    /transfer/questionnaire/createGenerate a Plaid-hosted onboarding UI URL
    /transfer/diligence/submitSubmit transfer diligence on behalf of the originator
    /transfer/diligence/document/uploadUpload transfer diligence document on behalf of the originator

    /transfer/originator/create

    Create a new originator

    Use the /transfer/originator/create endpoint to create a new originator and return an originator_client_id.

    transfer/originator/create

    Request fields and example

    client_id
    string
    Your Plaid API client_id. The client_id is required and may be provided either in the PLAID-CLIENT-ID header or as part of a request body.
    secret
    string
    Your Plaid API secret. The secret is required and may be provided either in the PLAID-SECRET header or as part of a request body.
    company_name
    requiredstring
    The company name of the end customer being created. This will be displayed in public-facing surfaces, e.g. Plaid Dashboard.

    Min length: 1
    Select Language
    1const request: TransferOriginatorCreateRequest = {
    2 company_name: 'Marketplace of Shannon',
    3};
    4
    5try {
    6 const response = await client.transferOriginatorCreate(request);
    7} catch (error) {
    8 // handle error
    9}
    transfer/originator/create

    Response fields and example

    originator_client_id
    string
    Client ID of the originator. This identifier will be used when creating transfers and should be stored associated with end user information.
    company_name
    string
    The company name of the end customer.
    request_id
    string
    A unique identifier for the request, which can be used for troubleshooting. This identifier, like all Plaid identifiers, is case sensitive.
    1{
    2 "originator_client_id": "6a65dh3d1h0d1027121ak184",
    3 "company_name": "Marketplace of Shannon",
    4 "request_id": "4zlKapIkTm8p5KM"
    5}
    Was this helpful?

    /transfer/originator/get

    Get status of an originator's onboarding

    The /transfer/originator/get endpoint gets status updates for an originator's onboarding process. This information is also available via the Transfer page on the Plaid dashboard.

    transfer/originator/get

    Request fields and example

    client_id
    string
    Your Plaid API client_id. The client_id is required and may be provided either in the PLAID-CLIENT-ID header or as part of a request body.
    secret
    string
    Your Plaid API secret. The secret is required and may be provided either in the PLAID-SECRET header or as part of a request body.
    originator_client_id
    requiredstring
    Client ID of the end customer (i.e. the originator).
    Select Language
    1const request: TransferOriginatorGetRequest = {
    2 originator_client_id: '6a65dh3d1h0d1027121ak184',
    3};
    4
    5try {
    6 const response = await client.transferOriginatorGet(request);
    7} catch (error) {
    8 // handle error
    9}
    transfer/originator/get

    Response fields and example

    originator
    object
    Originator and their status.
    client_id
    string
    Originator’s client ID.
    transfer_diligence_status
    string
    Originator’s diligence status.

    Possible values: not_submitted, submitted, under_review, approved, denied
    company_name
    string
    The company name of the end customer.
    request_id
    string
    A unique identifier for the request, which can be used for troubleshooting. This identifier, like all Plaid identifiers, is case sensitive.
    1{
    2 "originator": {
    3 "client_id": "6a65dh3d1h0d1027121ak184",
    4 "transfer_diligence_status": "approved",
    5 "company_name": "Plaid"
    6 },
    7 "request_id": "saKrIBuEB9qJZno"
    8}
    Was this helpful?

    /transfer/originator/list

    Get status of all originators' onboarding

    The /transfer/originator/list endpoint gets status updates for all of your originators' onboarding. This information is also available via the Plaid dashboard.

    transfer/originator/list

    Request fields and example

    client_id
    string
    Your Plaid API client_id. The client_id is required and may be provided either in the PLAID-CLIENT-ID header or as part of a request body.
    secret
    string
    Your Plaid API secret. The secret is required and may be provided either in the PLAID-SECRET header or as part of a request body.
    count
    integer
    The maximum number of originators to return.

    Maximum: 25
    Minimum: 1
    Default: 25
    offset
    integer
    The number of originators to skip before returning results.

    Minimum: 0
    Default: 0
    Select Language
    1const request: TransferOriginatorListRequest = {
    2 count: 14,
    3 offset: 2,
    4};
    5
    6try {
    7 const response = await client.transferOriginatorList(request);
    8} catch (error) {
    9 // handle error
    10}
    transfer/originator/list

    Response fields and example

    originators
    [object]
    client_id
    string
    Originator’s client ID.
    transfer_diligence_status
    string
    Originator’s diligence status.

    Possible values: not_submitted, submitted, under_review, approved, denied
    request_id
    string
    A unique identifier for the request, which can be used for troubleshooting. This identifier, like all Plaid identifiers, is case sensitive.
    1{
    2 "originators": [
    3 {
    4 "client_id": "6a65dh3d1h0d1027121ak184",
    5 "transfer_diligence_status": "approved"
    6 },
    7 {
    8 "client_id": "8g89as4d2k1d9852938ba019",
    9 "transfer_diligence_status": "denied"
    10 }
    11 ],
    12 "request_id": "4zlKapIkTm8p5KM"
    13}
    Was this helpful?

    /transfer/originator/funding_account/update

    Update the funding account associated with the originator

    Use the /transfer/originator/funding_account/update endpoint to update the funding account associated with the originator.

    transfer/originator/funding_account/update

    Request fields and example

    client_id
    string
    Your Plaid API client_id. The client_id is required and may be provided either in the PLAID-CLIENT-ID header or as part of a request body.
    secret
    string
    Your Plaid API secret. The secret is required and may be provided either in the PLAID-SECRET header or as part of a request body.
    originator_client_id
    requiredstring
    The Plaid client ID of the transfer originator.
    funding_account
    requiredobject
    The originator's funding account, linked with Plaid Link or /transfer/migrate_account.
    access_token
    requiredstring
    The access token associated with the Item data is being requested for.
    account_id
    requiredstring
    The Plaid account_id for the newly created Item.
    Select Language
    1const request: TransferOriginatorFundingAccountUpdateRequest = {
    2 originator_client_id: '6a65dh3d1h0d1027121ak184',
    3 funding_account: {
    4 access_token: 'access-sandbox-71e02f71-0960-4a27-abd2-5631e04f2175',
    5 account_id: '3gE5gnRzNyfXpBK5wEEKcymJ5albGVUqg77gr',
    6 },
    7};
    8
    9try {
    10 const response = await client.transferOriginatorFundingAccountUpdate(request);
    11} catch (error) {
    12 // handle error
    13}
    transfer/originator/funding_account/update

    Response fields and example

    request_id
    string
    A unique identifier for the request, which can be used for troubleshooting. This identifier, like all Plaid identifiers, is case sensitive.
    1{
    2 "request_id": "saKrIBuEB9qJZno"
    3}
    Was this helpful?

    /transfer/questionnaire/create

    Generate a Plaid-hosted onboarding UI URL.

    The /transfer/questionnaire/create endpoint generates a Plaid-hosted onboarding UI URL. Redirect the originator to this URL to provide their due diligence information and agree to Plaid’s terms for ACH money movement.

    transfer/questionnaire/create

    Request fields and example

    client_id
    string
    Your Plaid API client_id. The client_id is required and may be provided either in the PLAID-CLIENT-ID header or as part of a request body.
    secret
    string
    Your Plaid API secret. The secret is required and may be provided either in the PLAID-SECRET header or as part of a request body.
    originator_client_id
    requiredstring
    Client ID of the end customer.
    redirect_uri
    requiredstring
    URL the end customer will be redirected to after completing questions in Plaid-hosted onboarding flow.
    Select Language
    1const request: TransferQuestionnaireCreateRequest = {
    2 originator_client_id: '6a65dh3d1h0d1027121ak184',
    3 redirect_uri: 'https://example.com',
    4};
    5
    6try {
    7 const response = await client.transferQuestionnaireCreate(request);
    8} catch (error) {
    9 // handle error
    10}
    transfer/questionnaire/create

    Response fields and example

    onboarding_url
    string
    Plaid-hosted onboarding URL that you will redirect the end customer to.
    request_id
    string
    A unique identifier for the request, which can be used for troubleshooting. This identifier, like all Plaid identifiers, is case sensitive.
    1{
    2 "onboarding_url": "https://plaid.com/originator/hIFGXx1zM5pFerygu7lw",
    3 "request_id": "saKrIBuEB9qJZno"
    4}
    Was this helpful?

    /transfer/diligence/submit

    Submit transfer diligence on behalf of the originator

    Use the /transfer/diligence/submit endpoint to submit transfer diligence on behalf of the originator (i.e., the end customer).

    transfer/diligence/submit

    Request fields and example

    client_id
    string
    Your Plaid API client_id. The client_id is required and may be provided either in the PLAID-CLIENT-ID header or as part of a request body.
    secret
    string
    Your Plaid API secret. The secret is required and may be provided either in the PLAID-SECRET header or as part of a request body.
    originator_client_id
    requiredstring
    Client ID of the the originator whose diligence that you want to submit.
    originator_diligence
    requiredobject
    The diligence information for the originator.
    dba
    requiredstring
    The business name of the originator.
    tax_id
    requiredstring
    The tax ID of the originator.

    Min length: 1
    credit_usage_configuration
    object
    Specifies the originator's expected usage of credits. For all dollar amounts, use a decimal string with two digits of precision e.g. "10.00". This field is required if the originator is expected to process credit transfers.
    expected_frequency
    requiredstring
    The originator's expected transfer frequency.

    Possible values: once_per_month, twice_per_month, once_per_week, daily
    expected_highest_amount
    requiredstring
    The originator’s expected highest amount for a single credit transfer.
    expected_average_amount
    requiredstring
    The originator’s expected average amount per credit.
    expected_monthly_amount
    requiredstring
    The originator’s monthly expected ACH credit processing amount for the next 6-12 months.
    sec_codes
    required[string]
    Specifies the expected use cases for the originator’s credit transfers. This should be a list that contains one or more of the following codes:
    "ccd" - Corporate Credit or Debit - fund transfer between two corporate bank accounts
    "ppd" - Prearranged Payment or Deposit - the transfer is part of a pre-existing relationship with a consumer, e.g. bill payment
    "web" - A credit Entry initiated by or on behalf of a holder of a Consumer Account that is intended for a Consumer Account of a Receiver


    Possible values: ccd, ppd, web
    debit_usage_configuration
    object
    Specifies the originator's expected usage of debits. For all dollar amounts, use a decimal string with two digits of precision e.g. "10.00". This field is required if the originator is expected to process debit transfers.
    expected_frequency
    requiredstring
    The originator's expected transfer frequency.

    Possible values: once_per_month, twice_per_month, once_per_week, daily
    expected_highest_amount
    requiredstring
    The originator’s expected highest amount for a single debit transfer.
    expected_average_amount
    requiredstring
    The originator’s expected average amount per debit.
    expected_monthly_amount
    requiredstring
    The originator’s monthly expected ACH debit processing amount for the next 6-12 months.
    sec_codes
    required[string]
    Specifies the expected use cases for the originator’s debit transfers. This should be a list that contains one or more of the following codes:
    "ccd" - Corporate Credit or Debit - fund transfer between two corporate bank accounts
    "ppd" - Prearranged Payment or Deposit - the transfer is part of a pre-existing relationship with a consumer, eg. bill payment
    "tel" - Telephone-Initiated Entry
    "web" - Internet-Initiated Entry - debits from a consumer’s account where their authorization is obtained over the Internet


    Possible values: ccd, ppd, tel, web
    address
    requiredobject
    The originator's address.
    city
    requiredstring
    The full city name.
    street
    requiredstring
    The full street address.
    region
    requiredstring
    The two-letter code for the state or province (e.g., "CA").
    postal_code
    requiredstring
    The postal code (e.g., "94103").
    country_code
    requiredstring
    ISO-3166-1 alpha-2 country code standard.
    website
    requiredstring
    The website of the originator.
    naics_code
    requiredstring
    The NAICS code of the originator.

    Min length: 6
    Max length: 6
    funding_account
    requiredobject
    The originator's funding account, linked with Plaid Link or /transfer/migrate_account.
    access_token
    requiredstring
    The access token associated with the Item data is being requested for.
    account_id
    requiredstring
    The Plaid account_id for the newly created Item.
    Select Language
    1const request: TransferDiligenceSubmitRequest = {
    2 originator_client_id: '415ab64b87ec47401d000002',
    3 originator_diligence: {
    4 address: {
    5 city: 'San Francisco',
    6 country_code: 'US',
    7 postal_code: '95302',
    8 region: 'San Francisco',
    9 street: '1 A street',
    10 },
    11 dba: 'Marketplace of Shannon',
    12 credit_usage_configuration: {
    13 expected_average_amount: '10.00',
    14 expected_frequency: 'once_per_week',
    15 expected_highest_amount: '100.00',
    16 expected_monthly_amount: '1000.00',
    17 sec_codes: ['ccd', 'ppd'],
    18 },
    19 debit_usage_configuration: {
    20 expected_average_amount: '10.00',
    21 expected_frequency: 'once_per_week',
    22 expected_highest_amount: '100.00',
    23 expected_monthly_amount: '1000.00',
    24 sec_codes: ['ccd', 'ppd'],
    25 },
    26 naics_code: '111111',
    27 tax_id: '123456789',
    28 website: 'www.website.com',
    29 funding_account: {
    30 access_token: 'access-sandbox-71e02f71-0960-4a27-abd2-5631e04f2175',
    31 account_id: '3gE5gnRzNyfXpBK5wEEKcymJ5albGVUqg77gr',
    32 },
    33 },
    34};
    35
    36try {
    37 const response = await client.transferDiligenceSubmit(request);
    38} catch (error) {
    39 // handle error
    40}
    transfer/diligence/submit

    Response fields and example

    request_id
    string
    A unique identifier for the request, which can be used for troubleshooting. This identifier, like all Plaid identifiers, is case sensitive.
    1{
    2 "request_id": "4zlKapIkTm8p5KM"
    3}
    Was this helpful?

    /transfer/diligence/document/upload

    Upload transfer diligence document on behalf of the originator

    Third-party sender customers can use /transfer/diligence/document/upload endpoint to upload a document on behalf of its end customer (i.e. originator) to Plaid. You’ll need to send a request of type multipart/form-data. You must provide the client_id in the PLAID-CLIENT-ID header and secret in the PLAID-SECRET header.

    transfer/diligence/document/upload

    Request fields and example

    originator_client_id
    requiredstring
    The Client ID of the originator whose document that you want to upload.
    file
    requiredstring
    A file to upload. The file size must be less than 20MB. Supported file extensions: .pdf.

    Format: binary
    purpose
    requiredstring
    Specifies the purpose of the uploaded file.
    "DUE_DILIGENCE" - The transfer due diligence document of the originator.


    Possible values: DUE_DILIGENCE
    Select Language
    1const url = 'https://sandbox.plaid.com/transfer/diligence/document/upload';
    2const filePath = '/path/to/file.pdf';
    3const purpose = 'DUE_DILIGENCE';
    4
    5const formData = new FormData();
    6formData.append('file', fs.createReadStream(filePath));
    7formData.append('purpose', purpose);
    8formData.append('originator_client_id', originatorClientId);
    9
    10const headers = {
    11 'PLAID-CLIENT-ID': YourClientId,
    12 'PLAID-SECRET': YourSecret,
    13 ...formData.getHeaders(),
    14};
    15
    16try {
    17 const response = await axios.post(url, formData, { headers });
    18} catch (error) {
    19 // handle error
    20}
    transfer/diligence/document/upload

    Response fields and example

    request_id
    string
    A unique identifier for the request, which can be used for troubleshooting. This identifier, like all Plaid identifiers, is case sensitive.
    1{
    2 "request_id": "4zlKapIkTm8p5KM"
    3}
    Was this helpful?
    Developer community
    GitHub
    GitHub
    Stack Overflow
    Stack Overflow
    YouTube
    YouTube
    Discord
    Discord