diff --git a/packages/desktop-client/src/components/accounts/Account.js b/packages/desktop-client/src/components/accounts/Account.js
index 390fa77648c4a375bf08bbdffe05d01da7e5bd19..58c0c4e19a9a511f3aae8788de8412693e4b72ae 100644
--- a/packages/desktop-client/src/components/accounts/Account.js
+++ b/packages/desktop-client/src/components/accounts/Account.js
@@ -992,7 +992,8 @@ const AccountHeader = React.memo(
   },
 );
 
-function AllTransactions({ transactions, filtered, children }) {
+function AllTransactions({ account = {}, transactions, filtered, children }) {
+  const { id: accountId } = account;
   let scheduleData = useCachedSchedules();
 
   let schedules = useMemo(
@@ -1018,8 +1019,9 @@ function AllTransactions({ transactions, filtered, children }) {
       date: schedule.next_date,
       notes: scheduleData.statuses.get(schedule.id),
       schedule: schedule.id,
+      _inverse: accountId !== schedule._account,
     }));
-  }, [schedules]);
+  }, [schedules, accountId]);
 
   let allTransactions = useMemo(() => {
     // Don't prepend scheduled transactions if we are filtering
@@ -1825,6 +1827,7 @@ class AccountInternal extends React.PureComponent {
 
     return (
       <AllTransactions
+        account={account}
         transactions={transactions}
         filtered={transactionsFiltered}
       >
@@ -2009,18 +2012,26 @@ export default function Account(props) {
   let activeLocation = useActiveLocation();
 
   let transform = useMemo(() => {
-    let filter = queries.getAccountFilter(params.id, '_account');
+    let filterByAccount = queries.getAccountFilter(params.id, '_account');
+    let filterByPayee = queries.getAccountFilter(
+      params.id,
+      '_payee.transfer_acct',
+    );
 
     // Never show schedules on these pages
     if (
       (location.state && location.state.filter) ||
       params.id === 'uncategorized'
     ) {
-      filter = { id: null };
+      filterByAccount = { id: null };
+      filterByPayee = { id: null };
     }
 
     return q => {
-      q = q.filter({ $and: [filter, { '_account.closed': false }] });
+      q = q.filter({
+        $and: [{ '_account.closed': false }],
+        $or: [filterByAccount, filterByPayee],
+      });
       return q.orderBy({ next_date: 'desc' });
     };
   }, [params.id]);
diff --git a/packages/desktop-client/src/components/accounts/TransactionsTable.js b/packages/desktop-client/src/components/accounts/TransactionsTable.js
index 0ac13ad212a3ad8081d1dd23343dd078f04fcae8..df1018ade437320efadf727803aa40e881a0380a 100644
--- a/packages/desktop-client/src/components/accounts/TransactionsTable.js
+++ b/packages/desktop-client/src/components/accounts/TransactionsTable.js
@@ -74,7 +74,7 @@ function serializeTransaction(transaction, showZeroInDeposit) {
   let { amount, date } = transaction;
 
   if (isPreviewId(transaction.id)) {
-    amount = getScheduledAmount(amount);
+    amount = (transaction._inverse ? -1 : 1) * getScheduledAmount(amount);
   }
 
   let debit = amount < 0 ? -amount : null;
@@ -271,7 +271,11 @@ function getPayeePretty(transaction, payee, transferAcct) {
   let { payee: payeeId } = transaction;
 
   if (transferAcct) {
-    const Icon = transaction.amount > 0 ? LeftArrow2 : RightArrow2;
+    const Icon =
+      (transaction._inverse ? -1 : 1) * transaction.amount > 0
+        ? LeftArrow2
+        : RightArrow2;
+
     return (
       <View
         style={{
@@ -598,15 +602,23 @@ export const Transaction = React.memo(function Transaction(props) {
     cleared,
     is_parent: isParent,
     _unmatched = false,
+    _inverse = false,
   } = transaction;
 
   // Join in some data
   let payee = payees && payeeId && getPayeesById(payees)[payeeId];
   let account = accounts && accountId && getAccountsById(accounts)[accountId];
-  let transferAcct =
-    payee &&
-    payee.transfer_acct &&
-    getAccountsById(accounts)[payee.transfer_acct];
+  let transferAcct;
+
+  if (_inverse) {
+    transferAcct =
+      accounts && accountId && getAccountsById(accounts)[accountId];
+  } else {
+    transferAcct =
+      payee &&
+      payee.transfer_acct &&
+      getAccountsById(accounts)[payee.transfer_acct];
+  }
 
   let isChild = transaction.is_child;
   let borderColor = selected ? colors.b8 : colors.border;
diff --git a/upcoming-release-notes/955.md b/upcoming-release-notes/955.md
new file mode 100644
index 0000000000000000000000000000000000000000..0d1b5690d1dcc6beb5da9a0b51bc38852967dfb5
--- /dev/null
+++ b/upcoming-release-notes/955.md
@@ -0,0 +1,6 @@
+---
+category: Bugfix
+authors: [MatissJanis]
+---
+
+Schedules: make transfer transactions appear in both affecting accounts