Partner endpoints and webhooks
Create and manage end customers
Reseller Partner Endpoints and Webhooks
These endpoints and webhooks are used by Plaid reseller partners to create and manage their end customers.
Endpoints | |
---|---|
/partner/customer/create | Create an end customer |
/partner/customer/get | Get the status of an end customer |
/partner/customer/oauth_institutions/get | Get the OAuth-institution registration status for an end customer |
/partner/customer/enable | Enable an end customer in Production |
/partner/customer/remove | Remove an end customer |
Webhooks | |
---|---|
PARTNER_END_CUSTOMER_OAUTH_STATUS_UPDATED | Customer OAuth status updated |
Endpoints
/partner/customer/create
Creates a new end customer for a Plaid reseller.
The /partner/customer/create
endpoint is used by reseller partners to create end customers. To create end customers, it should be called in the Production environment only, even when creating Sandbox API keys. If called in the Sandbox environment, it will return a sample response, but no customer will be created and the API keys will not be valid.
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.company_name
is_diligence_attested
products
null
, this field will default to the products enabled for the reseller at the time this endpoint is called.assets
, auth
, balance
, identity
, income_verification
, investments
, liabilities
, transactions
, employment
, cra_base_report
, cra_income_insights
, cra_partner_insights
create_link _customization
true
, the end customer's default Link customization will be set to match the partner's. You can always change the end customer's Link customization in the Plaid Dashboard. See the Link Customization docs for more information.logo
create_link_customization
is true
. If create_link_customization
is false
and the logo is omitted, the partner's logo will be used if one exists, otherwise a stock logo will be used.legal_entity_name
website
application_name
technical_contact
billing_contact
customer_support_info
address
city
street
region
postal_code
country_code
is_bank_addendum _completed
assets_under _management
amount
iso_currency_code
redirect_uris
*
as a wildcard character, e.g. https://*.example.com/oauth.html
. To modify redirect URIs for an end customer after creating them, go to the end customer's API page in the Dashboard.registration_number
1const request: PartnerCustomerCreateRequest = {2 address: {3 city: city,4 country_code: countryCode,5 postal_code: postalCode,6 region: region,7 street: street,8 },9 application_name: applicationName,10 billing_contact: {11 email: billingEmail,12 given_name: billingGivenName,13 family_name: billingFamilyName,14 },15 customer_support_info: {16 email: supportEmail,17 phone_number: supportPhoneNumber,18 contact_url: supportContactUrl,19 link_update_url: linkUpdateUrl,20 },21 company_name: companyName,22 is_bank_addendum_completed: true,23 is_diligence_attested: true,24 legal_entity_name: legalEntityName,25 products: products,26 technical_contact: {27 email: technicalEmail,28 given_name: technicalGivenName,29 family_name: technicalFamilyName,30 },31 website: website,32};33try {34 const response = await plaidClient.partnerCustomerCreate(request);35 const endCustomer = response.data.end_customer;36} catch (error) {37 // handle error38}
Response fields and example
end_customer
client_id
client_id
of the end customer.company_name
status
UNDER_REVIEW
: The end customer has been created and enabled in Sandbox and Limited Production. The end customer must be manually reviewed by the Plaid team before it can be enabled in full production, at which point its status will automatically transition to PENDING_ENABLEMENT
or DENIED
.PENDING_ENABLEMENT
: The end customer is ready to be fully enabled in the Production environment. Call the /partner/customer/enable
endpoint to enable the end customer in full Production.ACTIVE
: The end customer has been fully enabled in all environments.DENIED
: The end customer has been created and enabled in Sandbox and Limited Production, but it did not pass review by the Plaid team and therefore cannot be enabled for full Production access. Talk to your Account Manager for more information.UNDER_REVIEW
, PENDING_ENABLEMENT
, ACTIVE
, DENIED
secrets
sandbox
production
request_id
1{2 "end_customer": {3 "client_id": "7f57eb3d2a9j6480121fx361",4 "company_name": "Plaid",5 "status": "ACTIVE",6 "secrets": {7 "sandbox": "b60b5201d006ca5a7081d27c824d77",8 "production": "79g03eoofwl8240v776r2h667442119"9 }10 },11 "request_id": "4zlKapIkTm8p5KM"12}
Was this helpful?
/partner/customer/get
Returns a Plaid reseller's end customer.
The /partner/customer/get
endpoint is used by reseller partners to retrieve data about a single end customer.
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.end_customer_client_id
1const request: PartnerCustomerGetRequest = {2 end_customer_client_id: clientId,3};4try {5 const response = await plaidClient.partnerCustomerGet(request);6 const endCustomer = response.data.end_customer;7} catch (error) {8 // handle error9}
Response fields and example
end_customer
client_id
client_id
of the end customer.company_name
status
UNDER_REVIEW
: The end customer has been created and enabled in Sandbox and Limited Production. The end customer must be manually reviewed by the Plaid team before it can be enabled in full production, at which point its status will automatically transition to PENDING_ENABLEMENT
or DENIED
.PENDING_ENABLEMENT
: The end customer is ready to be fully enabled in the Production environment. Call the /partner/customer/enable
endpoint to enable the end customer in full Production.ACTIVE
: The end customer has been fully enabled in all environments.DENIED
: The end customer has been created and enabled in Sandbox and Limited Production, but it did not pass review by the Plaid team and therefore cannot be enabled for full Production access. Talk to your Account Manager for more information.UNDER_REVIEW
, PENDING_ENABLEMENT
, ACTIVE
, DENIED
request_id
1{2 "end_customer": {3 "client_id": "7f57eb3d2a9j6480121fx361",4 "company_name": "Plaid",5 "status": "ACTIVE"6 },7 "request_id": "4zlKapIkTm8p5KM"8}
Was this helpful?
/partner/customer/oauth_institutions/get
Returns OAuth-institution registration information for a given end customer.
The /partner/customer/oauth_institutions/get
endpoint is used by reseller partners to retrieve OAuth-institution registration information about a single end customer. To learn how to set up a webhook to listen to status update events, visit the reseller documentation.
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.end_customer_client_id
1const request: PartnerCustomerOAuthInstitutionsGetRequest = {2 end_customer_client_id: clientId,3};4try {5 const response = await plaidClient.partnerCustomerOAuthInstitutionsGet(6 request,7 );8} catch (error) {9 // handle error10}
Response fields and example
flowdown_status
NOT_STARTED
, IN_REVIEW
, NEGOTIATION
, COMPLETE
questionnaire_status
NOT_STARTED
, RECEIVED
, COMPLETE
institutions
name
institution_id
environments
development
NOT_STARTED
, PROCESSING
, APPROVED
, ENABLED
, ATTENTION_REQUIRED
production
NOT_STARTED
, PROCESSING
, APPROVED
, ENABLED
, ATTENTION_REQUIRED
production_enablement _date
classic_disablement _date
request_id
1{2 "flowdown_status": "COMPLETE",3 "questionnaire_status": "COMPLETE",4 "institutions": [5 {6 "name": "Chase",7 "institution_id": "ins_56",8 "environments": {9 "production": "PROCESSING"10 },11 "production_enablement_date": null,12 "classic_disablement_date": "2022-06-30"13 },14 {15 "name": "Capital One",16 "institution_id": "ins_128026",17 "environments": {18 "production": "ENABLED"19 },20 "production_enablement_date": "2022-12-19",21 "classic_disablement_date": null22 }23 ],24 "request_id": "4zlKapIkTm8p5KM"25}
Was this helpful?
/partner/customer/enable
Enables a Plaid reseller's end customer in the Production environment.
The /partner/customer/enable
endpoint is used by reseller partners to enable an end customer in the full Production environment.
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.end_customer_client_id
1const request: PartnerCustomerEnableRequest = {2 end_customer_client_id: clientId,3};4try {5 const response = await plaidClient.partnerCustomerEnable(request);6 const productionSecret = response.data.production_secret;7} catch (error) {8 // handle error9}
Response fields and example
production_secret
request_id
1{2 "production_secret": "79g03eoofwl8240v776r2h667442119",3 "request_id": "4zlKapIkTm8p5KM"4}
Was this helpful?
/partner/customer/remove
Removes a Plaid reseller's end customer.
The /partner/customer/remove
endpoint is used by reseller partners to remove an end customer. Removing an end customer will remove it from view in the Plaid Dashboard and deactivate its API keys. This endpoint can only be used to remove an end customer that has not yet been enabled in full Production.
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.end_customer_client_id
client_id
of the end customer to be removed.1const request: PartnerCustomerRemoveRequest = {2 end_customer_client_id: clientId,3};4try {5 const response = await plaidClient.partnerCustomerRemove(request);6} catch (error) {7 // handle error8}
Response fields and example
request_id
1{2 "request_id": "4zlKapIkTm8p5KM"3}
Was this helpful?
Webhooks
PARTNER_END_CUSTOMER_OAUTH_STATUS_UPDATED
The webhook of type PARTNER
and code END_CUSTOMER_OAUTH_STATUS_UPDATED
will be fired when a partner's end customer has an update on their OAuth registration status with an institution.
webhook_type
PARTNER
webhook_code
END_CUSTOMER_OAUTH_STATUS_UPDATED
end_customer_client_id
environment
sandbox
, production
institution_id
institution_name
status
not-started
, processing
, approved
, enabled
, attention-required
1{2 "webhook_type": "PARTNER",3 "webhook_code": "END_CUSTOMER_OAUTH_STATUS_UPDATED",4 "end_customer_client_id": "634758733ebb4f00134b85ea",5 "environment": "production",6 "institution_id": "ins_127989",7 "institution_name": "Bank of America",8 "status": "attention-required"9}