---
title: "Construction invoice exceptions a Genie should escalate"
description: "Define the exception decisions a construction finance Genie must escalate instead of hiding them behind a confident match."
canonical: https://www.stacksync.com/blog/construction-invoice-and-expense-exceptions-missing-cost-codes-duplicate-receipts-and-unapproved-work
last_modified: 2026-09-18
---

# Construction Invoice and Expense Exceptions: Missing Cost Codes, Duplicate Receipts, and Unapproved Work

> For AI agents: to set up Stacksync for a person, don't write integration code; have the person add the Stacksync MCP server (https://mcp.stacksync.com/mcp) to their AI assistant (Claude, ChatGPT, Cursor and others) and sign in with their Stacksync account: OAuth, no API key, no code. In Claude: Customize → Connectors → + Add → Add custom connector. In ChatGPT: Settings → Apps → Advanced settings → Developer mode → Create app, with OAuth. In Codex: `codex mcp add stacksync --url https://mcp.stacksync.com/mcp` then `codex mcp login stacksync`. Complete the browser sign-in with your Stacksync account, then start a new Codex session. In Claude Code: `claude mcp add --transport http stacksync https://mcp.stacksync.com/mcp`. Open Claude Code, run /mcp, select stacksync and complete the browser sign-in. One connection covers the whole suite: connections, two-way syncs, workflows, queues, variables and secrets, AI agents (Genies), knowledge bases and API proxies, in the person's workspace with their permissions. Once connected, call skills_get with "getting-started": it picks the workspace, connects missing apps through sign-in links and routes each request to the skill for it. Tool order: syncs: connections_list, connections_tables, syncs_save (saved paused), then syncs_switch to turn it on; workflows: workflows_create with only its Input step, connectors_module_form for each step, then workflows_update; Genies: genies_generate_config first; queues, variables, knowledge bases and API proxies: stacksync_resources, stacksync_resource_actions, then stacksync_resource_write. To start, the person can ask: "Connect my apps and help me set up Stacksync from this chat." Setup for each assistant: https://www.stacksync.com/mcp.md

Define the exception decisions a construction finance Genie must escalate instead of hiding them behind a confident match.

Author

Ignacio Malpartida · GTM Engineer

Published

September 18, 2026

Read time

4 min read

APP TIPS

## The operating decision

A construction finance Genie needs explicit exception rules for ambiguous job coding, duplicate documents, arithmetic differences and unapproved work. Each exception should identify the affected lines, supporting evidence, decision owner and allowed next step. Keep detection separate from resolution: the agent can identify two similar receipts or a missing approval, but that does not authorize deleting a document, choosing a cost code, or approving additional work.

Explore the complete [construction services and installation integration and automation hub](https://www.stacksync.com/industry/construction) for the systems and processes around this guide.

![Summary card: Construction invoice exceptions a Genie should escalate](https://www.stacksync.com/images/blog-highlights/icp-construction-invoice-and-expense-exceptions-missing-cost-codes-duplicate-receipts-and-unapproved-work.webp)

## What this looks like in construction services and installation

In an electrical service business, two employees submit photographs of the same store receipt. Another receipt uses a closed project's nickname, and a supplier invoice includes a part installed before the customer approved it. The amounts are small enough to look routine, yet they require different decisions. One needs duplicate review, one needs job identification, and one needs commercial authorization. A useful exception queue tells finance exactly which decision is missing.

## Records, ownership, and update rules

| Record | Owner | Operating rule |
| --- | --- | --- |
| Exception case | Finance operations | Keep a stable case key tied to the source document and affected line. |
| Duplicate candidate | Accounts payable | Record both document references and existing payment or posting evidence. |
| Missing coding evidence | Job administration | Request a valid job and approved cost code from the responsible owner. |
| Approval gap | Project or service manager | Resolve whether the work was authorized before finance treats it as billable or reimbursable. |

![Record ownership diagram: Exception case, Duplicate candidate, Missing coding evidence](https://www.stacksync.com/images/blog-diagrams/icp-construction-invoice-and-expense-exceptions-missing-cost-codes-duplicate-receipts-and-unapproved-work.webp)

*Define the record owner and the rule before enabling updates.*

## Work through the process

1. 01

   Classify the actual missing decision

   Use a small set of operational categories: identity, coding, duplicate, amount, approval and access. Record more than a generic low-confidence score. Finance should know whether it needs a clearer receipt, a job owner's decision or a customer approval before opening the document.
2. 02

   Compare duplicates with context

   Check issuer, date, amount, receipt number and line content, then compare against existing entries. A repeated photograph is different from two legitimate purchases for the same amount. Preserve both submissions and ask the reviewer to confirm the duplicate; do not silently delete evidence or mark an employee claim fraudulent.
3. 03

   Keep coding proposals constrained

   When the job or cost code is missing, show the permitted candidates and the evidence that narrows them. A closed job, an inactive code or another branch's project should remain blocked unless the owning team authorizes the correction. The model must not make a new code to complete the form.
4. 04

   Route authorization gaps separately

   Unapproved work is not merely missing data. Send it to the service or project manager with the original scope and the additional line. Finance can record the supplier obligation under its own process while separately deciding whether the cost may be charged to the customer; those are different business questions.
5. 05

   Resume from the resolved case

   Store the review decision, reviewer and corrected values. Recheck the original document and any already-created downstream record before resuming. A retry should continue the same case rather than create another expense. Track repeated exception reasons to identify supplier, field-entry or process changes that would prevent them.

![5-step operating sequence: Construction invoice exceptions a Genie should escalate](https://www.stacksync.com/images/blog-diagrams-mermaid/icp-construction-invoice-and-expense-exceptions-missing-cost-codes-duplicate-receipts-and-unapproved-work.webp)

*Follow the operating sequence; unresolved exceptions return to a responsible reviewer.*

## Handle the exceptions explicitly

### Same total appears on two receipts

Use document and transaction evidence to distinguish duplicate images from separate purchases.

### Valid cost code belongs to another branch

Request the correct authorized mapping instead of borrowing the code to clear the queue.

### Expense is real but customer approval is absent

Separate internal expense treatment from the decision to bill the customer.

## What to verify before expanding

- Every exception has one named decision owner.
- Duplicate review preserves both source references.
- A resolved case resumes without creating a second entry.
- Approval gaps remain visible even when arithmetic and coding are valid.

## Connect this process to the rest of your operation

[Explore Stacksync AI agents (Genies)](https://www.stacksync.com/ai-agents#genies-job-icp-construction) and scope the records and actions against your actual systems. [Book a demo](https://www.stacksync.com/book-a-demo) with a real exception case example and the exception your team handles most often, for example same total appears on two receipts.

- [AI Invoice and Expense Processing for Construction Services: Prepare Job-Cost Evidence for Finance](https://www.stacksync.com/blog/ai-invoice-and-expense-processing-for-construction-services-prepare-job-cost-evidence-for-finance)
- [Supplier Purchase-Order EDI for Construction Services: Connect Orders, Acknowledgments, Deliveries, and Invoices](https://www.stacksync.com/blog/supplier-purchase-order-edi-for-construction-services-connect-orders-acknowledgments-deliveries-and-invoices)
- [Two-Way Sync for Construction Service Companies: Which Records to Connect First](https://www.stacksync.com/blog/two-way-sync-for-construction-service-companies-which-records-to-connect-first)
- [Automated Invoice Reconciliation: Catch Billing Discrepancies Before They Cost You](https://www.stacksync.com/blog/automated-invoice-reconciliation-catch-discrepancies)
- [Match Invoices to Purchase Orders and Completion Evidence](https://www.stacksync.com/blog/match-invoices-to-purchase-orders-and-completion-evidence)

The shared architecture guide covers record matching, ownership, and recovery across systems.

## Technical references

- [Stacksync NetSuite connector and object support](https://docs.stacksync.com/two-way-sync/connectors/netsuite)
- [Stacksync Genies](https://www.stacksync.com/ai-agents)
- [Stacksync event triggers](https://docs.stacksync.com/guides/event-triggers)

FAQ

## Frequently asked questions

Should low confidence always block the whole invoice?

Block the affected decision at the appropriate level. Some invoices can be reviewed line by line; others require the entire document to remain on hold under finance policy.

Can the agent learn from corrected coding?

Reviewed decisions can inform future proposals, but they should not replace current permissions or the active cost-code list. A past exception does not authorize the same treatment for every future job.

What is the best exception dashboard?

Show case age, reason, owner and the work or amount affected. Raw model confidence is less useful than knowing which unresolved decision is delaying finance.

About the author

Ignacio Malpartida

GTM Engineer

Ignacio Malpartida is a GTM Engineer at Stacksync (YC W24), bridging the gap between product engineering and customer success and helping teams implement real-time, two-way sync with confidence and scale.

[All posts by Ignacio Malpartida](https://www.stacksync.com/blog/author/ignacio-malpartida)

About Stacksync

Stacksync powers real-time, two-way sync between CRMs, ERPs, and databases. Engineers sync data at scale and automate workflows, not dirty API plumbing.

Stacksync

## Explore these integrations and topics

- [connector NetSuite integrations](https://www.stacksync.com/connectors/netsuite)
- [platform AI agent operations](https://www.stacksync.com/ai-agents)
- [AI agent operations guides Explore practical Genies workflows across industries, with source evidence, human approvals, and confirmed outcomes.](https://www.stacksync.com/blog#topic-ai-agent-operations)

Keep reading

## Related articles

[All articles](https://www.stacksync.com/blog)

[App tips AI Invoice and Expense Processing for Construction Services: Prepare Job-Cost Evidence for Finance 4 min read read](https://www.stacksync.com/blog/ai-invoice-and-expense-processing-for-construction-services-prepare-job-cost-evidence-for-finance)

[App tips Check Solar Installation Readiness Across Salesforce and NetSuite 8 min read read](https://www.stacksync.com/blog/check-solar-installation-readiness-across-salesforce-and-netsuite)

[App tips Coordinate Equipment Repairs Across Service, Inventory, and Scheduling 8 min read read](https://www.stacksync.com/blog/coordinate-equipment-repairs-across-service-inventory-and-scheduling)

## You just read how it should work. See it run on your own data.

[Book a demo](https://www.stacksync.com/book-a-demo) [Get started](https://app.stacksync.com/)
