> ## Documentation Index
> Fetch the complete documentation index at: https://docs.flinks.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Supported Financial Institutions

> Search and browse the financial institutions supported by Flinks in Canada and the United States.

export const InstitutionSearch = () => {
  const [keyword, setKeyword] = useState('');
  const [results, setResults] = useState([]);
  const [loading, setLoading] = useState(false);
  const [error, setError] = useState('');
  const [hasSearched, setHasSearched] = useState(false);
  const [selectedCountry, setSelectedCountry] = useState('Canada');
  const [selectedProduct, setSelectedProduct] = useState('banking');
  const searchInstitutions = async (countryOverride = null, productOverride = null) => {
    if (!keyword.trim() || keyword.trim().length < 2) return;
    setLoading(true);
    setError('');
    setHasSearched(true);
    try {
      const currentCountry = countryOverride || selectedCountry;
      const currentProduct = productOverride || selectedProduct;
      const apiConfig = currentCountry === 'Canada' ? {
        domain: 'demo-api.private.fin.ag',
        customerId: '3f305ebe-6ab2-4744-bb1a-d12414b0173d'
      } : {
        domain: 'demo-us-api.private.fin.ag',
        customerId: '615d9e39-b026-43fb-b06c-e50cf7bc1251'
      };
      const productType = currentProduct === 'investment' ? 'investment' : 'banking';
      const response = await fetch('/_mintlify/api/request', {
        method: 'POST',
        headers: {
          'Content-Type': 'application/json'
        },
        body: JSON.stringify({
          method: 'get',
          url: `https://${apiConfig.domain}/v4/${apiConfig.customerId}/BankingServices/searchInstitutions?keyword=${encodeURIComponent(keyword)}&language=en&productType=${productType}`,
          header: {
            'Content-Type': 'application/json',
            'Accept': 'application/json'
          },
          cookie: {},
          query: {}
        })
      });
      if (!response.ok) {
        throw new Error('Failed to search institutions');
      }
      const proxyResponse = await response.json();
      if (proxyResponse.error) {
        throw new Error('Proxy request failed');
      }
      const apiResponseData = proxyResponse.response.data;
      const binaryString = atob(apiResponseData);
      const bytes = new Uint8Array(binaryString.length);
      for (let i = 0; i < binaryString.length; i++) {
        bytes[i] = binaryString.charCodeAt(i);
      }
      const decodedString = new TextDecoder('utf-8').decode(bytes);
      const decodedData = JSON.parse(decodedString);
      setResults(decodedData || []);
    } catch (err) {
      setError('Error searching institutions. Please try again.');
      setResults([]);
    } finally {
      setLoading(false);
    }
  };
  const handleSubmit = e => {
    e.preventDefault();
    searchInstitutions();
  };
  const handleKeyPress = e => {
    if (e.key === 'Enter') {
      searchInstitutions();
    }
  };
  const selectCountry = country => {
    if (selectedProduct === 'investment' && country === 'United States') {
      return;
    }
    setSelectedCountry(country);
    if (keyword.trim().length >= 2) {
      setResults([]);
      setError('');
      searchInstitutions(country);
    }
  };
  const selectProduct = product => {
    setSelectedProduct(product);
    if (product === 'investment' && selectedCountry === 'United States') {
      setSelectedCountry('Canada');
    }
    if (keyword.trim().length >= 2) {
      setResults([]);
      setError('');
      const countryToUse = product === 'investment' && selectedCountry === 'United States' ? 'Canada' : selectedCountry;
      searchInstitutions(countryToUse, product);
    }
  };
  const getPlaceholder = () => {
    if (selectedProduct === 'investment') {
      return "Search brokers in Canada ex.: Questrade, Wealthsimple...";
    }
    if (selectedCountry === 'United States') {
      return "Search banks in the US ex.: Chase, TD...";
    }
    return "Search banks in Canada ex.: TD, CIBC...";
  };
  return <>
      <style>{`
        .institution-search-container {
          display: flex;
          gap: 16px;
          align-items: center;
          width: 100%;
        }
        @media (max-width: 640px) {
          .institution-search-container {
            flex-direction: column;
            align-items: stretch;
          }
          .institution-search-button {
            width: 100%;
          }
          .institution-search-input-group {
            flex-wrap: wrap !important;
            height: auto !important;
            border-radius: 20px !important;
            padding: 8px !important;
          }
          .institution-search-product-btn,
          .institution-search-loc-btn {
            width: 50% !important;
            margin: 0 !important;
            border-radius: 12px !important;
          }
          .institution-search-product-btn {
            order: 1;
            margin-bottom: 4px !important;
          }
          .institution-search-loc-btn {
            order: 2;
            margin-bottom: 4px !important;
          }
          .institution-search-input {
            order: 3;
            width: 100% !important;
            flex: none !important;
            margin: 8px 0 !important;
            height: 48px !important;
          }
        }
        .light .institution-search-error {
          color: rgb(220 38 38) !important;
          background-color: rgb(254 242 242) !important;
          border-color: rgb(254 202 202) !important;
        }
        .light .institution-search-text {
          color: rgb(55 65 81) !important;
        }
        .dark .institution-search-error {
          color: rgb(248 113 113) !important;
          background-color: rgb(69 26 26) !important;
          border-color: rgb(153 27 27) !important;
        }
        .dark .institution-search-text {
          color: rgb(243 244 246) !important;
        }
        .light .institution-search-code {
          background-color: rgb(243 244 246) !important;
          color: rgb(55 65 81) !important;
        }
        .dark .institution-search-code {
          background-color: rgb(55 65 81) !important;
          color: rgb(209 213 219) !important;
        }
      `}</style>
    <div style={{
    fontFamily: 'var(--font-body, Helvetica Neue), sans-serif',
    padding: '20px 0'
  }}>

      <form onSubmit={handleSubmit} style={{
    marginBottom: '32px'
  }}>
        <div className="institution-search-container">
          <div className="institution-search-input-group flex bg-gray-950/[0.03] dark:bg-white/[0.03] rounded-full overflow-hidden border border-gray-200/30 dark:border-white/10" style={{
    flex: 1,
    display: 'flex',
    alignItems: 'center',
    height: '54px'
  }}>
            <button type="button" onClick={() => selectProduct('banking')} className={`institution-search-product-btn flex items-center justify-center w-11 h-11 transition-all hover:opacity-80 text-lg ${selectedProduct === 'banking' ? 'bg-[#3064E3] text-white' : 'bg-transparent hover:bg-gray-950/10 dark:hover:bg-white/10'}`} title="Banking" style={{
    borderRadius: '9999px',
    border: 'none',
    margin: '0 5px'
  }}>
              🏦
            </button>
            <button type="button" disabled className="institution-search-product-btn flex items-center justify-center w-11 h-11 transition-all text-lg opacity-30 cursor-not-allowed bg-transparent" title="Investment/Wealth (deprecated — retired April 30, 2026)" style={{
    borderRadius: '9999px',
    border: 'none',
    margin: '0 5px'
  }}>
              💰
            </button>
            <input type="text" className="institution-search-input flex pointer-events-auto w-full items-center text-base leading-6 pl-5 pr-3 text-gray-500 dark:text-white/50 dark:brightness-[1.1] justify-between truncate gap-2 bg-transparent hover:bg-gray-950/5 shadow-none border-none ring-0 dark:ring-0 outline-none" value={keyword} onChange={e => {
    setKeyword(e.target.value);
    setHasSearched(false);
  }} onKeyPress={handleKeyPress} placeholder={getPlaceholder()} style={{
    flex: 1,
    borderRadius: '9999px',
    height: '44px',
    margin: '0 5px'
  }} />
            <button type="button" onClick={() => selectCountry('Canada')} className={`institution-search-loc-btn flex items-center justify-center w-11 h-11 transition-all hover:opacity-80 text-lg ${selectedCountry === 'Canada' ? 'bg-[#3064E3] text-white' : 'bg-transparent hover:bg-gray-950/10 dark:hover:bg-white/10'}`} title="Canada" style={{
    borderRadius: '9999px',
    border: 'none'
  }}>
              🇨🇦
            </button>
            <button type="button" onClick={() => selectCountry('United States')} disabled={selectedProduct === 'investment'} className={`institution-search-loc-btn flex items-center justify-center w-11 h-11 transition-all text-lg ${selectedProduct === 'investment' ? 'opacity-30 cursor-not-allowed' : selectedCountry === 'United States' ? 'bg-[#3064E3] text-white hover:opacity-80' : 'bg-transparent hover:bg-gray-950/10 dark:hover:bg-white/10 hover:opacity-80'}`} title={selectedProduct === 'investment' ? "US not supported for Investment" : "United States"} style={{
    borderRadius: '9999px',
    border: 'none',
    margin: '0 5px'
  }}>
              🇺🇸
            </button>
          </div>
          <button type="submit" disabled={loading || !keyword.trim() || keyword.trim().length < 2} className="tryit-button institution-search-button flex items-center justify-center px-6 h-11 font-medium rounded-full hover:opacity-80 gap-2 bg-[#3064E3] text-[#FFFFFF] text-base" style={{
    cursor: loading || !keyword.trim() || keyword.trim().length < 2 ? 'not-allowed' : 'pointer',
    opacity: loading || !keyword.trim() || keyword.trim().length < 2 ? 0.5 : 1
  }}>
            <span>{loading ? 'Searching...' : 'Search'}</span>
          </button>
        </div>
      </form>

      {error && <div className="institution-search-error" style={{
    fontSize: '15px',
    marginBottom: '24px',
    padding: '16px 20px',
    borderRadius: '8px',
    fontFamily: 'var(--font-body, Helvetica Neue), sans-serif'
  }}>
          {error}
        </div>}

      {results.length > 0 && <div>
          <p className="institution-search-text" style={{
    fontWeight: '600',
    marginBottom: '20px',
    fontSize: '16px',
    fontFamily: 'var(--font-body, Helvetica Neue), sans-serif'
  }}>
            Found {results.length} institution{results.length !== 1 ? 's' : ''}:
          </p>
          <ul style={{
    maxHeight: '400px',
    overflowY: 'auto',
    paddingLeft: 0,
    margin: 0,
    listStyle: 'none'
  }}>
            {results.map((institution, index) => <li key={index} className="institution-search-text" style={{
    marginBottom: '12px',
    fontSize: '17px',
    lineHeight: '1.5',
    padding: '4px 0',
    fontFamily: 'var(--font-body, Helvetica Neue), sans-serif'
  }}>
                {institution.BrandName} <code className="institution-search-code" style={{
    fontSize: '15px',
    fontFamily: 'monospace',
    padding: '4px 8px',
    borderRadius: '6px',
    marginLeft: '8px'
  }}>{institution.Id}</code>
                {selectedProduct === 'banking' && institution.IsOauth && <span style={{
    fontSize: '12px',
    fontWeight: '600',
    padding: '2px 8px',
    borderRadius: '9999px',
    marginLeft: '8px',
    backgroundColor: '#3064E3',
    color: '#FFFFFF',
    verticalAlign: 'middle',
    letterSpacing: '0.025em'
  }}>OAuth</span>}
              </li>)}
          </ul>
        </div>}

      {!loading && hasSearched && keyword && results.length === 0 && !error && <p className="institution-search-text-secondary" style={{
    fontStyle: 'italic',
    fontSize: '15px',
    marginBottom: '24px',
    padding: '8px 0',
    fontFamily: 'var(--font-body, Helvetica Neue), sans-serif'
  }}>
          No institutions found for "{keyword}". Try a different search term.
        </p>}

    </div>
    </>;
};

Flinks can connect to a number of Financial Institutions in both Canada and the United States. To check the real-time status of any institution, visit the [Flinks Status Page](https://status.flinks.com).

Use our live institution search below to check if a specific financial institution is supported. Alternatively, you can query the [/Institutions endpoint](/api/connect/endpoints/account-linking/institutions) to retrieve the full list programmatically.

<InstitutionSearch />

## Major Financial Institutions: Canada

* [ATB](https://status.flinks.com/components/5a737ef450c68b19b1d14551)

* [BMO](https://status.flinks.com/components/5a733b9e4e80f1240aefd341)

* [CIBC](https://status.flinks.com/components/5a737e9687d84478be2df4a3)

* [Coast Capital](https://status.flinks.com/components/5a737f424e80f1240aefd3d9)

* [Desjardins](https://status.flinks.com/components/5a737e6687d84478be2df48d)

* [EQBank](https://status.flinks.com/components/5bfc48ca87d8444ea76131b2)

* [Laurentienne](https://status.flinks.com/components/5a737f2a4e80f1240aefd3cf)

* [Meridian](https://status.flinks.com/components/5a737f1550c68b19b1d14565)

* [National](https://status.flinks.com/components/5a737ec04e80f1240aefd3c5)

* [RBC](https://status.flinks.com/components/5a737e7f87d84478be2df497) / [*HSBC*](https://status.flinks.com/components/5a737f8250c68b19b1d1456f)

* [Scotia](https://status.flinks.com/components/5a737eac87d84478be2df4ad)

* [Simplii](https://status.flinks.com/components/5a737f9887d84478be2df4cc)

* [Tangerine](https://status.flinks.com/components/5a737ee250c68b19b1d14547)

* [TD](https://status.flinks.com/components/5a71e97087d8446bde803f67)

## Major Financial Institutions: USA

* [Ally Bank](https://status.flinks.com/components/6000accda87724300bf202e1)

* [Bank of America](https://status.flinks.com/components/6000abb7a87724300740d9ea)

* [Bank of the West](https://status.flinks.com/components/6000ac5aa87724300740da02)

* [BBVA](https://status.flinks.com/components/6000ac1ba877243008d0848c)

* [Capital One](https://status.flinks.com/components/5ffc6745a877243009c66b4f)

* [Chase Bank](https://status.flinks.com/components/6000abaca877243009c6723b)

* [Citibank Online](https://status.flinks.com/components/6000ac66a877243008d084b4)

* [Citizen's Bank](https://status.flinks.com/components/6000ac92a87724300bf202cf)

* [Fifth Third Bank](https://status.flinks.com/components/6000ac44a877243008d08499)

* [Key Bank](https://status.flinks.com/components/6000ac82a87724300bf202c6)

* [Navy Federal Credit Union](https://status.flinks.com/components/6000abc5a87724300bf202a3)

* [PNC Bank](https://status.flinks.com/components/6000abd9a877243008d08483)

* [SunTrust](https://status.flinks.com/components/6000ac4fa877243008d084a6)

* [TD Bank USA](https://status.flinks.com/components/6000ac37a87724300bf202bd)

* [US Bank](https://status.flinks.com/components/6000abf4a87724300bf202b0)

* [USAA](https://status.flinks.com/components/618020764a0ebd5175b33f4c)

* [Wells Fargo Bank Online](https://status.flinks.com/components/6000ab9aa87724300740d9e1)
