Home Supported Assets Pricing Docs FAQ Contact Get Started

Crypto payments for
marketplaces and stores.

Take Bitcoin, Monero and ten other coins on your marketplace, online store or shop counter. Flat 1%, no KYC, no rolling reserve.

Why PrivCart

Built for crypto.

Most processors bolt crypto onto a system made for cards. PrivCart was built around crypto from the start, for marketplaces, online stores and shops with a counter.

No KYC

You won’t be asked for ID or business documents. Make an account, copy your API key, and you can take payments today.

Flat 1% fee

You pay one percent, taken when you withdraw. That’s the whole price, with nothing monthly and nothing tucked into the exchange rate.

No chargebacks

Once a payment confirms, it’s yours. Nobody can pull it back weeks later with a dispute you never saw coming.

Real Monero

Your customers pay in actual XMR, not a swapped stand in. You get paid in XMR, and you withdraw in XMR.

Twelve coins, one setup

Bitcoin, Monero, stablecoins and more from a single integration. You pick what to accept, and your buyers pick how to pay.

How the money moves

What your customer sees.

Here’s what happens between checkout and money in your balance. The card shows the real page your buyer sees.

Select cryptocurrency
  • Monero
    XMR · Native
  • Bitcoin
    BTC · Native
  • Ethereum
    ETH · Native
  • Solana
    SOL · Native
  • Tether
    USDT · ERC 20
  • USD Coin
    USDC · ERC 20
  • Dai
    DAI · ERC 20
  • Litecoin
    LTC · Native
  • Wrapped Bitcoin
    WBTC · ERC 20
  • Frankencoin
    ZCHF · ERC 20
  • Sky USD
    USDS · ERC 20
  • Tether Gold
    XAUT · ERC 20
12 assets live across the BTC, LTC, ETH, SOL and XMR networks
USDC
316.79 USDC
Waiting for payment
Expires in 14m 51s
0xF3e870F11C7324DC712Abd78DcAA400e5C8873EcCopy
0 of 12 confirmations
Secured by PrivCart
Awaiting confirmation

Confirming on chain

Customer paid. Waiting for network confirmations.

6 of 12 confirmations
Network Ethereum
Amount 316.79 USDC

Payment received

$316.79

Network Ethereum
Received 316.79 USDC
Added to balance 316.79 USDC
Fee at withdrawal (1%) 3.17 USDC
Your dashboard

Where the money sits until you move it.

Every payment lands in your PrivCart balance, and we hold it there until you withdraw. There’s no reserve, no payout schedule and nothing to wait for. Move it to your own wallet whenever you want, and we’d rather you did that often than let it sit here.

Every payment downloads as a spreadsheet, so your bookkeeper gets a clean record without asking you for one.

Marketplaces, online and physical stores

Live on your store in minutes.

PrivCart isn’t a plugin. It’s one line of code that works wherever you sell, whether that’s a marketplace, a Shopify or WooCommerce shop, a plain HTML page, or a counter in a physical store. It sits next to your card checkout, so nothing you already have needs to change.

Shopify
One line in your theme
WooCommerce
One snippet and a shortcode
BigCommerce
One line in your theme
Custom HTML
One line of code
Create your account

Not sure where to start? The developer docs walk you through it.

High risk stores

For the stores card processors turned away.

Your industry gets flagged, the rate doubles, part of your revenue sits in a rolling reserve, and one day the account is frozen without a word. PrivCart has no risk buckets and no underwriting. If what you sell is legal where you and your buyer are, your rate is the same 1% as everyone else.

CBD & hempPeptides & researchSupplements & nutraVapingForex & tradingSaaS & subscriptionsHosting & VPSDigital goodsTicketingTravelDatingTelehealthAdult contentPrecious metalsSubscription boxesCrypto servicesE-books & coursesConsulting

Not on the list? It is still 1%. The only things PrivCart will not process are set out in section 8 of the Terms of Service. In short: anything illegal where you or your buyer are, money laundering and terrorist financing, fraud and scams, sanctions evasion, stolen goods, material that exploits children, and attacks on our systems.

Point of sale

A crypto POS that works in person, too.

Create an invoice, show the QR code, and your customer pays from their phone. Same flat 1%, and no card terminal to rent.

Track record

Where we’re at.

PrivCart went live in August 2026 and has been taking payments every week since. We’re two months old and we’d rather show you the numbers than talk around them.

Live sinceAugust 2026
Processed$100,000+
Fee1%
Support24/7

Ready to accept crypto?

Marketplace, online store or shop counter, PrivCart sits next to your current checkout and takes 12 coins from day one.

Supported Assets

All 12 coins below are live right now. Once a payment confirms it’s final, so chargebacks simply aren’t a thing.

Fetching live prices

Majors

Bitcoin, Ethereum, Monero and the other coins people pay with most

XMR

Monero

Digital cash. Ring signatures and stealth addresses keep every payment private by default.

Live price
Loading

BTC

Bitcoin

The coin most people have heard of, and the biggest group of holders you can sell to.

Live price
Loading

ETH

Ethereum

Where most of DeFi lives. One address handles ETH and every ERC 20 token.

Live price
Loading

LTC

Litecoin

A reliable workhorse for over a decade, with 2.5 minute blocks and fees under a cent.

Live price
Loading

SOL

Solana

Final in about 400ms with fees below $0.001, which beats a card authorization.

Live price
Loading

Stablecoins

Pegged to the dollar or the Swiss franc, so the value stays steady

USDT

Tether

The most traded stablecoin. It tracks the dollar, so what you’re paid keeps its value until you withdraw.

Live price
Loading

USDC

USD Coin

Circle’s regulated stablecoin, fully backed and attested every month.

Live price
Loading

USDS

Sky USD

The successor to DAI from the Sky ecosystem. Same decentralized peg, with newer governance.

Live price
Loading

DAI

Dai

The original decentralized stablecoin, with no single company able to freeze it.

Live price
Loading

ZCHF

Frankencoin

A Swiss franc stablecoin, handy for taking CHF payments from customers in Switzerland and across Europe.

Live price
Loading

Wrapped and Commodities

Bitcoin and gold, as tokens

WBTC

Wrapped Bitcoin

Bitcoin on Ethereum, backed one to one with proof of reserves. Handy for holders who want to pay without selling their BTC.

Live price
Loading

XAUT

Tether Gold

One troy ounce of vaulted Swiss gold per token. Take gold backed payments at checkout.

Live price
Loading

Build your integration with AI

Not a developer? Copy the prompt below into ChatGPT, Claude, Gemini or your site builder’s assistant. The real PrivCart endpoints are already in it, so the assistant can write a working integration for your platform without you ever touching the API.

01

Copy the prompt

Hit copy on the block below. The live PrivCart endpoints are already in there, so the AI won’t make any up.

02

Paste and name your stack

Paste it into the assistant and tell it what your site runs on, whether that’s WordPress, Shopify, Next.js, Laravel or plain PHP.

03

Add your key server side

Add the code, and keep your pck_ key on your server, never in the browser. That’s it, you’re live.

The prompt

Swap the one <...> placeholder for your platform, then paste.

Copy prompt for AI
You are helping me add PrivCart crypto payments to my website.

PrivCart is a REST payment gateway.
  Base URL: https://privcart.xyz
  Auth: every /v1 request needs the header  Authorization: Bearer pck_MY_API_KEY
  My API key is a SECRET. Use it only from my server, never in browser or client code.

Integration flow:

1. My server creates an invoice:
   POST https://privcart.xyz/v1/invoices
   Headers: Authorization: Bearer pck_MY_API_KEY
            Content-Type: application/json
   Body: {"amount":"0.001","asset":"BTC","order_id":"my-order-123","callback_url":"https://MY-SITE/privcart-webhook"}
   amount is a STRING (avoids float rounding).
   asset is one of: BTC, LTC, ETH, SOL, XMR, USDC, USDT, DAI, USDS, WBTC, XAUT, ZCHF
   The 201 response includes: id (the invoice id), receive_address, status ("pending").

2. Send the customer to the hosted checkout page (shows QR, address, amount, live status; no key needed):
   https://privcart.xyz/checkout/INVOICE_ID

3. PrivCart POSTs a signed webhook to my callback_url whenever the status changes.
   Header:  X-PrivCart-Signature: sha256=HEX
   Verify it: HMAC-SHA256 of the RAW request body using my webhook secret, compared constant time to the header value.
   Body shape:
     {"id":"EVENT_ID","event":"invoice.settled","created_at":1788256920000,
      "data":{"invoice":{"id":"INVOICE_ID","order_id":"my-order-123","status":"settled","asset":"BTC","amount":"0.001"}}}
   Events: invoice.created, invoice.confirming, invoice.settled, invoice.expired, invoice.cancelled.
   When event === "invoice.settled", mark the order paid using data.invoice.order_id.

Now write the full integration for my platform: <TELL ME YOUR PLATFORM, e.g. WordPress/WooCommerce, Shopify, Next.js, Laravel, plain PHP>.
Rules: keep the API key on the server only; do not invent endpoints or fields beyond the ones above; use my amount exactly as given.

A note on safety: your API key stays on your server, and the invoice amount is locked on our side, so nothing in the browser or the AI’s code can change what a customer is charged. Add the key to your server config yourself, and never paste it into the AI.

WordPress integration

Add a crypto checkout to your WordPress or WooCommerce site in about five minutes. It’s one snippet and one shortcode with no plugin to install, and your API key never leaves your server.

01

Get an API key

Sign up at privcart.xyz, or get one straight away with a single request.

02

Paste the snippet

Paste the PHP into your theme’s functions.php. That’s where your key lives, safely on the server.

03

Drop the shortcode

Put [privcart_pay] on any page or product, and a crypto checkout shows up there.

1 · Get your API key

Sign up at privcart.xyz/signup if you’d like a dashboard and self serve withdrawals. Or get a key straight away, no email needed.

POST /v1/merchants
curl -X POST https://privcart.xyz/v1/merchants \
  -H "Content-Type: application/json" \
  -d '{"name":"your-shop-name"}'

Save the api_key (pck_...) it gives you. You’ll only see it once.

2 · Add the payment code

In your WordPress admin, go to Appearance, then Theme File Editor, and open functions.php. Paste this at the bottom and swap in your own key.

functions.php
<?php
// === PRIVCART CRYPTO PAYMENTS ===
// Your API key (KEEP SECRET, server side only).
define('PRIVCART_API_KEY', 'pck_PUT_YOUR_KEY_HERE');

// Shortcode: [privcart_pay asset="BTC" amount="0.0001"]
add_shortcode('privcart_pay', function ($atts) {
    $asset  = $atts['asset']  ?? 'BTC';
    $amount = $atts['amount'] ?? '0.0001';

    $ch = curl_init('https://privcart.xyz/v1/invoices');
    curl_setopt_array($ch, [
        CURLOPT_POST           => true,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_HTTPHEADER     => [
            'Authorization: Bearer ' . PRIVCART_API_KEY,
            'Content-Type: application/json',
        ],
        CURLOPT_POSTFIELDS => json_encode(['asset' => $asset, 'amount' => $amount]),
    ]);
    $res  = curl_exec($ch);
    $code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);

    if ($code !== 201 && $code !== 200) return '<p>Payment system temporarily unavailable.</p>';
    $invoice = json_decode($res, true);
    if (empty($invoice['id'])) return '<p>Could not create invoice.</p>';

    $url = 'https://privcart.xyz/checkout/' . $invoice['id'];
    return '<iframe src="' . esc_url($url) . '" title="Crypto Payment" '
         . 'style="width:100%;max-width:480px;height:600px;border:none;border-radius:12px;"></iframe>';
});

3 · Add a payment button to any page

Open a page or product and add a shortcode. Change the amount to whatever you’re charging.

Shortcodes
[privcart_pay asset="BTC"  amount="0.0001"]
[privcart_pay asset="ETH"  amount="0.001"]
[privcart_pay asset="SOL"  amount="0.005"]
[privcart_pay asset="XMR"  amount="0.005"]
[privcart_pay asset="USDC" amount="10"]
[privcart_pay asset="USDT" amount="10"]

What your customer sees

They get a QR code, the payment address, the exact amount and a 15 minute countdown. The status updates by itself, from Waiting for payment to Confirming to Payment received, on desktop and mobile alike. PrivCart watches the chain and credits your balance on its own. To mark the order paid inside WordPress, point a webhook at your site; the developer docs show how.

Fees

Customer paysFee at withdrawal (1%)You receive
0.001 BTC0.00001 BTC0.00099 BTC
0.01 ETH0.0001 ETH0.0099 ETH
10 USDC0.10 USDC9.90 USDC

The standard rate is 1%. The full payment goes into your balance when it confirms, and the fee comes off when you withdraw from your dashboard.

Troubleshooting

ProblemFix
Payment system temporarily unavailableYour host may have PHP curl switched off. Ask them to turn on php-curl.
Checkout shows not foundThe invoice expired after 15 minutes. Refresh the page and a new one is created.
Paid but status did not changeConfirmations take a little time: about 20 minutes for BTC, around 3 minutes for ETH, and near instant on SOL. Give it a few minutes.
Wallet says invalid addressThe customer is sending the wrong coin. A BTC wallet can’t pay an ETH address, for example.
Your API key only lives in functions.php on your server. Visitors never see it, and the checkout iframe only carries a random invoice ID.

Developers

PrivCart is a small REST API. You create an invoice, send the buyer to a hosted checkout, and get a signed webhook when it settles. There’s no SDK to install, and the base URL is https://privcart.xyz.

Authenticate every /v1 request with your secret key as a bearer token, Authorization: Bearer pck_.... Keys are per merchant, and the public checkout and SSE endpoints need no key. Requests are rate limited to 300 per 60s per IP. The full machine readable spec is at privcart.xyz/docs.

01

Create an invoice

POST an amount and asset from your server. PrivCart returns a unique receive address.

02

Send to checkout

Send the buyer to the hosted checkout, which shows the QR code, address, amount and live status.

03

Verify the webhook

PrivCart sends a signed callback when the invoice settles. Check the signature, then mark the order paid.

1 · Create an invoice, server side

Do this from your backend, never the browser, because the API key is secret. Amounts are strings so nothing gets lost to float rounding.

POST /v1/invoices
curl -X POST https://privcart.xyz/v1/invoices \
  -H "Authorization: Bearer $PRIVCART_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "amount": "0.001",
    "asset": "BTC",
    "order_id": "order-12345",
    "callback_url": "https://your-site.com/api/privcart-webhook"
  }'

Request fields:

FieldTypeReqNotes
amountstringyesBase units as a string, e.g. "0.001".
assetstringyesA supported symbol, see below.
order_idstringnoYour reference, up to 128 chars. Echoed in the webhook.
callback_urlstringnoPublic HTTPS webhook target, SSRF guarded.
merchant_addressstringnoOverride receive address, up to 128 chars.
ttl_msintegernoLifetime 1000 to 86400000, default 900000 which is 15 min.
201 Created
{
  "id": "0da553a9-e7f0-4b72-b050-0fdd0db1ccca",
  "order_id": "order-12345",
  "asset": "BTC",
  "amount": "0.001",
  "receive_address": "bc1q4y8t45whknmdx29ghnwuyezu449364vyf452yv",
  "status": "pending",
  "confirmations": 0,
  "min_confirmations": 2,
  "tx_id": null,
  "expires_at": 1788257700000,
  "settled_at": null,
  "created_at": 1788256800000,
  "updated_at": 1788256800000
}

2 · Send the buyer to checkout

We host the checkout for you, with the QR code, address, amount and live status over SSE. The customer page needs no key. Redirect or link to:

Hosted checkout URL
https://privcart.xyz/checkout/<invoice.id>

Building your own checkout UI? Read public invoice fields from GET /v1/invoices/:id/checkout and subscribe to live updates at GET /v1/invoices/:id/stream. A stream event:

GET /v1/invoices/:id/stream (SSE)
data: {"status":"confirming","confirmations":1,"min_confirmations":2}

3 · Verify the webhook

On every status change PrivCart POSTs a signed JSON callback with headers X-PrivCart-Signature: sha256=<hex> and X-PrivCart-Event-Id. Verify the HMAC over the raw body before trusting it.

POST your callback_url
const crypto = require('crypto');

// Mount with the RAW body, e.g. express.raw({ type: 'application/json' })
app.post('/api/privcart-webhook', (req, res) => {
  const raw = req.body;                               // Buffer / raw string
  const sig = req.get('X-PrivCart-Signature') || '';  // "sha256=<hex>"
  const expected = 'sha256=' + crypto
    .createHmac('sha256', process.env.PRIVCART_WEBHOOK_SECRET)
    .update(raw)
    .digest('hex');

  const a = Buffer.from(expected), b = Buffer.from(sig);
  if (a.length !== b.length || !crypto.timingSafeEqual(a, b)) {
    return res.status(401).send('invalid signature');
  }

  const evt = JSON.parse(raw);
  // evt.id                    -> event id (dedupe on this)
  // evt.event                 -> "invoice.settled"
  // evt.data.invoice.id       -> the invoice id
  // evt.data.invoice.order_id -> your order reference
  if (evt.event === 'invoice.settled') {
    markOrderPaid(evt.data.invoice.order_id);
  }
  res.status(200).send('ok');   // 2xx acks; non-2xx triggers retry + backoff
});

Get your signing secret (prefix wcs_) from the dashboard, or rotate it with POST /v1/webhooks/rotate-secret. Delivery is at least once with exponential backoff, dedupe on evt.id.

Webhook events

EventFires when
invoice.createdInvoice created.
invoice.confirmingPayment detected on chain, below the confirmation threshold.
invoice.settledPayment reached the confirmation threshold. Mark the order paid here.
invoice.expiredTTL elapsed with no payment.
invoice.cancelledMerchant cancelled the invoice.

Endpoints

Method and pathAuthPurpose
POST /v1/invoiceskeyCreate an invoice.
GET /v1/invoiceskeyList invoices, filter by status, asset, limit, offset.
GET /v1/invoices/:idkeyOne invoice.
GET /v1/invoices/:id/detailkeyInvoice plus lifecycle timeline and webhook deliveries.
POST /v1/invoices/:id/cancelkeyCancel an unpaid invoice.
GET /v1/invoices/:id/checkoutpublicCustomer facing invoice fields, the UUID is the token.
GET /v1/invoices/:id/streampublicSSE live status stream.
GET /v1/assetskeySupported assets plus live config.
GET /v1/dashboardkeyAggregate stats by status and asset.
GET /v1/balanceskeyReceived and swept summaries plus explorer links.
GET /v1/merchants/me/balancekeyWithdrawable balance per asset, confirmed, before the withdrawal fee.
GET / PUT /v1/settingskeyRead or set the default callback_url.
POST /v1/webhooks/rotate-secretkeyRotate the webhook signing secret.
GET /v1/webhooks/eventskeyWebhook delivery log.
POST /v1/merchantspublicSelf serve signup, returns a new key.

Supported assets

SymbolNameKindMin confirmations
BTCBitcoinnative2
LTCLitecoinnative3
ETHEthereumnative12
SOLSolananative1
XMRMoneronative10
USDC USDT DAI USDS WBTC XAUT ZCHFERC 20 tokenstoken (ETH)12

Tokens settle on Ethereum. Decimals: USDC, USDT, XAUT 6; WBTC 8; DAI, USDS, ZCHF 18. Call GET /v1/assets for the authoritative live list and contract addresses.

Errors

StatusErrorCause
400bad_requestMalformed JSON or missing field.
401unauthorizedMissing or invalid API key.
404not_foundResource does not exist.
422validation_errorInvalid amount, unsupported asset, unsafe callback URL.
429rate_limitedRate limit exceeded, 300 per 60s per IP.

All errors return { "error": "type", "message": "detail" }.

Stuck on something? Message us on Telegram at t.me/privcartsupport, or try every endpoint live at privcart.xyz/docs.

Frequently Asked Questions

The questions merchants ask us most. If yours isn’t here, message us on Telegram.

Getting started
Do you require KYC or account registration? +
No KYC. You make an account to get your API key, and that's it. There's no ID to upload and no approval to wait for.
Do I have to stop taking card payments? +
Not at all. PrivCart runs alongside whatever you use today. Crypto simply becomes one more way for your customers to pay.
Why choose PrivCart over BitPay or Coinbase Commerce? +
Most gateways ask for ID, review accounts and limit which countries they serve. PrivCart skips the ID upload and the reviews, charges a flat 1%, and lets you withdraw whenever you want. The trade off is that price swings on volatile coins are yours to manage.
Which platforms does PrivCart work with? +
Marketplaces, online stores and physical stores alike. PrivCart isn't a plugin; it's one line of code you add to your site, and it works on Shopify, WooCommerce, BigCommerce and custom HTML stores. At a counter you show the QR code instead.
Which countries does PrivCart work in? +
There's no country approval step, and we don't block merchants by region.
Do I need a specific wallet to use PrivCart? +
Any wallet works. Payments land in your PrivCart balance once they confirm, and you can withdraw to any wallet you control whenever you like.
Fees and money
What are the transaction fees? +
A flat 1%, taken when you withdraw. The only other cost is the normal network fee on the withdrawal.
Can I get paid in fiat or to my bank account? +
Not directly. PrivCart pays out in crypto, in the coins you accepted, to a wallet you control. If you'd like dollars or euros in the bank, accept a stablecoin like USDC or USDT and convert it at an exchange you trust.
How is the invoice amount set? +
Your store sets the amount in crypto when it creates the invoice, and it stays fixed after that. If you price your products in dollars or euros, your store converts the price to crypto before creating the invoice.
How does PrivCart handle price volatility? +
Accept stablecoins like USDT and USDC. They track the dollar one to one, so you can take crypto without worrying about price swings.
What if a customer sends the wrong amount? +
If a customer overpays, it goes through as normal. An underpayment clears if it's within 1% of the invoice. If it's short by more, the buyer can top up before the invoice expires or start a new one. If you want to give money back, you can send it from your own wallet.
How do refunds work? +
You send them yourself, from your own wallet to the customer's address, just like any other crypto payment. Worth knowing up front: crypto refunds are manual, so if you refund often, that's a job someone has to do. PrivCart doesn't process refunds for you.
Can I process refunds automatically? +
No, refunds are manual. You send them from your own wallet when you need to.
Is there a minimum or maximum payment size? +
No. There's no minimum payment, no maximum, and no minimum balance before you can withdraw.
Can I export my payments for accounting? +
Yes. You can download every payment from the dashboard as a spreadsheet, so your bookkeeper gets a clean record.
Privacy and custody
Why Monero? +
Monero works like digital cash. On Bitcoin, anyone can look up a balance and its history. Monero keeps those details private for you and your customers by default.
Why LTC and BTC? +
They're the coins people hold most, so offering them means more of your buyers can pay.
Where is my money before I withdraw it? +
Payments sit in your PrivCart balance until you withdraw them, and you can do that at any time. We suggest withdrawing regularly, so most of your money lives in a wallet only you control.
Will PrivCart freeze my funds? +
No. We don't freeze balances, we don't run account reviews and we don't police what you sell. Your balance is yours, and you can withdraw it to any wallet you control whenever you like.
Is there a hold period before I can withdraw? +
No. There is no hold period, no rolling reserve and no payout schedule. The moment a payment confirms it is in your balance and you can request a withdrawal. From there it is an ordinary on chain transaction, so how fast it lands depends on the network you chose, not on us.
What will you not process? +
Anything illegal where you or your buyer are based, money laundering and terrorist financing, fraud and scams, sanctions evasion, stolen goods and funds, material that exploits children, and attacking or probing our systems. Section 8 of the Terms of Service has the exact wording. We don't sort legal businesses into risk buckets on top of it.
Support
Who runs PrivCart? +
A small independent team in Lugano, Switzerland, led by its founder. We're not a registered company, which keeps overheads low and is how the fee stays at 1% with no monthly cost. It also means you're dealing with the people who build it, not a support queue.
When can I reach support? +
Any time. Support runs 24/7 on Telegram, and we aim to reply within the hour, day or night.
How do I report a bug or get help? +
Message us on Telegram at t.me/privcartsupport. A real person reads every message and gets back to you.

Contact

Support is on Telegram 24/7. For anything else, reach me directly.

Get in touch
Support
Telegram

Stuck on setup or have a question about a payment? We’re on Telegram 24/7 and reply within the hour.

Message support
J
John
Founder

Partnerships, press, integrations, or anything else on your mind. Message me on X or send an email, and I’ll get back to you.

Contact via X Email [email protected]
PrivCart
PrivCart
Official X Account

Product news, new integrations, and our take on what’s happening in crypto payments.

Follow on X

Pricing

What it costs

Nothing to pay until you withdraw.

Standard
1%per withdrawal
Get Started
  • 12 coins, Monero included
  • No monthly fee
  • No setup cost or contract
  • No rolling reserve
  • No chargeback fees
  • Withdraw anytime, no minimum
Side by side

What the same month costs you.

$10,000 a month, next to a typical high risk card account.

PrivCartTypical high risk card account
Processing fee$100flat 1%$300 to $6003% to 6%
Per transaction chargeNone$0.10 to $0.50 on every sale
Held back in reserveNothing$500 to $1,000held 90 to 180 days
Chargeback feesNoneconfirmed payments are final$15 to $35 per dispute
Monthly and gateway feesNoneVaries by provider
UnderwritingNoneApplication, documents, approval wait

Card figures are published industry ranges, not a quote from any one provider.

Worked examples

What you keep.

Customer paysLands in your balanceFee at withdrawalYou keep
$100$100$1$99
$1,000$1,000$10$990
$10,000 over a month$10,000$100$9,900

Shown in dollars because that is how you price. PrivCart pays out in the coin your customer paid, so a 100 USDT sale settles as 100 USDT and 99 USDT is yours. Network fees go to the blockchain, not to us, and on Litecoin or Solana they are fractions of a cent.

Common questions

Questions about the price.

Is there a cheaper rate at higher volume? +
1% whatever you turn over. Doing serious volume? Message us on Telegram.
What if I never withdraw? +
Then you haven't paid us anything. A balance sitting untouched costs nothing. Withdraw regularly anyway; the safest place for your money is a wallet only you control.
Do you take a cut of the exchange rate? +
There's no exchange happening. Your store sets the amount in crypto, the customer pays that coin, you withdraw that coin. Nothing is converted, so there's no spread to hide a margin in.
Is there a minimum I have to hit? +
No. Take one payment a year if that's your business.
Can the 1% change later? +
You'd get at least 30 days' notice. That's in the Terms of Service, not just a line on a marketing page.

Ready to accept crypto?

No ID and no contract. You can be live today.

Security

How PrivCart protects your keys, your payments and your balance, and what we need from you.

API keys

  • Every request to the API uses your secret key as a bearer token. Keys are issued per merchant.
  • Your key is shown once, when it’s created. We don’t display it again.
  • Keys belong on your server. Anything in browser code is visible to every visitor.
  • The hosted checkout needs no key at all. It’s reached by a random invoice ID, so a checkout link never exposes your account.

Webhooks

  • Every webhook is signed. We send an HMAC SHA256 signature of the raw request body in the X-PrivCart-Signature header.
  • Verify that signature with a constant time comparison before you trust a callback. The developer docs show the code.
  • Delivery is at least once with exponential backoff, so dedupe on the event ID rather than assuming one delivery.
  • You can rotate your signing secret yourself at any time from the dashboard.
  • Callback URLs must be public HTTPS, and we guard them against requests to internal addresses.

Payments

  • Every order gets its own deposit address, created for that payment alone.
  • The invoice amount is fixed on our server when the invoice is created. Nothing in the browser can change what a customer is charged.
  • A payment is only marked paid once it reaches the confirmation threshold for that asset.
  • The API is rate limited to 300 requests per 60 seconds per IP.

Your balance

Payments sit in your PrivCart balance until you withdraw them, so PrivCart holds those funds in the meantime. We don’t freeze balances, run account reviews or police what you sell, but the safest place for your money is still a wallet only you control. Withdraw regularly rather than letting a large balance build up.

Withdrawing safely

  • Blockchain transactions can’t be reversed. Check every withdrawal address before you confirm it.
  • Watch for address poisoning. Scammers send tiny transactions from addresses that look almost identical to ones you’ve used, hoping you copy theirs from your history.
  • Always copy your withdrawal address from your own wallet, never from a transaction list or a message.
  • Check the first and last characters every time, even on an address you’ve used before.

What we ask of you

  • Keep your API key and webhook secret on your server, out of client code and out of public repositories.
  • Verify webhook signatures before marking an order paid.
  • Rotate your webhook secret if it might have been exposed, and tell us straight away if your API key may have leaked.
  • Don’t put customer personal data in order references or other fields you send us. You don’t need to, and we’d rather not hold it.

Reporting a problem

Found a vulnerability or something that looks wrong? Email [email protected] or message us on Telegram, which is answered 24/7. Please give us a chance to fix it before making it public, and we’ll keep you updated on the fix.

No system is perfectly secure, and we won’t pretend otherwise. What we can tell you is exactly how the parts above work, which is why this page describes mechanisms rather than badges.

Changelog

What we’ve shipped, newest first.

1 October 2026

A plainer dashboard preview

  • Rebuilt the dashboard preview on the home page in everyday language, with fewer numbers on screen at once.
  • Reworked the track record section so the figures sit together in one place.
29 September 2026

Swiss terms and a copy pass

  • Terms of Service and Privacy Policy rewritten for Lugano, Switzerland, where PrivCart is run from.
  • Made the wording on custody, fees and support match across every page.
26 September 2026

Live prices, legal pages and a clearer site

  • Supported Assets now shows live prices for all 12 coins, refreshed while the page is open.
  • Added Terms of Service and a Privacy Policy.
  • Added this changelog, plus Pricing and Security pages.
  • Rewrote the site copy so custody, fees and setup are described exactly as they work.
August 2026

PrivCart went live

  • First merchants started taking payments, with 12 coins live from day one.
  • Hosted checkout, REST API, signed webhooks and the merchant dashboard all shipped.

Want to hear when something ships? Follow @privcartcom on X.

Terms of Service

Last updated September 29, 2026

Privacy Policy

Last updated September 29, 2026