Drop-in receipt scanning, expense splitting, and real-time settlements for Android, iOS, and Web. Free to start. Pay per scan, not per seat.
Built by app developers for app developers. No tracking, no upsell traps, no per-seat math.
Our Quick tier runs on every end-user's device at zero cost — offline, instant, no server hop. The only major split SDK that doesn't gate receipt scanning behind a paywall.
WebSocket subscriptions push group, expense, and balance changes to every connected client instantly. No polling, no stale state, no manual refresh.
Compose Multiplatform composables ship native UI for Android, iOS, and Web from a single integration. Match your brand with the Appearance API.
Three integration depths. Pick the one that matches how much of the experience you want us to own.
OlikSplitViewOne composable. Own its own navigation. Ships every screen below — groups, splitter, receipt OCR, settlements, statistics. Drop it into an Activity, ViewController, or DOM node and you have a complete expense feature in your app.
Appearancesdk-elementsIndividual screens and sheets, embeddable one at a time. Pin the splitter inside your checkout. Show the balance card on your dashboard. Open the OCR flow from any button. Stripe Elements for expense splitting.
Appearance overridessdk-coreTyped REST client only — no UI. Suspend functions in Kotlin, async/await in Swift, Promises in TypeScript. Build your own pixel-perfect UI on top.
OlikSplitViewEvery screen below is part of the full view. The same screens become individually embeddable Elements (preview).
| Lever | Headless API (sdk-core) |
Elements (preview) |
Full view (OlikSplitView) |
|---|---|---|---|
| Colors, radius, typography | n/a · own UI | ✓ Appearance | ✓ Appearance |
| Per-component overrides | n/a · own UI | ✓ ComponentRules | ✓ ComponentRules |
| Element copy / labels | n/a · own UI | ✓ props · locale | locale only |
| Which screens are visible | n/a · own UI | ✓ pick the element | future: filter list |
| Navigation stack ownership | full | full · embed in yours | internal · events leak out |
| Server / business logic | — | — | — |
| Splitting math & debt simplification | — | — | — |
| OCR engine choice (Quick / Sharp / Pro) | ✓ per call | ✓ per call | ✓ init config |
— = not modifiable (server-owned for consistency & correctness). Customers needing custom math should use the headless API and build the UI themselves.
Mint a link token from your backend. Drop the SDK in your client. Done.
// 1. Initialize once at app start. OlikSplitSDK.init( config = OlikSplitSDK.Config( publishableKey = "pk_test_...", environment = OlikSplitSDK.Environment.TEST, ), sessionStore = SessionStore(applicationContext), ) // 2. Exchange the link token your backend minted. val session = OlikSplitSDK.openWithLinkToken("lnk_...") // 3. Drop the full UI into your screen. setContent { OlikSplitView(onEvent = { event -> println(event) }) }
// 1. Initialize once at launch. OlikSplitSDK.shared.initialize( config: .init( publishableKey: "pk_test_...", environment: .test ) ) // 2. Exchange a link token minted on your backend. let session = try await OlikSplitSDK.shared .openWithLinkToken("lnk_...") // 3. Present the full SDK UI. let vc = OlikSplitViewController(linkToken: "lnk_...") present(vc, animated: true)
import { OlikSplit } from "@oliksplit/sdk"; // 1. Mount the SDK into any DOM container. OlikSplit.mount("#olik-container", { publishableKey: "pk_test_...", linkToken: "lnk_...", }); // 2. Listen for SDK events for analytics or routing. OlikSplit.on("expense.created", (event) => { console.log(event.expenseId); });
Four screens. One drop-in OlikSplitView. Tap a dot to jump.
Free to start. No monthly minimum. No per-seat fee. You pay only for what you use.
| Plan | Monthly base | Included | Support & SLA |
|---|---|---|---|
| Free | $0 | 1K API calls / mo, Quick scanning only | Community |
| Pay-as-you-go | $0 | $1 per 1K calls, all scanning tiers | Community |
| Pro | $9/mo | 5K calls + 50 Sharp-tier scans included | Email, 2 business-day, 99.5% |
| Scale | $49/mo | 100K calls + 500 Sharp-tier scans included | Priority email, same-day, 99.9% |
| Enterprise | Custom | Unlimited, BYO scanning provider, on-prem option | Dedicated CSM, DPA, 99.95% |
| Tier | Per scan | Best for |
|---|---|---|
| Quick | Free | On-device, offline. Printed receipts in supported languages. Privacy-first apps. |
| Sharp | $0.10 | Cloud scanning. Default for production apps — great accuracy across most receipt formats. |
| Brilliant | $0.40 | Premium accuracy. Hand-written receipts, non-Latin scripts, low-light photos, complex layouts. |
Mix tiers per scan in the SDK — fall back from Quick to Sharp on low confidence. Failed scans are not billed. Manual entry is always free. Calculate your bill →
The only embeddable expense-splitting SDK with free on-device OCR.
SplitwiseThree tokens, four hops. Read it once, never think about auth again.
Holds the secret key. Mints a single-use link token per end-user before they open your app.
sk_live_…
Initialized once with the publishable key. Receives the link token from your backend and hands it to the SDK.
pk_live_…
Exchanges the link token for a session, persists it in secure storage, renders the UI, scans receipts, syncs in real time.
session_token
Stateless edge in Falkenstein, Germany. Postgres + Redis behind. WebSocket subscriptions fan out group events in < 100 ms.
api.oliksplit.app
Quickstart, full reference, and copy-pasteable code samples for every platform.
Sign up, mint a key, paste 4 lines, run. End-to-end in five minutes.
Start here →Gradle setup, Compose embed, theming, deep-links. ProGuard rules included.
Read →Swift Package, SwiftUI view, Vision-backed scanning. Privacy Manifest pre-wired.
Read →npm install, drop a <div>, the SDK takes it from there. Wasm + JS bundles.
Match your brand. Variables override colors, fonts, shapes. Rules tweak per-component.
Read →Every endpoint, every error code. OpenAPI 3.1 spec downloadable for server SDKs.
Read →Drop our agent skill into Claude Code, Cursor, or any LLM-augmented editor. Your AI assistant will know how to wire Olik Split correctly the first time — auth flows, tier selection, theme overrides, error handling.
.cursorrules template ready to commit1. Add deps to libs.versions.toml
2. Initialize OlikSplitSDK in MainActivity
3. Embed OlikSplitView with onEvent callback
For receipt scanning I'll use the Sharp tier with a Quick fallback — that's the recommended default per the SDK skill.
Compliance artifacts ready before you submit to the stores.
OlikSplitView ships the complete UI — groups, expenses, balances, settlement, settings — with its own navigation stack. Fully themeable through the Appearance API (colors, corner radius, typography). If you'd rather build your own UI, the typed REST client and individual :sdk-ui components are available too.We'll email you the moment the SDK and Public API open to the public — usually within 2 weeks of joining the list.
Check your inbox — we'll email you when access opens. No spam, just one message.
Sign up, mint a key, drop the SDK into your app. The first 1,000 API calls and every on-device scan are on us.