Skip to content
profflowLog inINSTALL FREE

Platform · Integrations

Every figure comes
from somewhere you can check.

Profflow does not ask you to type your business into a settings page. It reads the accounts you already run — the store, the ad platforms, the payment processors — and each one is named here with what it reads, how often, and what it deliberately does not.

Read-only by default · EU-hosted · Disconnect at any time

01 / What, how and why

Your costs live in other accounts.
Profflow reads them.

  • What it does

    Connects to the accounts that hold your costs — the store, the ad platforms, the payment processors, shipping and the books — and reads the figures from each one.

  • How it works

    You authorise each account once, read-only. Profflow reads every night and re-reads the last seven days, so a late refund or a corrected fee still lands. It never writes back.

  • Why it matters

    Shopify knows the sale, not what it cost you. The ad is in Meta or Google, the fee in Stripe or PayPal, the parcel in Sendcloud. With all of them, net profit is measured rather than guessed.

02 / The rules every connection follows

The same six rules,
whatever you connect.

  • Read-only, on every plan

    Profflow reads. It does not write an order, a price, a campaign, a payout or a setting back to any account it is connected to, and there is no plan on which that changes.

  • Only what the figure needs

    Each connection asks for the narrowest permission that produces the number. No customer list is copied for its own sake, and nothing is read that does not appear in an answer you can open.

  • Measured and estimated stay apart

    A charge read from an account is measured and is labelled so. Anything modelled is labelled too, in words, on the screen it appears on.

  • Nothing is compulsory

    A source you do not connect is simply not in the figure, and the screen says which sources are in it. There is no bundle, and no connection is a prerequisite for another.

  • Disconnect is one button

    Disconnecting stops the reading immediately. What was already computed stays, so last quarter does not vanish because you changed payment processor.

  • Held in Europe

    European infrastructure, GDPR-aware handling, and a written record of what is held and for how long. The security page has the detail.

03 / Every source, in detail

What each one reads.

Status is what it says. Early access means built from the provider’s published API and not yet checked against a live account — it connects today, and a figure that looks wrong is fixed the same week. A source waiting on somebody else’s approval says so rather than carrying a badge that sends you to a screen that refuses you.

Commerce

Where the orders are. Shopify is enough to run the whole model; everything below it adds to the figure rather than being required by it.

ShopifyLive

ReadsOrders with their lines, discounts, shipping and destination country; refunds against the order they reverse; products and variants; tax treatment per order.

Cost of goods is read from Shopify where you keep it there. Where you do not, it is entered in Profflow with the date it takes effect.

Nightly, last 7 days re-readHow it is used

Advertising

Spend belongs in the same period as the revenue it bought. Until it is, a good day and an expensive day look identical.

Meta AdsLive

ReadsDaily spend by account and campaign, converted to your currency at the day’s rate.

Spend as the platform billed it. Profflow does not take Meta’s attributed revenue as fact; it measures the channel against contribution.

Nightly, last 7 days
Google AdsLive

ReadsCampaign cost by day, in the account’s currency, converted at the day’s rate.

The same treatment as Meta: cost is measured, credit for revenue is not assumed.

Nightly, last 7 days
TikTok AdsWaiting on approval

ReadsDaily spend by advertiser account, converted at the day’s rate.

Built and waiting on TikTok’s own developer approval. Until then TikTok spend can be entered as a cost so the month is still complete.

Nightly once open
Any platform, from a fileLive

ReadsDaily spend from a platform’s own CSV export — Pinterest, Snapchat, Microsoft Ads or any other — summed by day under that channel.

The file is checked before anything is saved. Dates that could be day/month or month/day are refused until you say which, and spend in another currency than the store’s is refused rather than converted.

When you upload
AwinEarly access

ReadsCommission and the network’s fee on each approved or pending sale, by day, as the affiliate channel’s cost.

Connected with an API token and your advertiser ID; Awin includes advertiser API access on its Accelerate and Advanced plans. Declined and deleted transactions are left out, so a reversed sale stops costing anything.

Nightly, last 7 days
impact.comEarly access

ReadsPayouts on each action across your campaigns, by day, as the affiliate channel’s cost.

Connected with the Account SID and auth token from impact.com’s API settings. Reversed actions are left out.

Nightly, last 7 days
RefersionEarly access

ReadsCommission on pending and approved conversions, by day, as the affiliate channel’s cost.

Connected with the public and secret key from Refersion’s API settings. Denied conversions are left out.

Nightly, last 7 days
UpPromoteEarly access

ReadsCommission and adjustments on each referral, by the day of the referral, as the affiliate channel’s cost.

Connected with an API key, which UpPromote includes on its Professional plan. Denied referrals are left out.

Nightly, last 7 days
CJ AffiliateEarly access

ReadsPublisher commission and CJ’s own fee on every commission record, by the day of the sale, as the affiliate channel’s cost — and the sales CJ credits to its publishers.

Connected with a personal access token from the CJ Developer Portal and your company ID. Corrections arrive as the negative records CJ posts.

Nightly, last 7 days

Payments

A typed percentage is a guess. The processors report what they actually charged, transaction by transaction.

StripeLive

ReadsCharges and refunds with the fee taken on each, disputes, and payout timing.

Connected through Stripe’s own authorisation. Read-only: no charge, refund or payout can be created from Profflow.

PayPalLive

ReadsTransactions with their actual fees, refunds and the economics of a reversed sale.

PayPal fees vary by country, currency and transaction type, which is exactly why they are read rather than assumed.

KlarnaLive

ReadsSettlements with the fee per order, returns, and the delay before the money lands.

Buy-now-pay-later settles late. The cash forecast uses the real delay rather than treating the sale as paid on the day.

MollieLive

ReadsPayments with the fee Mollie kept on each, summed by day.

Connected with an API key you create in Mollie. Read-only; the first pull reads the last 90 days.

Nightly, last 7 days
SquareLive

ReadsThe processing fee on every completed payment, by day.

Connected with a production access token from the Square Developer Dashboard; no app review is involved.

Nightly, last 7 days
SumUpLive

ReadsThe fee SumUp deducted on each payout record, by day.

Connected with an API key from SumUp’s developer settings. Failed payouts are left out.

Nightly, last 7 days
Mercado PagoEarly access

ReadsThe fee you paid on every approved payment, by day — Brazil, Mexico, Argentina, Colombia, Chile, Peru and Uruguay.

Connected with a production access token from your Mercado Pago application. Read-only.

Nightly, last 7 days
RazorpayEarly access

ReadsThe fee, with GST on it, on every captured payment, by day.

Connected with a live key ID and secret from the Razorpay Dashboard. Read-only.

Nightly, last 7 days
PaystackEarly access

ReadsThe fee on every successful transaction, by day, in the currency you are paid in.

Connected with your live secret key. Fees in a currency other than your store’s are named, not added.

Nightly, last 7 days
FlutterwaveEarly access

ReadsThe fee on every successful transaction, by day, in the currency you are paid in.

Connected with your live secret key. Fees in a currency other than your store’s are named, not added.

Nightly, last 7 days
XenditEarly access

ReadsXendit’s fee and the VAT on it for every successful payment, by day — Indonesia, the Philippines, Vietnam, Thailand and Malaysia.

Connected with a production secret key that can read transactions and nothing else.

Nightly, last 7 days
AirwallexEarly access

ReadsThe fee on each transaction, by day, and the balance of every currency the account holds.

Connected with a restricted read-only API key. The balances in your store’s currency become the cash Cash ahead starts from.

Nightly, last 7 days
Payment statements, from a fileLive

ReadsThe fee on each payment from a provider’s own statement export — Montonio, MakeCommerce, Paysera, EveryPay, Paytrail, Vipps MobilePay, Adyen or any other — summed by day.

For processors whose API does not say what a payment cost. The file is checked before anything is saved.

When you upload

Banks

The cash forecast starts from a balance. Read from the bank, it is the balance; typed in once, it is last month’s.

Wise BusinessEarly access

ReadsThe balance in each currency. Balances in the store’s currency become the starting cash; the others are listed, not converted.

Connected with a personal API token from Wise’s settings. Only balances are read; Profflow never asks Wise to move money.

Nightly
QontoEarly access

ReadsThe balance of each business account. Those in the store’s currency become the starting cash.

Connected with the login and secret key from Qonto’s API settings. Transactions are not read — only the balance the forecast starts from.

Nightly
Revolut BusinessEarly access

ReadsThe balance of each business account. Those in the store’s currency become the starting cash.

Set up in your own Revolut Business API settings — a certificate you upload, then one approval in Revolut. Read access only; it comes with Revolut’s Grow plan and above.

Nightly
bunqEarly access

ReadsThe balance of each business account. Those in the store’s currency become the starting cash.

Connected with an API key from the bunq app, allowed for all IP addresses. Only accounts and balances are read.

Nightly
MercuryEarly access

ReadsThe available balance of each active account.

Connected with a read-only token. Mercury accounts are in dollars, so they become your cash on hand in a dollar store.

Nightly
BrexEarly access

ReadsThe balance of each Brex business account.

Connected with a user token that can read accounts. Read-only.

Nightly

Shipping and fulfilment

A shipping figure typed per order is an average. The labels, the warehouse and the carrier’s invoice say what each parcel actually cost.

SendcloudLive

ReadsThe cost of each parcel’s label, by day.

Days not yet reported keep the per-order figure from Settings, and the screen says which days are measured.

Nightly, last 7 days
EasyPostLive

ReadsThe fees charged on each shipment, by day. Refunded labels are left out.

Connected with a production API key; a test key is refused with the reason.

Nightly, last 7 days
ShipStationLive

ReadsShipment and insurance cost by ship date. Voided labels are left out.

Connected with the API key and secret from ShipStation’s settings.

Nightly, last 7 days
ShippoLive

ReadsThe rate paid on each purchased label, by day. A refunded label drops out.

Connected with a live API token; test labels are ignored.

Nightly, last 7 days
ShipEngineLive

ReadsShipment and insurance cost on each label, by ship date. Voided labels are left out.

Connected with a production API key from ShipEngine’s dashboard.

Nightly, last 7 days
ShipBobLive

ReadsWhat the warehouse charged: shipping and pick-and-pack into the day’s shipping cost; storage, receiving and other warehouse fees into Expenses.

Connected with a personal access token with billing read access. Payments and credits on the account are money moving, not cost, and are left out.

Nightly, last 7 days
EasyshipEarly access

ReadsThe rate you were charged for the courier you chose, on every shipment with a label, by day.

Connected with a production access token. Cancelled shipments are left out.

Nightly, last 7 days
Loop ReturnsEarly access

ReadsThe rate paid for each return label, summed by the day the return was opened and added to shipping in your profit.

On top of outbound shipping, never in place of it. Connected with an API key with the Returns scope; cancelled returns are left out.

Nightly, last 7 days
Carrier invoicesLive

ReadsThe invoice lines from DHL, DPD, GLS, UPS, PostNL, Royal Mail, Omniva, Venipak, Posti and other carriers, summed by shipment date.

Most carriers have no API that says what a parcel cost; their business portals export the invoice as CSV. The net amount is preferred to the gross, and parcels already counted through a label source should not be imported again.

When you upload

Accounting

Rent, tools and stock bills you already book arrive in Expenses, so nothing is typed twice.

MoneybirdLive

ReadsPurchase invoices and receipts, excluding VAT, as expenses.

A bill in another currency than the store’s is left out rather than converted, and the screen counts how many.

Nightly, last 7 days
sevDeskLive

ReadsExpense vouchers, net of VAT. Drafts are left out.

Connected with the API token shown on your sevDesk user.

Nightly, last 7 days
Lexware OfficeLive

ReadsPurchase invoices, with credit notes counted against them.

Lexware Office reports these amounts including VAT, and each one is marked so in Expenses.

Nightly, last 7 days
HoldedLive

ReadsPurchase documents, net of tax.

Connected with an API key from Holded’s developer settings.

Nightly, last 7 days
Merit AktivaEarly access

ReadsPurchase invoices, net of VAT, as expenses.

Connected with the API ID and key from Merit’s API settings, in Estonia or Poland.

Nightly, last 7 days
PennylaneEarly access

ReadsSupplier invoices, net of VAT, as expenses.

Connected with an API token from Pennylane’s settings, with read access to supplier invoices.

Nightly, last 7 days
Zoho BooksEarly access

ReadsSupplier bills, as Zoho lists them — with tax, and marked so in Expenses.

Connected with a Self Client you make in Zoho’s API console and a one-time code, turned into a lasting read-only connection.

Nightly, last 7 days

Cost of goods

If the unit cost already lives in the system you buy and make stock in, it should not be typed again in a second one.

OdooEarly access

ReadsThe cost of each product variant, matched to Shopify by SKU.

Connected with an API key from your Odoo user; the external API is part of Odoo’s Custom plan and of self-hosted Odoo. A cost you entered in Profflow yourself is never overwritten.

Nightly
KatanaEarly access

ReadsThe average cost of each variant across your locations, weighted by stock, matched to Shopify by SKU.

Connected with an API key from Katana’s settings. A cost you entered yourself is never overwritten.

Nightly
Cin7 CoreEarly access

ReadsThe average cost of each product, matched to Shopify by SKU.

Connected with the account ID and application key from Cin7 Core’s API settings. A cost you entered yourself is never overwritten.

Nightly
XentralEarly access

ReadsThe net purchase price of each product, matched to Shopify by SKU.

Connected with a personal access token from Xentral’s developer settings. Xentral tokens cannot be limited to reading; Profflow only reads products with it. A cost you entered yourself is never overwritten.

Nightly
UnleashedEarly access

ReadsThe average landed cost of each product, matched to your variants by its product code.

Connected with the API ID and key from Unleashed’s API Access page. A cost you entered yourself is never overwritten.

Nightly
Zoho InventoryEarly access

ReadsThe purchase rate of each item, matched to your variants by SKU.

Connected through a Zoho Self Client, the same way as Zoho Books. A cost you entered yourself is never overwritten.

Nightly
inFlow InventoryEarly access

ReadsThe inventory cost of each active product in your home currency, matched to your variants by SKU.

Connected with an API key, which inFlow includes with its API add-on. A cost you entered yourself is never overwritten.

Nightly

Lifecycle

Email is a channel with a cost, and should be judged like one.

KlaviyoLive

ReadsCampaign and flow revenue day by day, with conversions, beside the plan cost you enter.

This is attributed revenue — Klaviyo counts an order the customer might have placed anyway — so it sits beside ad spend and is never added to profit as though it were extra.

Nightly, last 7 daysHow it is used
OmnisendEarly access

ReadsCampaign and automation revenue by day.

Attributed revenue, treated as Klaviyo’s is: beside ad spend, never added to profit.

Nightly, last 7 days
MailchimpEarly access

ReadsE-commerce revenue each campaign reports, on the day it was sent.

Attributed revenue, treated as Klaviyo’s is. Connected with an API key from Mailchimp’s account settings.

Nightly, last 7 days
BrevoEarly access

ReadsRevenue Brevo attributes to campaigns and automations, by day.

Attributed revenue, treated as Klaviyo’s is. Needs Brevo’s eCommerce app with the store’s orders in it.

Nightly, last 7 days

Subscriptions

A subscriber is worth more than one order. What they are worth depends on how many stay.

RechargeEarly access

ReadsActive subscriptions, their revenue a month, churn and what a subscriber is worth.

Connected with an API token from Recharge, with read access to subscriptions.

Nightly
Loop SubscriptionsEarly access

ReadsActive subscriptions, their revenue a month, churn and what a subscriber is worth.

Connected with an API token from Loop’s settings.

Nightly
Seal SubscriptionsEarly access

ReadsActive subscriptions, their revenue a month, churn and what a subscriber is worth.

Connected with the API token from Seal’s settings.

Nightly
SkioEarly access

ReadsActive subscriptions, their revenue a month, churn and what a subscriber is worth.

Connected with an API key from Skio’s API settings.

Nightly
OrdergrooveEarly access

ReadsActive subscriptions with their price, quantity and frequency, and the ones cancelled lately with the reason given.

Connected with an application API key that Ordergroove issues on request. Only subscriptions are read.

Nightly

Customers

What buyers say, hold and ask for has a price: a badly rated product comes back, points are a discount already promised, and every ticket is time.

FairingEarly access

ReadsAnswers to “how did you hear about us”, order by order, on the Buyer survey screen beside the ad spend.

Only that question is read; no name or email is kept.

Nightly
Judge.meEarly access

ReadsEvery published review summed per product: how many, the average, how many gave one or two stars.

A product rated below 3.5 by five or more buyers is named on the overview.

Nightly
Smile.io and LoyaltyLionEarly access

ReadsThe points customers hold, summed, priced at what 100 points are worth in your program.

A discount already promised, set against a month of sales. Smile’s API comes with its Plus plan and above.

Nightly
GorgiasEarly access

ReadsHow many tickets customers open per day, against the orders — and, with what support costs a month, the cost per order.

Counts only, never a message. Spam is left out.

Nightly, last 7 days

Your figures elsewhere

The model is not a place you have to work. It is a place the figures are correct.

Google SheetsLive

ReadsOrder-level profit, revenue, ad spend and costs, pulled into a sheet with a script and a key.

A read key, rate-limited. The sheet reads Profflow; Profflow does not read the sheet.

Refreshed each morning
API and exportsLive

ReadsThe same figures the screens use, as CSV or through an API key you create and can revoke — into Excel and Power BI through Power Query, or into an n8n workflow, with the steps in the docs.

Useful for an accountant, a warehouse or a board pack. Keys are per-account and can be revoked without disconnecting anything else.

On request
Your Postgres databaseLive

ReadsOrders, products and the P&L written into your own database, in tables prefixed profflow_.

The one kind of connection Profflow writes to, and only to its own profflow_ tables, with a login scoped to one schema.

Nightly
BigQuery and SnowflakeEarly access

ReadsThe same three tables, merged into a BigQuery dataset or a Snowflake schema you choose.

A service account key for BigQuery, a key-pair user for Snowflake — each with rights on that one dataset or schema. Profflow writes only its own profflow_ tables.

Nightly
Looker StudioEarly access

ReadsProfit per order, revenue and ad spend by day and the cost breakdown, for the report’s dates.

A connector you deploy from your own Apps Script with your key — not one listed in Google’s gallery, so nothing waits on a review.

When the report refreshes
Slack and TelegramLive

ReadsThe morning brief and the alerts, posted where you already read messages.

A message goes out; nothing is read back from the channel.

Each morning, and when something moves
Microsoft Teams and DiscordEarly access

ReadsThe same morning brief and alerts, posted to a channel through its incoming webhook.

Paste the channel’s webhook address in Settings. Nothing is read back from the channel.

Each morning, and when something moves
Your calendarEarly access

ReadsVAT return deadlines and expected payouts with their amounts, as a private link Google Calendar, Apple Calendar or Outlook subscribes to.

The link is private to you. Making a new one stops the old one working.

Your calendar refreshes it

04 / Not on Shopify?

Tell us where
your store runs.

Profflow is built for ecommerce, not for one platform, and works with Shopify today. The next platform is the one most stores ask for — tell us yours and we write once, when it works.

One email when your platform is ready. No newsletter, and the address is used for nothing else.

05 / From authorising to trusting the figure

Five steps, and four of them
happen without you.

  1. 01AuthoriseThrough the source’s own screen — Shopify, Stripe, Meta — or with a read key you create. Profflow never asks for a password to an account it is connecting to.
  2. 02BackfillHistory is read as far back as the source will give it, so the first screen you see has a past as well as a present.
  3. 03ResolveEach order is matched to the cost in force on its date, the VAT rate of its destination, and the fee the processor charged on it.
  4. 04RefreshEvery night the last seven days are read again, so a late refund or a corrected charge lands in the month it belongs to.
  5. 05CheckEvery figure opens to the rows beneath it, and the reconciliation screen compares what the model says arrived with what the payout actually was.

06 / What Profflow will not do

The part most
integration pages leave out.

  • We do not write to your accounts

    No order, price, campaign, payout or product is ever changed by Profflow. The permission is not requested, so it cannot be misused later.

  • We do not sell or share your data

    Your figures are yours. They are not aggregated into a benchmark product, sold to a third party, or used to train anything.

  • We do not require a stack

    Connect one source or six. What is not connected is not in the figure, and the screen says which sources are.

  • We do not invent a number

    If a cost is missing, the gap is shown rather than filled with an assumption. A margin with a guess inside it is worse than no margin at all.

Before you
connect anything.

Can’t find the answer to your question?
Contact us by clicking here.

  • One commerce source. Shopify alone gives net profit after goods, refunds and VAT; adding the ad accounts and the payment processors replaces the last estimates with measured charges.

  • Minutes. Authorise, and the current period appears immediately while history backfills behind it.

  • Enter the fee as a cost and the month stays complete — it is simply entered rather than measured, and the screen says so. Tell us which one and it goes on the list.

  • No. The plan is the plan; sources are not priced individually.

  • Reading stops immediately. Figures already computed stay, so your history does not disappear because you changed a tool.

  • On European infrastructure, with GDPR-aware handling and a record of what is held and for how long.

Start with one source.

Shopify alone produces a real net profit figure. Everything else replaces an estimate with a measured charge, and none of it is required.