Introduction to Layer
Onboard users instantly with just a phone number
API Reference
View Layer requests, responses, and example code
View Layer APIRequest Access
Request Sandbox access for Layer
Get startedOverview
Instantly onboard millions of people from the Plaid Network with Layer (US only).
Given a phone number, we can find out if that person is on the Plaid Network and if they meet your onboarding requirements. Next, we authenticate the device and use real-time risk analysis to securely deliver the fastest user experience. Once they confirm their details and choose which financial account to share, you can verify their identity using your KYC provider and connect their accounts with Plaid.
To get started with Layer, contact Sales to request Sandbox access.
See a live, interactive demo of a Plaid-powered onboarding flow using Layer.
Integration overview
If you use Layer with Plaid Check products, see the Plaid Check Layer onboarding guide.
Call
/link/token/create
.Along with any other parameters you specify, make sure to include
layer
in theproducts
array. If you want to receive Item data from this flow, you must include non-Layer products in theproducts
array as well. Layer does not support therequired_if_supported_products
,optional_products
, oradditional_consented_products
parameters.On your client, create an instance of Link using the
link_token
returned by/link/token/create
. With Layer, you should create the Plaid handler object (i.e. viaPlaid.create(...)
) as early as possible so Link can pre-load in the background. This ensures the fastest possible experience for your users.If you have an existing Android integration that does not use a
PlaidHandler
or that usesOpenPlaidLink
instead ofFastOpenPlaidLink
, or an existing React Native integration that usesPlaidLink
instead ofcreate
andopen
, you will need to update your client-side Link opening code to take advantage of the new faster loading scheme. For details and sample code, see React Native: opening Link and Android: opening Link.Once you have a user's phone number, pass it to to the Plaid handler object:
handler.submit({ "phone_number": "+14155550015"})
. Link will quickly check if the user is eligible for Layer, and call the LinkonEvent
callback with eitherLAYER_READY
orLAYER_NOT_AVAILABLE
.When you receive
LAYER_READY
, it means the user is eligible and you should callhandler.open()
to immediately present the Layer UI. If you receiveLAYER_NOT_AVAILABLE
, you may discard the handler object and continue with any non-Layer flow in your app. For example, if your application falls back to a non-Layer product flow, you'd create a new Link Token and handler to present that flow.Once the end user has completed the Link flow, you will receive an
onSuccess
callback. Use the receivedpublic_token
with the/user_account/session/get
API in order to retrieve the user's profile information and any linked Items.
Sample code
For a walkthrough of integrating Layer, including sample code across multiple platforms, see Add Layer to your app.
Minimum SDK versions
If you are developing for the web using the JavaScript SDK, Plaid will automatically provide the latest available SDK, which includes Layer support. If you are developing a native mobile application, Layer requires SDK versions from June 2024 or later. Minimum versions are 5.6.0 (iOS), 4.5.0 (Android), and 11.11.0 (React Native).
Testing Layer
In order to test out Plaid Layer in Sandbox, use 415-555-0015
as the phone number, and 123456
as the OTP when prompted for the SMS verification code.
In Production, the authentication step of Layer is dynamic and may authenticate the user via Silent Network Authentication, SMS OTP, or Passkeys (coming soon), depending on the user and the device; authentication checks such as trusted device matching or mobile carrier checks (for SIM swaps, port outs, etc.) are also run in Production.
Sandbox provides a simplified authentication experience: in Sandbox, users can only be authenticated via OTP, and authentication checks are not run.