/get_institutions (Plaid Only)
Fetch data about financial institutions and which Plaid products are supported.
This will return a list of financial institutions along with details like name, routing numbers, and which Plaid products are supported. This information can be helpful when linking bank accounts.
You can fetch institution information by:
- Specifying an institution name - must be a minimum of 3 characters. The response will return institutions with a fuzzy match to that name.
- Specify a routing number. The response will return institutions that match the routing number.
Requests
The search_filters
object is optional.
Authorization / Authentication
Apps using Access Token Authorization
Use a valid access token in an Authorization: Bearer request header.
See Authenticating with an Access Token for more details.
Apps using ECDSA Authentication
Only an authsignature
header is required for this request. See the section on ECDSA Authentication for more detail about ECDSA signature generation.
POST /0.2/get_institutions HTTP/1.1
sandbox.silamoney.com
Content-Type: application/json
// if using OAuth2
Authorization: Bearer [GENERATED JWT TOKEN HERE]
// if using ECDSA
authsignature: [GENERATED AUTHSIGNATURE HEX STRING HERE]
{
"header": {
"created": 1234567890,
"app_handle": "handle.silamoney.eth",
"reference": "<your unique id>"
},
"message": "header_msg",
"search_filters": {
"institution_name": "Institution Name(Min 3 char)",
"routing_number": "1234567891",
"page": 1,
"per_page": 20
}
}
***
HTTP/1.1 200 OK
{
"success": true,
"institutions": [
{
"name": "1st advantage bank",
"office_code": "O",
"routing_number": "081019120",
"record_type_code": "1",
"change_date": "2010-05-26",
"new_routing_number": "000000000",
"address": {
"street_address": "240 SALT LICK ROAD",
"city": "ST. PETERS",
"state": "MO",
"country": "US",
"postal_code": "63376-0000"
},
"phone": "(636) 970-0440",
"institution_status_code": "1",
"data_view_code": "1",
"products": [
"assets",
"balance",
"transactions",
"income"
]
}
],
"page": 1,
"returned_count": 20,
"total_count": 100,
"pagination": {
"returned_count": 20,
"total_count": 100,
"current_page": 1,
"total_pages": 5
},
"status": "SUCCESS",
"response_time_ms": "171",
"reference": "<your unique id>"
}
InstitutionSearchFilters searchFilters = new InstitutionSearchFilters(); //Search filter is optional
searchFilters.setInstitutionName("institution name");
searchFilters.setPage(1);
searchFilters.setPerPage(20);
searchFilters.setRoutingNumber("routing number");
ApiResponse response = api.getInstitutions(searchFilters);
/*======OR======*/
ApiResponse response = api.getInstitutions();
GetInstitutionsResponse parsedResponse = (GetInstitutionsResponse) response.getData();
parsedResponse.getInstitutions().get(0).getAddress();
parsedResponse.getInstitutions().get(0).getChangeDate();
parsedResponse.getInstitutions().get(0).getDataViewCode();
parsedResponse.getInstitutions().get(0).getInstitutionStatusCode();
parsedResponse.getInstitutions().get(0).getName();
parsedResponse.getInstitutions().get(0).getNewRoutingNumber();
parsedResponse.getInstitutions().get(0).getOfficeCode();
parsedResponse.getInstitutions().get(0).getPhone();
parsedResponse.getInstitutions().get(0).getProducts().get(0);
parsedResponse.getInstitutions().get(0).getRecordTypeCode();
parsedResponse.getInstitutions().get(0).getRoutingNumber();
parsedResponse.getMessage();
parsedResponse.getPage();
parsedResponse.getPagination().getCurrentPage();
parsedResponse.getPagination().getReturnedCount();
parsedResponse.getPagination().getTotalCount();
parsedResponse.getPagination().getTotalPages();
parsedResponse.getReference();
parsedResponse.getReturnedCount();
parsedResponse.getStatus();
parsedResponse.getSuccess();
parsedResponse.getTotalCount();
payload = {
"institution_name": "institution name", #Optional parameter
"routing_number": "12345678", #Optional parameter
"page": 1,
"per_page": 20
}
response = silasdk.User.get_institutions(app, payload)
response["success"]
response["institutions"][0]["name"]
response["institutions"][0]["office_code"]
response["institutions"][0]["routing_number"]
response["institutions"][0]["record_type_code"]
response["institutions"][0]["change_date"]
response["institutions"][0]["new_routing_number"]
response["institutions"][0]["address"]["street_address"]
response["institutions"][0]["address"]["city"]
response["institutions"][0]["address"]["state"]
response["institutions"][0]["address"]["country"]
response["institutions"][0]["address"]["postal_code"]
response["institutions"][0]["phone"]
response["institutions"][0]["institution_status_code"]
response["institutions"][0]["data_view_code"]
response["institutions"][0]["products"]
response["returned_count"]
response["total_count"]
response["pagination"]["returned_count"]
response["pagination"]["total_count"]
response["pagination"]["current_page"]
response["pagination"]["total_pages"]
response["status"]
use Silamoney\Client\Domain\SearchFilters;
$filters = new SearchFilters(); // Optional
$filters->setInstitutionName('some institution name');
$filters->setRoutingNumber('some routing number or new routing number');
// Call the API
$response = $client->getInstitutions($filters);
// or Call the API without filters
$response = $client->getInstitutions();
//Success 200
echo $response->getStatusCode(); // 200
$data = $response->getData();
echo $data->success; // TRUE
$data->status; // SUCCESS
$data->page; // The current page
$data->returnedCount; // The amount of results returned in this request
$data->totalCount; // The total amount of results that satisfies the filters
$institutiions = $data->institutions; // Array of institutions
$institutions[0]->name; // The institution name
$institutions[0]->officeCode; // The office code
$institutions[0]->routingNumber; // The routing number
$institutions[0]->recordTypeCode; // The record type code
$institutions[0]->changeDate; // The change date
$institutions[0]->newRoutingNumber; // The new routing number
$institutions[0]->address; // The institution address object
$institutions[0]->address->streetAdress; // The institution street address
$institutions[0]->address->city; // The institution city code
$institutions[0]->address->country; // The institution country code
$institutions[0]->address->postalCode; // The institution postal code
$institutions[0]->phone; // The institution phone
$institutions[0]->institutionStatusCode; // The institution status code
$institutions[0]->dataViewCode; // The institution data view code
$institutions[0]->products; // Array of institution products
$response->getData()->pagination; // Pagination details (returned count, total count, current page, total pages)
$response->getData()->pagination->returnedCount;
$response->getData()->pagination->totalCount;
$response->getData()->pagination->currentPage;
$response->getData()->pagination->totalPages;
//search_filters is optional
var search_filters = {
institution_name: 'institution name',
routing_number: 'routing number',
page: 1,
per_page: 20,
};
const res = await sila.getInstitutions(search_filters);
// ============ OR ========================
const res = await sila.getInstitutions();
res.data.succes;
res.data.institutions[0].name;
res.data.institutions[0].office_code;
res.data.institutions[0].routing_number;
res.data.institutions[0].record_type_code;
res.data.institutions[0].change_date;
res.data.institutions[0].new_routing_number;
res.data.institutions[0].address.street_address;
res.data.institutions[0].address.city;
res.data.institutions[0].address.state;
res.data.institutions[0].address.country;
res.data.institutions[0].address.postal_code;
res.data.institutions[0].phone;
res.data.institutions[0].institution_status_code;
res.data.institutions[0].data_view_code;
res.data.products[0];
res.data.page;
res.data.returned_count;
res.data.total_count;
res.data.pagination.returned_count;
res.data.pagination.total_count;
res.data.pagination.current_page;
res.data.pagination.total_pages;
res.data.status;
InstitutionSearchFilters searchFilters = new InstitutionSearchFilters
{
Page = 1,
PerPage = 20,
InstitutionName = "institution name",
RoutingNumber = "routing number"
};
ApiResponse<object> response = api.GetInstitutions(searchFilters);//searchFilters is optional.
// Success Object Response
Console.WriteLine(response.StatusCode); // 200
Console.WriteLine(((GetInstitutionsResponse)response.Data).TotalCount); // Total Count
Console.WriteLine(((GetInstitutionsResponse)response.Data).Success); // true
Console.WriteLine(((GetInstitutionsResponse)response.Data).Status); // SUCCESS
Console.WriteLine(((GetInstitutionsResponse)response.Data).ReturnedCount); // Returned Count
Console.WriteLine(((GetInstitutionsResponse)response.Data).Reference); // Reference
Console.WriteLine(((GetInstitutionsResponse)response.Data).Pagination.CurrentPage); // Pagination
Console.WriteLine(((GetInstitutionsResponse)response.Data).Pagination.ReturnedCount); // Pagination
Console.WriteLine(((GetInstitutionsResponse)response.Data).Pagination.TotalCount); // Pagination
Console.WriteLine(((GetInstitutionsResponse)response.Data).Pagination.TotalPages); // Pagination
Console.WriteLine(((GetInstitutionsResponse)response.Data).Page); // Page
Console.WriteLine(((GetInstitutionsResponse)response.Data).Message); // Message
Console.WriteLine(((GetInstitutionsResponse)response.Data).Institutions[0].Address.Uuid);
Console.WriteLine(((GetInstitutionsResponse)response.Data).Institutions[0].Address.StreetAddress1);
Console.WriteLine(((GetInstitutionsResponse)response.Data).Institutions[0].Address.StreetAddress2);
Console.WriteLine(((GetInstitutionsResponse)response.Data).Institutions[0].Address.State);
Console.WriteLine(((GetInstitutionsResponse)response.Data).Institutions[0].Address.PostalCode);
Console.WriteLine(((GetInstitutionsResponse)response.Data).Institutions[0].Address.Nickname);
Console.WriteLine(((GetInstitutionsResponse)response.Data).Institutions[0].Address.City);
Console.WriteLine(((GetInstitutionsResponse)response.Data).Institutions[0].Address.Country);
Console.WriteLine(((GetInstitutionsResponse)response.Data).Institutions[0].Address.AddressAlias);
Console.WriteLine(((GetInstitutionsResponse)response.Data).Institutions[0].ChangeDate); // Change Date
Console.WriteLine(((GetInstitutionsResponse)response.Data).Institutions[0].DataViewCode); // DataView Code
Console.WriteLine(((GetInstitutionsResponse)response.Data).Institutions[0].InstitutionStatusCode); // Institution Status Code
Console.WriteLine(((GetInstitutionsResponse)response.Data).Institutions[0].Name); // Name
Console.WriteLine(((GetInstitutionsResponse)response.Data).Institutions[0].NewRoutingNumber); // New Routing Number
Console.WriteLine(((GetInstitutionsResponse)response.Data).Institutions[0].OfficeCode); // Office Code
Console.WriteLine(((GetInstitutionsResponse)response.Data).Institutions[0].Phone); // Phone
Console.WriteLine(((GetInstitutionsResponse)response.Data).Institutions[0].RecordTypeCode); // Record Type Code
Console.WriteLine(((GetInstitutionsResponse)response.Data).Institutions[0].RoutingNumber); // Routing Number
Console.WriteLine(((GetInstitutionsResponse)response.Data).Institutions[0].Products[0]); // assets
Console.WriteLine(((GetInstitutionsResponse)response.Data).Institutions[0].Products[1]); // balance
Console.WriteLine(((GetInstitutionsResponse)response.Data).Institutions[0].Products[2]); // transactions
Console.WriteLine(((GetInstitutionsResponse)response.Data).Institutions[0].Products[3]); // income
Key | Type | Description |
---|---|---|
header | JSON object | Required. Requires these keys in JSON format: created, app_handle. See the /check_handle endpoint for the complete list of fields in this object. |
search_filters | JSON object | Optional. Allows filtering results. |
search_filters. institution_name | String | Optional. Institution name for fuzzy match - must be minimum of 3 characters if provided. |
search_filters. routing_number | String | Optional. Routing number that would do exact match on routing number |
search_filters.page | Integer | Optional. Min 1 Default: 1 |
search_filters. per_page | Integer | Optional. Min 1 Max 100 Default per page 20 |
Responses
Status Code | Description |
---|---|
200 | Successfully fetched array of institutions. |
400 | Bad request format - check validation_details for more information. |
401 | authsignature header was absent or incorrect. |
Key | Type | Description |
---|---|---|
institutions | JSON Object | Provides the institution data, including routing number, name, address, phone number, and supported Plaid products |
institutions.name | String | The official name of the institution as listed in the Federal Reserve's ACH directory |
institutions.office_code | String | Main office or branch O=main B=branch |
institutions.routing_number | String | The institution's routing number |
institutions.record_type_code | String | The code indicating the ABA number to be used to route or send ACH items to the RFI 0 = Institution is a Federal Reserve Bank 1 = Send items to customer routing number 2 = Send items to customer using new routing number field |
institutions.change_date | String | The date of the last change to this routing number. Format is "YYYY-MM-DD" |
institutions.new_routing_number | String | The institution's new routing number resulting from a merger or new number issuance |
institutions.address | JSON Object | The institution's address |
institutions.phone | String | The institution's phone number |
institutions.institution_status_code | String | Code is based on the customers receiver code 1=Receives Gov/Comm |
institutions.data_view_code | String | 1 = Current view |
institutions.products | JSON Object | Lists the Plaid products that are supported by this institution |
Updated about 1 year ago