"Earn Global, Spend Local - Trustless ramp for the borderless economy."
PeerlyPay is a decentralized P2P fiat-to-crypto marketplace that lets users trade USDC for local fiat (and vice versa) without relying on centralized exchanges.
We built PeerlyPay for remote workers, freelancers, and digital nomads in emerging markets who earn in crypto but have local expenses. Instead of using KYC-heavy CEXs or risky OTC deals, PeerlyPay provides a trustless ramp: funds are secured in Stellar Soroban smart contracts, while dispute resolution is handled securely on Base via the Slice Protocol.
- ✅ P2P Marketplace for USDC ↔ Fiat trades
- ✅ Non-custodial Escrow powered by Stellar Soroban (Rust)
- ✅ Cross-Chain Dispute Resolution (Stellar ↔ Base bridge)
- ✅ Real-time Order Management
- ✅ In-app Chat for payment coordination
- ✅ Mobile-first responsive design
- ✅ Multiple payment methods (Bank Transfer, MercadoPago)
- Next.js 16 (App Router)
- TypeScript
- Tailwind CSS v4 (with
oklchcolor spaces) - shadcn/ui components
- Zustand (State Management)
- Sonner (Toast Notifications)
-
Core Escrow & Payments: Stellar Soroban (Rust)
-
Handles fund locking, releasing, and state management.
-
Dispute Resolution: Base (Solidity)
-
Utilizes Slice Protocol V1.5 for decentralized arbitration.
-
Bridge: Custom Proxy Contract & Relayer
-
Locks funds on Stellar to trigger arbitration on Base, then relays the ruling back.
-
Install the Stellar CLI
Follow the official instructions: https://developers.stellar.org/docs/tools/cli/install-cli
-
Navigate to the contracts directory
cd contracts -
Create or import a Stellar account
stellar keys generate [name] --network testnet --fund
-
Build the contract
stellar contract build
-
Deploy the contract
stellar contract deploy \ --wasm target/wasm32v1-none/release/p2p.wasm \ --source-account [name] \ --network testnet \ --alias p2p
-
Complete the smart contract deployment steps above.
-
Get a Crossmint API key from https://www.crossmint.com/.
-
Copy
.env.exampleto.envand fill in the required variables (contract address, API keys, etc.). -
Install dependencies and start the dev server:
pnpm install pnpm run dev
- Connect Wallet – Link your Stellar wallet (and EVM wallet for dispute protection).
- Create/Match Order – Users agree on terms; USDC is locked in a unique Soroban Escrow Contract.
- Off-chain Transfer – Buyer sends fiat via Bank/MercadoPago.
- Completion – Seller confirms receipt, and the contract releases USDC to the buyer.
- Dispute Flow (If needed):
- User triggers dispute on Stellar.
- Proxy relays request to Base.
- Jurors on Slice Protocol rule on the case.
- Ruling is bridged back to Stellar to unlock funds to the winner.
peerlypay/
├── app/ # Next.js 16 App Router
│ ├── orders/ # Marketplace, create, mine, and detail flows
│ │ ├── create/
│ │ ├── mine/
│ │ └── [id]/
│ └── profile/
├── components/ # Reusable shared components + shadcn/ui primitives
├── contracts/ # Smart Contracts Workspace
│ ├── .stellar/ # Soroban Network Configs
│ └── contracts/
│ └── escrow/ # Main Soroban Rust Contract
├── lib/ # Utilities & Zustand Store
└── types/ # TypeScript Interfaces
- Prefer tokenized theme utilities over arbitrary values (for example
max-w-120instead ofmax-w-[480px]). - Use CSS variables in
app/globals.cssas the source of truth for custom colors, shadows, gradients, and spacing. - Keep route-local components under
app/**; put cross-route reusable components undercomponents/**. - Treat
components/ui/**as shadcn/Radix primitives and avoid unnecessary churn unless behavior must change.
- Node.js 18+
- Stellar CLI (for contract interaction)
- Rust (wasm32-unknown-unknown target)
- Clone the repo:
git clone [repo-url]
cd peerlypay
- Install dependencies:
npm install
# or
pnpm install
- Run the development server:
npm run dev
- Run Contracts (Optional):
Navigate to
contracts/to build and test the Soroban logic.
cd contracts
cargo test
From contracts/:
make p2p-wallet-setup NETWORK=testnet
make p2p-quickstart NETWORK=testnetp2p-wallet-setup creates aliases, funds XLM, and sets trustlines. Then fund those wallets with USDC (or your selected token) before trading.
For frontend taker flow details (buy vs sell) and how to continue as market maker from CLI, see contracts/README.md under P2P Contract -> Frontend taker flow and market-maker CLI continuation.
- Automated Relayer Service for Stellar <-> Base bridge
- Integration with Unibase for portable reputation
- AI Dispute Agent for pre-arbitration mediation
- Mobile App (React Native)
- Alexis
- Steven
- Stefano
- Barb
MIT
Built with ❤️ for Stellar 2026
