ClevMoney Drive backup API for the household ledger
ClevMoney - Personal Finance is Cleveni Inc.'s Korean household ledger (가계부) app (package com.dencreak.spbook, site cleveni.com/clevmoney). Users keep spending and income, cash and card accounts with limits, monthly category budgets, nested expense and income categories, card nicknames wired to SMS auto-input, due-date reminders, and one-tap shortcuts; the app reads card SMS/MMS and push alerts and shows a confirm popup for merchant, amount, time and card month before the row is saved. Settings cover a lock screen, currency, auto-categorize keywords, local file backup and restore of the ledger, and Google Drive backup into a dedicated folder with optional Wi-Fi-only scheduled copies. Premium is sold as a Google Play subscription managed through RevenueCat. Support is [email protected]; the community lives at cafe.naver.com/clevmoney and on YouTube @cleveni. A sister calculator ships as com.dencreak.dlcalculator. It sits with other money-manager apps for people who want a local Korean household book rather than a bank's own app.
Octet-stream backups parked in the Drive folder named ClevMoney are the packed SQLite household book: spendinglist rows carry s_date, s_time, s_where, s_price, s_card, s_cate, s_subcate, s_cardmonth and the original SMS in s_oraw; earninglist mirrors that with e_price and e_cate; balacntlist holds accounts (ba_title, ba_content, ba_limit, ba_kind) and baldatalist the movements (bd_price); budget rows key b_month to b_cateid and b_budget; cardlist stores d_name, SMS match code d_aicode and pattern d_aistr. Each stored file is addressed by id, name and createdTime; scheduled copies add an _auto suffix to the filename, and the restore listing treats names ending in _auto.db as automatic dumps.
Treasury and tax tools can rebuild P&L and card-month statements from those files; SMS-reconciliation bots can join s_oraw to d_aistr; budget monitors can compare b_budget against summed s_price. openData Studio turns that surface into callable open data.
Screenshots
API surface
The endpoints and request/response examples below are reconstructed from the app's interface — illustrative, not a live capture.
Find ClevMoney backup folder
GET
/v1/backups/foldersopendataLooks up the app's backup folder at the drive root by name (ClevMoney, not trashed). The first match's id, name and createdTime are kept as the parent for later uploads and listings.
Auth: OAuth 2.0 access token for the user's own cloud-drive account, limited to files the app itself created, sent as Authorization: Bearer. Google Play services must be available on the device.
- name
- parent
- trashed
- kind
- incompleteSearch
- files
- id
- mimeType
- createdTime
- nextPageToken
GET /v1/backups/folders?name=ClevMoney&parent=root&trashed=false HTTP/1.1 Authorization: Bearer <access_token>{ "kind": "backup#folderList", "incompleteSearch": false, "files": [ { "id": "1AbCdefGhijKlmnoPqrStuVw", "name": "ClevMoney", "mimeType": "application/vnd.google-apps.folder", "createdTime": "2024-03-12T08:14:22.000Z" } ] }Create ClevMoney backup folder
POST
/v1/backups/foldersopendataCreates the ClevMoney folder at the drive root when the lookup finds none. The metadata sets the name, the folder mime type and the root parent; the returned id, name and createdTime become the folder handle used by every later backup.
Auth: OAuth 2.0 access token for the user's own cloud-drive account, limited to files the app itself created, sent as Authorization: Bearer. Google Play services must be available on the device.
- name
- mimeType
- parents
- id
- createdTime
POST /v1/backups/folders HTTP/1.1 Authorization: Bearer <access_token> Content-Type: application/json; charset=UTF-8 { "name": "ClevMoney", "mimeType": "application/vnd.google-apps.folder", "parents": ["root"] }{ "id": "1AbCdefGhijKlmnoPqrStuVw", "name": "ClevMoney", "mimeType": "application/vnd.google-apps.folder", "createdTime": "2024-03-12T08:14:22.000Z", "parents": ["root"] }Upload ledger backup
POST
/v1/backups/files/uploadopenfinanceUploads the packed ledger dump as application/octet-stream into the ClevMoney folder. The filename is built from year, month, day and time tokens, with an _auto suffix on scheduled copies. The body is the SQLite ledger (spendinglist s_price/s_where/s_oraw, earninglist e_price, balacntlist ba_content, budget b_budget, cardlist d_aicode/d_aistr). The response id, name and createdTime identify the stored copy.
Auth: OAuth 2.0 access token for the user's own cloud-drive account, limited to files the app itself created, sent as Authorization: Bearer. Google Play services must be available on the device.
- name
- mimeType
- parents
- id
- createdTime
- uploadType
- s_date
- s_time
- s_where
- s_price
- s_card
- s_cate
- s_subcate
- s_cardmonth
- s_oraw
- e_price
- e_cate
- ba_content
- ba_limit
- bd_price
- b_budget
- d_aicode
- d_aistr
POST /v1/backups/files/upload?uploadType=multipart HTTP/1.1 Authorization: Bearer <access_token> Content-Type: multipart/related; boundary=foo_bar_baz --foo_bar_baz Content-Type: application/json; charset=UTF-8 { "name": "260320_143015_auto.db", "mimeType": "application/octet-stream", "parents": ["1AbCdefGhijKlmnoPqrStuVw"] } --foo_bar_baz Content-Type: application/octet-stream <packed SQLite ledger: spendinglist, earninglist, balacntlist, baldatalist, budget, cardlist, catelist, ecatelist, grouplist, shortcutlist, lastdatelist, favoptionlist, preference> --foo_bar_baz--{ "id": "1XyZbackupFileId0001", "name": "260320_143015_auto.db", "mimeType": "application/octet-stream", "createdTime": "2026-03-20T05:30:16.000Z", "parents": ["1AbCdefGhijKlmnoPqrStuVw"] }List ledger backup files
GET
/v1/backups/filesopendataLists the octet-stream backups inside the ClevMoney folder, returning only id, name and createdTime. The restore screen treats names ending in _auto.db as scheduled copies, driven by the cadence, Wi-Fi-only and last-run backup settings.
Auth: OAuth 2.0 access token for the user's own cloud-drive account, limited to files the app itself created, sent as Authorization: Bearer. Google Play services must be available on the device.
- folder
- mimeType
- trashed
- fields
- files
- id
- name
- createdTime
GET /v1/backups/files?folder=1AbCdefGhijKlmnoPqrStuVw&mimeType=application/octet-stream&trashed=false&fields=files(id,name,createdTime) HTTP/1.1 Authorization: Bearer <access_token>{ "kind": "backup#fileList", "files": [ { "id": "1XyZbackupFileId0001", "name": "260320_143015_auto.db", "createdTime": "2026-03-20T05:30:16.000Z" }, { "id": "1XyZbackupFileId0000", "name": "260319_090000.db", "createdTime": "2026-03-19T00:00:01.000Z" } ] }Delete ledger backup file
DELETE
/v1/backups/files/{fileId}opendataDeletes one backup file by id after a successful scheduled upload, or from the restore picker. Returns an empty 204 body. The fileId comes from the list call's id field.
Auth: OAuth 2.0 access token for the user's own cloud-drive account, limited to files the app itself created, sent as Authorization: Bearer. Google Play services must be available on the device.
- fileId
DELETE /v1/backups/files/1XyZbackupFileId0000 HTTP/1.1 Authorization: Bearer <access_token>Get premium membership status
GET
/v1/memberships/{appUserId}opendataReads whether the Google Play Billing entitlement behind the premium screen is active. The subscriber object carries original_app_user_id, entitlements, subscriptions (expires_date, product_identifier, store, period_type, is_sandbox) and management_url.
Auth: Public SDK key of the subscription service, sent by the in-app purchases library as Authorization: Bearer. The path parameter is the anonymous or identified app user id.
- request_date
- subscriber
- original_app_user_id
- first_seen
- management_url
- original_purchase_date
- entitlements
- subscriptions
- non_subscriptions
- expires_date
- product_identifier
- purchase_date
- store
- period_type
- is_sandbox
- unsubscribe_detected_at
- billing_issues_detected_at
- appUserId
GET /v1/memberships/anon-ada0001 HTTP/1.1 Authorization: Bearer <sdk_public_key> Content-Type: application/json{ "request_date": "2026-03-20T05:31:00Z", "subscriber": { "original_app_user_id": "anon-ada0001", "first_seen": "2024-01-08T11:02:00Z", "management_url": "https://play.google.com/store/account/subscriptions", "original_purchase_date": "2024-06-01T09:00:00Z", "entitlements": { "premium": { "expires_date": "2026-04-20T05:31:00Z", "product_identifier": "premium_monthly", "purchase_date": "2026-03-20T05:31:00Z" } }, "subscriptions": { "premium_monthly": { "expires_date": "2026-04-20T05:31:00Z", "original_purchase_date": "2024-06-01T09:00:00Z", "purchase_date": "2026-03-20T05:31:00Z", "store": "play_store", "period_type": "normal", "is_sandbox": false, "unsubscribe_detected_at": null, "billing_issues_detected_at": null } }, "non_subscriptions": {} } }Get premium plans
GET
/v1/memberships/{appUserId}/plansopendataLoads the current offering and its packages shown on the premium subscription screen. The fields are current_offering_id, offerings, packages and product_identifier.
Auth: Public SDK key of the subscription service, sent by the in-app purchases library as Authorization: Bearer. The path parameter is the anonymous or identified app user id.
- current_offering_id
- offerings
- packages
- product_identifier
- appUserId
GET /v1/memberships/anon-ada0001/plans HTTP/1.1 Authorization: Bearer <sdk_public_key> Content-Type: application/json{ "current_offering_id": "default", "offerings": [ { "identifier": "default", "description": "ClevMoney Premium", "packages": [ { "identifier": "$rc_monthly", "platform_product_identifier": "premium_monthly" } ] } ] }
Data categories
- transactions
- accounts
- budgets
- backups
- subscriptions
Where teams use this data
Rebuild household P&L from Drive dumps
A tax or family-office job downloads octet-stream files from the ClevMoney folder, opens spendinglist and earninglist, and sums s_price / e_price by s_cate, s_cardmonth and e_date so annual filings match the on-device book.
Reconcile card SMS with ledger rows
A card-ops bot joins spendinglist.s_oraw and AutoInput fields (whereStr, price, cardId, cardMonth) to cardlist.d_aicode / d_aistr to flag alerts that never became a confirmed row.
Watch category budgets against actuals
A cash-flow monitor reads budget.b_month, b_cateid and b_budget and compares them with summed s_price on matching s_cate so overspend alerts fire before month-end.
Inventory accounts and card nicknames
A wealth dashboard lists balacntlist.ba_title, ba_kind, ba_content and ba_limit next to cardlist.d_name so net-worth views stay aligned with the household book after a restore.
Frequently asked questions
What sits inside a ClevMoney Drive backup?
An application/octet-stream dump of the on-device SQLite book: spendinglist and earninglist (s_price, s_where, s_oraw, e_price), accounts in balacntlist (ba_content, ba_limit), movements in baldatalist (bd_price), monthly budget rows, nested expense and income categories, cardlist SMS patterns (d_aicode, d_aistr), shortcuts, reminders and preference key/value pairs.
How does ClevMoney find its Drive folder?
It searches the root of the user's Drive for a non-trashed folder named ClevMoney. If none exists it creates that folder, then uploads octet-stream backups as children and lists them with id, name and createdTime.
Does ClevMoney call a bank API?
No bank host is involved. Card alerts arrive through SMS/MMS and a notification listener and are confirmed into the ledger on the device. Cloud copies go to the user's own Drive with a file-scoped permission; premium status is read from subscription entitlements managed through RevenueCat.
How are scheduled backups named?
The filename template substitutes year, month, day and time tokens; scheduled copies also carry an _auto suffix, and the restore listing treats names ending in _auto.db as automatic backups. Settings for cadence, Wi-Fi-only and last-run time control the schedule.
Apps similar to ClevMoney - Personal Finance
- Money Manager Expense & Budget — Money Manager Expense & Budget (편한가계부) is Realbyte's personal-finance app that records income and expenses, generates spending reports, and reviews daily, weekly and monthly totals.
- Monefy: Money & Budget App — Monefy is an expense tracker and household budget planner that logs each purchase as you make it and organizes daily spending.
- Bank Salad — Bank Salad (뱅크샐러드) is a Korean finance app that includes a household account book alongside card comparison, loans and spending-pattern views.
- Wallet: Budget Expense Tracker — Wallet by BudgetBakers is a personal-finance manager that tracks expenses, connects bank accounts, and sets custom budgets.
- AndroMoney — AndroMoney is a personal-finance tool for Android, iOS and the web that tracks expenses and manages budgets.
- Spendee — Spendee is a budget and expense tracker that syncs bank accounts, e-wallets and crypto wallets and lets people plan category budgets.
- Money Lover - Money Manager — Money Lover is an expense-tracker and money-manager app that monitors spending, income, bills and debts and sets budgets from spending history.
- Cash Book- daily expenses — Cash Book is a simple expense tracker and digital cashbook for recording daily income and expenses and watching cash flow.
Topics
- ClevMoney API
- Cleveni household ledger
- ClevMoney Drive backup
- spendinglist s_price
- earninglist e_price
- 가계부 백업
- cardlist d_aicode
- ClevMoney premium subscription
Need this app's data API integrated?
We deliver scoped integrations for any named app — from USD 500 with source-code handoff, or hosted access billed per call. Tell us the data you need.
- NDA + SOW on every engagement
- Delivery in 3–7 days
- Payment only after acceptance
- Work scoped to authorized use