What App Sales Dash does
App Sales Dash combines a focused revenue dashboard for subscriptions and one-time sales, across one app or all of them, with the practical tools needed to close a month and hand it to accounting.
See your revenue
- Track revenue in total, by store, by plan, by country, and by app.
- Switch Amounts between Proceeds and Customer spend for all three stores. Apple does not split its commission and tax, so those stay blank for the App Store, and the app says so.
- View the series by Day, Week or Month granularity.
- Split any series by Store, Plan or Type: subscriptions against one-time sales.
- Read fees, taxes and refunds per store, where the store reports them; refunds are drawn below zero in red.
- Choose timeframe presets from Last 7 days to All time, or drag a custom range on a chart and Zoom to selection.
- See the range total for exactly the span on screen.
Sales and downloads
- See how many people installed your app: Downloads counts first installs, free and paid from the App Store and paid from Google Play, never updates or re-downloads, and a refund does not lower it.
- Count paid apps and one-time purchases across stores as Net units sold and Sales revenue.
- Break downloads and sales down by app version and by country.
- See refunded units and amounts beside the sales they belong to.
- Read the Overview's Revenue tile split into Subscriptions and One-time.
Understand subscriptions
- Follow Paid subscriptions and Trials over time.
- Compare New and Cancelled subscriptions with a net line.
- Watch the trial funnel from Started to Converted.
- Read MRR movements: New, Expansion, Contraction, Churned, Reactivation.
- Break everything down by plan, under plan names you recognize.
- Leave a plan out of MRR and the plan tables with Disregard plan; revenue, sales and counts stay as they are. Regard again brings it back, and Notifications tells you if a disregarded plan earns money again.
- Choose an app in the toolbar and Plans and rates shows only its plans, names and rates.
- See churn and trial conversion for the selected timeframe, All time included. A free trial that ends before its first payment counts as a trial ending, not a cancellation, so churn is not inflated.
- Know when figures are provisional: Google Play statistics lag 3 to 7 days, and the app says which days will still change.
- Know that Apple reports a cancellation when the paid period ends, not when the customer opted out. The chart explains it so it does not look broken.
Work across your apps
- Pick All apps, one app or Unassigned once; every screen follows and the choice is remembered.
- The same app on the App Store and Google Play is recognised as one app.
- Rename, merge or split apps in Settings > Apps.
- Assign each Stripe price to an app, or leave it under Unassigned.
- Export a statement for one app, with that app's lines and totals.
Reconcile and export
- One ledger row per expected payout: period, store, expected, received, difference, status.
- Expected App Store and Google Play payouts appear by themselves once the stores' final reports arrive, and Stripe payouts arrive already matched.
- Record bank credit against a payout in seconds, with the bank reference kept on the row.
- Follow statuses: Expected, Matched, Mismatch, Carried forward, Ignored.
- Mark a year of history at once: turn on Show ignored, then use Select before and Mark selected, instead of matching old bank statements by hand.
- Export statements as PDF and CSV, per store and consolidated, for all your apps or for one app.
- Read Gross sales, Refunds and Net proceeds on any statement with refunds, each refund listed.
- Reconcile payouts per store account; stores pay the account, not the app, and the ledger says so.
- Never overwrite an export: a taken filename gets a copy written beside it.
- Brand statements with your company line, logo, typefaces and wordmark, all optional, all starting empty.
Stay honest
- Read every figure's basis: Final, Allocated, Estimate, Part estimate or No figure.
- See which periods the stores restated, named in the notes, never changed silently.
- See an amount with nothing behind it read No data, never 0; a quiet day inside a reported period reads 0.
- See only estimates drawn lighter; finals and settled days are solid.
- See rows with no exchange rate left out and counted. The chart says by how much the total is short.
- See unrated plans counted and left out of MRR rather than priced at a guess.
- Know when each period's finals are due, per store, and when they are overdue.
- Read each panel’s notes behind its (i).
Connect your stores
- Follow the store’s Setup guide…: who can create credentials, what you need and roughly how long it takes.
- App Store: an Issuer ID, Key ID, private key and Vendor number from a Team API key with the Finance role.
- Google Play: a service-account JSON invited into Play Console, the reports bucket URI, and the package name.
- Stripe: one restricted live key with exactly seven Read permissions.
- Press Test for one cheap read per store. The verdict distinguishes a bad key from a missing permission from a network that did not answer.
- Store credentials in the macOS Keychain, never on disk in the clear.
- Connect in any order: a missing store simply contributes no figures, and the app says so rather than quietly leaving it out of totals.
Care for your data
- Keep everything in a local SQLite database plus a verbatim raw report archive.
- Back up… to a single zip holding both; Restore… explains what it replaces before it does, and deletes nothing.
- Use Show in Finder to see exactly where the data lives.
- Let app updates re-read the archive locally when a report reader improves. Changed figures are announced.
- Use Download available history… in Settings > General; quitting is safe and the download resumes.
- Know the limit: Apple keeps daily reports for one year. The archive keeps yours beyond that.
- Choose a refresh from Every hour to Only when I ask, and optionally Launch at login.
- Stay current with updates from the Mac App Store.
Last updated