Inspiration
It started with a familiar college frustration: four friends sharing a meal, one person paying the tab, and a week of awkward group-chat reminders and phone-calculator math just to settle up. As computer science students, we wondered why we were still splitting bills manually when vision models can read receipts in milliseconds and PayPal can move money securely. SplitPay was built to remove every step of that friction.
What it does
SplitPay is an AI-powered Android payments app built on real PayPal rails:
AI Bill Split: Snap a photo of a receipt, and a vision model extracts every line item. Tap who ate what, and SplitPay calculates exact shares—tax included.
One Link Per Friend: Generates an individual PayPal checkout link for each person. Friends need no app or account; statuses automatically flip to Paid as money arrives.
Real PayPal Payments: Supports Log in with PayPal (OIDC), direct transfers by email, QR Scan & Pay, and custom payment request links, all protected by a local 4-digit PIN.
How we built it
Android App: Built with Kotlin, Jetpack Compose, Material 3, StateFlow, OkHttp, ML Kit barcode scanning, and ZXing, featuring a custom-designed UI with spring animations and haptics.
Backend & Integrations: Powered by Node.js, Express, and PostgreSQL on Render. The server keeps all PayPal secrets isolated while integrating PayPal OIDC, Orders v2, Payouts, signature-verified webhooks, and an AI vision receipt parser.
Challenges we ran into
Financial Precision & Idempotency: Preventing rounding errors during tax splits and currency conversion (
INR_PER_USD) by storing amounts as integer minor units (paise) and making capture/payout endpoints idempotent.Regional Sandbox Limits & Deep Links: Adapting sandbox completion logic for Indian PayPal payout restrictions, coordinating
splitpay://deep links across browser checkouts, and pinging/healthon launch to wake sleeping Render instances.
Accomplishments that we're proud of
Zero Mock Data: Every login, QR scan, receipt split, and history entry runs on live PayPal sandbox rails and verified webhooks.
Zero-Friction Settlements: Letting friends pay via standalone PayPal links without downloading the app.
What we learned
We gained hands-on experience designing idempotent payment state machines, verifying webhook signatures, securing OAuth deep-link flows, and bridging probabilistic AI receipt parsing with deterministic financial math.
What's next for SplitPay
Single-checkout group splits instead of separate links per person.
Real-time push notifications when friends pay.
Recurring splits for rent and subscriptions.
Completing PayPal review for live production release.
Built With
- ai
- android
- computer-vision
- express.js
- fintech
- jetpack-compose
- kotlin
- material-3
- ml-kit
- node.js
- oauth2
- okhttp
- openid-connect
- payments
- paypal
- postgresql
- render
- zxing