NoHoldPay
Receiving payments

Choosing your wallets

Which wallet to use for each chain, and how to keep the number of wallets you maintain to a minimum. You keep the keys and NoHoldPay only watches.

You supply the wallets. NoHoldPay only watches the chain and matches payments to invoices. This page covers two questions: which wallet to reach for on each chain, and how to keep the number of wallets you maintain small.

The one rule

You give NoHoldPay a public key or a receive address. Never a seed phrase, never a private key. Monero is the one exception, and even there it is only a view key that lets us see incoming payments but cannot move funds. See Monero for that case and Trust model for exactly what each key can and cannot do.

Everything below is about picking wallets that hand you that public value cleanly, then keeping the set small.

Keep the wallet count low

You do not need a separate wallet per chain. Two facts do most of the work.

  • One address covers every EVM chain. ETH, Base, Polygon, and BNB Chain share the same 0x address format, and the same address is valid on all of them, and on their testnets. So you keep one EVM wallet and reuse its address across the EVM chains you enable, instead of a separate wallet per chain.
  • One multi-coin wallet covers most non-EVM chains. A single app can hold your Bitcoin, Litecoin, Bitcoin Cash, Dogecoin, Monero, XRP, and Stellar keys and export the exact value NoHoldPay needs for each.

Reuse across chains, never across accounts. Everything above is reuse within one NoHoldPay account, which is fine and encouraged. A receive address or account key can only be bound to one account at a time. Two accounts watching one address share a single inbound stream, so one customer payment could be credited against an order in each. NoHoldPay rejects the second bind rather than letting that happen. If you run more than one account, give each its own address. Retiring a wallet releases its address, so moving your business to a different account still works.

Put together, a merchant accepting everything NoHoldPay supports can run on a handful of apps:

WalletCoversKey you export
HodlallBTC, LTC, BCH, DOGE, XMR, XRP, XLMzpub for BTC and LTC, xpub for BCH and DOGE, primary address plus view key for XMR, r... for XRP, G... for XLM
MetaMask (or any EVM wallet)ETH, Base, Polygon, BNB Chainone 0x receive address
TronLinkTRONone T... address
BackpackSolanaone base58 address

That is four apps for the whole chain list. Split it further if you prefer a dedicated wallet per chain, or consolidate onto one hardware device. The number is your choice, not a requirement.

Hardware wallets fit most rows. Many of these wallets can drive a Ledger or other hardware key (Sparrow, Electrum, MetaMask, TronLink, Backpack, Xaman, and Feather among them). Keeping the signing key on hardware does not change what you paste into NoHoldPay. It is still only the public key.

Hodlall

Hodlall is NoHoldPay's open-source fork of Stack Wallet, a multi-coin, non-custodial wallet that keeps keys on your device. We maintain the fork because standard Stack Wallet cannot export a few of the exact key formats NoHoldPay needs. Hodlall adds:

  • zpub export for Bitcoin and Litecoin (native SegWit account keys). A plain xpub is accepted on BTC and LTC too, but only after you affirm it is a Native SegWit (BIP-84) account and match your wallet's first receiving address. A zpub skips that extra confirmation step. Standard Stack Wallet exports only xpub.
  • XRP support, so you can hold an XRP account and copy its classic r... address from the same app.
  • A configurable UTXO address scan (gap limit), so your own wallet keeps finding paid addresses without a manual gap fix.

Everything else is stock Stack Wallet: Bitcoin, Litecoin, Bitcoin Cash, Dogecoin, Monero, Stellar, and more, all non-custodial.

Source on GitHub

Hodlall is open source and you can build it from source today. Prebuilt, signed downloads are not published yet - until they are, use one of the per-chain wallets below and switch when the builds land. Better to point you at a wallet you can install now than at an empty releases page.

Prefer a single-chain wallet for one asset? The table below lists a strong standalone option for every chain.

Each chain page has the full setup steps, faucets, and the exact key format. This is the short list of what to reach for.

ChainNoHoldPay needsRecommended walletAlso works
Bitcoinzpub (or a confirmed xpub)Hodlall or SparrowElectrum, Bitcoin Core
Litecoinzpub (or a confirmed xpub)Hodlall or Electrum-LTCLitecoin Core
Bitcoin CashxpubHodlall or Electron CashBitcoin Cash Node
Dogecoinxpub or dgubDogecoin CoreHodlall (confirm the export is xpub/dgub)
Ethereum + EVM0x receive addressMetaMaskRabby, Coinbase Wallet, Ledger Live, Safe
TRONT... addressTronLinkKlever, TokenPocket
Solanabase58 pubkeyBackpackPhantom, Solflare
XRPclassic r... addressHodlall or XamanCrossmark, Ledger Live
Stellaraccount G...Hodlall or SolarLobstr, Freighter
Moneroprimary address + view keyHodlall or FeatherCake, Monero GUI

TRON is not in the multi-coin wallets, so it needs its own app. TronLink is required, because it is currently the only TRON wallet that signs the typed-data the CREATE2 forwarder onboarding needs. See TRON.

Exporting your key: the pattern

Every wallet differs in the details, but the shape is always the same.

Create or restore the wallet. For Bitcoin and Litecoin, pick a native SegWit (BIP-84) account. A zpub export is the smoothest path. A plain xpub from that same account also works, with an extra confirmation step (see Verify below).
Open the account settings or the receive screen and find the extended public key (UTXO), the receive address (EVM, TRON, Solana, XRP, Stellar), or the primary address plus private view key (Monero).
For UTXO chains, raise the gap limit (address scan depth) to at least 100 before launch, or 500 or more for high volume, so your own wallet keeps finding paid addresses.
Copy the public value and paste it into NoHoldPay under Wallets -> Add wallet.
Create one small payment and confirm the first address NoHoldPay generates matches what your wallet shows. Then go live.

Hodlall: exporting a key (walkthrough)

Hodlall holds several chains at once, so this one flow covers most of your setup. Repeat the copy step per coin.

Open Hodlall and select the coin (for example Bitcoin). On first use, create a new wallet or restore from your seed.

Open the coin's settings and choose Extended public key (UTXO chains) or Receive (XRP, Stellar). For Bitcoin and Litecoin, confirm the format is zpub.

Set the address scan depth (gap limit) for UTXO chains. Hodlall exposes this directly, so you rarely need NoHoldPay's gap filler.

Copy the key and paste it into NoHoldPay. For Monero, copy the primary address and the private view key from the view-key panel instead.

For standalone wallets, each chain page has the exact steps, for example Bitcoin with Sparrow, Litecoin with Electrum-LTC, and EVM with MetaMask.

Verify before you go live

Whatever wallet you use, do this once per chain.

  • Create a small payment in test mode first. See Quickstart.
  • Compare the first address NoHoldPay generates against the address your wallet shows at the same derivation path. Each UTXO chain page lists the path.
  • Only then flip to live and accept real orders.

A mismatch means the address NoHoldPay derived does not match your wallet, so the key is the wrong account or script type. On Bitcoin and Litecoin, if you paste a plain xpub, NoHoldPay asks you to affirm it is a Native SegWit (BIP-84) account and to paste your first receiving address, then confirms the two match before saving. Fix the key or the address rather than accepting payments to an address you cannot see.

See also

  • Payment modes - per-payment forwarder, direct settlement, and gasless
  • Portfolio - track balances across every wallet you add
  • Recovery Kit - recover funds with no platform involvement
  • Trust model - what each key can and cannot do

On this page