easyway
Create account

How to accept cryptocurrency payments on your website

Accepting crypto on a website comes down to one thing: each order needs its own way to be paid, and your site needs to know when it was. A crypto payment gateway does both. Here are the three ways to set it up with easyway, from no code at all to a full API integration, and what happens to the money afterwards.

Why a gateway instead of a wallet address on the page

You can paste a wallet address on your checkout page, but then you have to match every incoming transfer to an order by hand, guess which customer sent which amount, and notice when someone sent too little or on the wrong network. A crypto payment processor gives each order its own address (or a memo, on TON and XRP), quotes an exact amount, waits for enough confirmations — 1 to 64 blocks depending on the coin — and then tells your site the order is paid.

Three ways to accept crypto on a website

OptionCode neededGood for
Payment linkNoneFreelancers, one-off invoices, a few products, donations
Hosted checkout via the APIA few lines on your backendOnline stores and SaaS with their own checkout
Plugin for your store platformNone (install + paste keys)WooCommerce, WHMCS and others — in beta, see below

In the dashboard, create a payment link with a fixed price or let the customer type an amount within limits you set. Share the link anywhere — your site, an email, a chat. Each visit opens a fresh invoice, so two customers never share an address. A product link can also show a text or hand out a unique code (a licence key, for example) once the invoice is paid, and a donation link adds an on-stream alert widget.

2. A hosted checkout from your backend

When the customer clicks "Pay with crypto", your server creates an invoice and sends the customer to its payment_url. Prices can be in USD; the customer then picks one of 23 coins on 12 networks, and the crypto amount is locked at that moment. If you only want stablecoins (15 of the supported assets are USD stablecoins such as USDT and USDC), pass allowed_assets.

curl https://api.easyway.cash/v1/invoices \
  -H "Authorization: Bearer sk_test_…" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: order-1234" \
  -d '{
    "amount": "49.00",
    "currency": "USD",
    "order_id": "1234",
    "success_url": "https://shop.example/thanks",
    "cancel_url": "https://shop.example/cart"
  }'
# → { "id": "…", "status": "pending", "payment_url": "https://easyway.cash/pay/…", … }

Then listen for the invoice.paid webhook, check its signature and fulfil the order. The USDT TRC-20 guide has the full code in Node.js, PHP and Python, and this guide covers the signature check.

3. A plugin for your platform

Plugins for WooCommerce, WHMCS, Blesta, PrestaShop, OpenCart, Magento 2 and Odoo are being written and are not released yet. Until a plugin for your platform is released, the payment link or the API are the way to go — both work with any site.

What happens after the customer pays

The invoice is open for 60 minutes by default (you can set 5 minutes to 24 hours). Once the transfer has its confirmations, the invoice becomes paid and your site gets the webhook. If the customer sent a little less, a 1 % underpayment tolerance (adjustable from 0 to 5 %) still counts it as paid; beyond that the invoice becomes underpaid and the customer can send the rest. The details are in handling underpaid and late payments.

easyway deducts a 0.5% fee from each confirmed payment and credits the rest to your balance. That balance is held by easyway until you withdraw it to one of your own whitelisted wallets; each withdrawal pays a fixed network fee per coin, listed on the pricing page.

Test before going live

Create a test key (sk_test_…) and run the whole flow without real money: the dashboard can mark a test invoice paid, underpaid or paid late so you see every webhook your code must handle. The sandbox guide walks through it.

Create a merchant accountRead the API docs
How to accept cryptocurrency payments on a website | easyway