Send money from Nigeria to Bolivia in minutes.
Two parallel-FX economies meeting at a USDC midpoint on Stellar.
Corridor is a cross-border remittance app for the Africa ↔ Latin America corridor. It uses:
- Pollar SDK for embedded wallets and Stellar payments
- Soroban for on-chain escrow with agent collateral and reputation
- Paystack for Nigerian bank transfers
- Stellar USDC as the settlement layer
A Nigerian freelancer gets paid by a Bolivian client. The money moves in minutes, not days. Local agents on both sides handle the cash in/out, collateralized on-chain with reputation that compounds.
Nigeria and Bolivia share a parallel story: currency devaluation, parallel FX markets, and populations that treat dollars as a savings product rather than a payment instrument.
- Nigeria: Naira devaluation, 3-5 day bank transfers, 5-10% fees
- Bolivia: Floated currency June 2026, dollar scarcity, QR/mobile-first
- Corridor: No Western Union-style rail dominates it
Payment initiation (ordered):
SendCorridor → Corridor API (create + accept) → Paystack (NGN payment)
Confirmation loop (layered):
Paystack rail → webhook (HMAC) → workflow state (fiat paid)
→ settlement adapter (stellar.ts) → Soroban escrow
Agent settlement (explicit payout):
Agent dashboard → Corridor API (complete)
→ payout instruction (BOB-QR) → off-ramp network
Nigeria (NGN) Stellar Bolivia (BOB)
┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐
│ Paystack │─>│ Pollar │─>│ USDC │─>│ Pollar │─>│ Stereum │
│ Bank TX │ │ Wallet │ │ on-chain │ │ Wallet │ │ QR/Bank │
└──────────┘ └──────────┘ └──────────┘ └──────────┘ └──────────┘
│ │
└────── Soroban Escrow ───────┘
- Node.js 20+
- Rust 1.74+ with
wasm32-unknown-unknowntarget - Pollar API key (from dashboard.pollar.xyz)
- Paystack sandbox keys
cd contracts/corridor_escrow
cargo test # 23 tests pass
cargo build --target wasm32-unknown-unknown --releasecd web
cp .env.example .env.local
# Add your API keys to .env.local
pnpm install
pnpm run dev # http://localhost:3000corridor-app/
├── contracts/
│ └── corridor_escrow/ # Soroban escrow contract
│ ├── Cargo.toml
│ └── src/lib.rs # 23 tests, 16KB WASM
├── web/ # Next.js web app
│ ├── src/
│ │ ├── app/ # Pages + API routes
│ │ ├── components/ # UI components
│ │ ├── lib/ # Utilities
│ │ └── types/ # TypeScript types
│ └── package.json
├── docs/
│ ├── problem.md # Judges Cat 1 (20 pts)
│ ├── corridor-design.md # Judges Cat 2 (25 pts)
│ ├── architecture.md # System design
│ ├── feasibility.md # Judges Cat 7 (5 pts)
│ ├── ux.md # Judges Cat 5 (10 pts)
│ └── demo-script.md # Demo walkthrough
└── .github/workflows/
├── contract.yml # Contract CI/CD
└── web.yml # Web CI/CD
The corridor_escrow Soroban contract manages:
- Agent lifecycle: Register, collateral, reputation, capacity
- Corridor flow: Create, accept, confirm, settle, timeout
- Matching:
find_best_agentby reputation, rate, capacity - Safety: Collateral lock, timeout refund, reputation slashing
Run tests: cargo test (23/23 passing)
| Layer | Technology |
|---|---|
| Smart Contract | Soroban (Rust) + Stellar testnet |
| Frontend | Next.js 16, React 19, Tailwind CSS 4 |
| Wallet | Pollar SDK (non-custodial) |
| Payments | Paystack (sandbox) |
| Settlement | Stellar USDC |
| Off-ramp | Pollar Stereum (BOB) |
| CI/CD | GitHub Actions |
- Problem Statement: why this corridor matters
- Architecture: system design and data flow
- Corridor Design: agent network and fallback flows
- Feasibility: beyond the hackathon
- UX Design: design decisions and accessibility
MIT