Savings Circles

A deep dive into how savings circles (ROSCAs) work on Moistello.

Circle Lifecycle

Every circle goes through these stages:

StageDescription
PendingCircle created, waiting for members to join
ActiveAll members joined, contributions and payouts in progress
CompletedAll members received their payout, circle archived
CancelledCircle cancelled before starting (organizer only)
DisputedA dispute has been raised, under review

Circle Types

Public

Open to anyone meeting the minimum MoiScore requirement. Good for discovering new circles.

Private

Invite-only via link. Members must be explicitly invited. The organizer controls who joins.

Payout Types

Random (VRF)

The smart contract uses a verifiable random function to determine the payout order. Every member gets exactly one payout — the order is unpredictable and provably fair.

Fixed Order

The organizer pre-defines the payout order when creating the circle. Everyone knows their position from day one. Common for seniority-based or need-based circles.

Auction (Chit Fund)

Each round, members bid a discount amount. The lowest bidder (highest discount) receives the payout at a reduced amount. The discount is distributed among all other members as additional earnings.

Example: $100 pool. Alice bids 5%, Bob bids 8%.

  • Bob wins with 8% discount
  • Bob receives: $100 - $8 = $92
  • $8 is split among other members

Contribution Rules

  • Members must contribute the full amount in USDC each cycle
  • Contributions are held in a Soroban smart contract escrow
  • Late payments incur a penalty (default 5%)
  • After max strikes (default 3), a member is removed
  • Zero platform fees — the contract calls apply_fee(pool, 0), so the full contribution pool is distributed

Penalties & Enforcement

RuleDefaultConfigurable
Late Fee5% of contributionYes
Grace Period24 hoursYes (1-168h)
Max Strikes3Yes (1-10)

Smart Contract Security

All circle funds are held in Soroban smart contracts deployed on the Stellar blockchain. Key security features:

  • No single point of failure — funds are on-chain, not held by Moistello
  • Transparent rules — anyone can verify the smart contract code
  • Immutable execution — payouts happen automatically when conditions are met
  • Open source — available under Apache 2.0 license