Payroll-Onchain

What Inspired Us

Managing payroll for a crypto-native team is surprisingly painful. You've got contributors spread across the world, working in DAOs, open-source projects, and Web3 startups; and yet most teams still rely on spreadsheets, bank wires, and centralized payroll platforms that weren't built for this world.

We wanted to fix that. The idea was simple: your wallet is already your identity and your treasury; why not make it your payroll system too?


What We Built

Payroll-Onchain is an admin-only onchain payroll tool built on Solana Devnet, wrapped in a Vaporwave-inspired UI that makes decentralized payroll feel fast, visual, and fun.

Here's what it does:

  • Wallet Authentication via Sign-In With Solana (SIWS) — no passwords, no accounts, just a signature.
  • Multi-Org Management — one wallet can run multiple organizations, each with its own isolated employee list and payroll history.
  • Employee Records — add contributors with their name, role, Solana wallet address, monthly USDC pay, and an optional email for receipts.
  • One-Time Bonuses — attach a bonus and a note to any employee before a run. It shows up on their receipt and clears automatically after the run.
  • Payroll Runs — a full review screen shows base pay, bonuses, per-person totals, and your live treasury balance before you approve anything. One wallet approval. Batched SPL USDC transfers to every employee.
  • Partial Failure Handling — if a transfer fails, the system isolates it and lets you retry only the failed ones. Successful transfers are never re-sent.
  • Payroll History — every run is logged with date, total paid, employee count, status, and a Solscan Devnet link for on-chain verification.
  • Email Receipts — employees with an email on file automatically receive a payment receipt after each successful run.

How We Built It

The stack was chosen for speed, reliability, and Solana-native compatibility:

  • Frontend: React with a fully custom Vaporwave design system — neon accents, frosted glass panels, and ambient gradient backgrounds, all driven by CSS custom properties.
  • Blockchain: Solana Devnet for all transactions. SPL token transfers for USDC. Wallet adapter supporting Phantom, Backpack, and Solflare.
  • Authentication: Sign-In With Solana (SIWS) — the admin signs a message to prove wallet ownership. No backend auth layer needed.
  • Transactions: Batched SPL USDC transfers, chunked automatically when the recipient count exceeds Solana's per-transaction limits.
  • Email: Triggered post-run for employees with an email address on file, including base pay, bonus details, and the Solscan transaction link.

Challenges We Faced

Partial failure isolation was the hardest engineering problem. When a batched transaction partially fails on Solana, identifying exactly which individual transfers succeeded and which didn't — and making only the failed ones retryable — required careful transaction result parsing and state management.

Transaction chunking added another layer of complexity. With no hard cap on employee count, we had to dynamically split transfers into sequential chunks when needed, while keeping the UI feedback clear and accurate across multiple transaction confirmations.

Design consistency at scale was a real challenge too. Enforcing a strict design token system across every component — so that no hard-coded color, font, or spacing value ever leaked outside the token definitions — took discipline, but the result is a UI that feels genuinely cohesive.


What We Learned

  • Solana's SIWS flow is a genuinely elegant authentication primitive — and more teams should be using it.
  • Batched SPL transfers require more careful error handling than they appear to on the surface.
  • A strong design system pays off fast. The token-first approach meant that every new screen felt native to the product from day one.
  • Building for crypto-native users means trusting your users — less hand-holding, more transparency, direct on-chain feedback.

What's Next

  • Mainnet deployment with real USDC
  • Scheduled payroll runs — set it and forget it
  • Multi-sig treasury support for DAOs
  • Admin notifications — low-balance alerts before a run
  • Employee portal — contributors can view their own payment history

Built With

Share this project:

Updates

Submission history