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 Transfer for Platforms 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_idclient_id. The client_id is required and may be provided either in the PLAID-CLIENT-ID header or as part of a request body.secretsecret. The secret is required and may be provided either in the PLAID-SECRET header or as part of a request body.originator_client_idtos_acceptance _metadataagreement_acceptedoriginator_ip_addressagreement_accepted_atdate-time originator_reviewed_atdate-time webhookPLATFORM_ONBOARDING_UPDATE webhook should be sent.url const request: TransferPlatformOriginatorCreateRequest = {
originator_client_id: "6a65dh3d1h0d1027121ak184",
tos_acceptance_metadata: {
agreement_accepted: true,
originator_ip_address: "192.0.2.42",
agreement_accepted_at: "2017-09-14T14:42:19.350Z"
},
originator_reviewed_at: "2024-07-29T20:22:21Z",
webhook: "https://webhook.com/webhook"
};
try {
const response = await client.transferPlatformOriginatorCreate(request);
} catch (error) {
// handle error
}
Response fields
request_id{
"request_id": "saKrIBuEB9qJZno"
}/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_idclient_id. The client_id is required and may be provided either in the PLAID-CLIENT-ID header or as part of a request body.secretsecret. The secret is required and may be provided either in the PLAID-SECRET header or as part of a request body.originator_client_idnamegiven_namefamily_nameemail_addressphone_numberaddresscitycountrypostal_coderegionstreetstreet2id_numbervaluetypear_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_iddate_of_birthdate relationship_to _originatorownership_percentage25 100 titleconst request: TransferPlatformPersonCreateRequest = {
originator_client_id: "6a65dh3d1h0d1027121ak184",
name: {
given_name: "Owen",
family_name: "Gillespie"
},
email_address: "ogillespie@plaid.com",
phone_number: "+12223334444",
address: {
street: "123 Main St.",
street2: "Apt 456",
city: "San Francisco",
region: "CA",
postal_code: "94580",
country: "US"
},
id_number: {
type: "us_ssn",
value: "111223333"
},
date_of_birth: "2000-01-20",
relationship_to_originator: "BENEFICIAL_OWNER",
ownership_percentage: 50,
title: "COO"
};
try {
const response = await client.transferPlatformPersonCreate(request);
} catch (error) {
// handle error
}
Response fields
request_idperson_id{
"person_id": "4aa32e78-0cb3-4c13-b45e-7f9f2fc709d1",
"request_id": "qpCtcJz6g3fhMdJ"
}/transfer/platform/requirement/submit
Submit additional onboarding information on behalf of an originator
Use the /transfer/platform/requirement/submit endpoint to submit additional onboarding information that is needed by Plaid to approve or decline the originator. See Requirement type schema documentation for a list of requirement types and possible values.
Request fields
client_idclient_id. The client_id is required and may be provided either in the PLAID-CLIENT-ID header or as part of a request body.secretsecret. The secret is required and may be provided either in the PLAID-SECRET header or as part of a request body.originator_client_idrequirement _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. See Requirement type schema documentation for a list of requirements and possible values.50 1 requirement_typevaluerequirement_type. If it is an object, the object should be JSON marshaled into a string. See Requirement type schema documentation for a list of requirement types and possible values.person_idperson_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 const request: TransferPlatformRequirementSubmitRequest = {
originator_client_id: "6a65dh3d1h0d1027121ak184",
requirement_submissions: [
{
requirement_type: "BUSINESS_NAME",
value: "Owen's Widgets Inc."
},
{
requirement_type: "BUSINESS_EIN",
value: "123-45-6789"
},
{
requirement_type: "BUSINESS_BANK_ACCOUNT",
value: "{\"access_token\": \"<access token>\",\"account_id\": \"<account id>\"}"
},
{
requirement_type: "BUSINESS_ORG_TYPE",
value: "LIMITED LIABILITY COMPANY"
},
{
requirement_type: "BUSINESS_INDUSTRY",
value: "TELECOMMUNICATIONS"
},
{
requirement_type: "BUSINESS_ADDRESS",
value: "{\"city\":\"San Francisco\",\"country\":\"US\",\"postal_code\":\"94105\",\"region\":\"CA\",\"street\":\"123 Market St\",\"street2\":\"Suite 400\"}"
},
{
requirement_type: "BUSINESS_WEBSITE",
value: "https://plaid.com"
},
{
requirement_type: "BUSINESS_PRODUCT_DESCRIPTION",
value: "This is a sample description."
},
{
requirement_type: "ASSOCIATED_PEOPLE",
value: "[\"8b0e3210-767a-4882-9154-89b1e4c20493\",\"6ce1022c-d2c6-416d-a587-ed5e3f9bf941\"]"
},
{
requirement_type: "PERSON_NAME",
person_id: "6ce1022c-d2c6-416d-a587-ed5e3f9bf941",
value: "{\"given_name\": \"Jane\",\"family_name\": \"Smith\"}"
},
{
requirement_type: "PERSON_ID_NUMBER",
person_id: "6ce1022c-d2c6-416d-a587-ed5e3f9bf941",
value: "{\"type\": \"us_ssn\",\"value\": \"123456789\"}"
},
{
requirement_type: "PERSON_ADDRESS",
person_id: "6ce1022c-d2c6-416d-a587-ed5e3f9bf941",
value: "{\"city\":\"San Francisco\",\"country\":\"US\",\"postal_code\":\"94105\",\"region\":\"CA\",\"street\":\"123 Market St\",\"street2\":\"Suite 100\"}"
},
{
requirement_type: "PERSON_DOB",
person_id: "6ce1022c-d2c6-416d-a587-ed5e3f9bf941",
value: "1999-12-31"
},
{
requirement_type: "PERSON_EMAIL",
person_id: "6ce1022c-d2c6-416d-a587-ed5e3f9bf941",
value: "sample@example.com"
},
{
requirement_type: "PERSON_PHONE",
person_id: "6ce1022c-d2c6-416d-a587-ed5e3f9bf941",
value: "+12345678909"
},
{
requirement_type: "PERSON_RELATIONSHIP",
person_id: "6ce1022c-d2c6-416d-a587-ed5e3f9bf941",
value: "BENEFICIAL_OWNER"
},
{
requirement_type: "PERSON_PERCENT_OWNERSHIP",
person_id: "8b0e3210-767a-4882-9154-89b1e4c20493",
value: "50"
},
{
requirement_type: "PERSON_TITLE",
person_id: "8b0e3210-767a-4882-9154-89b1e4c20493",
value: "COO"
}
]
};
try {
const response = await client.transferPlatformRequirementSubmit(request);
} catch (error) {
// handle error
}
Response fields
request_id{
"request_id": "saKrIBuEB9qJZno"
}/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. This endpoint is also not included in the Plaid client libraries.
Request fields
originator_client_iddocument_submissionrequirement_typeperson_idperson_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:
uuidimport fs from 'fs';
import fetch from 'node-fetch';
import FormData from 'form-data';
const form = new FormData();
form.append('originator_client_id', '6a65dh3d1h0d1027121ak184');
form.append('document_submission', fs.createReadStream('/path/to/sample/file.txt'));
form.append('requirement_type', 'BUSINESS_ADDRESS_VALIDATION');
const res = await fetch(`https://sandbox.plaid.com/transfer/platform/document/submit`, {
method: 'POST',
headers: {
'Plaid-Client-ID': '<CLIENT_ID>',
'Plaid-Secret': '<SECRET>',
...form.getHeaders(),
},
body: form,
});
const data = await res.json();
Response fields
request_id{
"request_id": "YkP5Aq2x9LkZQb7"
}/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_idclient_id. The client_id is required and may be provided either in the PLAID-CLIENT-ID header or as part of a request body.secretsecret. The secret is required and may be provided either in the PLAID-SECRET header or as part of a request body.originator_client_idconst request: TransferOriginatorGetRequest = {
originator_client_id: '6a65dh3d1h0d1027121ak184',
};
try {
const response = await client.transferOriginatorGet(request);
} catch (error) {
// handle error
}
Response fields
originatorclient_idtransfer_diligence _statusnot_submitted, submitted, under_review, approved, denied, more_information_requiredcompany_nameoutstanding _requirementstransfer_diligence_status is more_information_required.requirement_typeperson_idrequest_id{
"originator": {
"client_id": "6a65dh3d1h0d1027121ak184",
"transfer_diligence_status": "approved",
"company_name": "Plaid"
},
"request_id": "saKrIBuEB9qJZno"
}/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_idclient_id. The client_id is required and may be provided either in the PLAID-CLIENT-ID header or as part of a request body.secretsecret. The secret is required and may be provided either in the PLAID-SECRET header or as part of a request body.count25 1 25 offset0 0 const request: TransferOriginatorListRequest = {
count: 14,
offset: 2,
};
try {
const response = await client.transferOriginatorList(request);
} catch (error) {
// handle error
}
Response fields
originatorsclient_idtransfer_diligence _statusnot_submitted, submitted, under_review, approved, denied, more_information_requiredrequest_id{
"originators": [
{
"client_id": "6a65dh3d1h0d1027121ak184",
"transfer_diligence_status": "approved"
},
{
"client_id": "8g89as4d2k1d9852938ba019",
"transfer_diligence_status": "denied"
}
],
"request_id": "4zlKapIkTm8p5KM"
}/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_idclient_id. The client_id is required and may be provided either in the PLAID-CLIENT-ID header or as part of a request body.secretsecret. The secret is required and may be provided either in the PLAID-SECRET header or as part of a request body.originator_client_idfunding_account/transfer/migrate_account.access_tokenaccount_idaccount_id for the newly created Item.display_nameconst request: TransferOriginatorFundingAccountCreateRequest = {
originator_client_id: '6a65dh3d1h0d1027121ak184',
funding_account: {
access_token: 'access-sandbox-71e02f71-0960-4a27-abd2-5631e04f2175',
account_id: '3gE5gnRzNyfXpBK5wEEKcymJ5albGVUqg77gr',
display_name: "New Funding Account",
},
};
try {
const response = await client.transferOriginatorFundingAccountCreate(request);
} catch (error) {
// handle error
}
Response fields
funding_account_idrequest_id{
"funding_account_id": "8945fedc-e703-463d-86b1-dc0607b55460",
"request_id": "saKrIBuEB9qJZno"
}