Multi-Chain Crypto Payroll for Global Teams on Initia
InitPay is a comprehensive payroll platform that enables companies to pay employees across EVM, Move, and Wasm chains in a single transaction. Built on Initia's interwoven architecture, it eliminates bridge risks while providing advanced DeFi features for modern workforce management.
- Batch Payments - Pay 100+ employees in one transaction with 1% fee
- Payment Streaming - Real-time salary streaming, employees earn per second
- Lucky Pool Lottery - Team bonus pools with provably fair winner selection
- Salary Staking - Lock salary to earn 5-30% APY based on lock period
- Salary NFTs - Tokenize future earnings for instant liquidity
- P2P Salary Swaps - Trade shifts and salary with colleagues
- Intent-Based Routing - Natural language payment processing
Unlike traditional payroll systems (single-chain, slow, expensive), InitPay uses Initia's interwoven architecture for true multi-chain payments without bridge risks.
Traditional Payroll: Company β Bridge β Wait β Employee (risky, slow)
With InitPay: Company β Initia β Instant β Employee (safe, fast)
No bridge hacks. No waiting. No complexity.
The x402 protocol and Initia's interwoven architecture enable seamless cross-chain operations. Payroll is the perfect use case to showcase this capability.
| Benefit | Impact |
|---|---|
| Showcases Interwoven Power | First real-world payroll use case demonstrating cross-VM payments |
| Drives Enterprise Adoption | Companies need payroll - massive TAM with viral growth potential |
| Network Effects | More employees = more chains = more liquidity |
| DeFi Integration | Combines payments with staking, NFTs, streaming - full ecosystem showcase |
- $500B global payroll market
- 10M+ crypto-native companies by 2027
- 3-5% wire transfer fees (we charge 1%)
- 3-5 days settlement time (we're instant)
- All of these need multi-chain support that can't be bridged safely
| Contract | Address | Verified |
|---|---|---|
| PayrollDistributor | 0xD8B9D7C3b20e2981004dDDb702e41c9A552C5f88 |
β View Code |
| IntentSwap | 0xD98359F3E80d11703267ff75f03bA4E1B4f7B58d |
β View Code |
| PayrollStreamingV2 | 0x0787e6ebF537664b5a0E8a627f12c4861d54ED44 |
β View Code |
| LuckyPool | 0x05Ef28B338B1521837Ccb8B4fDb74b2075D7D7F9 |
β View Code |
| SalaryStaking | 0x5F06943c9E0284a8D6C06963f8201BF8f3700Baf |
β View Code |
| SalaryNFT | 0xEa6AfEd01C696cF24Db388666902af5dE42Afd57 |
β View Code |
| SalarySwap | 0x4671D31d6acbef0C76363a437b944375b484A523 |
β View Code |
Network: Initia MiniEVM Testnet
Chain ID: 2124225178762456
RPC URL: https://jsonrpc-evm-1.anvil.asia-southeast.initia.xyz
Explorer: https://scan.testnet.initia.xyz/evm-1
Currency: INIT
# 1. Clone the repository
git clone https://github.com/Venkat5599/Initpay.git
cd Initpay
# 2. Install dependencies
cd contracts
forge install
# 3. Configure environment
cp .env.example .env
# Edit .env with your private key
# 4. Deploy to Initia Testnet
forge script script/Deploy.s.sol:Deploy \
--rpc-url https://jsonrpc-evm-1.anvil.asia-southeast.initia.xyz \
--broadcast --legacy
# 5. Deploy feature contracts
forge script script/DeployStreaming.s.sol:DeployStreaming --rpc-url https://jsonrpc-evm-1.anvil.asia-southeast.initia.xyz --broadcast --legacy
forge script script/DeployLuckyPool.s.sol:DeployLuckyPool --rpc-url https://jsonrpc-evm-1.anvil.asia-southeast.initia.xyz --broadcast --legacy
forge script script/DeployStaking.s.sol:DeployStaking --rpc-url https://jsonrpc-evm-1.anvil.asia-southeast.initia.xyz --broadcast --legacy
forge script script/DeployNFT.s.sol:DeployNFT --rpc-url https://jsonrpc-evm-1.anvil.asia-southeast.initia.xyz --broadcast --legacy
forge script script/DeploySwap.s.sol:DeploySwap --rpc-url https://jsonrpc-evm-1.anvil.asia-southeast.initia.xyz --broadcast --legacyVisit the live demo at https://initpay-frontend.vercel.app
# 1. Connect MetaMask to Initia Testnet
# - Network: Initia MiniEVM Testnet
# - RPC: https://jsonrpc-evm-1.anvil.asia-southeast.initia.xyz
# - Chain ID: 2124225178762456
# 2. Get test INIT from faucet
# 3. Try any feature:
# - Batch Payments: Pay multiple employees
# - Payment Streaming: Create real-time salary streams
# - Lucky Pool: Create lottery pools
# - Salary Staking: Lock salary for APY
# - Salary NFTs: Tokenize future earnings
# - P2P Swaps: Trade shifts with colleagues// Solidity - Pay multiple employees
interface IPayrollDistributor {
function distributePayroll(
address[] calldata recipients,
uint256[] calldata amounts
) external payable;
}
IPayrollDistributor payroll = IPayrollDistributor(0xD8B9D7C3b20e2981004dDDb702e41c9A552C5f88);
address[] memory employees = new address[](3);
employees[0] = 0xAlice...;
employees[1] = 0xBob...;
employees[2] = 0xCharlie...;
uint256[] memory salaries = new uint256[](3);
salaries[0] = 1000 ether; // 1000 INIT
salaries[1] = 1500 ether;
salaries[2] = 2000 ether;
payroll.distributePayroll{value: 4500 ether}(employees, salaries);// Create a stream that pays 1000 INIT over 30 days
interface IPayrollStreaming {
function createStream(
address employee,
uint256 duration,
string calldata targetChain
) external payable returns (bytes32 streamId);
}
IPayrollStreaming streaming = IPayrollStreaming(0x0787e6ebF537664b5a0E8a627f12c4861d54ED44);
bytes32 streamId = streaming.createStream{value: 1000 ether}(
employeeAddress,
30 days,
"initia-evm"
);
// Employee can withdraw earned amount anytime
streaming.withdraw(streamId);// Stake 100 INIT for 90 days to earn 12% APY
interface ISalaryStaking {
function stake(uint256 lockPeriod) external payable;
}
ISalaryStaking staking = ISalaryStaking(0x5F06943c9E0284a8D6C06963f8201BF8f3700Baf);
staking.stake{value: 100 ether}(90 days);import { ethers } from 'ethers';
// Connect to contracts
const PAYROLL_ADDRESS = '0xD8B9D7C3b20e2981004dDDb702e41c9A552C5f88';
const PAYROLL_ABI = [
'function distributePayroll(address[] recipients, uint256[] amounts) payable',
'function depositFunds() payable',
];
const provider = new ethers.BrowserProvider(window.ethereum);
const signer = await provider.getSigner();
const payroll = new ethers.Contract(PAYROLL_ADDRESS, PAYROLL_ABI, signer);
// Batch payment
const recipients = ['0xAlice...', '0xBob...'];
const amounts = [
ethers.parseEther('1000'),
ethers.parseEther('1500')
];
const tx = await payroll.distributePayroll(recipients, amounts, {
value: ethers.parseEther('2500')
});
await tx.wait();
console.log('Payroll distributed:', tx.hash);| Function | Description | Access |
|---|---|---|
distributePayroll(recipients, amounts) |
Batch pay multiple employees | Anyone |
createStream(employee, duration, chain) |
Create payment stream | Anyone |
withdraw(streamId) |
Withdraw earned salary | Stream recipient |
stake(lockPeriod) |
Stake salary for APY | Anyone |
tokenizeSalary(amount, maturityDate) |
Create salary NFT | Anyone |
createOffer(requestAmount, description, duration) |
Create P2P swap offer | Anyone |
acceptOffer(offerId) |
Accept swap offer | Anyone |
All features are deployed and functional on Initia testnet.
| Feature | Description | Contract Address |
|---|---|---|
| Batch Payments | Pay 100+ employees in one transaction. 1% platform fee. | 0xD8B9...5f88 |
| Payment Streaming | Real-time salary streaming. Employees earn per second, withdraw anytime. | 0x0787...ED44 |
| Lucky Pool | Team lottery pools. Provably fair winner selection using blockchain randomness. | 0x05Ef...D7F9 |
| Salary Staking | Lock salary for 30-365 days. Earn 5-30% APY based on lock period. | 0x5F06...0Baf |
| Salary NFTs | Tokenize future salary into tradeable NFTs. Get instant liquidity. | 0xEa6A...Fd57 |
| P2P Swaps | Trade shifts and salary with colleagues. 1% swap fee. | 0x4671...A523 |
| Intent Routing | Natural language payment processing (coming soon). | 0xD983...B58d |
Batch Payment:
Input: Pay Alice 1000 INIT, Bob 1500 INIT, Charlie 2000 INIT
Result: All 3 payments executed in one transaction
Fee: 45 INIT (1% of 4500 INIT total)
Payment Streaming:
Input: Stream 1000 INIT to Alice over 30 days
Result: Alice earns 0.000385 INIT per second
Action: Alice can withdraw earned amount anytime
Lucky Pool:
Input: 10 employees Γ 10 INIT entry = 100 INIT pot
Result: One random winner selected on-chain
Prize: 98 INIT (2% platform fee)
Salary Staking:
Input: Stake 100 INIT for 90 days
Result: Earn 12% APY (12 INIT after 90 days)
Action: Withdraw anytime (10% penalty if early)
Salary NFT:
Input: Tokenize 1000 INIT payable in 30 days
Result: NFT created, tradeable on marketplace
Value: ~980 INIT today (2% time discount)
P2P Swap:
Input: Offer Friday shift (500 INIT) for Monday shift (500 INIT)
Result: Colleague accepts, instant swap
Fee: 5 INIT (1% of 500 INIT)
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β USER/COMPANY β
β (Web App, Mobile, or Direct Call) β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β InitPay Frontend (React) β
β β
β ββββββββββββββββ ββββββββββββββββ ββββββββββββββββ β
β β Batch Pay β β Streaming β β Lucky Pool β β
β β Dashboard β β Dashboard β β Dashboard β β
β ββββββββ¬ββββββββ ββββββββ¬ββββββββ ββββββββ¬ββββββββ β
β β β β β
β ββββββββββββββββββββ΄βββββββββββββββββββ β
β β β
β βΌ β
β βββββββββββββββββββ β
β β Wagmi + Ethers β β
β β (Web3 Layer) β β
β βββββββββββ¬ββββββββ β
βββββββββββββββββββββββββββββββΌβββββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Initia MiniEVM Testnet β
β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β PayrollDistributor β β
β β 0xD8B9D7C3b20e2981004dDDb702e41c9A552C5f88 β β
β β β β
β β β’ Batch payments (1% fee) β β
β β β’ Fund management β β
β β β’ Employee tracking β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β PayrollStreamingV2 β β
β β 0x0787e6ebF537664b5a0E8a627f12c4861d54ED44 β β
β β β β
β β β’ Real-time salary streaming β β
β β β’ Per-second earnings β β
β β β’ Withdraw anytime β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β LuckyPool β β
β β 0x05Ef28B338B1521837Ccb8B4fDb74b2075D7D7F9 β β
β β β β
β β β’ Lottery pools β β
β β β’ Provably fair draws β β
β β β’ Team bonuses β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β SalaryStaking β β
β β 0x5F06943c9E0284a8D6C06963f8201BF8f3700Baf β β
β β β β
β β β’ Lock salary for APY (5-30%) β β
β β β’ Time-locked periods β β
β β β’ Early withdrawal penalty β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β SalaryNFT β β
β β 0xEa6AfEd01C696cF24Db388666902af5dE42Afd57 β β
β β β β
β β β’ Tokenize future salary β β
β β β’ Tradeable NFTs β β
β β β’ Instant liquidity β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β SalarySwap β β
β β 0x4671D31d6acbef0C76363a437b944375b484A523 β β
β β β β
β β β’ P2P shift trading β β
β β β’ Salary swaps β β
β β β’ Flexible work β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Initpay/
βββ contracts/ # Solidity smart contracts
β βββ src/
β β βββ PayrollDistributor.sol
β β βββ PayrollStreamingV2.sol
β β βββ LuckyPool.sol
β β βββ SalaryStaking.sol
β β βββ SalaryNFT.sol
β β βββ SalarySwap.sol
β βββ script/ # Deployment scripts
βββ frontend/ # Next.js + React app
β βββ app/
β βββ components/
β βββ lib/
βββ backend/ # Backend services (optional)
βββ docs/ # Documentation
- Architecture - System architecture and data flows
- Contracts - Complete smart contract reference
- Integration Guide - How to integrate InitPay
- API Reference - ABIs, events, and errors
# 1. Clone and install
git clone https://github.com/Venkat5599/Initpay.git
cd Initpay/frontend
npm install --legacy-peer-deps
# 2. Start development server
npm run dev
# 3. Open http://localhost:3000
# 4. Connect MetaMask to Initia Testnet
# - Network: Initia MiniEVM
# - RPC: https://jsonrpc-evm-1.anvil.asia-southeast.initia.xyz
# - Chain ID: 2124225178762456
# 5. Get test INIT from faucet
# 6. Try all 7 features!# Run full test suite
cd contracts
forge test
# Test specific contract
forge test --match-contract PayrollDistributor
# Test with gas reporting
forge test --gas-report
# Deploy and test on testnet
forge script script/demo-full-flow.s.sol \
--rpc-url https://jsonrpc-evm-1.anvil.asia-southeast.initia.xyz \
--broadcast --legacy| Resource | URL |
|---|---|
| Live Demo | https://initpay-frontend.vercel.app |
| GitHub | https://github.com/Venkat5599/Initpay |
| Explorer | View Contracts |
| Initia Docs | docs.initia.xyz |
- Smart Contracts: Solidity 0.8.20
- Development: Foundry, Forge, Cast
- Frontend: Next.js 15, React 19, TypeScript
- Styling: Tailwind CSS, shadcn/ui
- Web3: Wagmi, Viem, Ethers.js
- Blockchain: Initia MiniEVM (Testnet)
- Deployment: Vercel
- Core contracts deployed & verified
- Batch payments working
- Payment streaming
- Lucky Pool lottery
- Salary staking
- Salary NFTs
- P2P swaps
- Frontend dashboard
- Documentation
- Live deployment on Vercel π
- Security audit
- Mainnet deployment
- Multi-token support (ERC20)
- Mobile app
- API for integrations