Accept crypto payments from AI agents: invoices + hosted checkout on 5 chains. No API key.
Crypto payment gateway for merchants. Accept USDC, USDT and stablecoins on 5 networks.
apps/
checkout/ React + Vite — customer payment page
merchant/ Next.js — merchant dashboard
api/ Fastify — backend API
contracts/
core/ DerampProxy + modules (Hardhat, Solidity ^0.8.28)
packages/
shared/ Shared utilities
assets/
brand/ The logo, and the icons every app is derived from
| Network | Chain ID | Tokens |
|---|---|---|
| Celo | 42220 | USDC, USDT, COPm |
| Arbitrum | 42161 | USDC, USD₮0 |
| Polygon | 137 | USDC, USDT0 |
| Base | 8453 | USDC |
| BSC | 56 | USDC, USDT |
Voulti is agent-usable end to end — the integration API needs no API key:
claude mcp add voulti -- npx -y voulti-mcp — tools create_invoice, get_invoice, get_payment_link. See mcp/README.md.npx skills add csacanam/voulti — or read it at voulti.com/skill.md.POST https://api.voulti.com/invoices with { commerce_id, amount_fiat, reference? } → hosted checkout link. LLM index: voulti.com/llms.txt.Modular proxy architecture deployed on 5 networks:
See contracts/core/deployed-addresses/PRODUCTION.md for all addresses.
0x21581Cb82D9a66126fBe7639f4AF55DdfEA48E26 — deploys contracts, whitelists commerces, sends gas for HD wallet sweeps.
# Prerequisites: Node 18+, pnpm
pnpm install
cd contracts/core && npm install
# Start Hardhat node (terminal 1)
npx hardhat node
# Deploy + setup (terminal 2)
cd contracts/core
npx hardhat run scripts/setup-local.ts --network localhost
# Start API (terminal 3)
pnpm dev:api
# Start checkout (terminal 4)
pnpm dev:checkout
# Start merchant dashboard (terminal 5)
pnpm dev:merchant
| Method | Path | Auth | Description |
|---|---|---|---|
| POST | /commerces | Privy | Register commerce |
| GET | /commerces/:id | Public | Commerce info |
| GET | /commerces/:id/balances | Privy | Multi-chain balances |
| POST | /invoices | Privy | Create invoice |
| GET | /invoices/:id | Public | Invoice details + tokens |
| POST | /blockchain/create | Public | Create on-chain invoice |
| GET | /blockchain/status/:id | Public | On-chain invoice status |
| POST | /deposit/generate | Public | Generate HD deposit address |
| GET | /deposit/status/:id | Public | Deposit monitoring status |
| GET | /stats | Public | Revenue stats (building in public) |
| GET | /prices/rates | Public | Fiat + token rates from DB |
| POST | /prices/update-fiat-rates | Cron | Update fiat rates (OpenExchangeRates) |
| POST | /prices/update-token-prices | Cron | Update token prices (CoinGecko) |
Configure these as scheduled jobs in DigitalOcean (or any scheduler):
| Job | URL | Schedule | Description |
|---|---|---|---|
| Fiat rates | POST /prices/update-fiat-rates | Every hour | Updates USD→COP/EUR/BRL/MXN/ARS rates from OpenExchangeRates |
| Token prices | POST /prices/update-token-prices | Every hour | Updates USDC/USDT/COPm rates from CoinGecko |
| Expire invoices | POST /orders/expire-orders | Every minute | Marks expired invoices as Expired |
| Process emails | POST /notifications/process-emails | Every minute | Sends payment confirmation emails via Resend |
| Process webhooks | POST /notifications/process-url-confirmations | Every minute | Calls commerce confirmation URLs |
Base URL: https://api.voulti.com
Requires env vars: OPENEXCHANGERATE_APPID, COINGECKO_APIKEY, RESEND_APIKEY.
See .env.example for all required variables.
Source-derived launch command. Check the maintainer’s required arguments and credentials before running:
npx -y voulti-mcpMerge this template into ~/Library/Application Support/Claude/claude_desktop_config.json. Keep existing servers. Add any arguments, credentials, and permissions required by the maintainer; this template has not been install-tested.
{
"mcpServers": {
"io-github-csacanam-voulti": {
"command": "npx",
"args": [
"-y",
"voulti-mcp"
]
}
}
}Restart Claude Desktop completely for changes to take effect. Confirm the server appears connected in the client’s tool list, then try a read-only example from its documentation.
Claude Desktop setup referencevoulti-mcpnpmio.github.csacanam/voulti works with any MCP-compatible client. Copy the config snippet from the Configuration section above and add it to the file shown for your client, then restart the application.
~/Library/Application Support/Claude/claude_desktop_config.jsonRestart Claude Desktop completely for changes to take effect.~/.cursor/mcp.jsonRestart Cursor for changes to take effect..vscode/mcp.jsonReload VS Code window for changes to take effect.~/.codeium/windsurf/mcp_config.jsonRestart Windsurf for changes to take effect..mcp.jsonSave at the project root, then start Claude Code in that project and review the MCP server approval prompt. Keep real credentials out of shared files.