Transfer for Platforms
API reference for Transfer for Platforms endpoints
For how-to guidance, see the Transfer for Platforms documentation.
Transfer for Platforms | |
---|---|
/transfer/platform/originator/create | Pass transfer specific onboarding info for the originator |
/transfer/platform/person/create | Create each individual who is a beneficial owner or control person of the business |
/transfer/platform/requirement/submit | Pass additional data Plaid needs to make an onboarding decision for the originator |
/transfer/platform/document/submit | Submit documents Plaid needs to verify information about the originator |
/transfer/originator/get | Get the status of an originator's onboarding |
/transfer/originator/list | Get the status of all originators' onboarding |
/transfer/originator/funding_account/create | Create a new funding account for an originator |
/transfer/platform/originator/create
Create an originator for scaled platform customers
Use the /transfer/platform/originator/create
endpoint to submit information about the originator you are onboarding, including the originator's agreement to the required legal terms.
Request fields
client_id
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
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
tos_acceptance _metadata
agreement_accepted
originator_ip_address
agreement_accepted_at
date-time
originator_reviewed_at
date-time
webhook
PLATFORM_ONBOARDING_UPDATE
webhook should be sent.1const request: TransferPlatformOriginatorCreateRequest = {2 originator_client_id: "6a65dh3d1h0d1027121ak184",3 tos_acceptance_metadata: {4 agreement_accepted: true,5 originator_ip_address: "192.0.2.42",6 agreement_accepted_at: "2017-09-14T14:42:19.350Z"7 },8 originator_reviewed_at: "2024-07-29T20:22:21Z",9 webhook: "https://webhook.com/webhook"10};11
12try {13 const response = await client.transferPlatformOriginatorCreate(request);14} catch (error) {15 // handle error16}
Response fields
request_id
1{2 "request_id": "saKrIBuEB9qJZno"3}
/transfer/platform/person/create
Create a person associated with an originator
Use the /transfer/platform/person/create
endpoint to create a person associated with an originator (e.g. beneficial owner or control person) and optionally submit personal identification information for them.
Request fields
client_id
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
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
name
given_name
family_name
email_address
phone_number
address
city
country
postal_code
region
street
street2
id_number
value
type
ar_dni
, au_drivers_license
, au_passport
, br_cpf
, ca_sin
, cl_run
, cn_resident_card
, co_nit
, dk_cpr
, eg_national_id
, es_dni
, es_nie
, hk_hkid
, in_pan
, it_cf
, jo_civil_id
, jp_my_number
, ke_huduma_namba
, kw_civil_id
, mx_curp
, mx_rfc
, my_nric
, ng_nin
, nz_drivers_license
, om_civil_id
, ph_psn
, pl_pesel
, ro_cnp
, sa_national_id
, se_pin
, sg_nric
, tr_tc_kimlik
, us_ssn
, us_ssn_last_4
, za_smart_id
date_of_birth
date
relationship_to _originator
ownership_percentage
25
100
title
1const request: TransferPlatformPersonCreateRequest = {2 originator_client_id: "6a65dh3d1h0d1027121ak184",3 name: {4 given_name: "Owen",5 family_name: "Gillespie"6 },7 email_address: "ogillespie@plaid.com",8 phone_number: "+12223334444",9 address: {10 street: "123 Main St.",11 street2: "Apt 456",12 city: "San Francisco",13 region: "CA",14 postal_code: "94580",15 country: "US"16 },17 id_number: {18 type: "us_ssn",19 value: "111223333"20 },21 date_of_birth: "2000-01-20",22 relationship_to_originator: "BENEFICIAL_OWNER",23 ownership_percentage: 50,24 title: "COO"25};26
27try {28 const response = await client.transferPlatformPersonCreate(request);29} catch (error) {30 // handle error31}
Response fields
request_id
person_id
1{2 "person_id": "4aa32e78-0cb3-4c13-b45e-7f9f2fc709d1",3 "request_id": "qpCtcJz6g3fhMdJ"4}
/transfer/platform/requirement/submit
Submit onboarding requirements for Scaled Platform originators
The /transfer/platform/requirement/submit
endpoint allows platforms to submit onboarding requirements for an originator as part of the Scaled Platform Transfer offering.
Request fields
client_id
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
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
requirement _submissions
/transfer/platform/requirement/submit
endpoint to submit a list of requirement submissions that all relate to the originator. Must contain between 1 and 50 requirement submissions.50
1
requirement_type
value
requirement_type
. If it is an object, the object should be JSON marshaled into a string. See the documentation on this endpoint for more information and examples.person_id
person_id
of the person the requirement submission is related to. A person_id
is returned by /transfer/platform/person/create
. This field should not be included for requirements that are not related to a person.uuid
1const request: TransferPlatformRequirementSubmitRequest = {2 originator_client_id: "6a65dh3d1h0d1027121ak184",3 requirement_submissions: [4 {5 requirement_type: "BUSINESS_NAME",6 value: "Owen's Widgets Inc."7 },8 {9 requirement_type: "BUSINESS_EIN",10 value: "123-45-6789"11 },12 {13 requirement_type: "BUSINESS_BANK_ACCOUNT",14 value: "{\"access_token\": \"<access token>\",\"account_id\": \"<account id>\"}"15 },16 {17 requirement_type: "BUSINESS_ORG_TYPE",18 value: "LIMITED LIABILITY COMPANY"19 },20 {21 requirement_type: "BUSINESS_INDUSTRY",22 value: "TELECOMMUNICATIONS"23 },24 {25 requirement_type: "BUSINESS_ADDRESS",26 value: "{\"city\":\"San Francisco\",\"country\":\"US\",\"postal_code\":\"94105\",\"region\":\"CA\",\"street\":\"123 Market St\",\"street2\":\"Suite 400\"}"27 },28 {29 requirement_type: "BUSINESS_WEBSITE",30 value: "https://plaid.com"31 },32 {33 requirement_type: "BUSINESS_PRODUCT_DESCRIPTION",34 value: "This is a sample description."35 },36 {37 requirement_type: "ASSOCIATED_PEOPLE",38 value: "[\"8b0e3210-767a-4882-9154-89b1e4c20493\",\"6ce1022c-d2c6-416d-a587-ed5e3f9bf941\"]"39 },40 {41 requirement_type: "PERSON_NAME",42 person_id: "6ce1022c-d2c6-416d-a587-ed5e3f9bf941",43 value: "{\"given_name\": \"Jane\",\"family_name\": \"Smith\"}"44 },45 {46 requirement_type: "PERSON_ID_NUMBER",47 person_id: "6ce1022c-d2c6-416d-a587-ed5e3f9bf941",48 value: "{\"type\": \"us_ssn\",\"value\": \"123456789\"}"49 },50 {51 requirement_type: "PERSON_ADDRESS",52 person_id: "6ce1022c-d2c6-416d-a587-ed5e3f9bf941",53 value: "{\"city\":\"San Francisco\",\"country\":\"US\",\"postal_code\":\"94105\",\"region\":\"CA\",\"street\":\"123 Market St\",\"street2\":\"Suite 100\"}"54 },55 {56 requirement_type: "PERSON_DOB",57 person_id: "6ce1022c-d2c6-416d-a587-ed5e3f9bf941",58 value: "1999-12-31"59 },60 {61 requirement_type: "PERSON_EMAIL",62 person_id: "6ce1022c-d2c6-416d-a587-ed5e3f9bf941",63 value: "sample@example.com"64 },65 {66 requirement_type: "PERSON_PHONE",67 person_id: "6ce1022c-d2c6-416d-a587-ed5e3f9bf941",68 value: "+12345678909"69 },70 {71 requirement_type: "PERSON_RELATIONSHIP",72 person_id: "6ce1022c-d2c6-416d-a587-ed5e3f9bf941",73 value: "BENEFICIAL_OWNER"74 },75 {76 requirement_type: "PERSON_PERCENT_OWNERSHIP",77 person_id: "8b0e3210-767a-4882-9154-89b1e4c20493",78 value: "50"79 },80 {81 requirement_type: "PERSON_TITLE",82 person_id: "8b0e3210-767a-4882-9154-89b1e4c20493",83 value: "COO"84 }85 ]86};87
88
89try {90 const response = await client.transferPlatformRequirementSubmit(request);91} catch (error) {92 // handle error93}
Response fields
request_id
1{2 "request_id": "saKrIBuEB9qJZno"3}
/transfer/platform/document/submit
Upload documentation on behalf of an originator
Use the /transfer/platform/document/submit
endpoint to upload documents requested by Plaid to verify an originator’s onboarding information. Unlike other endpoints, this one requires multipart/form-data
as the content type.
Request fields
originator_client_id
document_submission
requirement_type
person_id
person_id
of the person the requirement submission is related to.A
person_id
is returned by /transfer/platform/person/create
. This field should not be included for requirements that are not related to a person.Format:
uuid
1import fs from 'fs';2import fetch from 'node-fetch';3import FormData from 'form-data';4
5const form = new FormData();6form.append('originator_client_id', '6a65dh3d1h0d1027121ak184');7form.append('document_submission', fs.createReadStream('/path/to/sample/file.txt'));8form.append('requirement_type', 'BUSINESS_ADDRESS_VALIDATION');9
10const res = await fetch(`https://sandbox.plaid.com/transfer/platform/document/submit`, {11 method: 'POST',12 headers: {13 'Plaid-Client-ID': '<CLIENT_ID>',14 'Plaid-Secret': '<SECRET>',15 ...form.getHeaders(),16 },17 body: form,18});19const data = await res.json();
Response fields
request_id
1{2 "request_id": "YkP5Aq2x9LkZQb7"3}
/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.
Request fields
client_id
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
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
1const request: TransferOriginatorGetRequest = {2 originator_client_id: '6a65dh3d1h0d1027121ak184',3};4
5try {6 const response = await client.transferOriginatorGet(request);7} catch (error) {8 // handle error9}
Response fields
originator
client_id
transfer_diligence _status
not_submitted
, submitted
, under_review
, approved
, denied
, more_information_required
company_name
outstanding _requirements
transfer_diligence_status
is more_information_required
.requirement_type
person_id
request_id
1{2 "originator": {3 "client_id": "6a65dh3d1h0d1027121ak184",4 "transfer_diligence_status": "approved",5 "company_name": "Plaid"6 },7 "request_id": "saKrIBuEB9qJZno"8}
/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.
Request fields
client_id
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
secret
. The secret
is required and may be provided either in the PLAID-SECRET
header or as part of a request body.count
25
1
25
offset
0
0
1const request: TransferOriginatorListRequest = {2 count: 14,3 offset: 2,4};5
6try {7 const response = await client.transferOriginatorList(request);8} catch (error) {9 // handle error10}
Response fields
originators
client_id
transfer_diligence _status
not_submitted
, submitted
, under_review
, approved
, denied
, more_information_required
request_id
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}
/transfer/originator/funding_account/create
Create a new funding account for an originator
Use the /transfer/originator/funding_account/create
endpoint to create a new funding account for the originator.
Request fields
client_id
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
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
funding_account
/transfer/migrate_account
.access_token
account_id
account_id
for the newly created Item.display_name
1const request: TransferOriginatorFundingAccountCreateRequest = {2 originator_client_id: '6a65dh3d1h0d1027121ak184',3 funding_account: {4 access_token: 'access-sandbox-71e02f71-0960-4a27-abd2-5631e04f2175',5 account_id: '3gE5gnRzNyfXpBK5wEEKcymJ5albGVUqg77gr',6 display_name: "New Funding Account",7 },8};9
10try {11 const response = await client.transferOriginatorFundingAccountCreate(request);12} catch (error) {13 // handle error14}
Response fields
funding_account_id
request_id
1{2 "funding_account_id": "8945fedc-e703-463d-86b1-dc0607b55460",3 "request_id": "saKrIBuEB9qJZno"4}