diff --git a/src/engine/currencyEngine.js b/src/engine/currencyEngine.js
index <HASH>..<HASH> 100644
--- a/src/engine/currencyEngine.js
+++ b/src/engine/currencyEngine.js
@@ -465,12 +465,20 @@ export class CurrencyEngine {
   }
 
   addGapLimitAddresses (addresses: Array<string>, options: any): void {
-    const scriptHashes = addresses.map(
-      displayAddress => this.engineState.scriptHashes[displayAddress]
+    const scriptHashesPromises = addresses.map(
+      (displayAddress: string): Promise<string> => {
+        const scriptHash = this.engineState.scriptHashes[displayAddress]
+        if (typeof scriptHash === 'string') return Promise.resolve(scriptHash)
+        return this.keyManager.addressToScriptHash(displayAddress)
+      }
     )
 
-    this.engineState.markAddressesUsed(scriptHashes)
-    if (this.keyManager) this.keyManager.setLookAhead()
+    Promise.all(scriptHashesPromises)
+      .then(scriptHashes => {
+        this.engineState.markAddressesUsed(scriptHashes)
+        if (this.keyManager) this.keyManager.setLookAhead()
+      })
+      .catch(this.log)
   }
 
   isAddressUsed (address: string, options: any): boolean {
try and get the "scriptHash" from the engineState cache but in case it's not there, manually calculate it.