{
  "markdown": "<img src=\"assets/brand/voulti-wordmark.png\" alt=\"Voulti\" width=\"212\">\n\nCrypto payment gateway for merchants. Accept USDC, USDT and stablecoins on 5 networks.\n\n## Architecture\n\n```\napps/\n  checkout/     React + Vite — customer payment page\n  merchant/     Next.js — merchant dashboard\n  api/          Fastify — backend API\n\ncontracts/\n  core/         DerampProxy + modules (Hardhat, Solidity ^0.8.28)\n\npackages/\n  shared/       Shared utilities\n\nassets/\n  brand/        The logo, and the icons every app is derived from\n```\n\n## Networks\n\n| Network | Chain ID | Tokens |\n|---------|----------|--------|\n| Celo | 42220 | USDC, USDT, COPm |\n| Arbitrum | 42161 | USDC, USD₮0 |\n| Polygon | 137 | USDC, USDT0 |\n| Base | 8453 | USDC |\n| BSC | 56 | USDC, USDT |\n\n## For AI agents\n\nVoulti is agent-usable end to end — the integration API needs no API key:\n\n- **MCP server**: `claude mcp add voulti -- npx -y voulti-mcp` — tools `create_invoice`, `get_invoice`, `get_payment_link`. See [`mcp/README.md`](mcp/README.md).\n- **Agent skill**: `npx skills add csacanam/voulti` — or read it at [voulti.com/skill.md](https://voulti.com/skill.md).\n- **Plain HTTP**: `POST https://api.voulti.com/invoices` with `{ commerce_id, amount_fiat, reference? }` → hosted checkout link. LLM index: [voulti.com/llms.txt](https://voulti.com/llms.txt).\n\n## Features\n\n- **Self-service registration** — merchant connects wallet, names business, done\n- **Two payment methods** — Connect Wallet or Pay by Address (QR + deposit)\n- **Multi-chain balances** — aggregated by token, network auto-selected\n- **Send funds** — withdraw to any wallet from dashboard\n- **HD wallet sweep** — automatic deposit detection and settlement\n- **Partial/over payment handling** — auto-refund on overpay, wait on partial\n- **i18n** — Spanish and English\n\n## Smart Contracts\n\nModular proxy architecture deployed on 5 networks:\n\n- **DerampProxy** — entry point, routes calls to modules\n- **DerampStorage** — centralized data store\n- **AccessManager** — roles, token/commerce whitelisting\n- **InvoiceManager** — invoice lifecycle\n- **PaymentProcessor** — payment execution, fee calculation\n- **TreasuryManager** — service fee collection\n- **WithdrawalManager** — commerce fund withdrawals\n\nSee [contracts/core/deployed-addresses/PRODUCTION.md](contracts/core/deployed-addresses/PRODUCTION.md) for all addresses.\n\n## Operator Wallet\n\n`0x21581Cb82D9a66126fBe7639f4AF55DdfEA48E26` — deploys contracts, whitelists commerces, sends gas for HD wallet sweeps.\n\n## Local Development\n\n```bash\n# Prerequisites: Node 18+, pnpm\npnpm install\ncd contracts/core && npm install\n\n# Start Hardhat node (terminal 1)\nnpx hardhat node\n\n# Deploy + setup (terminal 2)\ncd contracts/core\nnpx hardhat run scripts/setup-local.ts --network localhost\n\n# Start API (terminal 3)\npnpm dev:api\n\n# Start checkout (terminal 4)\npnpm dev:checkout\n\n# Start merchant dashboard (terminal 5)\npnpm dev:merchant\n```\n\n## API Endpoints\n\n| Method | Path | Auth | Description |\n|--------|------|------|-------------|\n| POST | /commerces | Privy | Register commerce |\n| GET | /commerces/:id | Public | Commerce info |\n| GET | /commerces/:id/balances | Privy | Multi-chain balances |\n| POST | /invoices | Privy | Create invoice |\n| GET | /invoices/:id | Public | Invoice details + tokens |\n| POST | /blockchain/create | Public | Create on-chain invoice |\n| GET | /blockchain/status/:id | Public | On-chain invoice status |\n| POST | /deposit/generate | Public | Generate HD deposit address |\n| GET | /deposit/status/:id | Public | Deposit monitoring status |\n| GET | /stats | Public | Revenue stats (building in public) |\n| GET | /prices/rates | Public | Fiat + token rates from DB |\n| POST | /prices/update-fiat-rates | Cron | Update fiat rates (OpenExchangeRates) |\n| POST | /prices/update-token-prices | Cron | Update token prices (CoinGecko) |\n\n## Cron Jobs\n\nConfigure these as scheduled jobs in DigitalOcean (or any scheduler):\n\n| Job | URL | Schedule | Description |\n|-----|-----|----------|-------------|\n| Fiat rates | `POST /prices/update-fiat-rates` | Every hour | Updates USD→COP/EUR/BRL/MXN/ARS rates from OpenExchangeRates |\n| Token prices | `POST /prices/update-token-prices` | Every hour | Updates USDC/USDT/COPm rates from CoinGecko |\n| Expire invoices | `POST /orders/expire-orders` | Every minute | Marks expired invoices as Expired |\n| Process emails | `POST /notifications/process-emails` | Every minute | Sends payment confirmation emails via Resend |\n| Process webhooks | `POST /notifications/process-url-confirmations` | Every minute | Calls commerce confirmation URLs |\n\nBase URL: `https://api.voulti.com`\n\nRequires env vars: `OPENEXCHANGERATE_APPID`, `COINGECKO_APIKEY`, `RESEND_APIKEY`.\n\n## Environment Variables\n\nSee [.env.example](.env.example) for all required variables.\n",
  "bytes": 4793,
  "sha": "ee8f8f5fcb1a145a0ae9ecf19cd0a6cdcf07b7b7c5e7c48426dfe333cfb5556f",
  "repo_slug": "csacanam/voulti",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_csacanam_voulti_cba723ef/readme"
}