NoHoldPay

How Safe Is Your Money?

NoHoldPay is non-custodial. Your wallet key stays with you. Here is exactly what the platform can and cannot do.

The short answer

NoHoldPay watches the blockchain and matches incoming transactions to invoices. It never holds, signs for, or has the ability to redirect customer funds. The keys that could move your money stay in your wallet.

What the platform receives

Chain familyWhat you share with usWhat we can do with it
Bitcoin, Litecoin, Bitcoin Cash, DogecoinAccount-level extended public key (zpub for BTC and LTC, xpub for BCH, xpub or dgub for DOGE)Derive receive addresses, watch the blockchain
Ethereum, Base, Polygon, BNB ChainEVM address (your receive address or your treasury address, depending on mode)Watch the blockchain
TRONSingle TRX address (Base58Check, starts with T)Watch the blockchain
SolanaBase58 ed25519 public keyWatch the blockchain
XRP LedgerClassic r-addressWatch the blockchain
StellarClassic account ID (starts with G)Watch the blockchain
MoneroPrimary address plus private view keyDetect incoming transactions only. The view key cannot spend.

In every case, what you share is mathematically insufficient to send transactions from your wallet.

What keys are involved

KeyWho holds itWhat it can do
Your wallet seed phrase or private keyYou onlySign any transaction. Never share.
Your xpub or receive addressYou and NoHoldPayDerive addresses or identify the destination. Cannot sign.
Forwarder contract (EVM and TRON CREATE2 modes)On-chain, immutableSweep to the treasury you registered. The destination is baked into the contract at deploy time.
Solana forwarder program (PDA mode)On-chain, upgradeable only by a multisig-held upgrade authoritySweep to the treasury you registered. The destination is read from on-chain merchant state, never from caller input. The program bytecode is verified continuously, and payments halt on any unexpected change.
Platform operator walletNoHoldPayPays network fees so the on-chain sweep or gasless transfer can execute. Cannot redirect customer funds. The destination is enforced by the smart contract or the customer's signature.

What happens if NoHoldPay goes offline

Your wallet is unaffected. Funds already in your wallet remain spendable with your normal wallet software (Ledger, Trezor, MetaMask, Phantom, Feather, Monero GUI, and so on).

The one situation that needs special handling is forwarder mode (EVM and TRON CREATE2, or Solana PDA), where customer funds land at a per-payment contract address and the platform's operator wallet normally broadcasts the sweep. If we are unreachable, your Recovery Kit contains everything needed to find and sweep those balances without us.

On EVM and TRON this does not depend on any NoHoldPay software or permission. The forwarder's sweep and the factory's deployAndSweepBatch are permissionless contract calls, and the payout address is welded into each forwarder when it is created, so anyone can pay the gas to trigger a sweep and the funds can only ever move to your registered treasury. The noholdpay-recover CLI is a convenience that finds the addresses and builds the calldata for you; the Recovery Kit page also documents the manual path so you are never dependent on a single tool.

On Solana the sweep additionally requires a signature from the wallet you registered as your control key. Keep that key recoverable: if it is lost and we are unreachable, PDA balances cannot be moved, because the only way to re-point a control key is a platform-signed instruction.

Contract defects, issuer freezes, or unsupported assets may still require support review and may not have an on-chain recovery path.

Per-mode trust framing

Direct-to-your-wallet chains

On the Bitcoin family, Monero, XRP, Stellar, and TON the customer sends straight to an address you control. NoHoldPay is not in the on-chain path at all. The platform's role is to observe the blockchain and match the transaction to an invoice.

The Bitcoin family and Monero derive a fresh address per payment from the key you supplied. XRP, Stellar, and TON are account-based, so every payment goes to the one address you registered and a per-payment reference (destination tag, muxed address and Memo ID, or text comment) attributes it to the right order. Either way the funds are yours the moment they land.

Forwarder mode

Each payment lands at a unique on-chain address whose sweep destination is pinned by the on-chain contract or program, not by anyone with a private key:

  • EVM and TRON CREATE2: each clone is an EIP-1167 minimal proxy with the 20-byte treasury address appended as immutable args via Solady's Clones-with-Immutable-Args (CWIA) layout. The treasury() function reads those immutable bytes. There is no setter. The destination is fixed at deploy time.
  • Solana PDA: the sweep instruction reads treasury_pubkey from the on-chain TreasuryState account that you authorised during onboarding. The program rejects any other destination.

The platform's operator wallet can choose when to call sweep, but not where the funds go.

Gasless mode

The customer's wallet signs a typed-data message that names the destination explicitly:

  • EVM (EIP-3009): the signature covers TransferWithAuthorization(address from, address to, uint256 value, uint256 validAfter, uint256 validBefore, bytes32 nonce). The token contract verifies the signature and rejects the transfer if any field, including to, has been changed.
  • Solana (sponsored / fee-payer signing): the customer signs a v0 versioned transaction where the destination ATA and amount are already pinned. Any change invalidates the signature.

The platform's relay pays the gas and broadcasts. It cannot change the recipient.

Stablecoin freeze risk

Issuer-controlled stablecoins (USDC by Circle, USDT by Tether, PYUSD by Paxos, EURC by Circle, and others) include an issuer freeze function in their token contracts. If a regulator names an address, the issuer can block transfers from it. This is a property of those tokens, not of NoHoldPay. We have no involvement in freeze decisions.

If freeze risk is a concern for your business, prefer native coins such as BTC, ETH, SOL, XMR, or XLM, which have no issuer.

Monero is the only exception

Monero is the only chain where you share private key material with the platform. An extended public key on the Bitcoin family reveals your account's addresses, but it is still public-key material and cannot spend. Accepting Monero through any non-custodial processor requires sharing a private view key, because the Monero protocol gives no other way for a third party to detect payments to you.

The view key lets the platform's scanner spot incoming transactions to your wallet and read their amounts. It cannot spend. Only your private spend key can sign outgoing transactions, and that key stays in your wallet (Feather, Cake, Monero GUI, CLI).

You acknowledge this disclosure explicitly before saving a Monero wallet. See the Monero chain notes for setup details, and the dashboard's privacy disclosure page for the full discussion of outgoing visibility, the Carrot/FCMP++ migration path, and operational hygiene.

On this page