Title: NoHoldPay &#8211; Non-custodial crypto payments
Author: noholdpay
Published: <strong>2026년 7월 19일</strong>
Last modified: 2026년 9월 20일

---

플러그인 검색

![](https://ps.w.org/noholdpay-non-custodial-crypto-payments/assets/banner-772x250.
png?rev=3613090)

![](https://ps.w.org/noholdpay-non-custodial-crypto-payments/assets/icon-256x256.
png?rev=3613090)

# NoHoldPay – Non-custodial crypto payments

 작성자: [noholdpay](https://profiles.wordpress.org/noholdpay/)

[다운로드](https://downloads.wordpress.org/plugin/noholdpay-non-custodial-crypto-payments.1.3.0.zip)

 * [세부사항](https://ko.wordpress.org/plugins/noholdpay-non-custodial-crypto-payments/#description)
 * [평가](https://ko.wordpress.org/plugins/noholdpay-non-custodial-crypto-payments/#reviews)
 *  [설치](https://ko.wordpress.org/plugins/noholdpay-non-custodial-crypto-payments/#installation)
 * [개발](https://ko.wordpress.org/plugins/noholdpay-non-custodial-crypto-payments/#developers)

 [지원](https://wordpress.org/support/plugin/noholdpay-non-custodial-crypto-payments/)

## 설명

NoHoldPay is a non-custodial cryptocurrency payment gateway for WooCommerce. Your
customers pay an address you control, and the funds settle directly into your own
wallet. The platform never touches the money: it watches the blockchain, matches
each payment to the right order, and advances the WooCommerce order through a signed
webhook. No payouts to wait for, no account freezes, and no chargebacks.

This plugin adds NoHoldPay to WooCommerce as a redirect-to-hosted-checkout gateway:
when a buyer chooses a NoHoldPay method, the plugin creates a payment through the
NoHoldPay Merchant API and redirects the buyer to a secure hosted checkout. Signed
webhooks then move the order forward, with an independent server-side re-verification
before an order is marked paid.

**Why non-custodial matters**

Most crypto gateways route customer funds through a pooled hot wallet or an internal
balance they control. That is custody, and it can be frozen, hacked, or lost. NoHoldPay
is structurally different: it cannot lose, freeze, or run off with money it never
holds. Your keys, your coins.

**Key features**

 * Non-custodial by design: customers pay a wallet you own, and funds never pass
   through the platform.
 * Coin groups as payment methods: group coins (for example Stablecoins or Privacy
   coins) and each enabled group appears as its own payment option at checkout, 
   with an optional logo, a default coin, and a “Restrict to these coins” toggle.
 * Many chains and coins through the hosted checkout: Bitcoin, Ethereum, BNB Smart
   Chain, Base, Polygon, Solana, Tron, Litecoin, Bitcoin Cash, Dogecoin, Monero,
   XRP, Stellar and TON, plus stablecoins such as USDC, USDT, USDS, EURC and PYUSD,
   and tokens such as Chainlink. Which coins are available depends on your NoHoldPay
   account settings.
 * Secure hosted checkout: a mobile-friendly checkout with a live countdown, QR 
   code, and real-time status. Prices are shown in your store currency.
 * Signed, verified webhooks: orders advance only on HMAC-signed webhooks, with 
   an independent server-side re-check of amount, currency and order binding before
   an order is marked paid.
 * Order status mapping: map NoHoldPay states (awaiting payment, confirmed, underpaid,
   expired, cancelled, refunded) to your own WooCommerce order statuses.
 * Tamper-proof amounts: the charged amount is derived from the order total on the
   server, never from the browser.
 * Works with the classic (shortcode) checkout and the Cart/Checkout Blocks.
 * HPOS (High-Performance Order Storage) compatible.

A NoHoldPay account is required (free to create at https://app.noholdpay.com/auth/
login?mode=signup), along with your own cryptocurrency wallet to receive funds.

### External services

This plugin relies on the third-party service below. It contacts the service only
from your web server (never from the buyer’s browser), and only when the relevant
feature is used.

**NoHoldPay Merchant API (https://api.noholdpay.com)**

This is the non-custodial payment processor the plugin integrates with. It is required
for the plugin to work. You create a NoHoldPay account and connect it with an API
key. The plugin contacts this API in these cases:

 * When a buyer places an order with a NoHoldPay method, to create the crypto payment.
   Data sent: the order total and currency, your store order id, an order description(
   your order number and store name), the order-received and checkout return URLs(
   only when those are public URLs), the buyer’s billing email address when present,
   and the buyer’s IP address, but only when it is public and routable (the same
   one WooCommerce already records on the order, and what the processor uses to 
   attribute the payment to its payer). Your API key is sent as a bearer credential.
   No card or bank details are involved.
 * When a signed webhook reports a payment as confirmed, to independently re-read
   that payment and re-verify its amount, currency and order before the order is
   marked paid. Data sent: the NoHoldPay payment id and your API key.
 * On the gateway settings screen, and periodically while an administrator is in
   the admin area, to read the list of coins your API key can accept (this is what
   tells the plugin whether a wallet is configured). Data sent: your API key.

The API base URL is configurable if you self-host NoHoldPay.
 Terms of Service: 
https://noholdpay.com/legal/terms Privacy Policy: https://noholdpay.com/legal/privacy

## 설치

 1. Upload the plugin folder to `wp-content/plugins/` (or install the zip via Plugins
    > Add New > Upload Plugin), then activate it. WooCommerce must be installed and
    active.
 2. Go to WooCommerce > Settings > Payments and enable NoHoldPay, then click Manage.
 3. Paste your API key (`pk_test_...` for testnets, `pk_live_...` for mainnet). The
    prefix fixes the mode.
 4. Copy the Webhook URL shown next to the signing-secret field, add it as the webhook
    endpoint on your API key in the NoHoldPay dashboard, then paste the generated signing
    secret back into the field. Save.
 5. Optional: on the same screen, build coin groups. Each enabled group becomes its
    own payment method at checkout.

Your webhook URL must be publicly reachable over HTTPS.

## FAQ

### Do I need a NoHoldPay account?

Yes. Create a free account at https://app.noholdpay.com/auth/login?mode=signup, 
add your own wallet, and generate an API key. The plugin connects to your account
with that key.

### Where do funds go?

Directly to the wallet you configured in your NoHoldPay account. The platform is
non-custodial and never holds customer funds.

### Which cryptocurrencies can I accept?

Through the hosted checkout you can accept Bitcoin, Ethereum, BNB Smart Chain, Base,
Polygon, Solana, Tron, Litecoin, Bitcoin Cash, Dogecoin, Monero, XRP, Stellar and
TON, plus stablecoins such as USDC, USDT, USDS, EURC and PYUSD, and tokens such 
as Chainlink. The exact set depends on which chains and coins you have enabled in
your NoHoldPay account.

### Does it work with the block checkout?

Yes. Both the classic (shortcode) checkout and the Cart/Checkout Blocks are supported.

### What data does the plugin send, and where?

See the “External services” section above. In short: order data (total, currency,
order id, description, and the buyer’s email and IP address) is sent to the NoHoldPay
Merchant API to create and verify payments. Coin logos in the admin coin-group builder
are bundled with the plugin (no third-party icon host). No card or bank data is 
handled by your site.

### The webhook is rejected with an invalid-signature error

The most common cause is server clock skew. The webhook timestamp must be within
the tolerance (default 300 seconds) of your server clock. Sync the server time (
NTP). You can raise the tolerance in the gateway settings only as a last resort.

### Checkout shows “We could not start the crypto checkout”

This means the NoHoldPay API declined to create the payment. If you are logged in
as a shop manager the exact reason is shown inline in that message, and it is always
written to WooCommerce > Status > Logs (source `noholdpay`) whether or not Debug
logging is on. Common causes: your NoHoldPay account has no wallet for the key’s
mode (an admin notice and the gateway settings screen both call this out by name),
the order total is below the minimum invoice amount for every enabled chain (raise
the total or enable a cheaper chain), or the store is on a local/private host so
the return URLs are not public (the payment still starts, but the buyer is not redirected
back automatically).

## 후기

이 플러그인에 대한 평가가 없습니다.

## 기여자 & 개발자

“NoHoldPay – Non-custodial crypto payments”(은)는 오픈 소스 소프트웨어입니다. 다음의
사람들이 이 플러그인에 기여하였습니다.

기여자

 *   [ noholdpay ](https://profiles.wordpress.org/noholdpay/)

[자국어로 “NoHoldPay – Non-custodial crypto payments”(을)를 번역하세요.](https://translate.wordpress.org/projects/wp-plugins/noholdpay-non-custodial-crypto-payments)

### 개발에 관심이 있으십니까?

[코드 탐색하기](https://plugins.trac.wordpress.org/browser/noholdpay-non-custodial-crypto-payments/)
는, [SVN 저장소](https://plugins.svn.wordpress.org/noholdpay-non-custodial-crypto-payments/)
를 확인하시거나, [개발 기록](https://plugins.trac.wordpress.org/log/noholdpay-non-custodial-crypto-payments/)
을 [RSS](https://plugins.trac.wordpress.org/log/noholdpay-non-custodial-crypto-payments/?limit=100&mode=stop_on_copy&format=rss)
로 구독하세요.

## 변경이력

#### 1.3.0

 * One order now keeps one payment. Every press of the pay button used to open a
   new crypto checkout, and a repeat for the same order was deliberately retried
   under a modified reference, so a buyer who returned to an unfinished order left
   a row of live payments behind for the merchant to read past. A buyer coming back
   is now returned to the checkout they already have, which also means they still
   see the amount they were first quoted. A new one is opened only when the old 
   cannot serve: the order total or currency changed, a different coin group was
   chosen, or the quote has run out.
 * Fix: the payment method icon no longer renders at full size at the checkout. 
   WooCommerce outputs the gateway icon with no dimensions and relies on its classic
   stylesheet to cap it, which a block theme does not load, so the 256px mark was
   drawn at full height in the payment list. Group logos of any shape are constrained
   by height only, so none are distorted.
 * New: a buyer who closes the tab or loses the checkout link now gets an email 
   with a button to come back and finish paying. WooCommerce sends nothing of its
   own for an order that is only awaiting payment, so until now an interrupted checkout
   was simply lost. The button goes straight to the payment page for that order 
   rather than back through the store, so it resumes the same payment at the amount
   already quoted; once that quote has run out it returns the buyer to the store
   for a fresh one. Switch it on or off under the gateway settings; edit the wording
   under WooCommerce > Settings > Emails.
 * A buyer can now resume payment whatever awaiting status you use. WooCommerce 
   only lets an order be paid from Pending payment or Failed, so its own pay-for-
   order link was refused on stores using On hold. It is now permitted for this 
   gateway’s orders, and only for a status that does not already mean paid or finished.
 * New installs now place an order in Pending payment rather than On hold while 
   the buyer completes the crypto checkout. On hold tells a buyer their order needs
   review, which is not what is happening. Existing stores keep the status they 
   already have; change it under Awaiting Payment Status.
 * Stock is now committed as soon as a payment is seen on-chain. Under Pending payment,
   WooCommerce protects stock only with the temporary checkout reservation, which
   expires after your Hold stock window (60 minutes by default) and is never renewed–
   but a crypto payment can arrive later than that, and confirmations add more time
   still, six Bitcoin blocks being about an hour on their own. Without this the 
   reservation could lapse, the item be sold to someone else, and the eventual payment
   take stock below zero. On hold already reduced stock at checkout and is unaffected.
 * An order still waiting on a blockchain is no longer cancelled by WooCommerce’s
   unpaid-order cleanup, which with Hold stock enabled cancels orders left in Pending
   payment past that window. Buyers were shown a cancelled order while their funds
   were on the way. The reprieve ends once the payment can no longer be credited,
   so an abandoned order is still cleaned up. Other payment methods are untouched.
 * Fix: the order note carrying the payment id is no longer lost. WooCommerce records
   a note only on a real status change, so the note was dropped whenever the order
   was already in the configured awaiting status.
 * Verified against WooCommerce 11.1.

#### 1.2.1

 * Compatible with WordPress 7.1, with no code change needed. The plugin loads no
   jQuery UI, uses no media library or editor components, and adds no toolbar items,
   and its block checkout method reads only globals and inline styles, so the newly
   iframed post editor does not reach it.
 * The External services section now states that the buyer’s IP address is sent 
   only when it is public and routable, which is what the plugin has always done.

#### 1.2.0

 * When your API key has no wallet behind it, the plugin now says so instead of 
   leaving you to guess: an admin notice across WordPress, a warning on the gateway
   settings screen, and a line on the checkout itself that only users who can manage
   the store can see. Buyers see nothing unusual. The payment methods deliberately
   stay on the checkout rather than disappearing, so the fault is visible instead
   of silent.
 * The reason a checkout could not start is now shown inline to anyone who can manage
   the store, without having to switch on Debug logging first. Buyers still see 
   only the neutral message.
 * The state behind those warnings is read from a remembered coin count refreshed
   in the admin, so no buyer request ever waits on an API call, and an outage or
   an unreachable API never raises a false alarm. The `noholdpay_has_payable_coins`
   filter silences it on a setup where the catalogue reads empty for a reason of
   your own.
 * Fix: the coin-group builder reported a key with no wallet as an invalid API key,
   sending merchants to debug the wrong thing.
 * Fix: a long store name, or a short one in a multibyte script, could push the 
   payment description past the API’s 200-byte limit and fail every checkout. The
   description is now capped without splitting a character.
 * The buyer’s IP is now sent with the payment. Previously every payment recorded
   the store server’s IP as the payer. Only public, routable addresses are sent,
   and the `noholdpay_buyer_ip` filter can override the source or switch it off.
 * Verified against WooCommerce 10.9 and PHP 7.4 through 8.5.
 * Order notes are now written for the detected, confirming and underpaid stages.
   These map to the same order status the order is already in, so the whole pre-
   confirmation trail, including an underpayment, was previously invisible on the
   order.
 * Hardening: before an order is marked paid, the confirmed payment must be one 
   this store created for that order. Two stores sharing an API key with overlapping
   order numbers could previously fulfil each other’s orders.
 * Fix: a coin group’s chosen default coin had no effect, because the API resolves
   the default from its own catalogue order rather than the order coins are sent
   in. Unrestricted groups now open on the chosen coin. Restricted groups cannot,
   and the builder says so.
 * Removed an unused connection-test endpoint that no screen ever called.

#### 1.1.1

 * Renamed all internal function, class, constant, option, script handle, AJAX action,
   and nonce identifiers to use the full noholdpay prefix (WordPress.org plugin 
   directory requires prefixes longer than four characters). No configuration changes
   are needed.

#### 1.1.0

 * Coin-group builder redesigned with a searchable, icon-based coin picker (coin
   logos bundled under assets/icons/).
 * Official NoHoldPay branding on the settings screen and the checkout method.
 * Documentation links added to the settings screen.
 * Block checkout now honours each coin group’s own enable toggle.
 * Added the External services disclosure and other WordPress.org readiness fixes(
   input sanitisation, plugin headers).
 * Fix: a store on a local or private host (for example a LocalWP site at localhost)
   could not start the crypto checkout because the redirect URLs were rejected as
   non-public. Those optional URLs are now omitted on such hosts so the payment 
   still starts.

#### 1.0.0

 * Initial release.

## 기초

 *  버전 **1.3.0**
 *  최근 업데이트: **3주 전**
 *  활성화된 설치 **10보다 적음**
 *  워드프레스 버전 ** 5.6 또는 그 이상 **
 *  다음까지 시험됨: **7.1.3**
 *  PHP 버전 ** 7.4 또는 그 이상 **
 *  언어
 * [English (US)](https://wordpress.org/plugins/noholdpay-non-custodial-crypto-payments/)
 * 태그:
 * [bitcoin](https://ko.wordpress.org/plugins/tags/bitcoin/)[cryptocurrency](https://ko.wordpress.org/plugins/tags/cryptocurrency/)
   [ethereum](https://ko.wordpress.org/plugins/tags/ethereum/)[payments](https://ko.wordpress.org/plugins/tags/payments/)
   [woocommerce](https://ko.wordpress.org/plugins/tags/woocommerce/)
 *  [고급 보기](https://ko.wordpress.org/plugins/noholdpay-non-custodial-crypto-payments/advanced/)

## 평점

아직 제출된 리뷰가 없습니다.

[Your review](https://wordpress.org/support/plugin/noholdpay-non-custodial-crypto-payments/reviews/#new-post)

[모든  리뷰 보기](https://wordpress.org/support/plugin/noholdpay-non-custodial-crypto-payments/reviews/)

## 기여자

 *   [ noholdpay ](https://profiles.wordpress.org/noholdpay/)

## 지원

할 말 있으신가요? 도움이 필요하신가요?

 [지원 포럼 보기](https://wordpress.org/support/plugin/noholdpay-non-custodial-crypto-payments/)