PayHook

How to Accept Crypto Payments on Your Website

Cryptocurrency coins on a dark surface

More businesses are adding crypto as a payment option. Stablecoins like USDT are now among the most transferred assets on public blockchains, and customers who hold crypto increasingly expect to spend it. For merchants, crypto payments mean no chargebacks, global reach without cross-border fees, and settlement that doesn't depend on banking hours.

But the way most crypto payment processors work introduces a familiar problem: custody.

The custody problem

Most crypto payment processors follow the same model as traditional payment gateways. Your customer sends crypto to the processor's wallet. The processor holds the funds in an omnibus account, confirms the payment, and eventually settles to your payout address — minus their cut.

This works, but it comes with trade-offs:

How non-custodial payments work

A non-custodial payment processor takes a fundamentally different approach. Instead of routing funds through their own wallet, the processor directs customers to pay your wallet address directly.

Here's what that looks like in practice:

The key difference: the processor never touches your funds. There's no omnibus account, no settlement step, no withdrawal process. The crypto lands in your wallet the moment the transaction confirms on-chain.

Getting started with PayHook

PayHook is a non-custodial crypto payment processor that supports BSC, TRON, and Ethereum. Here's a quick overview of the setup:

1. Sign up. Create an account at app.payhook.app. No KYC, no card on file. You get an API key immediately.

2. Add your wallet addresses. In the dashboard, paste the public addresses you control. PayHook draws from these when assigning deposit addresses to payments. Add at least five per chain if you expect concurrent orders — each pending payment locks one address until it confirms or expires.

3. Configure a webhook. Point a URL on your server at PayHook. When a payment confirms, PayHook POSTs a signed JSON body to your endpoint. You verify the HMAC-SHA256 signature and fulfill the order.

4. Create your first payment. One API call returns a hosted checkout URL your customer can pay through:

curl
curl -X POST https://api.payhook.app/api/v1/payments/ \
  -H "X-API-Key: pk_..." \
  -H "Content-Type: application/json" \
  -d '{
    "amount_usd_cents": 5000,
    "network": "bsc",
    "currency": "usdt",
    "external_order_id": "order-123"
  }'

The response includes a checkout_url you redirect your customer to. They see a hosted page with a QR code, the deposit address, and a countdown timer. When the payment confirms on-chain, your webhook fires.

What you need to know

For the full API reference, request and response schemas, webhook signature verification in five languages, and billing behavior, see the documentation.

Start accepting crypto today.

Free tier — no card required.

Get started