Vaultion
HomeBlogAccept USDT and USDC on a custom site without a payment processor account

Accept USDT and USDC on a custom site without a payment processor account

6 min read·Oct 14, 2026·Reviewed by the Vaultion Team

Most ways to take crypto on a custom website start with a sign-up: create a processor account, pass business verification, generate an API key, store it somewhere safe, and let the processor collect your payments into a balance you withdraw later. If what you want is USDT and USDC paid to your own wallet, there is a lighter shape. This post walks through it with one server-side request and no API key, and is honest about which coins work that way and which do not.

The request

Your server creates a checkout with the price and the wallets you want to be paid in. The request carries your store’s URL and name, an order reference, the item name, the price in US cents, escrow set to off for direct payments only, your receiving addresses (one EVM address covers Base, Ethereum, Arbitrum, Polygon and BNB Smart Chain; a TRON address takes USDT and TRX; a Solana address takes USDC, USDT and SOL), who pays the fee, and a return URL on your own domain. The response gives you a session ID and a checkout path; redirect the buyer there. Samples in Node, PHP and cURL are on the developers page.

Store the order reference before redirecting. The same reference returns the same checkout, so a timed-out request is safe to retry. Keep a random part in it so nobody can guess it and open that checkout first. The buyer sees a hosted checkout with every network you sent an address for, and pays from their own wallet.

Where the money goes

On the EVM networks, Solana and TRON, the buyer’s wallet sends one transaction that pays your share to your address and the 0.75% fee to the fee address, both inside the same transaction. You are paid when it confirms, and there is no balance to withdraw. You can set the fee payer to merchant, which is the default, or to buyer, which adds the 0.75% on top of the price.

Bitcoin and Litecoin work differently. A standard payment link names one address, so those payments go to a per-order deposit address and are forwarded to you after confirmation. That is a short period of custody by Vaultion, and it is worth knowing which of your coins work which way before you turn them on.

Marking the order paid

Read the session status from your server. Paid means the payment confirmed on chain: fulfil the order. Reverted means it was reversed by a network reorganization: hold the order. A status changes only from a confirmed on-chain receipt, and the response also carries the price the checkout was created with, so compare it with your order before you treat it as paid.

Do not mark an order paid because the buyer came back to your return URL or pasted a transaction hash. Both are claims, not proof.

Offer escrow on big orders

A confirmed crypto payment cannot be charged back, which is good for you and a reason some buyers hesitate to pay a shop they do not know. Set escrow to choice and the checkout offers both: pay directly, or pay into an escrow contract that holds the money until the buyer confirms delivery. Orders under $50 offer direct payment only. The buyer pays the escrow fee, 4% below 500 USDC, 3% from 500 and 2% from 5,000, in USDC or USDT on Ethereum mainnet, Arbitrum One, Base, BNB Smart Chain, TRON, and Solana. Disputes go to a Vaultion reviewer, which is not decentralized: you are trusting Vaultion’s reviewers, and a separate guardian can pause a ruling but never redirect funds.

What you give up by skipping the processor

No fiat settlement: you are paid in the coin the buyer chose, to your own wallet, and converting it is your job. No refund button: a direct payment is final once confirmed, so a refund is a transaction you send yourself. Prices are in US dollars, with the coin amount worked out at checkout. There is no sandbox and no webhooks yet, so test with a small real payment and poll the status. And only send addresses you control: a payment to a mistyped address cannot be recovered.

If you are on WooCommerce instead

The same checkout is packaged as a WordPress.org plugin: activate it, paste your receiving addresses, and the Pay with Crypto option appears at checkout with the same direct-payment and escrow choices. The API is for custom sites and platforms that are not on WooCommerce.

See it for yourself

Vaultion runs on a published, open-source contract that holds the funds — not Vaultion. You can read it and the locked balance on the block explorer before you send anything.

Frequently asked

Do I need a crypto payment processor account to accept USDC?

Not with this shape. Your server sends one request with your receiving addresses and gets a hosted checkout back. There is no account, no verification and no API key; the checkout identity is derived from your site and the addresses you send.

What does it cost to accept USDT and USDC this way?

0.75% of a direct payment, paid by you by default or added on top for the buyer. The fee is split out of the buyer’s transaction on EVM networks, Solana and TRON, so nothing is deducted from a balance later.

Does Vaultion ever hold my payments?

Not on EVM networks, Solana or TRON: the buyer pays your address directly. Bitcoin and Litecoin payments go to a per-order deposit address and are forwarded to you after confirmation, which is a short period of custody.

Can a USDC or USDT payment be charged back?

No. A confirmed on-chain payment is final. If you want buyers to have protection on larger orders, offer escrow at checkout; a dispute there is decided before the money moves.

Paid to your own wallet, one call per order

No processor account, no API key, no balance to withdraw. Direct USDC and USDT payments at 0.75%, with escrow on offer for the orders that need it.

See the API