payx3
v3.0.1
Published
π³ Multi-chain crypto wallet β generate addresses & watch for incoming payments. BTC, ETH, BNB, MATIC, AVAX, ARB, OP, SOL.
Maintainers
Readme
π³ payx3 v2.0.0
Multi-Chain Crypto Payment SDK Generate wallet addresses + watch for incoming payments with a single function call.
πΌ Open to Work
π§ [email protected] β available for freelance & full-time work!
π¦ Install
npm install payx3π Get a Free Infura Key
π https://app.infura.io/register β free, no credit card needed.
π Table of Contents
- Generate Addresses
- Bitcoin (BTC)
- Ethereum (ETH)
- BNB Chain (BNB)
- Polygon (MATIC)
- Avalanche (AVAX)
- Arbitrum (ARB)
- Optimism (OP)
- Solana (SOL)
- USDT
- USDC
- DAI
- WBTC
- WETH
- LINK
- UNI
- AAVE
- SHIB
- Custom Token
- Watch Everything at Once
- Payment Object
- Token Decimals Reference
π Generate Addresses
const { generateMnemonic, deriveAll } = require("payx3");
async function main() {
// Generate a 12-word mnemonic (use 256 for 24 words)
const mnemonic = generateMnemonic(128);
console.log("Mnemonic:", mnemonic);
// β Save this safely β it controls ALL your wallets
// Derive all chain addresses from the mnemonic
const wallet = await deriveAll(mnemonic);
// Bitcoin β 3 formats
console.log("BTC Legacy: ", wallet.bitcoin[0].address); // 1...
console.log("BTC SegWit: ", wallet.bitcoin[1].address); // 3...
console.log("BTC NativeSegWit:", wallet.bitcoin[2].address); // bc1...
// Solana
console.log("SOL:", wallet.solana.address);
// EVM β same address works for ETH, BNB, MATIC, AVAX, ARB, OP
console.log("ETH/EVM:", wallet.evm.address);
// Use your own existing mnemonic
const wallet2 = await deriveAll("witch collapse practice feed shame open despair creek road again ice least");
console.log("ETH from my mnemonic:", wallet2.evm.address);
// Multiple accounts from same mnemonic
const acc0 = await deriveAll(mnemonic, { accountIndex: 0 });
const acc1 = await deriveAll(mnemonic, { accountIndex: 1 });
console.log("Account 0:", acc0.evm.address);
console.log("Account 1:", acc1.evm.address);
}
main();βΏ Bitcoin (BTC)
const { watchBTC } = require("payx3");
watchBTC({
address: "bc1qar0srrr7xfkvy5l643lydnw9re59gtzzwf5mdq",
onPayment: (payment) => {
console.log("πΈ BTC received!");
console.log("Amount:", payment.amount, "BTC");
console.log("Status:", payment.status); // "unconfirmed"
console.log("TxHash:", payment.txHash);
console.log("View: ", payment.explorerUrl); // https://blockstream.info/tx/...
},
onConfirmed: (payment) => {
console.log("β
BTC confirmed in block!", payment.blockNumber);
},
pollSecs: 20, // optional: how often to poll (default 20s)
});Ξ Ethereum (ETH)
const { watchETH } = require("payx3");
watchETH({
address: "0xe3d7373f2dD3DA124f912AC3B5883F0caf7689D1",
infuraKey: "YOUR_INFURA_API_KEY",
onPayment: (payment) => {
console.log("πΈ ETH received!");
console.log("Amount:", payment.amount, "ETH");
console.log("Status:", payment.status); // "unconfirmed"
console.log("TxHash:", payment.txHash);
console.log("View: ", payment.explorerUrl); // https://etherscan.io/tx/...
},
onConfirmed: (payment) => {
console.log("β
ETH confirmed!", payment.blockNumber);
},
});πΆ BNB Chain (BNB)
const { watchBNB } = require("payx3");
watchBNB({
address: "0xe3d7373f2dD3DA124f912AC3B5883F0caf7689D1",
infuraKey: "YOUR_INFURA_API_KEY",
onPayment: (payment) => {
console.log("πΈ BNB received!");
console.log("Amount:", payment.amount, "BNB");
console.log("View: ", payment.explorerUrl); // https://bscscan.com/tx/...
},
onConfirmed: (payment) => {
console.log("β
BNB confirmed!", payment.blockNumber);
},
});β Polygon (MATIC)
const { watchPolygon } = require("payx3");
watchPolygon({
address: "0xe3d7373f2dD3DA124f912AC3B5883F0caf7689D1",
infuraKey: "YOUR_INFURA_API_KEY",
onPayment: (payment) => {
console.log("πΈ MATIC received!");
console.log("Amount:", payment.amount, "MATIC");
console.log("View: ", payment.explorerUrl); // https://polygonscan.com/tx/...
},
onConfirmed: (payment) => {
console.log("β
MATIC confirmed!", payment.blockNumber);
},
});πΊ Avalanche (AVAX)
const { watchAvalanche } = require("payx3");
watchAvalanche({
address: "0xe3d7373f2dD3DA124f912AC3B5883F0caf7689D1",
infuraKey: "YOUR_INFURA_API_KEY",
onPayment: (payment) => {
console.log("πΈ AVAX received!");
console.log("Amount:", payment.amount, "AVAX");
console.log("View: ", payment.explorerUrl); // https://snowtrace.io/tx/...
},
onConfirmed: (payment) => {
console.log("β
AVAX confirmed!", payment.blockNumber);
},
});π΅ Arbitrum (ARB)
const { watchArbitrum } = require("payx3");
watchArbitrum({
address: "0xe3d7373f2dD3DA124f912AC3B5883F0caf7689D1",
infuraKey: "YOUR_INFURA_API_KEY",
onPayment: (payment) => {
console.log("πΈ ETH on Arbitrum received!");
console.log("Amount:", payment.amount, "ETH");
console.log("View: ", payment.explorerUrl); // https://arbiscan.io/tx/...
},
onConfirmed: (payment) => {
console.log("β
Arbitrum tx confirmed!", payment.blockNumber);
},
});π΄ Optimism (OP)
const { watchOptimism } = require("payx3");
watchOptimism({
address: "0xe3d7373f2dD3DA124f912AC3B5883F0caf7689D1",
infuraKey: "YOUR_INFURA_API_KEY",
onPayment: (payment) => {
console.log("πΈ ETH on Optimism received!");
console.log("Amount:", payment.amount, "ETH");
console.log("View: ", payment.explorerUrl); // https://optimistic.etherscan.io/tx/...
},
onConfirmed: (payment) => {
console.log("β
Optimism tx confirmed!", payment.blockNumber);
},
});β Solana (SOL)
const { watchSOL } = require("payx3");
watchSOL({
address: "AzjZrrKMDHTGpzM2e68T5S8nEM5TahcTMczJ6T9Vcev",
infuraKey: "YOUR_INFURA_API_KEY",
onPayment: (payment) => {
console.log("πΈ SOL received!");
console.log("Amount:", payment.amount, "SOL");
console.log("View: ", payment.explorerUrl); // https://solscan.io/tx/...
// SPL token transfers also fire here
if (payment.contract) {
console.log("SPL Token mint:", payment.contract);
}
},
onConfirmed: (payment) => {
console.log("β
SOL confirmed!");
},
});π΅ USDT β Tether
Watch USDT on any chain by passing chain:
const { watchUSDT } = require("payx3");
// ββ On Ethereum ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
watchUSDT({
address: "0xe3d7373f2dD3DA124f912AC3B5883F0caf7689D1",
infuraKey: "YOUR_INFURA_API_KEY",
chain: "ETH", // ETH | BNB | MATIC | AVAX | ARB | OP
onPayment: (payment) => {
console.log("πΈ USDT received on Ethereum!");
console.log("Amount: ", payment.amount, "USDT");
console.log("Contract:", payment.contract); // 0xdAC17F...
console.log("TxHash: ", payment.txHash);
console.log("View: ", payment.explorerUrl);
},
onConfirmed: (payment) => {
console.log("β
USDT confirmed! Block:", payment.blockNumber);
},
});
// ββ On BNB Chain βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
watchUSDT({
address: "0xe3d7373f2dD3DA124f912AC3B5883F0caf7689D1",
infuraKey: "YOUR_INFURA_API_KEY",
chain: "BNB", // β just change this
onPayment: (payment) => {
console.log("πΈ USDT received on BNB Chain!");
console.log("Amount:", payment.amount, "USDT");
console.log("View: ", payment.explorerUrl); // https://bscscan.com/tx/...
},
});
// ββ On Polygon βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
watchUSDT({
address: "0xe3d7373f2dD3DA124f912AC3B5883F0caf7689D1",
infuraKey: "YOUR_INFURA_API_KEY",
chain: "MATIC",
onPayment: (payment) => {
console.log("πΈ USDT on Polygon:", payment.amount, "USDT");
},
});
// ββ On Arbitrum ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
watchUSDT({ address: "0x...", infuraKey: "...", chain: "ARB", onPayment: (p) => console.log(p) });
// ββ On Optimism ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
watchUSDT({ address: "0x...", infuraKey: "...", chain: "OP", onPayment: (p) => console.log(p) });
// ββ On Avalanche βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
watchUSDT({ address: "0x...", infuraKey: "...", chain: "AVAX", onPayment: (p) => console.log(p) });π΅ USDC β USD Coin
const { watchUSDC } = require("payx3");
// On Ethereum
watchUSDC({
address: "0xe3d7373f2dD3DA124f912AC3B5883F0caf7689D1",
infuraKey: "YOUR_INFURA_API_KEY",
chain: "ETH", // ETH | BNB | MATIC | AVAX | ARB | OP
onPayment: (payment) => {
console.log("πΈ USDC received!");
console.log("Amount: ", payment.amount, "USDC");
console.log("Chain: ", payment.chain); // "Ethereum"
console.log("Contract:", payment.contract); // 0xA0b869...
console.log("View: ", payment.explorerUrl);
},
});
// On Polygon β just change chain
watchUSDC({ address: "0x...", infuraKey: "...", chain: "MATIC", onPayment: (p) => console.log(p.amount, "USDC on Polygon") });
// On Arbitrum
watchUSDC({ address: "0x...", infuraKey: "...", chain: "ARB", onPayment: (p) => console.log(p.amount, "USDC on Arbitrum") });π DAI
const { watchDAI } = require("payx3");
watchDAI({
address: "0xe3d7373f2dD3DA124f912AC3B5883F0caf7689D1",
infuraKey: "YOUR_INFURA_API_KEY",
chain: "ETH", // ETH | BNB | MATIC | AVAX | ARB | OP
onPayment: (payment) => {
console.log("πΈ DAI received!");
console.log("Amount:", payment.amount, "DAI");
console.log("View: ", payment.explorerUrl);
},
onConfirmed: (payment) => {
console.log("β
DAI confirmed! Block:", payment.blockNumber);
},
});
// On Optimism
watchDAI({ address: "0x...", infuraKey: "...", chain: "OP", onPayment: (p) => console.log(p) });π WBTC β Wrapped Bitcoin
const { watchWBTC } = require("payx3");
watchWBTC({
address: "0xe3d7373f2dD3DA124f912AC3B5883F0caf7689D1",
infuraKey: "YOUR_INFURA_API_KEY",
chain: "ETH", // ETH | MATIC | AVAX | ARB | OP
onPayment: (payment) => {
console.log("πΈ WBTC received!");
console.log("Amount:", payment.amount, "WBTC"); // 8 decimals like real BTC
console.log("View: ", payment.explorerUrl);
},
});
// On Arbitrum
watchWBTC({ address: "0x...", infuraKey: "...", chain: "ARB", onPayment: (p) => console.log(p) });π΅ WETH β Wrapped Ether
const { watchWETH } = require("payx3");
watchWETH({
address: "0xe3d7373f2dD3DA124f912AC3B5883F0caf7689D1",
infuraKey: "YOUR_INFURA_API_KEY",
chain: "ETH", // ETH | MATIC | AVAX | ARB | OP
onPayment: (payment) => {
console.log("πΈ WETH received!");
console.log("Amount:", payment.amount, "WETH");
console.log("View: ", payment.explorerUrl);
},
});π LINK β Chainlink
const { watchLINK } = require("payx3");
watchLINK({
address: "0xe3d7373f2dD3DA124f912AC3B5883F0caf7689D1",
infuraKey: "YOUR_INFURA_API_KEY",
chain: "ETH", // ETH | BNB | MATIC | AVAX | ARB | OP
onPayment: (payment) => {
console.log("πΈ LINK received!");
console.log("Amount:", payment.amount, "LINK");
console.log("View: ", payment.explorerUrl);
},
});
// On Polygon
watchLINK({ address: "0x...", infuraKey: "...", chain: "MATIC", onPayment: (p) => console.log(p) });π¦ UNI β Uniswap
const { watchUNI } = require("payx3");
watchUNI({
address: "0xe3d7373f2dD3DA124f912AC3B5883F0caf7689D1",
infuraKey: "YOUR_INFURA_API_KEY",
chain: "ETH", // ETH | MATIC | ARB
onPayment: (payment) => {
console.log("πΈ UNI received!");
console.log("Amount:", payment.amount, "UNI");
console.log("View: ", payment.explorerUrl);
},
});π» AAVE
const { watchAAVE } = require("payx3");
watchAAVE({
address: "0xe3d7373f2dD3DA124f912AC3B5883F0caf7689D1",
infuraKey: "YOUR_INFURA_API_KEY",
chain: "ETH", // ETH | MATIC | AVAX
onPayment: (payment) => {
console.log("πΈ AAVE received!");
console.log("Amount:", payment.amount, "AAVE");
console.log("View: ", payment.explorerUrl);
},
});π SHIB β Shiba Inu
const { watchSHIB } = require("payx3");
watchSHIB({
address: "0xe3d7373f2dD3DA124f912AC3B5883F0caf7689D1",
infuraKey: "YOUR_INFURA_API_KEY",
onPayment: (payment) => {
console.log("πΈ SHIB received!");
console.log("Amount:", Number(payment.amount).toLocaleString(), "SHIB");
console.log("View: ", payment.explorerUrl);
},
});π Custom β Any ERC-20 Token
Watch any token by providing its contract address:
const { watchToken } = require("payx3");
// Example: PEPE token on Ethereum
watchToken({
address: "0xe3d7373f2dD3DA124f912AC3B5883F0caf7689D1",
infuraKey: "YOUR_INFURA_API_KEY",
chain: "ETH", // ETH | BNB | MATIC | AVAX | ARB | OP
contractAddress: "0x6982508145454Ce325dDbE47a25d4ec3d2311933", // PEPE contract
decimals: 18,
symbol: "PEPE",
name: "Pepe",
onPayment: (payment) => {
console.log("πΈ PEPE received!");
console.log("Amount: ", payment.amount, "PEPE");
console.log("Contract:", payment.contract);
console.log("View: ", payment.explorerUrl);
},
});
// Example: any unknown token
watchToken({
address: "0x...",
infuraKey: "YOUR_INFURA_API_KEY",
chain: "BNB",
contractAddress: "0xContractAddressHere",
decimals: 18,
symbol: "MYTOKEN",
name: "My Token",
onPayment: (p) => console.log("Received:", p.amount, p.symbol),
});π Watch Everything at Once
One call watches ALL coins + ALL tokens across ALL chains simultaneously:
const { generateMnemonic, deriveAll, watchAll } = require("payx3");
async function main() {
// Generate wallet
const mnemonic = generateMnemonic(128);
const wallet = await deriveAll(mnemonic);
const btcAddress = wallet.bitcoin[2].address; // Native SegWit (bc1...)
const evmAddress = wallet.evm.address; // Same for ETH/BNB/MATIC/AVAX/ARB/OP
const solAddress = wallet.solana.address;
console.log("BTC:", btcAddress);
console.log("EVM:", evmAddress);
console.log("SOL:", solAddress);
console.log("\nπ Watching everything...\n");
// Watches:
// β
BTC (native)
// β
ETH, BNB, MATIC, AVAX, ARB, OP (native)
// β
USDT on ETH, BNB, MATIC, AVAX, ARB, OP
// β
USDC on ETH, BNB, MATIC, AVAX, ARB, OP
// β
DAI, WBTC, WETH, LINK, UNI, AAVE, SHIB
// β
SOL + SPL tokens
await watchAll({
btcAddress,
evmAddress,
solAddress,
infuraKey: "YOUR_INFURA_API_KEY",
onPayment: (payment) => {
// Fires for EVERY incoming payment across all chains
console.log(`\nπΈ Payment received!`);
console.log(` Chain : ${payment.chain}`);
console.log(` Token : ${payment.symbol}`);
console.log(` Amount : ${payment.amount} ${payment.symbol}`);
console.log(` Status : ${payment.status}`);
console.log(` TxHash : ${payment.txHash}`);
console.log(` View : ${payment.explorerUrl}`);
if (payment.contract) {
console.log(` Contract: ${payment.contract}`);
}
},
onConfirmed: (payment) => {
// Fires when transaction is confirmed on-chain
console.log(`\nβ
${payment.symbol} CONFIRMED on ${payment.chain}!`);
console.log(` Amount : ${payment.amount} ${payment.symbol}`);
console.log(` Block : ${payment.blockNumber}`);
},
});
}
main();π¦ Payment Object Shape
Every onPayment and onConfirmed callback receives this object:
{
chain: "Ethereum", // Chain name
chainSymbol: "ETH", // Chain symbol
symbol: "USDT", // Token/coin symbol
name: "Tether USD", // Token/coin full name
amount: "100.000000", // Human-readable amount (string)
txHash: "0xa1b2c3...", // Transaction hash
status: "unconfirmed", // "unconfirmed" | "confirmed"
explorerUrl: "https://etherscan.io/tx/0xa1b2c3...", // Block explorer link
contract: "0xdAC17F...", // Contract address (null for native coins)
timestamp: 1715000000000, // Date.now() when detected
blockNumber: 19500000, // Block number (onConfirmed only)
}βοΈ Token Decimals Reference
| Token | ETH | BNB | MATIC | AVAX | ARB | OP | |---|---|---|---|---|---|---| | USDT | 6 | 18 β different! | 6 | 6 | 6 | 6 | | USDC | 6 | 18 β different! | 6 | 6 | 6 | 6 | | DAI | 18 | 18 | 18 | 18 | 18 | 18 | | WBTC | 8 | β | 8 | 8 | 8 | 8 | | WETH | 18 | β | 18 | 18 | 18 | 18 | | LINK | 18 | 18 | 18 | 18 | 18 | 18 |
payx3 handles all decimals automatically β you always get the correct human-readable amount.
π Express.js REST API
Run payx3 as a REST API server using the included example:
node examples/server.js
# Server starts on http://localhost:3000All Endpoints
| Method | Endpoint | Description |
|---|---|---|
| GET | / | List all endpoints |
| POST | /wallet/create | Generate wallet + all addresses |
| POST | /watch/btc | Watch BTC address |
| POST | /watch/eth | Watch ETH payments |
| POST | /watch/bnb | Watch BNB payments |
| POST | /watch/polygon | Watch MATIC payments |
| POST | /watch/avalanche | Watch AVAX payments |
| POST | /watch/arbitrum | Watch ETH on Arbitrum |
| POST | /watch/optimism | Watch ETH on Optimism |
| POST | /watch/sol | Watch SOL + SPL tokens |
| POST | /watch/usdt | Watch USDT (any chain) |
| POST | /watch/usdc | Watch USDC (any chain) |
| POST | /watch/dai | Watch DAI (any chain) |
| POST | /watch/wbtc | Watch WBTC |
| POST | /watch/link | Watch LINK |
| POST | /watch/shib | Watch SHIB |
| POST | /watch/token | Watch any custom ERC-20 |
| POST | /watch/all | Watch everything at once |
| GET | /payments | Get all received payments |
| GET | /payments/:txHash | Get a specific payment |
| GET | /watchers | List active watchers |
| DELETE | /watch/:id | Stop a watcher |
Generate a Wallet
curl -X POST http://localhost:3000/wallet/create \
-H "Content-Type: application/json" \
-d '{ "words": 12 }'{
"success": true,
"mnemonic": "witch collapse practice feed shame open despair creek road again ice least",
"addresses": {
"BTC": {
"legacy": "1A1zP1eP5QGefi2DMPTfTL5SLmv7Divfna",
"segwit": "3J98t1WpEZ73CNmQviecrnyiWrnqRhWNLy",
"nativeSegwit": "bc1qar0srrr7xfkvy5l643lydnw9re59gtzzwf5mdq"
},
"EVM": "0xe3d7373f2dD3DA124f912AC3B5883F0caf7689D1",
"SOL": "AzjZrrKMDHTGpzM2e68T5S8nEM5TahcTMczJ6T9Vcev"
},
"warning": "Save your mnemonic securely. Never share it with anyone."
}Watch BTC (no API key needed)
curl -X POST http://localhost:3000/watch/btc \
-H "Content-Type: application/json" \
-d '{ "address": "bc1qar0srrr7xfkvy5l643lydnw9re59gtzzwf5mdq" }'{ "success": true, "watcherId": "btc-1", "message": "Watching BTC address: bc1q..." }Watch ETH
curl -X POST http://localhost:3000/watch/eth \
-H "Content-Type: application/json" \
-d '{
"address": "0xe3d7373f2dD3DA124f912AC3B5883F0caf7689D1",
"infuraKey": "YOUR_INFURA_API_KEY"
}'{ "success": true, "watcherId": "eth-2" }Watch USDT on Any Chain
# On Ethereum
curl -X POST http://localhost:3000/watch/usdt \
-H "Content-Type: application/json" \
-d '{ "address": "0xe3d7...", "infuraKey": "YOUR_KEY", "chain": "ETH" }'
# On BNB Chain
curl -X POST http://localhost:3000/watch/usdt \
-H "Content-Type: application/json" \
-d '{ "address": "0xe3d7...", "infuraKey": "YOUR_KEY", "chain": "BNB" }'
# On Polygon
curl -X POST http://localhost:3000/watch/usdt \
-H "Content-Type: application/json" \
-d '{ "address": "0xe3d7...", "infuraKey": "YOUR_KEY", "chain": "MATIC" }'Watch a Custom Token
curl -X POST http://localhost:3000/watch/token \
-H "Content-Type: application/json" \
-d '{
"address": "0xe3d7373f2dD3DA124f912AC3B5883F0caf7689D1",
"infuraKey": "YOUR_INFURA_API_KEY",
"chain": "ETH",
"contractAddress": "0x6982508145454Ce325dDbE47a25d4ec3d2311933",
"decimals": 18,
"symbol": "PEPE",
"name": "Pepe"
}'Watch Everything at Once
curl -X POST http://localhost:3000/watch/all \
-H "Content-Type: application/json" \
-d '{
"btcAddress": "bc1qar0srrr7xfkvy5l643lydnw9re59gtzzwf5mdq",
"evmAddress": "0xe3d7373f2dD3DA124f912AC3B5883F0caf7689D1",
"solAddress": "AzjZrrKMDHTGpzM2e68T5S8nEM5TahcTMczJ6T9Vcev",
"infuraKey": "YOUR_INFURA_API_KEY"
}'{
"success": true,
"watcherId": "all-4",
"message": "Watching BTC + ETH + BNB + MATIC + AVAX + ARB + OP + SOL + USDT + USDC + DAI + WBTC + WETH + LINK + UNI + AAVE + SHIB"
}Get All Received Payments
curl http://localhost:3000/payments
curl "http://localhost:3000/payments?chain=Ethereum&symbol=USDT&status=confirmed&limit=10"{
"total": 2,
"payments": [
{
"chain": "Ethereum",
"chainSymbol": "ETH",
"symbol": "USDT",
"name": "Tether USD",
"amount": "250.000000",
"txHash": "0xa1b2c3d4e5f6...",
"status": "confirmed",
"explorerUrl": "https://etherscan.io/tx/0xa1b2c3...",
"contract": "0xdAC17F958D2ee523a2206206994597C13D831ec7",
"timestamp": 1715000000000
},
{
"chain": "Bitcoin",
"chainSymbol": "BTC",
"symbol": "BTC",
"amount": "0.00500000",
"txHash": "a1b2c3d4e5f6...",
"status": "unconfirmed",
"explorerUrl": "https://blockstream.info/tx/a1b2c3...",
"contract": null,
"timestamp": 1715000001000
}
]
}List Active Watchers
curl http://localhost:3000/watchers{
"total": 3,
"watchers": [
{ "id": "btc-1", "type": "BTC", "address": "bc1q...", "startedAt": "2026-05-10T10:00:00.000Z" },
{ "id": "eth-2", "type": "ETH", "address": "0xe3d7...", "startedAt": "2026-05-10T10:00:01.000Z" },
{ "id": "usdt-ETH-3", "type": "USDT-ETH", "address": "0xe3d7...", "startedAt": "2026-05-10T10:00:02.000Z" }
]
}Stop a Watcher
curl -X DELETE http://localhost:3000/watch/btc-1{ "success": true, "message": "Watcher btc-1 removed" }β οΈ Security
- NEVER share your mnemonic or private key
- This tool only reads blockchain data β no private keys needed for watching
- Run
payx3 generateon an offline machine, then copy addresses to config.json
π License
MIT Β© Susheel
πΌ Open to Work
Looking for freelance or full-time in Web3, blockchain, Node.js, full-stack. π§ [email protected] β let's build together!
