diff --git a/accounts/external/backend.go b/accounts/external/backend.go
index 6089ca98444676d35d3c671dce12a0d005d8a381..175458e8076eeac56b598884c462bf534ec23abc 100644
--- a/accounts/external/backend.go
+++ b/accounts/external/backend.go
@@ -131,6 +131,12 @@ func (api *ExternalSigner) Accounts() []accounts.Account {
 func (api *ExternalSigner) Contains(account accounts.Account) bool {
 	api.cacheMu.RLock()
 	defer api.cacheMu.RUnlock()
+	if api.cache == nil {
+		// If we haven't already fetched the accounts, it's time to do so now
+		api.cacheMu.RUnlock()
+		api.Accounts()
+		api.cacheMu.RLock()
+	}
 	for _, a := range api.cache {
 		if a.Address == account.Address && (account.URL == (accounts.URL{}) || account.URL == api.URL()) {
 			return true