When two systems have to exchange data without a person in between, an integration gets written. It shows up on a website, in a Windows program and in an Office add-in alike — but it is the same work everywhere and carries the same risk: half of the code depends on somebody else's system that you do not control and that changes without notice. That is why it is a separate service, with its own analysis and its own price.
Half of the job is out of your hands
Code that I write, I can fix in an hour. The service on the other side has its own rules, its own quotas and its own outages, and there you wait. Everything that follows on this page is written because of that one sentence.
It runs through everything else I do
The same integration gets built into a website, a Windows program or an Office add-in. Only the screen around it changes; the weight of the work stays the same.
You can see what was sent
Every integration gets a log: what was sent, what came back and when. Without it, every disagreement is argued without evidence; with it, you can see whose side the error is on in a minute.
What I do
Six kinds of work. The first three are the most common and the most represented in the portfolio.
Connecting to a third-party service
Your software calls somebody else's: card payments, an accounting service, a courier, a supplier's price list, SMS or email. The call gets written, along with the handling of the response, the behaviour when no response arrives, and a log that stays available for checking.
Two-way synchronization
Two systems hold the same data and both of them change it — a website and an ERP, a shop and a warehouse, a CRM and accounting. Most of the work here hides in the question of whose change is newer and what happens when both sides edited the same record.
Repairing an integration that stopped
It worked for years, then the other side retired an old version, changed how sign-in works or introduced a call limit. I go into the existing code, find what changed and bring the connection back, no matter who wrote it.
Your own API
When somebody else's software needs to take data from you — a partner, an app, a website or a client's system — your own API gets built: access keys, permissions, a call limit and documentation a third-party developer can work from without phoning you.
Payments and electronic invoices
Card payments, refunds and subscriptions, as well as filing to an electronic invoicing system. This is a special case, because an error costs money rather than time, so it is built with retries that cannot charge the same amount twice.
Data transfer and import
A one-off move from an old system into a new one, or a regular import of price lists and stock levels from a supplier. When the work is mainly in the database itself — schema, indexes, cleaning — that is database work.
Why this is a job of its own, not part of the build
When I build a screen, a database or a report, I know every participant and can fix all of them. With an integration that is not true, and that is why it is estimated, tested and charged differently. These six things turn up in almost every such job:
- The documentation does not match reality. A field that always exists according to the manual sometimes arrives empty, and the example from the documentation returns an error. The first part of the job is establishing how the service actually behaves, not how it is described.
- Sign-in and keys. A password, a token that expires, an OAuth window somebody has to click through, a certificate with an end date. Each of those is renewed differently and each can bring the connection down at three in the morning.
- Call limits. Services count calls and either charge for them or refuse them. That is why a queue is built and what has already been fetched is remembered, instead of pulling everything every time.
- The other side changes without notice. A version is retired, a field is renamed, the terms get stricter. The integration is written so that this becomes visible immediately and in one place, rather than three months later through a customer complaint.
- Errors that come and go. The service is down for two minutes. The job must neither stop nor run twice — hence retries and the rule that the same order cannot be submitted twice.
- The sandbox is not production. A test service often accepts what the real one rejects. Part of the work can therefore only be closed on your real data and your real accounts.
For all of those reasons an integration carries its own price on the other pages too — with Office add-ins, for instance, local work is separated from work with a connection to a third-party service. Here that part of the job is described in one place instead of five. Artificial intelligence integration is a special case of the same story: it is also a connection to somebody else's service, except that there the answer to the same question need not be the same twice, so it has its own page and its own analysis.
Delivered
Integrations run through the whole portfolio, because they appear in every kind of software I build.
- All integrations — around fifteen projects, from accounting exchange to pulling data from suppliers.
- Payments and e-commerce — Stripe Checkout, payments on a website and in a shop.
- Business services — Xero for accounting, Dropbox for file exchange.
- Automation — jobs that run on their own, at night, with nobody at the screen.
Two finished products grew out of exactly this kind of work: the SEF e-invoice add-in for Excel and the Word-GPT VSTO add-in.
How the work goes
- You say which two systems need connecting and what ought to happen — for example, "when a customer pays on the website, the invoice should land in accounting".
- Analysis of the other API. I read the documentation, make test calls with your account and establish what is possible at all. This is the one part that cannot be skipped, because without it neither the price nor the existence of a solution is known.
- An offer for the agreed scope. After the analysis you get a fixed price and a list of the cases that are covered, including what happens when the other side does not answer.
- Work on sandbox accounts wherever the third-party service offers them, then verification on your data before it goes live.
- Handover. You get the code, keys in your own name, the call log and a short note on what to do when the other side changes the rules.
Pricing
The same arrangement as the other services: analysis first, then a piece of work with a known entry price, and small changes by the hour.
First step
The analysis is paid for and ordered first, and it is deducted from the price of the work if we continue. If it turns out that the third-party service does not allow what you need, you find that out after the analysis rather than after paid development.
Scopes of work
Smaller changes to an integration that already works do not have to go through a scope of work: for those there is hourly work, where you pay for the time spent. The complete price list is on the pricing page.
What I commit to
What the price does not include
I write this so that you understand the price before ordering, not afterwards. Everything on the list is work I can do, but it is agreed and charged separately.
What to prepare before we start
Ownership and exit
- Accounts and keys are in your name. You open the access to the third-party service, so the connection keeps working even if we never speak again.
- The source code is yours, together with a description of every call that is used.
- The log stays with you. Records of what was sent and received are kept on your server, not with me.
- No middleman. Your software calls the third-party service directly; I do not introduce a server of mine that your data would have to pass through.
Frequently asked questions
Which two systems need to talk to each other?
Write down which systems those are and what ought to happen. If the connection is possible, I will tell you how it is done and roughly what it costs; if it is not, I will tell you that too, before you pay for anything.
Send an enquiryI usually reply the same day.

Leave a Comment