diff --git a/app-sync.js b/app-sync.js
index d3af3efe8b88091ed7a69c5375342f23134c1217..1f8e5c180c741beed995b3ed8d39b3c2b807af4d 100644
--- a/app-sync.js
+++ b/app-sync.js
@@ -9,15 +9,28 @@ let errorMiddleware = require('./util/error-middleware');
 let config = require('./load-config');
 let { getAccountDb } = require('./account-db');
 
-let simpleSync = require('./sync-simple');
-let fullSync = require('./sync-full');
-
 let actual = require('@actual-app/api');
 let SyncPb = actual.internal.SyncProtoBuf;
 
 const app = express();
 app.use(errorMiddleware);
 
+function getSyncAlgorithm() {
+  switch (config.sync) {
+    case 'simple':
+      console.info("Using simple sync algorithm")
+      return require('./sync-simple')
+    case 'full':
+      console.info("Using full sync algorithm")
+      return require('./sync-full')
+    default:
+      console.error("Unknown sync algorithm: " + config.sync)
+      process.abort()
+  }
+}
+
+const syncAlgorithm = getSyncAlgorithm()
+
 async function init() {
   let fileDir = join(process.env.ACTUAL_USER_FILES || config.userFiles);
 
@@ -132,7 +145,7 @@ app.post('/sync', async (req, res) => {
   // let simpleSync = require('./sync-simple');
   // let {trie, newMessages } = simpleSync.sync(messages, since, file_id);
 
-  let { trie, newMessages } = await fullSync.sync(messages, since, file_id);
+  let { trie, newMessages } = await getSyncAlgorithm.sync(messages, since, file_id);
 
   // encode it back...
   let responsePb = new SyncPb.SyncResponse();
diff --git a/load-config.js b/load-config.js
index 933ce9994f3163be8c6fd8fd14cb962ebee81dae..2d71c79f3ac763707c378d3ca88e3ad6b0a34666 100644
--- a/load-config.js
+++ b/load-config.js
@@ -11,7 +11,8 @@ try {
     port: 5006,
     hostname: '0.0.0.0',
     serverFiles: join(root, 'server-files'),
-    userFiles: join(root, 'user-files')
+    userFiles: join(root, 'user-files'),
+    sync: 'full'
   };
 }