Back to Directory/Developer Tools

io.github.csacanam/voulti

Accept crypto payments from AI agents: invoices + hosted checkout on 5 chains. No API key.

Developer ToolsSolidityv0.1.0
Voulti

Crypto payment gateway for merchants. Accept USDC, USDT and stablecoins on 5 networks.

Architecture

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

Networks

NetworkChain IDTokens
Celo42220USDC, USDT, COPm
Arbitrum42161USDC, USD₮0
Polygon137USDC, USDT0
Base8453USDC
BSC56USDC, USDT

For AI agents

Voulti is agent-usable end to end — the integration API needs no API key:

  • MCP server: claude mcp add voulti -- npx -y voulti-mcp — tools create_invoice, get_invoice, get_payment_link. See mcp/README.md.
  • Agent skill: npx skills add csacanam/voulti — or read it at voulti.com/skill.md.
  • Plain HTTP: POST https://api.voulti.com/invoices with { commerce_id, amount_fiat, reference? } → hosted checkout link. LLM index: voulti.com/llms.txt.

Features

  • Self-service registration — merchant connects wallet, names business, done
  • Two payment methods — Connect Wallet or Pay by Address (QR + deposit)
  • Multi-chain balances — aggregated by token, network auto-selected
  • Send funds — withdraw to any wallet from dashboard
  • HD wallet sweep — automatic deposit detection and settlement
  • Partial/over payment handling — auto-refund on overpay, wait on partial
  • i18n — Spanish and English

Smart Contracts

Modular proxy architecture deployed on 5 networks:

  • DerampProxy — entry point, routes calls to modules
  • DerampStorage — centralized data store
  • AccessManager — roles, token/commerce whitelisting
  • InvoiceManager — invoice lifecycle
  • PaymentProcessor — payment execution, fee calculation
  • TreasuryManager — service fee collection
  • WithdrawalManager — commerce fund withdrawals

See contracts/core/deployed-addresses/PRODUCTION.md for all addresses.

Operator Wallet

0x21581Cb82D9a66126fBe7639f4AF55DdfEA48E26 — deploys contracts, whitelists commerces, sends gas for HD wallet sweeps.

Local Development

# 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

API Endpoints

MethodPathAuthDescription
POST/commercesPrivyRegister commerce
GET/commerces/:idPublicCommerce info
GET/commerces/:id/balancesPrivyMulti-chain balances
POST/invoicesPrivyCreate invoice
GET/invoices/:idPublicInvoice details + tokens
POST/blockchain/createPublicCreate on-chain invoice
GET/blockchain/status/:idPublicOn-chain invoice status
POST/deposit/generatePublicGenerate HD deposit address
GET/deposit/status/:idPublicDeposit monitoring status
GET/statsPublicRevenue stats (building in public)
GET/prices/ratesPublicFiat + token rates from DB
POST/prices/update-fiat-ratesCronUpdate fiat rates (OpenExchangeRates)
POST/prices/update-token-pricesCronUpdate token prices (CoinGecko)

Cron Jobs

Configure these as scheduled jobs in DigitalOcean (or any scheduler):

JobURLScheduleDescription
Fiat ratesPOST /prices/update-fiat-ratesEvery hourUpdates USD→COP/EUR/BRL/MXN/ARS rates from OpenExchangeRates
Token pricesPOST /prices/update-token-pricesEvery hourUpdates USDC/USDT/COPm rates from CoinGecko
Expire invoicesPOST /orders/expire-ordersEvery minuteMarks expired invoices as Expired
Process emailsPOST /notifications/process-emailsEvery minuteSends payment confirmation emails via Resend
Process webhooksPOST /notifications/process-url-confirmationsEvery minuteCalls commerce confirmation URLs

Base URL: https://api.voulti.com

Requires env vars: OPENEXCHANGERATE_APPID, COINGECKO_APIKEY, RESEND_APIKEY.

Environment Variables

See .env.example for all required variables.

Installation

Source-derived launch command. Check the maintainer’s required arguments and credentials before running:

bash
npx -y voulti-mcp

Set up in your AI client

Merge 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.

json
{
  "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 reference

Package

voulti-mcpnpm

Compatible MCP Clients

io.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.

  • Claude Desktop~/Library/Application Support/Claude/claude_desktop_config.jsonRestart Claude Desktop completely for changes to take effect.
  • Cursor~/.cursor/mcp.jsonRestart Cursor for changes to take effect.
  • VS Code.vscode/mcp.jsonReload VS Code window for changes to take effect.
  • Windsurf~/.codeium/windsurf/mcp_config.jsonRestart Windsurf for changes to take effect.
  • Claude Code.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.

Learn More