NoHoldPay
Blockchains

Bitcoin Cash

Accept BCH to fresh CashAddr addresses derived from your xpub. NoHoldPay watches the chain - no seed phrase, no custody.

Networks

MainnetTestnet4
Chain keyBCHBCH_TESTNET
Wallet keyxpubtpub or xpub
Address formatbitcoincash:q...bchtest:q...
Confirmations153
Min invoice$1.00$0.10
Payment window60 minutes60 minutes
Late-grace revival12 hours12 hours

Wallet setup

WalletBest forNotes
Electron CashMost merchantsBest default. Console command to raise the gap limit.
Bitcoin Cash NodeFull-node merchantsUse only if you already run BCHN.

Hardware wallets work best through Electron Cash.

Accepting more than one coin? Hodlall holds Bitcoin Cash alongside Bitcoin, Litecoin, Dogecoin, Monero, and more in one app. See Choosing your wallets.

What to paste

ModeChainPaste thisDo not paste
LiveBCHAccount-level xpubSeed phrase, private key, xpriv, receive address
TestBCH_TESTNETAccount-level tpub or xpubSeed phrase, private key, xpriv, receive address

One account key per NoHoldPay account. An account key can only be bound to one NoHoldPay account at a time. Two accounts on the same key derive byte-identical addresses at the same derivation index, so one customer payment could be credited against an order in each. The second bind is rejected when you add the wallet. If you run more than one account, use a separate account key for each. Retiring a wallet releases its key, so moving your business to a different account still works.


Live setup (Electron Cash)

Do not use the default new-seed flow

A wallet created through Electron Cash's default Create a new seed flow exports a depth-0 Master Public Key, which NoHoldPay rejects with an "extended key depth 0 - expected 3" error. Create the wallet from a BIP39 mnemonic instead (I already have a seed with the BIP39 option enabled). That gives the wallet an account-level key at m/44'/145'/0' to export.

Open or create a Bitcoin Cash wallet (from a BIP39 seed, per the warning above).
Open the console and run wallet.change_gap_limit(500).

Export the account-level public key - it must start with xpub.

In NoHoldPay, Add wallet -> choose BCH -> paste the xpub.

Create a small live payment and verify the generated bitcoincash:q... address matches your wallet.

Test setup

NoHoldPay testnet is on testnet4 only. BCH has three live testnets - testnet3 (deprecated, BIP-94), testnet4 (what we use), and chipnet (used for upgrade-rehearsal, has CashTokens active early). All three share the bchtest: address prefix, so a tx sent on the wrong network looks like it "should work" but our watcher will never see it. Do not use chipnet wallets (e.g. Cashonize, which currently only supports chipnet - not testnet4).

Use a BIP39 seed on testnet too

Electron Cash's default Create a new seed flow also fails here: it exports a depth-0 Master Public Key that NoHoldPay rejects. Create the testnet wallet from a BIP39 mnemonic (I already have a seed with the BIP39 option enabled) so an account-level key at m/44'/1'/0' exists to export.

Start Electron Cash in testnet4 mode: electron-cash --testnet4 (or use the Electron Cash launcher's network selector). Do not use --testnet (that's testnet3, deprecated) or --chipnet.

Create a testnet4 wallet from a BIP39 seed and export the account-level public key (may start with tpub or xpub).

In NoHoldPay, Add wallet -> choose BCH_TESTNET -> paste the key.
Fund the wallet, create a test payment, pay it, and wait for 3 confirmations.
  • Testnet4 faucet: tbch.googol.cash (select the testnet4 network on the form). Testnet faucets come and go, so if it is dry or offline, find a current one via the BCH testnet faucet thread.
  • Testnet4 explorers: tbch4.loping.net, testnet4.imaginary.cash.
  • Wallets known to work on testnet4: Electron Cash (with --testnet4 flag), Bitcoin Cash Node (bitcoin-cash-node -testnet4).
  • Wallets that do NOT work on testnet4: Cashonize (chipnet only as of May 2026), most mobile wallets.

Address verification

The first generated address must match the one your wallet shows at the same derivation path:

ModeExternal receive pathAddress
Live BCHm/44'/145'/0'/0/indexbitcoincash:q...
Test BCH_TESTNETAccount key /0/indexbchtest:q...

Gap filler

Same model as Bitcoin - raise the gap limit before launch. In Electron Cash, wallet.change_gap_limit(500).

Fixing a gap:

OptionWhat happensCost
Do it yourselfMulti-output send from your wallet.Miner fee from your wallet.
NoHoldPay handles itSigned and broadcast by NoHoldPay.Dust + miner fee + platform service fee, from Prepaid Credit.

The BCH miner fee is pass-through (no markup). The platform service fee is small and shown in the quote before you confirm. Automatic fee bumps are not available for BCH - contact support if a platform-handled transaction is stuck.


Not supported

Native BCH only - no CashTokens, no other assets

NoHoldPay accepts only native BCH on Bitcoin Cash. We do not credit:

  • CashTokens (fungible or NFT, CHIP-2022-02-CashTokens). If a customer accidentally sends a CashToken UTXO to a NoHoldPay invoice address, the watcher filters out token-bearing outputs entirely, so the tx is never detected or credited - the payment stays in awaiting_payment as if nothing arrived, until the customer sends a real native-BCH transaction. The token UTXO sits at the derived address. The merchant's underlying wallet sees it (since they hold the xpub's derivation tree) and can spend or ignore it independently.
  • Wrapped BCH on other chains (we don't bridge - pay BCH on BCH).
  • Custodial or exchange deposit wallets - paste an xpub from a wallet you control, not an address from Binance / Coinbase / Kraken etc.

If you need to receive CashTokens for your business, use a token-aware wallet directly (Electron Cash, Cashonize, Paytaca) outside the NoHoldPay payment flow.


Recovery

Your BCH seed phrase remains the recovery tool. NoHoldPay only stores your public key.

If your wallet does not show a paid address:

  1. Raise the gap limit.
  2. Rescan or restore.
  3. Use the Recovery Kit for derivation details.

See also

On this page