Project management

Productive tracks the real hours and the real budget. Your invoice often comes from somewhere else

Productive is a PSA: deals, budgets, time entries, and — this is the part that trips people up — its own invoicing. The moment you also run a real accounting package next to it, there is a decision waiting that nobody wrote down: which system actually sends the invoice, and which one just thinks it does.

We run a tool in this shape ourselves, for the same kind of work JKC bills for, which is why we recognise the specific ways this goes wrong before a client has finished describing them.

  • REST API, well documented for a PSA
  • Deals, budgets, time entries, invoicing
  • From €1,700 plus service fees
The tool

What Productive is, and the overlap that causes most of the questions

Productive is agency management software: a sales pipeline that becomes a budget, budgets that track against time entries and expenses, and invoicing built on top of all of it. It is aimed at agencies, studios and consultancies that sell time and want one place where a deal, a project and its margin are the same record.

The overlap with an accounting package is real and by design — Productive can send an invoice. Whether it should is a business decision, not a technical one: some agencies invoice straight from Productive and let their bookkeeper work from the export, others let Productive calculate what is billable and pass it to Exact Online or Moneybird to actually invoice. We build for either answer, but we ask the question before we build anything.

What goes wrong

Three things that go wrong once Productive sits next to a real accounting package

All three come from the same root: two systems that can both invoice, without anyone having decided which one actually does.

An invoice gets sent from both, or from neither

A project manager marks a budget as ready to invoice in Productive and sends it. The bookkeeper, working from the accounting package, does not see that and sends their own version a week later — or nobody sends either, because each assumed the other one had it.

What you see instead

One system is named as the one that invoices, and the other only feeds it numbers. Productive calculates what is billable; the invoice itself comes from exactly one place.

Budget burn is visible in Productive and invisible everywhere else

A project is 80% through its hours with a month of work left, and the account manager finds out from a Productive report they had to remember to open, not from anything that reached them on its own.

What you see instead

A budget threshold pushes a message to Slack or a status onto an internal dashboard, so the warning arrives instead of waiting to be looked up.

Time gets entered twice, once informally and once for real

Somebody tracks their day in a personal notes app because Productive feels like admin, then reconstructs the real entry from memory at the end of the week. The reconstruction is where the billable hours quietly shrink.

What you see instead

Time entered once, from wherever people actually track it — a calendar, a tool they already use — arriving in Productive as the real entry, not a Friday afternoon guess.

The bill for doing it by hand

What double invoicing systems cost, in a business built on billable hours

The arithmetic here is not about minutes, it is about billable hours that go unbilled. A project manager who has to reconcile two systems before sending an invoice loses twenty to thirty minutes per project per month doing that alone — small next to what happens when the reconciliation is skipped.

The real cost is the invoice that goes out late, or does not go out, because two systems both thought the other one had it. On an agency retainer of a few thousand euros a month, one missed invoice cycle is real money, and it tends to be discovered by an accountant asking why revenue and hours logged do not line up.

What we build

We build the thing on the other end too

With Productive the useful conversation is not the API, it is which system owns the invoice — get that decided first, and the connection itself is mostly plumbing.

A connection needs two ends. Plenty of agencies will build you the API call and hand you a JSON payload; that is the easy half. The harder half is what the data lands in — a website, a webshop, a portal your customers log into, an internal tool that replaces a spreadsheet. JKC builds both ends, which is why the connections we build tend to keep working: nothing about the receiving side is a black box to us.

API integrations

The connection itself: authentication, field mapping, rate limits, retries and a queue that survives the other system being down for an hour. Built against the documented API where there is one, and against whatever the vendor really offers where there is not.

Websites

WordPress sites that read from your systems instead of repeating them by hand: a careers page fed by your HR system, a team page that follows your payroll, prices and availability that are the real ones.

Webshops

WooCommerce shops where the order is the last time anyone types it: it becomes an invoice in your accounting package, a label at your carrier, a stock mutation in your warehouse, and a line in your CRM, on its own.

Web applications

When the process does not fit any standard product: a customer portal, a quoting tool, a planning board, a dashboard that reads three systems at once. Built on your data, with your systems as the source instead of a copy of them.

What can be connected

What can be connected between Productive and the rest of your stack

Productive's API is a REST API, documented well enough for a PSA of its size. The arrow says which way something moves.

  • Billable time and expenses into your accounting package (out of the tool)

    What Productive has calculated as billable, per project or per client, arriving as invoice lines in Exact Online, Moneybird or Jortt — instead of a person retyping a report.

  • Deals and companies between Productive and a CRM (both ways)

    A won deal in HubSpot or Pipedrive becoming a project and budget in Productive, with the company record kept level so nobody manages two versions of the same client.

  • Budget and margin alerts into Slack or Teams (out of the tool)

    A threshold — eighty percent of hours used, a margin dropping under a set number — posted where the account manager already looks, instead of sitting in a report.

  • Time from a source people actually use (into the tool)

    Hours logged in a calendar or another tool people trust more than manual entry, arriving in Productive as real time entries rather than a week-later estimate.

Most projects use the first two rows: billable time flowing to the books, deals flowing in from the CRM. Everything else is worth adding once those two are trusted.

How it works

How a connection gets built at JKC

The same four steps every time, whichever tool it is. Nothing here is a workshop you pay for: step one exists because scoping a connection wrong is the single most expensive thing that can happen to it.

  1. 1. We look at what is actually being retyped

    Not "which fields exist" but "which fields does somebody currently move by hand, how often, and what breaks when they get it wrong". Most projects turn out to need two or three flows, not a full two-way sync of everything. That conversation is what keeps the quote where it is.

  2. 2. We pick the route, and say why

    A maintained connector from the vendor, a platform like Make or Zapier, or a custom integration against the API. Cheapest first, not custom first: if a supported plugin does exactly what you need, that is the answer and we will tell you so. Custom is for the cases where the off-the-shelf option would need so much configuring that it becomes the fragile option.

  3. 3. We build it to survive the other system

    Every connection ships with retries, a queue and an idempotency key, so an order that arrives while the other side is down is delivered later rather than lost, and a retry does not create a second invoice. On a test environment first where the vendor offers one, so the first thing your real administration sees is a working connection.

  4. 4. We hand it over with the failure modes written down

    Which alerts you will get, what each one means, what to do about it, and who to call. Plus the credentials in your own name, in your own vault — not in ours. A connection nobody but us can maintain is a connection you do not own.

After it goes live

A connection that fails silently is worse than no connection

This is the part most quotes leave out. A connection that stops working without telling anyone is worse than manual work, because with manual work at least somebody notices when it does not get done. Every connection JKC builds is monitored, and the monitoring is not an upsell — it is in the service fee.

An alert per failed message, not a monthly report

A message that does not get through raises an alert the same hour, with the record it was about. Not a dashboard you have to remember to look at.

Replay, not re-enter

Anything that failed sits in a queue and can be sent again once the cause is fixed, in order. Nobody goes back through yesterday to find the four orders that did not land.

We watch the vendor's changes, so you do not have to

APIs get versioned, deprecated and rate-limited. When a vendor announces a change that affects your connection, adjusting to it is part of the service fee, not a new project.

What it costs

From €1,700, and the biggest variable is who built the other end

For Productive specifically, the first useful output of a project is often not code but a decision: which system invoices. We would rather have that conversation before quoting than build a connection that has to be redone once it comes up.

A connection starts from €1,700 plus a monthly service fee, which covers the monitoring, the queue and keeping up with the vendor's API changes. Work outside a fixed scope is €95 per hour.

What moves the number is not the tool — it is how well the system on the other end is known. If JKC built your website, your webshop or your web application, we already know its data model, its edge cases and where its stock numbers really come from, and a connection into it is mostly configuration and testing. If it is a system we have never opened, we start with a short technical check of both sides and quote after that, so you are not paying hourly for us to work out the basics.

Two more things that move it, in our experience more than anything else: whether the tool has a real API or only a CSV export, and whether the sync has to go both ways. One-way is roughly half the work of two-way, because two-way means deciding, per field, which system wins when they disagree — and that decision is the expensive part, not the code.

Questions

Frequently asked questions about connecting Productive.io

Not necessarily — that is the decision we ask about first. If Productive invoices, the connection sends its output to your accounting package as a record, not a draft. If your accounting package invoices, Productive only calculates what is billable and hands it over. Both are normal; running both at once without deciding is what causes the trouble.

Free, 10 minutes

Not sure where the manual hours actually go?

That is what the Growth Scan is for. Ten minutes, no sales call attached: you get back where the double work sits, which connection would pay for itself first, and which one honestly would not.