Skip to content
Non-custodial14 chains

Get paid in crypto,
straight to your wallet.

Customers send crypto to a wallet you already own. We watch the chain, match the transfer, fire a signed webhook. You never wait for a payout, because there is no payout to wait for.

Customer funds we hold: $0.00always
Non-custodial
Funds never touch us.
Trustless by design
We pick the timing, never the destination.
Recovery Kit included
Sweep your funds even if we go dark.
No chargebacks
On-chain finality. No bank reversals, ever.
14 chains liveView all
BitcoinEthereumTRONSolanaLitecoinBitcoin CashDogecoinXRP LedgerBaseStellarPolygonBNB ChainTONMonero
  • Signed webhooks
  • Retries for ~35 hours
  • Append-only balance ledger
  • Downloadable recovery kit
How it works

From setup to paid.No custody at any step.

Connect a wallet you already own, create a checkout, and let your customer pay. Funds land directly in your wallet. No payout to request.

01

Create an account

Sign up in under a minute. Add a small prepaid credit - our fee comes out of it, never out of your customer's payment.

02

Connect your wallet

Add the wallet you want to receive into. We only need your public address. Your private key never leaves your hands.

03

Create a checkout

Generate a payment link, send an invoice, or call the API. Set the amount in your currency and we handle the crypto conversion at a locked rate.

04

Customer pays, you are done

Your customer opens a hosted page, picks a coin, and pays from their wallet. Funds land directly in your wallet.

What you actually get

Self-custody.Predictable fees.

No payouts to chase. No platform-held customer balance. Just an invoice, a confirmation, and money already in the wallet you control.

Keep 100% of every payment
The customer pays your wallet directly. Our fee comes out of a prepaid USD credit you top up separately, so nothing is skimmed off the customer's payment before it reaches you.
Default fee 0.5% + $0.50 per invoice
No payouts. No waits.
There is no payout step because there is nothing to pay out. The money is in your wallet the moment it confirms on-chain. No T+2, no daily batch, no 'review' hold.
Settlement time = confirmation time
No monthly minimum. No chargebacks.
An idle month costs zero. On-chain transactions are final, so your fraud rate is structurally zero. Your prepaid credit never expires.
$0/month idle 0 chargebacks
Invoice in the currency your books speak
Price in any enabled fiat currency. We quote the crypto amount, lock the rate for the pay window, and report both totals on the webhook so accounting stays clean.
45 fiat currencies rate locked
A cent short still confirms
Dust underpayments inside tolerance confirm anyway. Overpayments past your threshold fire their own webhook.
Refunds stay in your hands
You sign from your own wallet. We record and broadcast. No reversal primitive lives on our side.
Customers watch it confirm
Real-time status streams to the checkout. No page refresh, no 'did it go through?' support tickets.
Rotate wallets, keep history
Add a new receiving wallet, retire the old, your existing invoices keep working. No store to rebuild.
Fiat-first

Invoice in fiat.They pay in crypto.

Charge $499.00, not 0.00779 BTC. Your customer pays in whatever is actually in their wallet, and we settle against a live rate that is pinned for the full pay window.

  • 45 fiat currencies. Use the currencies enabled for your platform.
  • Customer switches the coin at checkout. Same invoice, any chain we support.
  • Rate locked for 2 hours. No slippage after the customer commits to pay.
  • Accounting stays clean. Webhooks report the fiat total, the crypto received, and the fee.
Invoice #INV-1042
$
Billed inUSD
Customer pays withwindow 2 hours
locked quoteamount_fiat=$499amount_crypto=0.00778668 BTCfx=64083.81
Illustrative estimate. Checkout locks the exact coin amount. Rates served from 6 enabled sources. Invoice expires in 2 hours.
Features

Everything a processor should do.Nothing more.

Dependable webhooks. Real test mode. A clean API. The unglamorous things that decide whether you ship on schedule.

A webhook for every event

Signed with your secret. Retries for ~35 hours with jitter. Fire a real test from the dashboard.

Test mode you can actually trust

A separate plane with its own keys and balances. Every record is stamped live or test at the row level, and a test key can never touch a mainnet chain or live funds.

Three endpoints. That is the API.

Create a payment. Read its status. Verify a webhook. Plain REST and JSON. Integrate in an afternoon, not weeks.

Price in your customer's currency

Invoice in 45 fiat currencies. The customer pays in crypto at a locked rate, and we do the conversion math.

Chains and coins

They pay in what they hold.You receive the same coin.

14 mainnet chains and 29 enabled coin routes are available today. Customer transfers land in the merchant wallet route selected at checkout.

BTConBitcoinBTCEURConEthereumEURCETHonEthereumETH
BaseETH
BitcoinBTC
Bitcoin CashBCH
BNB ChainBNB
DogecoinDOGE
EthereumETH
LitecoinLTC
MoneroXMR
PolygonPOL
SolanaSOL
StellarXLM
TONGRAM
TRONTRX
XRP LedgerXRP
Pay in the stablecoin. Settle in the stablecoin.
The customer's transfer lands in your wallet untouched. No conversion to a base asset, no spread on the stablecoin leg. Our fee comes off your prepaid credit, not the payment.
EURCUSDTUSDCPYUSD
Security model

We can't lose what we never held.

Funds land in a wallet you already own. EVM forwarders hard-code your treasury into the bytecode at deploy, so even our operator key can only push to that one address. Webhooks are HMAC-signed. The audit log has no DELETE endpoint.

Independent security audit: not yet. The design assumes you do not have to trust us.
Our infrastructure gets breached
Custodial:Hot wallets drained. Merchant balances gone.
NoHoldPay:No hot wallets for customer funds. Attacker finds invoice rows.
Payouts get paused "for review"
Custodial:Your money sits in their ledger until the review clears. Days, sometimes weeks.
NoHoldPay:There is no payout to pause. The money is already in your wallet when the payment confirms.
We go bankrupt overnight
Custodial:Your balance enters the bankruptcy estate. Months to recover, cents on the dollar.
NoHoldPay:You already hold your coins. New checkouts stop working. Existing ones already paid out.
A court orders an address frozen
Custodial:Custodian freezes your balance on the platform. Indefinite.
NoHoldPay:We have no freeze primitive. The address is yours, on your wallet. We cannot act on it.
Your webhook secret leaks
Custodial:Attacker can mark invoices paid. Rotate the secret.
NoHoldPay:Same. Rotate the secret. Funds are untouchable. Only order state is at risk.
You lose your own seed phrase or factory key
Custodial:Open a ticket. Maybe recover.
NoHoldPay:You lose access to your own coins. We cannot help. That is the trade-off.
What we can't protect you from. If you lose the seed phrase or private keys to your wallet, your coins are gone and there's nothing we can do, because we never had them. If your webhook secret leaks, someone can send fake "paid" events to your server until you rotate it. Holding nothing means we can't lose anything for you. It also means we can't recover anything for you.
Recovery Kit

Even if every server we run goes dark, your funds come home.

Download a JSON recovery bundle at any time, with no dependency on our servers. It re-derives every payment address you have ever had - across EVM, TRON, and Solana - and, run through the recovery tool, sweeps funds to your wallet against any public RPC with no platform involvement. Re-issued automatically after every treasury rotation. Nothing for us to hodl. That is the point.

How the Recovery Kit works
v1
POST/api/v1/payments API key
Request
# Create a payment
$ curl -X POST "$BASE_URL/api/v1/payments" \
    -H "Authorization: Bearer $API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "fiat_amount":     "49.99",
      "fiat_currency":   "USD",
      "order_id":        "ORDER-12345",
      "accepted_chains": ["BTC","ETH","SOL"],
      "accepted_coins":  ["BTC","ETH","USDC","USDT"],
      "success_url":     "https://yoursite.com/thanks",
      "cancel_url":      "https://yoursite.com/cart"
    }'
Response
{
  "data": {
    "id":            "352e4022-e826-4f0c-be3c-a132dfd20224",
    "status":        "pending",
    "fiat_amount":   "49.99",
    "fiat_currency": "USD",
    "order_id":      "ORDER-12345",
    "checkout_url":  "https://checkout.noholdpay.com/352e4022-...",
    "expires_at":    "2026-05-04T11:34:24Z",
    "created_at":    "2026-05-04T11:04:24Z",
    "chain_options": [
      {
        "chain_id":       "BTC",
        "coin_symbol":    "BTC",
        "crypto_amount":  "74521",
        "display_amount": "0.00074521",
        "exchange_rate":  "67050.00",
        "address":        "bc1q...derived-fresh",
        "payment_uri":    "bitcoin:bc1q...?amount=0.00074521"
      },
      { "chain_id": "ETH", "coin_symbol": "USDC", "...": "..." },
      { "chain_id": "SOL", "coin_symbol": "USDT", "...": "..." }
    ]
  }
}
Pricing

Pay only when you get paid.

We never touch the payment, so we can't deduct from it. Fees are drawn from a prepaid USD credit you control. Unused credit never expires.

Pay-as-you-go
prepaid credit
0.5%+$0.50
per confirmed invoice
Processing fee
per confirmed invoice
0.5% + $0.50
Sweep & relay gas
When we broadcast for you, we pass the on-chain cost straight through. No markup, ever. A network fee that is large relative to the invoice shows up as a clear line your customer covers at checkout.
at cost
UTXO gap-filler
BTC, LTC, BCH, DOGE. Tiny on-chain nudge when your wallet stops watching past 20 unused addresses.
on demand
Payouts, monthly minimums, chargebacks
none, ever
$0

Test mode availableNo custodial payout account

FAQ

Questions, answered.

The word "non-custodial" hides a lot. Most processors that use it run a forwarding contract or a sweeper key they fully control: they can change the destination, freeze the address, or send the funds anywhere. That is custody by another name. Our EVM CREATE2 forwarders hard-code your treasury address into the bytecode at deploy time, so the operator key can sweep to exactly one place: your wallet. Our Solana PDAs read the treasury from on-chain merchant state, never from caller input. The customer's transaction goes to an address that, by construction, only your wallet can ever receive.
Two cases. If we are temporarily offline, your hosted checkout links stop loading until we are back. Funds already settled to your wallet remain spendable with your normal wallet software. If we shut down permanently, static-wallet modes settle directly to an address your wallet controls. For forwarder modes we ship a Recovery Kit: a JSON bundle you download from the dashboard that re-derives every forwarder address you have ever had, and, run through the recovery tool, supports recovery where the deployed settlement path allows it.
It is a JSON recovery bundle, downloadable from the dashboard at any time. The bundle holds every input needed to re-derive every forwarder address you have ever had on EVM, TRON, and Solana. If every server we run goes dark, you run the recovery tool against any public RPC and sweep funds to a wallet you control - no platform involvement. A fresh kit is issued automatically after every treasury rotation.
No - opening an account takes an email and a receiving wallet address, not identity documents. We can operate this way because customer funds never sit in a platform custody account. Your own obligations are unchanged: tax, invoicing, sanctions, consumer protection, and reporting still depend on your jurisdiction and business model.
You sign the refund transaction from your wallet. We help you construct it and broadcast it. We never move the funds. If a customer underpays and decides to walk away, they can hit a single button on the hosted checkout to file a refund request: you get a payment.refund_requested webhook plus an email, and you can accept the partial amount, refund the difference, or wait for a top-up.
The current global processing fee is 0.5% + $0.50 per confirmed invoice, drawn from prepaid credit. Merchant- or chain-specific fee overrides can apply. When we broadcast on your behalf, network gas or Energy is charged at cost. The UTXO gap-filler is billed only when your wallet's gap limit forces a top-up.
Gasless stablecoin routes are available only where the selected chain and coin support the mode. Today the enabled set includes: Ethereum, Base, Polygon. The customer signs an authorization, our relay broadcasts it, and funds land in the merchant-controlled address.
Live today: 14 mainnet chains, 11 test networks, 29 enabled coin routes, and 15 stablecoin routes. Stable symbols currently exposed by enabled routes: EURC, PYUSD, USDC, USDT.
A payment that technically expired but received an on-chain transfer inside the per-chain late-grace window (12 hours by default) is revived instead of orphaned. Confirmation rules are per-network (block depth for the Bitcoin family and Monero, finalized tag for EVM, solidification for Tron, finalized commitment for Solana, single-slot or single-ledger BFT finality for XRP, Stellar, and TON) and admin-tunable without a deploy. On any chain with three or more independent RPC providers, our tip-consensus check compares their views and routes around a provider serving a divergent fork.
Get started

Accept crypto without the custody.

Connect a wallet you already control. We start watching the chain. You already have the money.