Inspiration
Freelancers and contractors constantly struggle with payment timing. You finish the work, send an invoice, and then... wait. Days, weeks, sometimes months of follow-up emails and awkward conversations. We wanted to flip this experience entirely.
What if the invoice itself could be "smart"? What if funds were already locked and guaranteed the moment work begins, and payment was triggered automatically the instant work is verified? We saw the MNEE stablecoin ecosystem as the perfect foundation—stable value, fast settlement, and programmable logic.
We built Alto to be the "set it and forget it" invoicing platform. No chasing payments. No disputes. Just automated, trustless payment execution.
What it does
Alto is a complete invoicing platform that bridges traditional freelance workflows with smart contract automation:
- Invoice NFTs: Every invoice you create is minted as an NFT on the blockchain. This creates permanent, verifiable proof of your work history and payment records.
- Smart Contract Escrow: Clients deposit funds into an audited
EscrowVaultcontract. Both parties can see the locked funds—guaranteed payment security. - Integration Triggers: Connect to your client's GitHub or Jira. When a PR is merged or a Jira issue is marked "Done", Alto's backend detects the event and automatically releases the escrowed funds.
- Three Payment Modes:
- Pay Now: Simple direct payment—client pays, you receive instantly.
- Escrow: Funds locked until trigger conditions are met (PR merged, issue resolved, or manual release).
- Allowance: Pre-authorized spending for recurring subscriptions that auto-charge on schedule.
- Recurring Subscriptions: Set up monthly or weekly subscriptions. Clients approve once, and payments execute automatically on schedule.
- Public Payment Links: Share a
/pay/[id]link with anyone. Guests can pay invoices without signing up. - Dashboard & Analytics: Full merchant console to track invoices, clients, and payment history.
How we built it
Alto is a full-stack Web3 application with three major components:
Smart Contracts (Solidity/Hardhat)
-
InvoiceNFT.sol— ERC-721 contract that mints invoices as NFTs with amount, payer, payee, due date, and payment mode encoded. -
EscrowVault.sol— Holds funds securely until release conditions are met or manual release is triggered. -
Settlement.sol— Orchestrates payment flows: direct payments, escrow releases, and allowance-based settlements. -
FeeManager.sol— Handles platform fees with configurable rates.
Backend (Node.js/Express + Prisma)
- RESTful API for invoices, clients, subscriptions, and integrations.
- GitHub OAuth integration to fetch repos and watch for PR merges.
- Jira OAuth integration to connect boards and monitor issue status changes.
- Trigger Monitoring Service that polls integration events and auto-calls Settlement contract when conditions are met.
- Subscription Scheduler that processes recurring payments on cron.
Frontend (Next.js 15/React 19)
- Built with Tailwind CSS and custom "Willow Voice" design system.
- Framer Motion animations for a premium, fluid user experience.
- Wagmi/Viem for wallet connections and contract interactions.
- Iconsax for consistent, beautiful iconography.
- Pages: Dashboard, Invoices, Subscriptions, Clients, Integrations, Settings, Public Payment, and AI-assisted invoice creation.
Challenges we ran into
The biggest challenge was synchronizing off-chain events with on-chain actions. When a client's GitHub PR merges, how do we reliably detect it, verify it's the right PR, and trigger the Settlement contract?
We solved this with a "trigger registry" pattern:
- When an invoice is created with a trigger (e.g.,
{type: 'GITHUB_PR_MERGED', prNumber: 42}), we store this in our database. - A background service polls the GitHub API for PR status.
- When a match is detected, the service calls
Settlement.releaseEscrow()with the invoice ID.
Another challenge was the OAuth dance for GitHub and Jira—handling the redirect flow, token storage, and refresh logic across different OAuth providers.
Accomplishments that we're proud of
- End-to-End Automation: The complete flow works—create invoice with trigger → client funds escrow → PR merges → funds release automatically.
- Beautiful UX: We invested heavily in design. The dashboard feels like a modern SaaS product, not a crypto app.
- NFT History: Every paid invoice becomes a transferable NFT—portable proof of your professional reputation.
- Multi-Mode Flexibility: Supporting Pay Now, Escrow, and Allowance modes in a single platform gives users complete flexibility.
What we learned
We learned that blockchain's real power isn't in "replacing" Web2 systems—it's in augmenting them. By using GitHub and Jira as the source of truth for "work completion" and the blockchain as the source of truth for "payment execution", we created a hybrid system that's more powerful than either alone.
We also learned that good design matters in Web3. Users shouldn't need to understand smart contracts to use Alto. They click "Create Invoice", their client pays, and money appears in their wallet when work is done.
Built with
Next.js, TypeScript, Tailwind CSS, Framer Motion, Prisma, PostgreSQL, Express.js, Hardhat, Solidity, Wagmi, Viem, MNEE SDK, Iconsax, Alchemy, Vercel.
Third-Party APIs/SDKs Used
- MNEE SDK: Core stablecoin integration for the MNEE ecosystem.
- Alchemy: Primary RPC provider for reliable blockchain interactions and transaction monitoring.
- GitHub OAuth/API: For repository access, PR monitoring, and webhook integration.
- Jira OAuth/API: For project board access and issue status monitoring.
- Wagmi/Viem: Wallet connection and contract interaction library.
- ConnectKit: Beautiful wallet connection modal.
- Prisma: Type-safe database ORM.
Additional Info
- Try it out: https://alto-frontend-iota.vercel.app/
- Public Repo: https://github.com/Bernard-Namangala/alto-submission
Built With
- nextjs
- supabase
Log in or sign up for Devpost to join the conversation.