HASH PAY Docs
Developer docs ~15 minutes, end‑to‑end

Accept stablecoins in an afternoon

HashPay drops a crypto checkout onto your site and settles payments straight into your own wallet — no custody, no chargebacks, no merchant account. This guide takes you from zero to a live, paying integration, one easy step at a time.

Non-custodial — we never hold funds 8 chains, USDC & USDT 0% transaction fees

What you're building

By the end of this guide a customer on your site will click a button, see a clean checkout overlay, pay in USDC or USDT on the chain of their choice, and watch it confirm — while the money lands directly in a wallet only you control. Your server gets a signed webhook the moment it's confirmed, so you can unlock the order, send the license, or upgrade the plan.

The whole flow is just five pieces of setup and one short webhook handler:

the-whole-thing.html html
<!-- 1. Load the widget once, anywhere on the page -->
<script src="https://cdn.hashpay.dev/embed.js" data-pk="pk_live_your_key"></script>

<!-- 2. Any button that opens checkout for a price you defined -->
<button data-hashpay-price="price_123">Pay with crypto</button>

That's the customer-facing half — two lines. The other half is telling your backend when a payment lands, which we build together at the very end.

The six steps

Each step is short and mostly point-and-click in the dashboard. We've ordered them so you're always building on something that already works — by the time you write a single line of code, your account, wallet and checkout are already live.

You can do the entire thing in test mode first. Test keys settle simulated payments — you'll click your own button, mark it paid, and watch a real webhook arrive, all without touching a blockchain or spending a cent. Flip to live only when you're happy.

How HashPay works, in 30 seconds

It helps to know what's happening under the hood — though you never have to think about it again after this.

  • You define prices, not addresses. A Price is just "this much USD." The buyer's browser never sets the amount, so buyer-driven checkout stays safe.
  • The buyer picks a chain and token in the widget. HashPay hands them your wallet address and the exact amount to send.
  • HashPay watches the chain and matches the incoming transfer to that exact amount. When it's confirmed, your wallet already has the money — HashPay only ever observed it.
  • Your webhook fires. A signed payment.confirmed event hits your server so you can fulfil the order.

Because settlement is on-chain and straight to your wallet, HashPay is non-custodial: there's no balance to withdraw, no payout schedule, and nothing for us to freeze. Stablecoins are treated 1:1 with USD, so a $29.00 price means the buyer pays 29.00 USDC or USDT.

New to HashPay? Just follow the steps in order — each page ends with a button to the next one. Already integrated and need exact field names? Jump to the API & webhook reference.