/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
KeyTypeDescription
headerJSON objectRequired. Requires these keys in JSON format: created, app_handle. See the /check_handle endpoint for the complete list of fields in this object.
search_filtersJSON objectOptional. Allows filtering results.
search_filters.
institution_name
StringOptional. Institution name for fuzzy match - must be minimum of 3 characters if provided.
search_filters.
routing_number
StringOptional. Routing number that would do exact match on routing number
search_filters.pageIntegerOptional. Min 1
Default: 1
search_filters.
per_page
IntegerOptional. Min 1
Max 100
Default per page 20

Responses

Status CodeDescription
200Successfully fetched array of institutions.
400Bad request format - check validation_details for more information.
401authsignature header was absent or incorrect.
KeyTypeDescription
institutionsJSON ObjectProvides the institution data, including routing number, name, address, phone number, and supported Plaid products
institutions.nameStringThe official name of the institution as listed in the Federal Reserve's ACH directory
institutions.office_codeStringMain office or branch O=main B=branch
institutions.routing_numberStringThe institution's routing number
institutions.record_type_codeStringThe 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_dateStringThe date of the last change to this routing number. Format is "YYYY-MM-DD"
institutions.new_routing_numberStringThe institution's new routing number resulting from a merger or new number issuance
institutions.addressJSON ObjectThe institution's address
institutions.phoneStringThe institution's phone number
institutions.institution_status_codeStringCode is based on the customers receiver code
1=Receives Gov/Comm
institutions.data_view_codeString1 = Current view
institutions.productsJSON ObjectLists the Plaid products that are supported by this institution