Skip to main content
Start accepting stablecoin payments by your next coffee break. Book a call
Get started · about 10–20 minutes

Set up PayRam in three stages.

PayRam is a crypto payment gateway you run yourself — so no company holds your money, freezes your account, or sees your customers. New to this? You're in the right place. Each stage below has the plain-English idea and the exact steps to follow.

No signupNo approvalSelf-custodyYou hold the keys
Stage 1 · your server~5 min

Run PayRam on a server you own.

A payment gateway needs somewhere to live. That's a VPS— a small computer you rent in the cloud for roughly $20–40 a month. Because it's yours, nobody can pause it, close your account, or read your customers' data. Never touched a server? It's one command and a few prompts.

Get the server running
  1. 1
    Rent a VPS — Ubuntu 22.04, 2 CPU / 4 GB / 50 GB — and point a domain at it. (Hetzner, AWS, Google Cloud, Azure, Hostinger all work.)
  2. 2
    SSH into it as root.
  3. 3
    Paste the command below and pick --mainnet for real money or --testnet to practise.
  4. 4
    Answer the prompts: choose a database (managed Postgres for production, or the built-in one to try it), pick SSL (free Let's Encrypt is one keypress), and press Enter to generate the hot-wallet encryption key.
  5. 5
    Confirm the review screen. When it prints “installation completed,” open http://your-server-ip in a browser.
Run on your server
bash <(curl -fsSL https://payram.com/setup_payram.sh) --mainnet

Under 10 minutes, start to finish. The installer checks your system, installs Docker and PostgreSQL, and sets everything up for you.

Your first login
  1. 1
    Open http://your-server-ip/signup and create your admin account — an email and password. Save them; this is the root account for your server.
  2. 2
    Name your project (the site or product you're adding payments to) and click Continue to Dashboard.
  3. 3
    Go to Settings → Integrations → Node Details. Keep the built-in public RPC URLs, or paste your own private endpoints for higher reliability.
  4. 4
    That's the server done. Next: your wallets.
OS
Ubuntu 22.04
CPU
2 cores
RAM
4 GB
Disk
50 GB SSD
Domain
Pointed at it
Stage 2 · your wallets~5 min

Three wallets. One job each.

The part that makes PayRam different: it never holds your money — you do. Set up three wallets once, and money always flows toward the one only you can open.

customerDeposit addressderived by your Masterunique per customerCold vaultonly you can openHot walletpays the gaspaysSmartSweep

The customer pays a one-time address. PayRam sweeps it straight to your vault. The hot wallet just covers the gas.

Master Account

Switches on deposits.

Hands every customer a fresh deposit address and deploys the on-chain contract that moves funds later. The server only ever holds a public address and a salt — never your customers’ private keys.

Cold Wallet

Your vault.

Every deposit is swept here automatically. It’s an address only you control — put it on a hardware wallet. PayRam stores just the address, so money can land in but never leave without you.

Hot Wallet

Pays the gas.

A small working wallet that funds the network fees for sweeps. Keep a little native coin in it (ETH, POL, TRX). Used on EVM chains and Tron; Bitcoin sweeps are signed from the PayRam app.

Set them up in the dashboard

All in the Wallet Management tab. Do it once per chain you want to accept.

Master + Cold wallet · Base, Ethereum, Tron
  1. 1
    Open Wallet Management → Deposit Wallet and pick your chain.
  2. 2
    Click Deploy Contract — a configuration pop-up opens.
  3. 3
    Connect your Master Account with MetaMask or WalletConnect.
  4. 4
    Paste your cold wallet address (a different wallet — never the master), name it, and click deploy contract.
  5. 5
    Wait for confirmation. PayRam then shows your fund-sweeper and master addresses.
Hot wallet · pays the gas
  1. 1
    Open Wallet Management → Hot Wallet and click Add under your chain.
  2. 2
    Choose Add an existing wallet, then Continue to add hot wallet.
  3. 3
    Paste its private key and click Add Wallet. Keep a little native coin in it for gas.
On Bitcoin & when sweeps run

For Bitcoin, expand Bitcoin & Other Networks, add a wallet with its 12-word seed (kept encrypted, never on a server), then add your cold address. Sweeps to your vault run automatically on EVM and Tron — triggered by a balance threshold, a number of funded addresses, or a set time. Bitcoin sweeps are approved from the PayRam mobile app.

No deposit keys on the server

Sweeps run through smart contracts, not stored private keys. So even if someone fully compromised your server, there's nothing to drain — the keys to your vault were never there in the first place.

Stage 3 · your app~5–10 min

Connect it to your app.

The whole idea in one sentence: PayRam credits an invoice as the money lands, and your app debits your user when it's paid. You never watch a blockchain or touch a key — you react to one event.

invoice · $49.99amount PayRam has credited →
OPEN
Invoice created
PARTIALLY_FILLED
Crypto arriving — PayRam credits it
FILLED
Paid in full — webhook fires, you debit

Wire it up in five steps

  1. 1
    Grab your Project API Key from your PayRam dashboard.
  2. 2
    Create a payment — POST /api/v1/payment with the customer's email, your customer ID, and the USD amount. You get back a reference_id and a hosted checkout url; send the customer there.
  3. 3
    (Optional) Pin a specific chain's address with POST /api/v1/deposit-address/reference/{id}.
  4. 4
    Register your webhook — Settings → Webhook → Add Endpoint, paste a public HTTPS URL, save, and mark it active.
  5. 5
    When the webhook arrives, verify its X-Payram-Signature and credit your user once the status is FILLED. (The SDK does this for you.)
Install
npm install payram
TypeScript
import { Payram } from 'payram'

const payram = new Payram({
  apiKey: process.env.PAYRAM_API_KEY!,
  baseUrl: process.env.PAYRAM_BASE_URL!,   // your server, e.g. https://your-server.com:8443
})

// When a customer checks out:
const checkout = await payram.payments.initiatePayment({
  customerEmail: 'buyer@example.com',
  customerId: 'user_123',
  amountInUSD: 49.99,
})
// Send them to checkout.url — PayRam handles the rest.

One call creates the payment and returns a hosted checkout link. The SDK ships webhook helpers for Express, Fastify, and Next.js too.

Let your AI editor write it with you

Point Cursor, Claude, or Copilot at the PayRam MCP server and it generates the integration and webhook handler for your framework.

MCP config
{
  "mcpServers": {
    "payram": {
      "url": "https://mcp.payram.com/mcp"
    }
  }
}
What your customer sees
PayRamDEMO
Step 1 · Add credit

Add Credit

Choose an amount to add to your demo account.

$

The live Add Credit widget, wired to the PayRam sandbox. Pick an amount, send test funds, watch it confirm.

That's the whole setup

Three stages. You're live.

Your own server, your own wallets, your own app — accepting crypto from anywhere, with the money landing in a vault only you can open. Paying people back out? PayRam does payouts too, the same self-custody way.

Supported Chains & Tokens

20+ tokens across 6 networks. Stablecoin-native — USDT and USDC on every supported chain.

Bitcoin
Bitcoin
BTC
Variable · ~10 min
Ethereum
Ethereum
ETH
~$1–5 · ~15 sec
Tron
Tron
TRX
~$0.01 · ~3 sec
Base
Base
BASE
~$0.01 · ~2 sec
Polygon
Polygon
POL
~$0.01 · ~5 sec
SoonSolana
Solana
SOL
~$0.001 · ~0.4 sec
Primary stablecoins:
USDTUSDT
USDCUSDC
+ BTC, ETH, TRX, and 15 more
Common questions

Setup questions.

What is a VPS, and why do I need one?+
A VPS is a small computer you rent in the cloud, usually $20–40 a month. PayRam runs on it so that you — not a payment company — control the software and the data. It is what makes PayRam self-hosted and impossible for anyone else to freeze.
Do I need to sign up or get approved?+
No. There is no PayRam account, no KYB, and no approval to wait for. You rent a server, run one command, and you are running your own gateway. Nobody gatekeeps it.
What happens to my money if my server is hacked?+
Nothing to steal. Deposit private keys never live on the server, and sweeps move funds through smart contracts rather than stored keys, straight into a cold vault only you control. A full server compromise yields zero spendable funds.
What is the difference between the three wallets?+
The Master Account turns on deposits and hands each customer an address. The Cold Wallet is your vault — every deposit is swept there automatically. The Hot Wallet is a small wallet that just pays the network gas for those sweeps.
How does my app know when a payment arrives?+
PayRam sends your server a signed webhook the moment an invoice is FILLED, with the amount, currency, and confirmation count. You can also poll GET /api/v1/payment/reference/{id} if you prefer.
Which chains and coins can I accept?+
Bitcoin, Ethereum, Base, Polygon, and Tron — including USDC, USDT, PYUSD, cbBTC, and each chain’s native coin. Accept as many or as few as you like.
How long does it really take?+
The server install is under 10 minutes. Wallets and a basic integration bring the whole thing to roughly 10–20 minutes, start to finish.
Can an AI agent help me integrate?+
Yes. Add the PayRam MCP server (https://mcp.payram.com/mcp) to Cursor, Claude, or Copilot and it will write the integration and webhook handler for your framework, and answer setup questions along the way.