Real World Assets on Stellar. Invoice financing for emerging markets.
Astera lets SMEs tokenize unpaid invoices as Soroban-based RWA tokens. Community investors fund a USDC liquidity pool. Smart contracts handle escrow, repayment, and yield distribution. Every paid invoice builds an on-chain credit history.
contracts/
invoice/ — RWA invoice token contract (Soroban/Rust)
pool/ — Liquidity pool + yield distribution (Soroban/Rust)
frontend/ — Next.js 14 app (Freighter wallet, Stellar SDK)
create_invoice— SME mints an invoice token with amount, debtor, due datemark_funded— Called by pool when invoice is fundedmark_paid— SME or pool marks invoice as repaidmark_defaulted— Pool flags missed repayment
initialize— Sets admin, first accepted stablecoin (initial_token), and invoice contractadd_token/remove_token— Admin maintains a whitelist of accepted stablecoin SAC addressesdeposit— Investor deposits a whitelisted stablecoin into the pool (positions are per token)init_co_funding— Admin opens an invoice for co-funding in a specific stablecoincommit_to_invoice— Investors commit available balance in that invoice’s token until the principal target is metrepay_invoice— SME repays principal + simple interest (8% APY default) in the same token the invoice was funded withwithdraw— Investor withdraws available (undeployed) balance in the chosen token
We provide a one-command setup using Docker Compose that spins up the Stellar local network, the Next.js frontend, a contracts development environment, and mock services.
docker-compose up -dAfter running this command:
- Frontend is available at http://localhost:3000
- Stellar RPC is available at http://localhost:8000
- Mock Services are available at http://localhost:4000
If you are on Windows, we strongly recommend using WSL2. See our Windows/WSL2 Setup Guide for details.
- Rust + Cargo
- Stellar CLI
- Node.js 20+
- Freighter wallet browser extension
cd astera
cargo build --target wasm32-unknown-unknown --release# Fund a testnet account
stellar keys generate --global deployer --network testnet
stellar keys fund deployer --network testnet
# Deploy invoice contract
stellar contract deploy \
--wasm target/wasm32-unknown-unknown/release/invoice.wasm \
--source deployer \
--network testnet
# Deploy pool contract
stellar contract deploy \
--wasm target/wasm32-unknown-unknown/release/pool.wasm \
--source deployer \
--network testnet# Initialize invoice contract
stellar contract invoke \
--id <INVOICE_CONTRACT_ID> \
--source deployer \
--network testnet \
-- initialize \
--admin <YOUR_ADDRESS> \
--pool <POOL_CONTRACT_ID>
# Initialize pool contract
stellar contract invoke \
--id <POOL_CONTRACT_ID> \
--source deployer \
--network testnet \
-- initialize \
--admin <YOUR_ADDRESS> \
--usdc_token <USDC_TOKEN_ID> \
--invoice_contract <INVOICE_CONTRACT_ID>cd frontend
cp .env.example .env.local
# Fill in contract IDs in .env.local
npm install
npm run devOpen http://localhost:3000.
- Connect Freighter wallet
- Go to New Invoice — fill debtor, amount, due date
- Sign transaction — invoice minted on Stellar
- Monitor status on Dashboard — see funding, credit score
- When customer pays, call
repay_invoiceto settle
- Connect Freighter wallet
- Go to Invest — choose a whitelisted stablecoin and deposit into the pool
- Pool admin deploys liquidity to approved invoices
- When invoices are repaid, yield accumulates in the pool
- Withdraw available balance anytime
Use the Stellar testnet USDC asset or deploy a mock token:
stellar contract invoke \
--id <TOKEN_ID> \
--source deployer \
--network testnet \
-- mint \
--to <YOUR_ADDRESS> \
--amount 1000000000000Deploy your own instance of the Astera frontend with one click:
For detailed instructions on various hosting options, see the Frontend Deployment Guide.
For development and testing, see the Testnet Deployment Guide for step-by-step instructions.
For production deployment, see the comprehensive Mainnet Deployment Guide which includes:
- Pre-deployment security checklist
- Contract verification procedures
- Monitoring and alerting setup
- Rollback and emergency procedures
- Post-deployment verification steps
For upgrade runbooks and migration safety checks, see the Contract Upgrade Guide.
- RPC: https://soroban-testnet.stellar.org
- Horizon: https://horizon-testnet.stellar.org
- Explorer: https://stellar.expert/explorer/testnet
- RPC: https://soroban-mainnet.stellar.org
- Horizon: https://horizon.stellar.org
- Explorer: https://stellar.expert/explorer/public
The contracts.yml workflow runs on every push
to main and on every pull request targeting main. It:
- Installs Rust stable with the
wasm32-unknown-unknowntarget - Caches
~/.cargo/registryandtarget/viaSwatinem/rust-cache - Builds the workspace with
cargo build --target wasm32-unknown-unknown --release - Runs
cargo testfor each contract (invoice,pool,credit_score)
Branch protection for main should be configured so that:
- Pull requests cannot be merged unless the
Build & test Soroban contractscheck passes. - Direct pushes to
mainare disabled (PRs only).
To apply, in GitHub: Settings → Branches → Branch protection rules → Add rule for
main, enable Require status checks to pass before merging, and select
Build & test Soroban contracts from the list of checks.
- Task: Add SME onboarding verification — prevent duplicate SME accounts
- Reward: $10
- Source: GitHub-Paid
- Date: 2026-04-27