Fully on-chain bill splitting on Sui with zkLogin and transferable debt objects.
Sprinkle is a fully on-chain bill splitting protocol built on Sui. It leverages zkLogin for seamless Web2 onboarding while preserving self-custody. Bills are created directly on-chain, and due to Sui’s object-oriented architecture, individual debt objects are instantiated and transferred to debtor addresses at creation time — making obligations first-class on-chain assets. Debts can be settled trustlessly in SUI via Move contracts, either individually or atomically in batch transactions. All settlements are recorded on-chain through events, enabling transparent, verifiable debt resolution and composability with other DeFi primitives.
Sprinkle is built as a monorepo using Turborepo and pnpm. The frontend is a Next.js 15 app using tRPC for type-safe APIs, Tailwind CSS for UI, and Mysten’s dapp-kit for wallet integration and zkLogin. Authentication supports both Google (zkLogin) and native Sui wallets, enabling seamless onboarding while preserving self-custody.
The core logic lives in a Sui Move package. Bills are created fully on-chain, where individual Debt objects are minted and transferred directly to debtor addresses, leveraging Sui’s object-oriented asset model. Each debt is a first-class on-chain object owned by the debtor. Settlement happens through Move entry functions that transfer SUI to the creditor and update or burn the debt object, emitting on-chain events for verifiable payment proofs.
Groups and metadata are indexed via MongoDB to provide fast queries and social features, while all financial state (debts and settlement) remains on-chain. Batch transactions are used for atomic “pay all” flows. The combination of zkLogin, object-based debt modeling, and atomic settlement demonstrates a composable DeFi primitive built on Sui.

