Marketing and running costs next to revenue

Add what your projects cost by hand, from a spreadsheet such as a JoinBrands or ad platform export, or from your own server. Sumly sets it against revenue, for profit and for ROI by source, campaign and creator.

MRR · all 5 projects
€3,562
from
+12.9% in 30 days
Last 30 days €4,146 net
In apps 21%On sites 79%
Just came in
  • TimeLoop App Store · in the app · via RevenueCat 🇪🇸 +€4.99
  • Humanize Stripe · on the site 🇯🇵 +€11.04
  • AstroChart Google Play · in the app 🇫🇷 +€9.99
  • AstroChart Stripe · on the site 🇸🇬 +€9.99

The live demo: our own apps, with example numbers.

Three ways in

Use one or all of them. A file imported again, or a cost sent again with its id, is still counted once.

  1. 1

    By hand on Costs: a name, an amount and whether it is paid once, every month or every year. Say what it pays for (a source, a campaign or a creator's ref link) to see its ROI.

  2. 2

    From a file on Costs › Import a file: exports from Meta Ads, Google Ads, Apple Ads, TikTok Ads and JoinBrands are known by their columns, and any other sheet is read by its column names.

  3. 3

    From your server with the secret key: POST /api/v1/costs, with your own id for each cost so it is never kept twice.

Secret key only. id is yours: the payout's or invoice's own number. creator, campaign or channel say what it paid for.

POST https://sumly.dev/api/v1/costs
Authorization: Bearer sk_sumly_…

{
  "costs": [
    {
      "id": "payout-1042",
      "date": "2026-11-03",
      "name": "TikTok video",
      "amount": 120,
      "currency": "USD",
      "creator": "maya"
    },
    {
      "id": "meta-2026-11-03",
      "date": "2026-11-03",
      "name": "Meta Ads",
      "amount": 38.5,
      "currency": "EUR",
      "channel": "Facebook"
    }
  ]
}

200 { "ok": true, "added": 2, "updated": 0, "unchanged": 0 }

What you see after connecting

Costs next to every other project and provider, on the same pages.

Costs

Everything you pay for, by project, with what repeats and what was paid once.

Overview

Profit, revenue less costs.

ROI

What each source, campaign or creator cost and what the visitors it brought paid.

Counts toward your plan

Nothing: costs never count toward your plan, however many you add. Plans →

What you don't get

No automatic reading of ad accounts or creator marketplaces, and no invoices or bookkeeping.

The details

What a cost holds
  • A name, an amount and its currency
  • The day it was paid, and whether it repeats every month or year (by hand)
  • What it paid for: a source, a campaign or a creator's ref link, for ROI
  • A category, such as Marketing or Creators
What happens to a cost
  • Amounts in other currencies are turned into euros at the European Central Bank's rate.
  • A file imported again adds nothing twice: each cost remembers the line it came from.
  • A cost sent through the API with an id already kept updates that cost.
  • JoinBrands leaves prices out of its export, so the import asks for one price per post. Add its platform fee.
Good to know
  • Sumly does not read ad accounts or JoinBrands by itself: their spend comes as a file or through the API.
  • Costs through the API need the secret key; the public key is refused.
  • At most 1,000 costs in one call.

Costs questions

How does ROI know what a cost paid for?

You say it with the cost: a source such as Reddit, a campaign by its utm_campaign, or a creator by their ref link. Sumly then sets the cost against what the visitors from there paid.

Can I import JoinBrands?

Yes, its campaign export. JoinBrands leaves the price out of the file, so the import asks for one price per post; its Cost breakdown has it, and the 15% platform fee goes on top.

What if I send a cost twice?

Nothing doubles. Through the API the id you give it is its own; from a file each line is remembered.

Do costs count toward my plan?

No. Only page views and app screens do.

Other integrations

Try it with your own projects

Sign in with Google or a code by e-mail and connect your first project. Free for one project, and 14 days of a paid plan with no card.

Start free

Or look around first: open the live demo.