Skip to main content
All articles

Blog

Services Do Not Arrive on a Truck: Why Contractor and Consultant Invoices Break SAP Matching

SAP service invoice matching breaks because proof lives in scattered job cards, not physical docks. AI agents gather this evidence to auto-draft accurate Service Entry Sheets for human approval.

Artificio automated invoice processing illustrated workflow.

The invoice arrives on 3 November. It comes from the company that services the air handling units at a pharmaceutical plant outside Lyon, and it totals €5,420 for October. Technician labour, replacement filters and belts, and one emergency call-out in the middle of the night.

Accounts payable tries to post it against the purchase order. SAP refuses. There is nothing to match against. Nobody has confirmed that the work was done.

So the AP clerk emails the plant engineer who raised the purchase order. He is on a roof replacing a fan motor. He reads the email four days later, cannot remember exactly how many hours the technicians were on site, and asks the shift lead to look for the job cards. The shift lead finds three of the five. Meanwhile the contractor's finance team has sent a reminder, and their account manager has called the buyer to ask why a supplier with a 30-day payment term is being made to wait.

None of these people did anything wrong. The process they work in was designed for goods, and this invoice is not for goods.

The company, supplier and figures in this post are a composite, used to make the patterns concrete. The patterns themselves show up in almost every SAP finance team we work with. Most writing about invoice automation, our own included, assumes a truck pulls up to a dock and someone counts what comes off it. This post is about everything else a company pays for: maintenance, cleaning, security, consulting, IT support, engineering, temporary labour, equipment hire and freight. In many companies that is a third or more of all spend, and it is where invoice matching breaks most often.

Why matching works for goods

When a company buys steel brackets, the proof that they arrived is simple. A truck pulls up. Someone at the dock counts the cartons, checks them against the delivery note and posts a goods receipt in SAP. From that moment, the system knows that 500 brackets came in on 14 March. When the invoice arrives, SAP compares three things: what was ordered, what arrived and what was billed. If they agree, the invoice posts. This is the three-way match, and for physical goods it works well because the receipt happens in a place built for receiving.

Services do not work like this. Nobody stands at a gate counting hours of HVAC maintenance. The work happens on a roof, in a server room, at a construction site or inside a consultant's laptop. The proof that it happened is scattered across whatever paper the work produces. A technician's job card signed by a shift lead. A timesheet approved in the contractor's own portal. A photo of a repaired pump. An email from a project manager saying "design approved, thanks." A security company's guard log. A steering committee's meeting notes.

And the person who knows whether the work was done properly is almost never in finance. Many of them barely use SAP.

Think of it like a restaurant bill. When you order three dishes, the waiter can see three plates on the table. When a plumber bills you for four hours, you have to remember whether he arrived at nine or at ten. Goods leave evidence on the table. Services leave evidence in people's memories and in whatever paperwork they happened to keep.

How SAP expects services to be confirmed

SAP has a specific document for this job. It is called a service entry sheet, and it plays the same role for services that a goods receipt plays for materials. Someone records what work was performed against which purchase order, in what quantity and at what price. Then someone with authority approves it.

That approval is the important part. Saving a service entry sheet does nothing financially on its own. Only when it is approved does SAP post the equivalent of a goods receipt in the background, and only then does an invoice have something to match against. In older SAP systems this happens through the classic service entry screen and a list of planned services on the purchase order. In S/4HANA, many companies have moved to the simpler "lean services" approach with a Fiori app built for it. The principle is the same in both. No approved entry sheet, no match.

On paper this is a sound control. The person who ordered the work confirms it was done, finance pays for what was confirmed, and auditors can see that the two were separated. In practice the control depends on one thing that rarely happens on time. The requester has to stop what they are doing, find the evidence and create or approve the entry sheet before the invoice arrives.

Six ways a service invoice gets stuck

The failures follow a handful of patterns, and they are different from the ones you see with goods.

There is no entry sheet at all. The work happened, the contractor billed for it, and nobody recorded it in SAP. This is the most common case by far. The plant engineer in our example has a purchase order for a full year of HVAC maintenance, and he does not think of "creating an entry sheet" as part of his job. In his mind, the maintenance happened, so the job is done.

The invoice arrives before the entry sheet. Many contractors bill on the first working day of the month. Many requesters approve entry sheets whenever they get around to it, often in the third week. For two or three weeks, every one of those invoices sits blocked, and AP spends time chasing approvals that would have happened eventually anyway.

Hours and rates do not agree. The invoice bills 42 hours of technician time at €95 an hour. The signed job cards add up to 38. Or the rates differ. The contract says €95 during the day and €142.50 after 18:00, and the invoice charges every hour at the evening rate. With goods, a quantity difference usually shows up at the dock. With services, it only shows up if someone adds up the job cards, and nobody usually does.

The purchase order has run out of money. Many services are bought on blanket purchase orders with a value limit instead of individual line items. A cleaning contract might carry a limit of €120,000 for the year. By the end of October, €112,400 has already been consumed. The November invoice for €9,800 would take the total to €122,200, so it exceeds the limit by €2,200 and blocks. Nobody saw it coming because nobody was watching the remaining balance.

The work was billed in milestones. A consulting firm is engaged to redesign a quality process for a fixed €48,000, paid 30 percent at design sign-off, 40 percent at pilot completion and 30 percent at final handover. The invoice for the second milestone asks for €19,200. Was the pilot completed? The answer sits in a project lead's inbox as an email from the site quality manager saying the pilot ran for two weeks without issues.

The invoice mixes services and pass-through costs. A service invoice often includes things that are not hours at all. Materials, travel, call-out fees, equipment hire, disposal charges. Some contracts allow these at cost. Some allow cost plus a handling fee. Some do not allow them at all. If the purchase order only has one line for "maintenance services," every one of these extras becomes a judgment call.Text banner reading

What a stuck service invoice costs

The first cost lands on the supplier, and it comes back to you. Service suppliers tend to be smaller than goods suppliers. A local maintenance firm, a security company, a specialist engineering consultancy. Many run on thin margins and pay their own technicians every two weeks. When a large customer holds their invoice for 45 days because an entry sheet was never created, they feel it. Some add late fees. Some quietly raise their rates at renewal to price in the delay. The good ones, the firms you most want to keep, start prioritizing customers who pay on time. When the plant needs an emergency repair at two in the morning, it matters which customer the contractor answers first.

The second cost is overpayment. When AP is under pressure to clear blocked invoices, the fastest path is to ask the requester to approve whatever the invoice says. The requester, who cannot remember the exact hours either, approves it. Four unsupported hours at €95 is €380. Across a year of monthly invoices from one contractor, that becomes several thousand euros. Across a few hundred service suppliers, it becomes a number a CFO would want to know about. Nobody is being dishonest here. Contractors make billing mistakes the same way anyone does, and a process that never checks the hours will never catch them.

The third cost is budget blindness. When services are bought on blanket purchase orders and confirmed late, spending only becomes visible when invoices post. A department can look comfortably under budget in September and then discover in November that three months of contractor invoices were waiting for approval. Accruals for services are notoriously hard to get right for the same reason.

The fourth cost is the audit. Paying for services without evidence that they were received is one of the classic control findings. If the entry sheet was created from the invoice after the fact, by someone copying the invoice amounts into SAP to make the block go away, the control exists on paper and nowhere else. Auditors know to look for exactly this pattern. They compare the entry sheet creation date with the invoice date and check who created each one.

And there is a fifth, quieter cost in the GR/IR account. A service invoice posted without an approved entry sheet, or an entry sheet approved for a different amount than the invoice, leaves an open balance that has to be explained at year end. Service lines are among the hardest to explain months later, because the evidence was never collected in the first place.

Why the usual fixes do not hold

Most companies have tried one of two workarounds, and both have problems.

The first is to let the invoice drive the receipt. When an invoice arrives, someone creates the service entry sheet from it, copying the hours and amounts, and sends it for approval. This clears the block quickly. It also turns the control upside down. The contractor's invoice is now the source of truth for what was received, and the approver is approving the invoice, not the work. If the invoice says 42 hours, the entry sheet says 42 hours, and the four unsupported hours sail through with an approval stamp on them.

The second is to chase the requester. AP sends an email, then another, then escalates to the requester's manager. Sometimes there is a weekly list of "invoices waiting for service confirmation." This works eventually. It is also slow and annoying for everyone, and it still does not check the hours. The requester, when they finally respond, is answering the question "did this contractor do work for us in October?" The answer is almost always yes. That is a different question from "did they do 42 hours of it?"

Some companies have tried to fix it from the other end by asking contractors to create entry sheets themselves through a supplier portal. This helps with volume, but it moves the record-keeping to the party that benefits from a higher number. You still need someone on your side to check it against your own evidence.

What all three approaches miss is the same thing. Nobody is actually comparing the invoice to the evidence of the work. That comparison is tedious and it requires reading documents that live outside SAP, so it does not get done.

The evidence exists. It is just in the wrong places.

Here is the good news. For almost every service invoice, the evidence of what was done does exist. It is just in a form and a location that finance never sees.

Type of service 

What proves it was done 

Where that proof usually sits 

Maintenance and repair 

Signed job cards, work order completion, parts receipts 

Technician tablets, site folders, the contractor's emailed reports 

Cleaning, security, facilities 

Attendance logs, guard rosters, site sign-in sheets 

Reception desks, facilities team inboxes, contractor portals 

Consulting and projects 

Milestone sign-off, acceptance emails, meeting minutes 

Project managers' inboxes, project folders, steering committee notes 

Temporary and contract labour 

Approved timesheets 

Staffing agency portals, line managers' email approvals 

Equipment and crane hire 

Delivery and collection notes, signed site timesheets 

Site managers' folders, hire company paperwork 

Freight and transport 

Proof of delivery, carrier rate confirmations 

Carrier portals, logistics team inboxes 

Once you see service matching this way, the problem stops being "the requester has not approved yet" and becomes "the evidence has not been gathered and compared yet." Gathering and comparing evidence from scattered documents is exactly the work Artificio's agents are built for. They read job cards, timesheets and sign-off emails the same way they read invoices and delivery notes in our goods-side matching work.

Following the HVAC invoice through an agent

Go back to the €5,420 invoice from the opening and watch what happens to it when an agent picks it up instead of an AP clerk's email.

The invoice has three lines. Technician labour, 42 hours at €95, for €3,990. Replacement filters and belts for €1,180. One emergency call-out fee on 11 October for €250.

The agent starts by reading the invoice and finding the purchase order it belongs to, a blanket order for HVAC maintenance across 2026. It also reads the maintenance contract attached to that purchase order. From the contract it pulls out the rules that matter. The day rate is €95 an hour and the evening rate is €142.50 after 18:00. Materials are billed at cost plus 10 percent. Emergency call-outs cost €250 each, but only when the plant raised them through its maintenance hotline. In most companies these rules sit in a PDF that nobody opens after the contract is signed. Here they become the checklist.

Next, the agent goes looking for evidence. It finds five job cards for October in the shared inbox where the contractor emails its visit reports. Each one is signed by a shift lead. Together they record 38 hours of technician time, all during the day. It finds the supplier's parts receipt for the filters and belts, showing €1,072.73. It finds the hotline log, which shows a call at 02:40 on 11 October about a failed fan on air handler 3.

Then it checks each invoice line against the evidence.

Materials pass. €1,072.73 plus 10 percent is €1,180.00, exactly what the invoice says.

The call-out passes. The hotline log shows the plant called the contractor, so the €250 fee is allowed under the contract.

Labour does not fully pass. The invoice bills 42 hours. The signed job cards support 38. The difference is 4 hours, or €380.

So the agent does three things. It drafts a service entry sheet for what the evidence supports. That means 38 hours of labour (€3,610), the materials (€1,180) and the call-out (€250), for a total of €5,040. It sends that draft to the plant engineer for approval, with all five job cards, the parts receipt and the hotline entry attached, and a single sentence at the top. "The invoice bills 42 hours, and the signed job cards support 38. The draft below covers 38 and holds the €380 difference." The engineer does not need to open SAP. He can approve from his email, the same way we described in bringing SAP approvers into the loop without a SAP login. And it drafts a note to the contractor asking for the missing job card or a credit note for the four hours.

The engineer reads it on his phone between jobs. He remembers now. One technician came back on 24 October for half a day to recheck a vibration reading, and the job card was never sent. He approves the €5,040 and forwards the contractor's note so they can send the missing card. The invoice posts for the supported amount within the day. The remaining €380 is paid when the job card arrives, or credited if it does not.

Compare that with the opening of this post. Nothing was guessed and nothing was rubber-stamped. Every euro is backed by a document, and the person who owns the work made the one decision that needed a person.

A hands-on review of a service invoice being inspected line by line for accuracy.

The other two invoices: milestones and limits

The same approach handles the other patterns, and the evidence looks different each time.

For the consulting milestone, the agent reads the invoice for €19,200 and the purchase order with its three milestones. It confirms that €19,200 is exactly 40 percent of €48,000, the agreed share for pilot completion. Then it looks for proof that the pilot is complete. It finds the email from the site quality manager to the project lead dated 9 October, which says the pilot ran for two weeks without issues and the team is ready for rollout. It drafts the entry sheet for milestone two, attaches the email and sends it to the project lead to approve. If no such email existed, the draft would go out with a clear note saying no evidence of pilot completion was found. That is useful information too, and better than a blind approval.

For the cleaning contract, the agent does something that only works because it watches the purchase order continuously, not just when an invoice arrives. When October's invoice posts and the consumed value reaches €112,400 of the €120,000 limit, it already knows the average monthly invoice is around €9,800. It warns the buyer in early November that the next invoice will exceed the limit by roughly €2,200. The buyer can raise the limit, renegotiate or plan the December spend before anything blocks. The invoice that would have sat in a blocked queue for two weeks posts on arrival instead. If you have read our post on getting invoices unstuck from MRBR, this is the same idea moved earlier. Prevent the block instead of resolving it.

Where people stay in charge

What the agent does not do matters as much as what it does, because this is exactly where automation can weaken a control instead of strengthening it.

The agent never approves a service entry sheet. Approval stays with the person who owns the work, because they are the only one who can say whether the work was done well, not just whether it was done. A job card can prove a technician was on site for eight hours. It cannot prove the fan was fixed properly.

The agent never creates an entry sheet from the invoice. It builds the draft from the evidence and then compares it with the invoice. That order matters. It is the difference between a control and a copy.

And when the evidence does not support the invoice, the agent does not decide who is right. It shows the difference, attaches what it found and asks. Sometimes the job card is missing and the contractor is owed the money. Sometimes the contractor billed in error. A person who knows the work makes that call, and the record of who made it and why is kept for the auditors who will ask about it later.

What changes is the requester's job. Instead of being asked "please create an entry sheet for this invoice" with nothing attached, they are asked "here is what the evidence shows, here is where it differs from the invoice, do you approve?" That question takes thirty seconds to answer, not thirty minutes.

Where this shows up across industries

Every industry buys services, but some feel this problem more than others.

Manufacturers and process plants spend heavily on maintenance contractors, calibration services and equipment hire. Job cards and work orders are the evidence, and they often already exist in a maintenance system. We covered the technician side of that in our post on plant maintenance screens.

Construction companies run on subcontractors who bill through progress claims and percentage-complete valuations, which are milestone billing with more paperwork. Our post on why subcontractor invoices keep breaking cash flow goes into the detail.

Utilities and energy companies rely on field contractors whose evidence arrives as field tickets and inspection reports from remote sites, which we looked at in closing the paper gap between the field and SAP.

Any company using temporary or contract labour receives invoices built from timesheets, often hundreds a week. The same matching that helps staffing agencies process timesheets at volume works just as well on the buyer's side.

And every company that ships goods pays for freight, which is a service too. A freight invoice should be checked against a proof of delivery and an agreed rate, and it frequently is not. That is why freight bills cost more than most people think.

How to start without boiling the ocean

You do not need to fix every service category at once, and you should not try. The companies that get this right usually start small and expand.

Pick one category where the volume is high and the evidence is reasonably consistent. Facilities maintenance and temporary labour are good candidates. Both produce regular invoices backed by job cards or timesheets that already exist.

Get the rules out of the contracts. Rate cards, overtime rules, call-out conditions, material markups and milestone percentages. Once they are written down in a form the agent can check, half the judgment calls disappear.

Ask the requesters one question. Where does the evidence of this work end up today? The answer is usually a shared inbox, a contractor portal or a site folder. Connect that place, and the agent can find the evidence without anyone forwarding anything.

Agree on your tolerances. For goods, small price differences are often accepted automatically. For service hours, many companies choose zero tolerance on hours and a small tolerance on materials. Our post on setting AI tolerance rules covers how to think about where those lines go.

Then measure two things for a month. How long does it take from invoice arrival to approved entry sheet? And how many euros of billed hours were not supported by evidence? The first number tells you how much time you are saving. The second tells you how much money you were losing without knowing it.

Back on the roof

Picture the plant engineer again, a month after the change.

It is early December. His phone shows a message about the November HVAC invoice. The evidence matches this time. Six job cards, 44 hours, all signed, materials within the contract markup, no call-outs. The draft entry sheet is attached, and the totals agree with the invoice to the cent. He approves it standing on the roof and goes back to the fan motor.

In accounts payable, the invoice posts the same afternoon. The contractor is paid on day 28 of a 30-day term. The buyer gets a warning that the cleaning contract will hit its limit in December and raises it before anything blocks. At year end, the service lines in the GR/IR account all have a document behind them.

Services will never arrive on a truck. There will never be a dock where someone counts hours of maintenance or weeks of consulting. But the evidence that the work happened is already being created, every day, by the people doing it. Somebody just has to collect it and put it next to the invoice before anyone is asked to approve anything.

If service invoices are where your matching breaks down, send us a few examples along with the job cards or timesheets behind them. We will show you what the agent finds.

Lal Singh, SAP AI Automation Expert

CEO & Founder of Artificio

See it in your SAP environment

Request a demo

Bring us a document, a process, or a bottleneck. We'll show how Artificio captures, validates, and posts into SAP — then scale from there.

Request a demo

Security & compliance

Enterprise security across every solution

ISO 27001:2013 certified, SOC 2 Type 2 compliant, GDPR and HIPAA ready. Every agent action is logged, auditable, and runs in isolated environments.

  • ISO 27001:2013
  • SOC 2 Type II
  • GDPR ready
  • HIPAA ready