diff --git a/packages/desktop-client/src/components/modals/NordigenExternalMsg.js b/packages/desktop-client/src/components/modals/NordigenExternalMsg.js
index 662997ebb60be3f79c39a3b74c036f47d3a69027..1537bd92a6efaaf98e7a8e3a9b61b9d1186d7171 100644
--- a/packages/desktop-client/src/components/modals/NordigenExternalMsg.js
+++ b/packages/desktop-client/src/components/modals/NordigenExternalMsg.js
@@ -1,6 +1,6 @@
 import React, { useEffect, useState, useRef } from 'react';
 
-import { send } from 'loot-core/src/platform/client/fetch';
+import { send, sendCatch } from 'loot-core/src/platform/client/fetch';
 
 import AnimatedLoading from '../../icons/AnimatedLoading';
 import { colors } from '../../style';
@@ -14,9 +14,12 @@ import { COUNTRY_OPTIONS } from './countries';
 function useAvailableBanks(country) {
   const [banks, setBanks] = useState([]);
   const [isLoading, setIsLoading] = useState(false);
+  const [isError, setIsError] = useState(false);
 
   useEffect(() => {
     async function fetch() {
+      setIsError(false);
+
       if (!country) {
         setBanks([]);
         setIsLoading(false);
@@ -25,9 +28,15 @@ function useAvailableBanks(country) {
 
       setIsLoading(true);
 
-      const results = await send('nordigen-get-banks', country);
+      const { data, error } = await sendCatch('nordigen-get-banks', country);
+
+      if (error) {
+        setIsError(true);
+        setBanks([]);
+      } else {
+        setBanks(data);
+      }
 
-      setBanks(results);
       setIsLoading(false);
     }
 
@@ -37,6 +46,7 @@ function useAvailableBanks(country) {
   return {
     data: banks,
     isLoading,
+    isError,
   };
 }
 
@@ -86,8 +96,11 @@ export default function NordigenExternalMsg({
   let [error, setError] = useState(null);
   let data = useRef(null);
 
-  const { data: bankOptions, isLoading: isBankOptionsLoading } =
-    useAvailableBanks(country);
+  const {
+    data: bankOptions,
+    isLoading: isBankOptionsLoading,
+    isError: isBankOptionError,
+  } = useAvailableBanks(country);
   const { configured: isConfigured, isLoading: isConfigurationLoading } =
     useNordigenStatus();
 
@@ -134,7 +147,13 @@ export default function NordigenExternalMsg({
           />
         </FormField>
 
-        {country &&
+        {isBankOptionError ? (
+          <Error>
+            Failed loading available banks: Nordigen access credentials might be
+            misconfigured. Please set them up again.
+          </Error>
+        ) : (
+          country &&
           (isBankOptionsLoading ? (
             'Loading banks...'
           ) : (
@@ -153,7 +172,8 @@ export default function NordigenExternalMsg({
                 }}
               />
             </FormField>
-          ))}
+          ))
+        )}
 
         <Warning>
           By enabling bank-sync, you will be granting Nordigen (a third party
diff --git a/upcoming-release-notes/969.md b/upcoming-release-notes/969.md
new file mode 100644
index 0000000000000000000000000000000000000000..2e6960296ccd80228984958cb25e259b1b8103e9
--- /dev/null
+++ b/upcoming-release-notes/969.md
@@ -0,0 +1,6 @@
+---
+category: Bugfix
+authors: [MatissJanis]
+---
+
+Nordigen: improved error handling when bank-list API fails