Bank linking — start (Plaid)

This API is used to start saving a bank account: the customer logs in to their bank on a hosted page (Plaid) and picks an account.

It returns a session_id and a hosted_link_url. Send the customer to hosted_link_url; when they finish they return to redirect_uri. Then call Bank linking — status with the session_id to get the saved account.

Note: The location must have bank linking (Plaid) enabled. Customer data comes from the profile; fields in the body override it. Which fields are required depends on the location setup; missing ones return 422 with the field names.

URL

{{interface_url}}/{{version}}/customers/{{customer_id}}/bank-linking-sessions

Method

POST

Headers

Authorization: Bearer {access_token} (or Api-Key)

Request Parameters

FieldTypeRequiredDescription
redirect_uriStringNoHTTPS URL where the customer returns after linking.
first_name / last_nameStringNoMax 64. Default: profile.
emailStringNoDefault: profile.
phoneStringNo7-15 digits. Default: profile.
date_of_birthStringNoYYYY-MM-DD.
address.line1StringNoMax 100. Default: profile.
address.cityStringNoMax 64.
address.stateStringNoState code (e.g. TX). Default: profile state.
address.zipcodeStringNoMax 20.
location_idIntegerConditionalLocation to use. Required when the token covers more than one location (corporate / sub corporate); with a location token it is taken from the token.

URL Parameters

ParameterRequired/OptionalTypeDescription
customer_idRequiredIntegerOur customer ID (id returned by Create customer).

Example Request (cURL)

curl --location --request POST '{{interface_url}}/{{version}}/customers/{{customer_id}}/bank-linking-sessions' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {{access_token}}' \
--data '{
  "location_id": 279685,
  "redirect_uri": "https://example.com/bank-linked",
  "date_of_birth": "1990-01-31",
  "address": {
    "line1": "100 Main St",
    "city": "Austin",
    "state": "TX",
    "zipcode": "78701"
  }
}'

Example Response (JSON) — 201

{
  "session_id": 123,
  "location_id": 279685,
  "hosted_link_url": "https://hosted.plaid.com/link/...",
  "expires_at": "2026-11-05T18:46:18Z",
  "status": "pending"
}

Error Responses

Format: { "error": { "code", "name", "message", "details" } }

StatusErrorWhen
400bank_linking_not_enabledThe location has no bank linking.
422invalid_parameter_valueA field the location requires is missing (see error.details).
404customer_not_foundThe customer is not linked to that location.
502gateway_unavailableThe gateway did not answer. Retry.

Path Params
string
required
string
required
Body Params
Response

Language
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
application/json