Features
Area accounts with assigned budget
The admin creates project areas and assigns a USDC budget to each one. The system generates an independent Stellar wallet per area. The admin sees account names and balances — never wallet addresses or blockchain terminology.
Acceptance criteria: The admin can create an area and see its balance. The system exposes no reference to wallets, Stellar, or USDC.
3-field payment form
When recording a payment, the coordinator fills in exactly 3 fields:
- Who — Beneficiary (free text with autocomplete)
- What for — Concept (free text, max 120 characters)
- Category — Dropdown with options defined by the admin
Confirmation appears in less than 5 seconds. No field references blockchain.
Automatic server-side transaction signing
TrustBid signs and submits each transaction to Stellar using custodied keys, without user intervention. A network failure does not block the UI — the payment stays in "pending" state and retries automatically.
Horizon API indexer
A background process that syncs the Stellar network with Supabase every 30 seconds. It captures the txHash, amount, date, and accounts involved for each confirmed transaction, and links the txHash to the payment record via the MEMO field.
Administrator dashboard
Consolidated view of the foundation for the admin:
- Summary of all project accounts with available balance
- Last 10 payments with beneficiary, concept, category, and amount
- Visual indicator for payments without attached receipt
- Quick access to each project area
The screen loads in less than 3 seconds. No blockchain reference in any UI element.
Exportable report (PDF and CSV)
The admin generates a spending report for an area over a date range. The PDF contains:
- Header with foundation name, area, and period
- Table with: date, beneficiary, concept, category, amount, verification code
- Total executed and remaining balance
- Footer: “Each payment can be verified at [link to Stellar Expert]”
The report is generated in less than 10 seconds.
Budget control per account
The system blocks payments that exceed the available balance in an area account. The coordinator sees a clear message. The admin receives a notification. No transaction reaches Stellar.
Optional receipt attachment
The coordinator can attach a photo or PDF of an invoice when recording a payment. Payments without a receipt are marked with a visual indicator in the dashboard. The file hash is stored in Supabase — the document does not go on-chain.
Per-transaction verification link
Each payment in the report and dashboard has a "Verify" link that opens Stellar Expert with the original transaction. The donor can verify without having a TrustBid account.
Fiat off-ramp
When the foundation needs to pay a local vendor in local currency:
- Colombia / Costa Rica: Bitso API (USDC to COP / CRC)
- Argentina: Belo or Lemon Cash (USDC to ARS)
The admin enters the destination bank account. In less than 10 minutes the vendor receives in their local currency. The USDC does not leave the wallet if the off-ramp fails.
Non-functional requirements
| Requirement | Detail |
|---|---|
| Payment confirmation in < 5 seconds | Web2 UX expectation |
| Private keys never in plain text | TrustBid custodies real funds |
| Zero Web3 terminology in UI | Critical for NGO adoption |
| Indexer syncs every 30 seconds | Updated data without overloading Horizon API |
| Responsive UI — functional on mobile | Coordinators pay from their phones in the field |
| RLS in Supabase per foundation | No foundation sees another's data |
| A Stellar failure does not block the UI | User always sees the last known state |