Skip to content

Troubleshoot

Start with the symptom below. Keep the wallet and its backups intact while investigating. Reinstalling, deleting caches, or rescanning repeatedly is not a general repair procedure.

Command Not Found

For a native installer-based setup, activate it in the current terminal:

source ~/.joinmarket-ng/activate.sh
jm-wallet --help

Use the matching activation file for a custom installation directory. A missing jm-tumbler or jm-orderbook-watcher can mean you installed a restricted profile. See installation profiles. Flatpak commands must run through the Flatpak CLI wrapper.

Cannot Connect To Bitcoin Core

Check that the node is running, synced, and reachable at the configured RPC address. Use either cookie authentication or a username/password pair, not both. See backend setup.

RPC error -32601: Method not found on listwallets usually means wallet support is disabled. The descriptor backend needs a wallet-enabled node. bitcoin-cli listwallets should return a JSON array, not a method error. Do not expose RPC publicly to solve a connection problem.

Neutrino TLS, Authentication, Or Sync Errors

Use an https:// URL, the service's own TLS certificate, and its bearer token. A certificate or token from another instance will not authenticate this one. Check service logs for initial sync and compact-filter prefetch completion. Historical lookups need the filter bodies as well as headers. Follow Neutrino setup or credential rotation; do not disable verification.

Tor Or Directory Connection Failed

Wait for Tor to finish bootstrapping. Check the SOCKS listener; makers also need a control listener and permission to read its authentication cookie. After a group-permission change, start a new login session. See Tor setup.

A reachable Tor service does not prove a directory is online. Repeated failures against one directory can be remote; retain multiple configured directories. Do not switch production traffic to clearnet or publish Tor credentials.

Missing Balance Or Slow Sync

Check the selected wallet, network, and BIP39 passphrase first. An incorrect passphrase derives a different wallet. For Bitcoin Core, inspect scan progress:

jm-wallet info --scan-status

Use the same wallet options as on the failing command. Imported wallets can take hours to scan, and displayed balances may be incomplete until scanning finishes. Wait for an active scan instead of starting another.

If a known address or balance remains missing after sync, compare the reported time and address-index coverage with the original wallet's records. An explicit jm-wallet rescan can repair missing coverage; choose --scan-depth only when known used addresses lie beyond the scanned range. These are potentially expensive operations, not routine startup steps. See recovery and scan diagnostics.

Fidelity bonds have separate recovery requirements. A regular wallet scan does not prove all bonds were found. See bond recovery.

Insufficient Funds Or No Eligible PoDLE UTXO

A displayed balance is not necessarily spendable for the proposed CoinJoin. Check the source mixdepth, frozen coins, confirmations, amount, and fees. By default the taker proof needs a UTXO with at least five confirmations and at least 20% of the CoinJoin amount. Repeated authentication attempts can also use up the available proofs for a coin. Read the reported reason before retrying; do not lower proof requirements as a workaround.

CoinJoin Failed Or Stopped

First establish whether a transaction was broadcast. Check the reported transaction ID through your own backend, jm-wallet history, and the current wallet state. A terminal timeout or missing confirmation does not prove that nothing was sent. Avoid a duplicate payment.

If no transaction was broadcast, inspect the cause: insufficient eligible coins, too few offers within your fee limits, or a connection failure. Wait for new offers or fix that cause before retrying. Do not blindly increase fee limits. For a saved tumble, use the explicit resume procedure.

If a maker refuses to sign because the mining fee is too low, normal INFO logs show the proposed fee rate and the maker's required minimum in sat/vB. The maker sends that reason to the taker, which also displays it at INFO level. Review the reported minimum and your mining-fee settings before starting another round. A definite refusal before signing records the attempt as failed, rather than pending, on the maker and on the taker when it receives the refusal. Revealed addresses remain protected against reuse, and an honest refusal does not add the maker to the taker's ignored list.

Maker Is Online But Earns Nothing

Takers choose when to transact and which offers to use. Being connected does not guarantee selection or profit. Check that funded offers were published, your fee and size limits, and any bond status. Avoid restarting an otherwise healthy maker just because it has not been selected.

Release Verification Failed

Do not bypass signature or dependency-hash checks. A release may be incompletely published; wait and retry the saved updater. If failure persists, check the release verification guidance and report the exact error without credentials.

Report A Problem

Record the command name, expected result, actual error, installation method, network, and backend. Collect a diagnostic report:

jm-wallet debug-info

The report is designed to omit keys, addresses, balances, and transactions. Review it before sharing. Logs, screenshots, and configuration files may contain sensitive information that this command's redaction does not cover. Never send recovery words, passphrases, wallet files, RPC credentials, or Neutrino tokens. See logging settings for how verbosity and wallet diagnostic details are controlled.

Search existing issues before filing a report. For a vulnerability, use private vulnerability reporting and follow the security policy.