Build Payment Apps
in Minutes, Not Weeks

ArcPay reduces 50+ lines of blockchain code to just 3 lines

WITHOUT ArcPay
50+
lines of code
⏱️ 2+ hours
WITH ArcPay
3
lines of code
⏱️ 2 minutes
Try Playground

See the Difference

Real code comparisons for common payment tasks

💳

Send Payment

15+ → 2 lines saved
Without ArcPay
import { ethers } from 'ethers';
import { createPublicClient, http } from 'viem';

const provider = new ethers.JsonRpcProvider(RPC_URL);
const wallet = new ethers.Wallet(PRIVATE_KEY, provider);
const usdcContract = new ethers.Contract(
  USDC_ADDRESS,
  ['function transfer(address to, uint256 amount)'],
  wallet
);

const decimals = await usdcContract.decimals();
const amount = ethers.parseUnits('100', decimals);
const tx = await usdcContract.transfer(recipient, amount);
await tx.wait();
console.log('TX:', tx.hash);
📝 15+ lines⏱️ 30 min
With ArcPay
const arc = await ArcPay.init({ network: 'arc-testnet' });
await arc.sendUSDC('0x...', '100');
📝 2 lines⏱️ 30 sec
Try in Playground →
🔒

Create Escrow

50+ → 1 lines saved
Without ArcPay
// Deploy escrow contract
const EscrowFactory = await ethers.getContractFactory('Escrow');
const escrow = await EscrowFactory.deploy(
  seller, amount, deadline, arbiter
);
await escrow.deployed();

// Handle deposits
await usdc.approve(escrow.address, amount);
await escrow.deposit();

// Set up event listeners
escrow.on('Released', () => { /* ... */ });
escrow.on('Refunded', () => { /* ... */ });
escrow.on('Disputed', () => { /* ... */ });

// Release/refund logic
// ... 30+ more lines
📝 50+ lines⏱️ 2 hours
With ArcPay
await escrow('0x...', '500', 7); // 7 day release
📝 1 lines⏱️ 10 sec
Try in Playground →
💸

Salary Streaming

100+ → 1 lines saved
Without ArcPay
// Complex streaming contract deployment
// Per-second calculation logic
// Withdraw mechanism implementation
// Balance tracking system
// Cancel & refund logic
// Event handling
// ... 100+ lines of code
📝 100+ lines⏱️ 1 day
With ArcPay
await stream('0x...', '5000', 30); // 30 days
📝 1 lines⏱️ 10 sec
Try in Playground →
📇

Contact Payments

Hours → Seconds lines saved
Without ArcPay
// Set up database for address book
// Create CRUD operations
// Implement address validation
// Build search functionality
// Handle name resolution
// ... hours of development
📝 N/A⏱️ Hours
With ArcPay
await addContact('ahmed', '0x...');
await pay('ahmed', '50'); // Use names, not 0x!
📝 2 lines⏱️ Seconds
Try in Playground →
🎤

Voice Payments

200+ → 0 lines saved
Without ArcPay
// Set up speech recognition
// Implement intent parsing
// Integrate NLP for commands
// Build command routing
// Handle confirmations
// ... 200+ lines of code
📝 200+ lines⏱️ Days
With ArcPay
// Just speak:
"Send 50 USDC to Ahmed"
📝 0 lines⏱️ Instant
Try in Playground →

Everything You Need

9 powerful modules, all with one-liner APIs

💳

Payments

pay("0x...", "100")
15+ → 2 linesTry it →
🔒

Escrow

escrow("0x...", "500", 7)
50+ → 1 linesTry it →
💸

Streaming

stream("0x...", "5000", 30)
100+ → 1 linesTry it →
📇

Contacts

pay("ahmed", "50")
N/A → 2 linesTry it →
📅

Subscriptions

payAllDueBills()
N/A → 1 linesTry it →
🎤

Voice

"Send 50 to ahmed"
200+ → 0 linesTry it →
🤖

AI Agents

agent.executeTask()
Complex → Simple linesTry it →
🕵️

Privacy

stealthPay("0x...", "100")
300+ → 1 linesTry it →

Channels

microPay("0x...", "0.01")
150+ → 1 linesTry it →

Quick Reference

All the one-liners you need

ActionCodeCopy
Send paymentawait pay('0x...', '100')
Check balanceawait balance()
Create escrowawait escrow('0x...', '500', 7)
Start streamawait stream('0x...', '1000', 30)
Add contactawait addContact('ahmed', '0x...')
Pay contactawait pay('ahmed', '50')
Get due billsawait getDueBills()
Pay all billsawait payAllDueBills()
Voice command"Send 50 to ahmed"

Ready to Build?

Start building payment applications in minutes

Try the Playground