• Non-custodial
  • Paid straight to your wallet
  • 9 networks · USDT and USDC

Accept crypto.
Get paid straight to your wallet.

Ready-made crypto payment processing for your website, app or bot. Create an invoice with one API call, send the customer to our checkout page, and get a webhook once the network confirms the payment.

  • Sandbox with no real money
  • Clients for Node, PHP, Python, Go
  • Signed webhooks with retries
On-chain transaction
a1f3…9c0e · TRON
Your store Demo
Amount due$49.99

Choose a currency

Send the exact amount

Amount49.99 USDT
AddressTQ7x…wP3k
Send only USDT on TRON (TRC-20)
Address and amount valid for30:00

Payment detected

Waiting for TRON confirmations

Confirmations

TRON: 19 blocks, about a minute

Paid

49.99 USDT is in the store's wallet

Powered by CoineticSecure connection
invoice.paid → your server 200 OK
USDT · TRON, Ethereum, BSC, Polygon, Arbitrum, Solana USDC · Ethereum, Base, BSC, Polygon, Arbitrum, Solana Bitcoin Ethereum Litecoin BNB Smart Chain Polygon TRON Solana Base Arbitrum One
How it works

You sell. We watch the blockchain.

Coinetic gives each customer a dedicated address, detects the payment, waits for the required number of confirmations, and only then tells your server it's paid. Funds move from the customer's wallet to yours, never through us.

Payment flow: your site creates an invoice in Coinetic, the customer pays on-chain, the funds arrive in your wallet, and Coinetic sends a webhook to your server POST /v1/invoices invoice.paid webhook checkout_url USDT · TRON to your address confirmations Your siteor app, or bot CoineticAPI and checkout page Customerany wallet or exchange Blockchain9 networks Your walletLedger, Trust, Safe… Dashboardinvoices, reports, refunds
requests and monitoringmoney flownotification to your server
Networks and assets

9 networks. Customers pay with what they already hold

Native coins, USDT and USDC. Tokens are credited only by allowlisted contract address, so a fake “USDT” can't change an invoice's status.

BitcoinBTC
EthereumETH · USDT · USDC
TRONTRX · USDT
SolanaSOL · USDT · USDC
BNB Smart ChainBNB · USDT · USDC
PolygonPOL · USDT · USDC
BaseETH · USDC
Arbitrum OneETH · USDT · USDC
LitecoinLTC

Confirmations by network →

Plug-in integration

Three steps, and you're accepting crypto

No nodes, no server-side wallets, no smart contracts on your end. We handle the checkout page, exchange rates, addresses and confirmations.

create-invoice.js
import { CoineticClient } from "./cryptopay.js";

const cp = new CoineticClient({
  baseUrl: "https://pay.coinetic.money",
  keyId: process.env.API_KEY,
  secret: process.env.API_SECRET,      // server-side only
});

const invoice = await cp.createInvoice({
  order_id: "ORDER-1001",
  price_amount: "49.99",               // a string, not a number
  price_currency: "USD",
  return_url: "https://shop.example/orders/ORDER-1001",
}, "order-ORDER-1001");                // Idempotency-Key
create-invoice.php
require 'Cryptopay.php';

$cp = new \Cryptopay\Client('https://pay.coinetic.money', getenv('API_KEY'), getenv('API_SECRET'));

$invoice = $cp->createInvoice([
    'order_id'       => 'ORDER-1001',
    'price_amount'   => '49.99',
    'price_currency' => 'USD',
    'return_url'     => 'https://shop.example/orders/ORDER-1001',
], 'order-ORDER-1001');
create_invoice.py
from cryptopay import CoineticClient

cp = CoineticClient("https://pay.coinetic.money", os.environ["API_KEY"], os.environ["API_SECRET"])

invoice = cp.create_invoice({
    "order_id": "ORDER-1001",
    "price_amount": "49.99",
    "price_currency": "USD",
    "return_url": "https://shop.example/orders/ORDER-1001",
}, "order-ORDER-1001")
invoice.go
cp := &cryptopayclient.Client{
	BaseURL: "https://pay.coinetic.money",
	KeyID:   os.Getenv("API_KEY"),
	Secret:  os.Getenv("API_SECRET"),
	HTTP:    &http.Client{Timeout: 10 * time.Second},
}
inv, err := cp.CreateInvoice(ctx, cryptopayclient.CreateInvoice{
	OrderID:       "ORDER-1001",
	PriceAmount:   "49.99",
	PriceCurrency: "USD",
	ReturnURL:     "https://shop.example/orders/ORDER-1001",
}, "order-ORDER-1001")

Each client is a single file with no dependencies: download one for your language. For a step-by-step walkthrough, see the quickstart.

For developers

REST and webhooks. Idempotent. Predictable.

A small API that's hard to misuse. Get sandbox keys from the dashboard in a couple of minutes.

  • Idempotency-Key on every mutating requestRetrying after a timeout returns the same invoice instead of creating a second one.
  • HMAC-SHA256 signaturesYour secret never leaves your server; a timestamp and nonce block replay attacks.
  • Amounts are stringsNo floats: decimal strings and the asset's smallest units.
  • Signature test vectorsVerify a client in any language in a minute.
Node.jsPHPPythonGoREST
POST /v1/invoices
POST /v1/invoices HTTP/1.1
Authorization: CP-HMAC key=ak_live_…, ts=1760000000, nonce=…, sig=…
Idempotency-Key: order-ORDER-1001
Content-Type: application/json

{"order_id":"ORDER-1001","price_amount":"49.99","price_currency":"USD"}
201 Created
{
  "id": "inv_x7k2…",
  "status": "created",
  "checkout_url": "https://pay.coinetic.money/pay/inv_x7k2…#t=…",
  "expires_at": "2026-10-12T15:30:00Z",
  "livemode": true
}
Built in

Six months of payments engineering, done

Checkout page

QR code, exact amount, network warning, live status and a countdown timer. English and Russian, light and dark themes.

Funds land in your wallet

BTC, LTC and TRON: addresses derived from your xpub. EVM: a smart address that can only sweep to your wallet. Solana: your own address.

Locked exchange rate

Price in USD or EUR. The crypto amount uses the median of three exchanges and is held for 20 minutes. USDT and USDC are 1:1.

Underpayments and overpayments

Dedicated statuses, top-ups to the same address, a tolerance for wallet rounding, and late stablecoin payments credited automatically.

Guaranteed webhooks

HMAC signatures, retries for up to 24 hours, per-invoice event ordering, a delivery log and one-click resend in the dashboard.

Sandbox

The same API with no real money: “Pay exact,” “Underpay,” “Overpay” and “Half amount” buttons cover every scenario.

All features →

Non-custodial

We can't spend your money. Technically.

Accepting payments only requires your wallets' public data. Coinetic never asks for or stores private keys or seed phrases. Every address a customer pays to is derived from your key, and we verify that three times.

  • Public keys onlyxpub/zpub for BTC, LTC and TRON, an address for Solana, and a collection wallet for EVM networks.
  • Delayed wallet changesPassword, second factor, email notice and a window to cancel, even if someone gets into your dashboard.
  • Fees billed separatelyWe never take a cut of the payment: once a month we send you an invoice, and you pay it in crypto.

How security works →

0merchant private keys on our side
9networks: Bitcoin, Ethereum, TRON, Solana and more
20 minrate lock for BTC and ETH
~24 hof webhook retries until your server returns 2xx
Comparison

How Coinetic differs from custodial processors

Custodial processorCoinetic
Where funds sit after paymentIn the processor's account until withdrawalIn your wallet, immediately
Who can spend the fundsThe processorOnly you
WithdrawalsRequests, limits, waitingNot needed
FeesUsually deducted from each paymentBilled separately once a month
If the processor gets hackedEvery merchant's balance is at riskWe hold no keys to your money
Statuses you can trust

“Paid” only after network confirmations

Only the blockchain watcher changes the status. Not the checkout page, not the customer, not a URL parameter. If a block is rolled back, you get invoice.reorged.

1
created

Invoice created; the customer is choosing a coin

2
awaiting_payment

Address and exact amount issued

3
detected

Payment seen on the network; don't fulfill yet

4
confirming

In a block, confirmations n/N in progress

✓
paid

Confirmed; safe to fulfill the order

See how many confirmations we wait for on each network in Networks and assets.

Who it's for

One integration, any platform

Online stores

A “Pay with crypto” button right next to cards. Customers pay from any wallet or straight from an exchange.

SaaS and digital goods

Invoice metadata ties each payment to a user and plan. Fulfillment happens automatically on webhook.

Apps and bots

iOS, Android, Telegram: open the payment link, then bring the user back via return_url.

FAQ

Frequently asked questions

What is non-custodial crypto payment processing?

It's payment processing that never holds customer funds. Coinetic gives the customer an address derived from your public key, watches the blockchain and reports the payment, but the funds go straight to your wallet. We can't spend or redirect them.

How long does integration take?

The code takes an evening: creating an invoice, a redirect and a webhook handler. Before that, you sign up in the dashboard, add your receiving wallets and test in the sandbox. See every step.

Which cryptocurrencies and networks are supported?

BTC, LTC, ETH, BNB, POL, TRX, SOL, plus USDT and USDC, across 9 networks: Bitcoin, Litecoin, Ethereum, BNB Smart Chain, Polygon, Base, Arbitrum One, TRON and Solana. Full list.

Do I need to run nodes or store keys on my server?

No. Coinetic handles network monitoring, addresses and confirmations. Your server only holds an API key for signing requests and a webhook secret.

What currency do I set prices in?

USD, EUR, USDT or USDC. The customer sees the amount in the coin they choose; for BTC, ETH and other volatile assets, the rate is locked for 20 minutes based on the median of three exchanges.

When is a payment considered paid?

Only after the required number of network confirmations: for example, 2 blocks on Bitcoin and 19 blocks on TRON. The “paid” status is set by the blockchain watcher, not by the checkout page or the customer. If a block is rolled back, you'll receive an invoice.reorged webhook.

What if a customer pays too little or on the wrong network?

An underpayment gets the underpaid status, and the customer tops up to the same address. A transfer on a different EVM network or with a fake token isn't credited, but it's visible on the invoice. Learn more.

Can I refund a customer?

Yes. POST /v1/refunds or a button in the dashboard creates a refund request. Since the payment landed in your wallet, you send the transfer yourself and record the hash; on EVM networks, Coinetic finds it on-chain automatically and sends a refund.sent webhook. How refunds work.

Does Coinetic work with mobile apps and Telegram bots?

Yes. Your server creates the invoice, and the app or bot opens the payment link in the system browser. The API secret never ships inside the app. How to open checkout.

How much does it cost?

A percentage of paid invoices only, with no setup fee; fees are billed separately once a month. Pricing and calculator.

Your first test payment in 15 minutes

Sign up, grab a sandbox key and run a payment with no real money.