How to prepare waste and environmental data for an audit

A step-by-step method for assembling waste and environmental services invoices, hauler contracts, and disposal records before a margin drift audit.

Twitter LinkedIn WhatsApp
Ask AI: ChatGPT Claude Gemini Grok
How to prepare waste and environmental data for an audit

Margin drift is the gap between what a vendor contract says and what the invoice actually charges. In waste and environmental services, that gap hides inside hauler rate schedules, container size overrides, fuel and environmental surcharges, and disposal weight tickets that rarely get checked against the contract that set the terms.

Before any of that can be tested, the data has to exist in one place, in a form a reviewer can actually match line by line. This page walks through what to pull, how to organize it, and what shape it needs to be in before an audit starts.

Executive Summary

Waste and environmental services invoices are hard to audit because the contract, the service order, and the invoice usually live in three different systems, and none of them describe the charge the same way. A hauler contract might set a rate per pull for a 30-yard compactor. The invoice might bill it as a flat monthly fee with a separate line for an "environmental fee" the contract never mentions.

Without a common reference point, a reviewer cannot tell drift from a legitimate charge.

The fix is preparation, not sophistication. Pulling 12 to 18 months of invoices, the underlying hauler agreements, container and frequency schedules, and any weight tickets or manifests into one file, keyed to a consistent vendor and site identifier, is what makes the audit possible. The work of a waste audit happens mostly before the first invoice is opened.

What changes the outcome is which fields get captured and how consistently the vendor and site are named. A data set with the right fields but inconsistent vendor names still produces false negatives, because a duplicate vendor record splits one relationship's spend across two rows and hides the pattern.

1. What invoices and contracts do you need to pull first?

Pull every hauler and disposal vendor invoice for the last 12 to 18 months, the master service agreement or hauler contract for each vendor, and any site-level addenda covering container size, pickup frequency, and rate. Also pull change orders: container swaps, added pulls, and rate amendments issued outside the original contract. Without the amendments, a reviewer is testing invoices against terms the vendor stopped honoring months ago.

Start with accounts payable, not the vendor. AP has the complete invoice history; the vendor's portal often shows only recent activity and can omit disputed or credited lines.

For each vendor, locate the base contract and every amendment signed after it. Waste contracts change often: a compactor gets swapped for a larger unit, a site adds a second pickup day, a recycling stream gets added. Each of these should have a signed change order or at least an email confirming the new rate.

If a site has no written amendment for a change you can see on the invoice, treat that as a finding candidate, not paperwork to chase down first. Flag it and move on; the audit will test it once matching begins.

  1. Export 12 to 18 months of invoices by vendor and site from AP.
  2. Request the current signed contract or master service agreement for each hauler.
  3. Request every amendment, addendum, or change order signed since contract inception.
  4. Note any invoice line with no corresponding contract clause for later testing.
  • Base contract: The original signed agreement setting rate, container size, and pickup frequency by site.
  • Amendments: Any later change order, rate letter, or email confirming a modification to the base terms.
  • Invoice history: 12 to 18 months of AP records, not vendor portal exports, which can be incomplete.
  • Weight tickets or manifests: Disposal or recycling records that establish tonnage independent of what the invoice states.

2. How do you structure the data once it is pulled?

Build one row per invoice line, not one row per invoice, with columns for vendor, site, service date, container type, contracted rate, invoiced rate, and surcharge type. A single monthly invoice from a hauler often bundles a base fee, a fuel surcharge, an environmental fee, and a disposal tonnage charge into one document; each needs its own row before it can be checked against the contract clause that governs it.

Line-level structure matters because a contract sets terms at the level of a single charge type, not at the level of an invoice. A base pickup rate, a fuel surcharge, and a disposal tonnage fee each have a different clause, a different escalation schedule, and a different audit test.

Assign a consistent site identifier and vendor identifier to every row before anything else happens. If two invoices reference the same physical location under slightly different site names, a spreadsheet-level match will miss the pattern entirely, even though a human glancing at both invoices would catch it in seconds.

Capture the service date range on the invoice, not just the invoice date. Waste billing frequently lags the service period by several weeks, and a surcharge that changed mid-period needs the service date to test correctly.

3. How does vendor and site naming affect the audit's accuracy?

Inconsistent vendor naming is a common reason a waste audit understates drift, because a hauler that operates under two slightly different names in AP splits its spend across two vendor records, and neither record alone shows the full pattern of overbilling across sites. Standardizing vendor and site identifiers before matching begins is what makes the rest of the audit reliable.

A regional hauler might appear in AP as "ABC Waste Services," "ABC Waste Services LLC," and "ABC Waste - Region 4," each tied to a different vendor ID. Every one of those records might show clean, small variances against contract. Combined, the same rate error across twelve sites adds up to something worth investigating.

Before matching starts, reconcile the vendor master against the actual contracts on file. Confirm that every vendor ID billing under a hauler's name is tied to the same master agreement, or documented as a separate one if the hauler genuinely operates under multiple contracts.

Site identifiers need the same treatment. A site referenced by street address on one invoice and by an internal facility code on another will not match automatically in most systems.

4. What contract terms actually need to be extracted for testing?

Extract the base rate per container size and pickup frequency, any tiered or escalating rate schedule, the fuel surcharge formula and its reference index, the definition and cap of any environmental or regulatory fee, and the contract's rate lock or renewal date. These are the clauses a waste invoice actually tests against; everything else in the contract is boilerplate the audit does not need.

Fuel surcharges are a common source of unreadable contract language in waste agreements. Many haulers tie the surcharge to a named diesel index with a formula, but the invoice line shows only a flat percentage. Extract the formula itself, not just the current percentage, since the percentage should move with the index and often does not.

Environmental and regulatory fees deserve their own line in the extraction. Some contracts define these fees narrowly, tied to a specific state or local program; others leave the term undefined, which functions as an open-ended charge the hauler can adjust without amendment.

Record the rate lock period and renewal date for every contract. A rate that increased outside a locked period, or increased again within days of a prior increase, is exactly the kind of pattern that only becomes visible once the dates are captured alongside the rate.

5. How do weight tickets and disposal manifests fit into preparation?

Weight tickets and disposal manifests establish an independent record of tonnage that did not originate from the vendor's own billing system, which makes them a reliable check against a disposal invoice. Where they exist, pull them alongside invoices and match by date and site; where they do not, note the gap so the audit can state plainly which tonnage figures rely solely on the vendor's own reporting.

Some waste streams, particularly recycling and scrap metal, are billed on measured tonnage that only the hauler records. Without an independent weight ticket, an invoice's tonnage figure cannot be independently verified, only checked for internal consistency against prior periods.

Where manifests exist, typically for regulated or hazardous waste streams, they carry a signed record of quantity that is legally required and independent of the invoice. This is general information, not legal advice; consult counsel on manifest retention obligations specific to your jurisdiction. These records are worth prioritizing in preparation because they close a gap that ordinary invoice-to-contract matching cannot close on its own.

If a site generates enough tonnage-based billing to matter, and no independent weight record exists, that absence itself belongs in the audit's findings. A control gap is a legitimate finding, separate from any dollar figure.

6. What should the finished data set look like before the audit begins?

A finished data set has one row per invoice charge line, a contracted rate and term reference next to each invoiced rate, a standardized vendor and site identifier, and a documented status for every amendment and weight ticket that applies to that line. Anything missing at this stage, a clause, a signed change order, a manifest, should be logged as a gap rather than assumed, because an assumed term cannot support a finding.

The test for readiness is simple: can a reviewer open a single row and determine, without leaving the spreadsheet, what the contract says this charge should be? If the answer requires pulling a separate document mid-review, the preparation step is not finished.

Document every gap explicitly rather than leaving a blank cell. A blank could mean the term does not exist, was not found, or was not yet requested. Each of those has a different implication for the audit, and only an explicit note distinguishes them.

Once the data set reaches this state, invoice-to-contract testing can proceed the same way it would for any other service category: line by line, against a defined term, with the basis for every flagged variance visible in the same row.

For the wider pattern this sits inside, start with the margin drift guide.

7. Frequently Asked Questions (People Also Ask)

How far back should we pull waste and environmental invoices for an audit?

12 to 18 months is the typical window, because that range usually covers at least one full contract rate cycle and any seasonal service changes, such as added pickups during high-volume periods. A shorter window can miss a rate escalation or a surcharge change that only shows up once a year.

What if we cannot find the signed contract for a hauler?

Request a copy directly from the vendor and note the gap in your preparation file in the meantime. Without a signed contract, there is no baseline to test the invoice against, so any variance found before the contract arrives should be treated as provisional, not a confirmed finding.

Do fuel surcharges need special handling in a waste audit?

Yes. A fuel surcharge is usually tied to a formula referencing a named diesel index, not a flat number. Extract the formula and the index it references, then compare the invoiced percentage against what the formula would produce for that billing period, rather than assuming the stated percentage is current.

How do we handle a hauler that bills under multiple vendor IDs?

Reconcile the vendor master first. Confirm which vendor IDs are tied to the same underlying contract and merge them for audit purposes, even if AP keeps them separate for payment routing. Otherwise the same rate error across sites looks like several small, unrelated variances instead of one pattern.

What counts as a red flag during data preparation, before testing even starts?

An invoice line with no corresponding contract clause, a surcharge with no referenced formula, a site billed under a name that does not match any contract on file, or a tonnage charge with no independent weight ticket. Each of these is worth flagging during preparation rather than waiting for formal testing to surface it.

Should weight tickets be required for every disposal invoice?

Where the waste stream is billed on measured tonnage, an independent weight ticket or manifest is the only way to verify the figure without relying solely on the hauler's own reporting. Where no independent record exists, that gap should be documented as a control weakness in the audit's findings.

Can this preparation work be done in a spreadsheet, or does it need software?

A spreadsheet can hold the data structure described here: one row per charge line, with contract and invoice fields side by side. The limiting factor is usually not the tool but the discipline of keeping vendor and site identifiers consistent as new invoices are added each month.

What is a common reason a waste audit misses drift?

Inconsistent vendor or site naming that splits one relationship's spend across multiple records in accounts payable. Each record can look clean in isolation while the same rate error repeats undetected across every site billed under the other name.

Does this apply to recycling and scrap contracts the same way as trash hauling?

The same preparation steps apply: contract, invoice, and an independent quantity record where one exists. Recycling and scrap contracts often add revenue-share or rebate clauses on top of the base service terms, which should be extracted and tracked the same way a rebate clause would be in any other category.

Executive Summary

Waste and environmental services invoices are hard to audit because the contract, the service order, and the invoice usually live in three different systems, and none of them describe the charge the same way. A hauler contract might set a rate per pull for a 30-yard compactor. The invoice might bill it as a flat monthly fee with a separate line for an "environmental fee" the contract never mentions. Without a common reference point, a reviewer cannot tell drift from a legitimate charge. The fix is preparation, not sophistication. Pulling 12 to 18 months of invoices, the underlying hauler agreements, container and frequency schedules, and any weight tickets or manifests into one file, keyed to a consistent vendor and site identifier, is what makes the audit possible. The work of a waste audit happens mostly before the first invoice is opened. What changes the outcome is which fields get captured and how consistently the vendor and site are named. A data set with the right fields but inconsistent vendor names still produces false negatives, because a duplicate vendor record splits one relationship's spend across two rows and hides the pattern.

1. What invoices and contracts do you need to pull first?

Pull every hauler and disposal vendor invoice for the last 12 to 18 months, the master service agreement or hauler contract for each vendor, and any site-level addenda covering container size, pickup frequency, and rate. Also pull change orders: container swaps, added pulls, and rate amendments issued outside the original contract. Without the amendments, a reviewer is testing invoices against terms the vendor stopped honoring months ago. Start with accounts payable, not the vendor. AP has the complete invoice history; the vendor's portal often shows only recent activity and can omit disputed or credited lines. For each vendor, locate the base contract and every amendment signed after it. Waste contracts change often: a compactor gets swapped for a larger unit, a site adds a second pickup day, a recycling stream gets added. Each of these should have a signed change order or at least an email confirming the new rate. If a site has no written amendment for a change you can see on the invoice, treat that as a finding candidate, not paperwork to chase down first. Flag it and move on; the audit will test it once matching begins. 1. Export 12 to 18 months of invoices by vendor and site from AP. 2. Request the current signed contract or master service agreement for each hauler. 3. Request every amendment, addendum, or change order signed since contract inception. 4. Note any invoice line with no corresponding contract clause for later testing. - Base contract: The original signed agreement setting rate, container size, and pickup frequency by site. - Amendments: Any later change order, rate letter, or email confirming a modification to the base terms. - Invoice history: 12 to 18 months of AP records, not vendor portal exports, which can be incomplete. - Weight tickets or manifests: Disposal or recycling records that establish tonnage independent of what the invoice states.

2. How do you structure the data once it is pulled?

Build one row per invoice line, not one row per invoice, with columns for vendor, site, service date, container type, contracted rate, invoiced rate, and surcharge type. A single monthly invoice from a hauler often bundles a base fee, a fuel surcharge, an environmental fee, and a disposal tonnage charge into one document; each needs its own row before it can be checked against the contract clause that governs it. Line-level structure matters because a contract sets terms at the level of a single charge type, not at the level of an invoice. A base pickup rate, a fuel surcharge, and a disposal tonnage fee each have a different clause, a different escalation schedule, and a different audit test. Assign a consistent site identifier and vendor identifier to every row before anything else happens. If two invoices reference the same physical location under slightly different site names, a spreadsheet-level match will miss the pattern entirely, even though a human glancing at both invoices would catch it in seconds. Capture the service date range on the invoice, not just the invoice date. Waste billing frequently lags the service period by several weeks, and a surcharge that changed mid-period needs the service date to test correctly.

3. How does vendor and site naming affect the audit's accuracy?

Inconsistent vendor naming is a common reason a waste audit understates drift, because a hauler that operates under two slightly different names in AP splits its spend across two vendor records, and neither record alone shows the full pattern of overbilling across sites. Standardizing vendor and site identifiers before matching begins is what makes the rest of the audit reliable. A regional hauler might appear in AP as "ABC Waste Services," "ABC Waste Services LLC," and "ABC Waste - Region 4," each tied to a different vendor ID. Every one of those records might show clean, small variances against contract. Combined, the same rate error across twelve sites adds up to something worth investigating. Before matching starts, [reconcile the vendor master](/guides/vendor-master-hygiene-and-the-duplicate-vendor-problem) against the actual contracts on file. Confirm that every vendor ID billing under a hauler's name is tied to the same master agreement, or documented as a separate one if the hauler genuinely operates under multiple contracts. Site identifiers need the same treatment. A site referenced by street address on one invoice and by an internal facility code on another will not match automatically in most systems.

4. What contract terms actually need to be extracted for testing?

Extract the base rate per container size and pickup frequency, any tiered or escalating rate schedule, the fuel surcharge formula and its reference index, the definition and cap of any environmental or regulatory fee, and the contract's rate lock or renewal date. These are the clauses a waste invoice actually tests against; everything else in the contract is boilerplate the audit does not need. Fuel surcharges are a common source of unreadable contract language in waste agreements. Many haulers tie the surcharge to a named diesel index with a formula, but the invoice line shows only a flat percentage. Extract the formula itself, not just the current percentage, since the percentage should move with the index and often does not. Environmental and regulatory fees deserve their own line in the extraction. Some contracts define these fees narrowly, tied to a specific state or local program; others leave the term undefined, which functions as an open-ended charge the hauler can adjust without amendment. Record the [rate lock period and renewal date](/guides/price-file-governance-why-annual-uploads-create-twelve) for every contract. A rate that increased outside a locked period, or increased again within days of a prior increase, is exactly the kind of pattern that only becomes visible once the dates are captured alongside the rate.

5. How do weight tickets and disposal manifests fit into preparation?

Weight tickets and disposal manifests establish an independent record of tonnage that did not originate from the vendor's own billing system, which makes them a reliable check against a disposal invoice. Where they exist, pull them alongside invoices and match by date and site; where they do not, note the gap so the audit can state plainly which tonnage figures rely solely on the vendor's own reporting. Some waste streams, particularly recycling and scrap metal, are billed on measured tonnage that only the hauler records. Without an independent weight ticket, an invoice's tonnage figure cannot be independently verified, only checked for internal consistency against prior periods. Where manifests exist, typically for regulated or hazardous waste streams, they carry a signed record of quantity that is legally required and independent of the invoice. This is general information, not legal advice; consult counsel on manifest retention obligations specific to your jurisdiction. These records are worth prioritizing in preparation because they close a gap that ordinary invoice-to-contract matching cannot close on its own. If a site generates enough tonnage-based billing to matter, and no independent weight record exists, that absence itself belongs in the audit's findings. A control gap is a legitimate finding, separate from any dollar figure.

6. What should the finished data set look like before the audit begins?

A finished data set has one row per invoice charge line, a contracted rate and term reference next to each invoiced rate, a standardized vendor and site identifier, and a documented status for every amendment and weight ticket that applies to that line. Anything missing at this stage, a clause, a signed change order, a manifest, should be logged as a gap rather than assumed, because an assumed term cannot support a finding. The test for readiness is simple: can a reviewer open a single row and determine, without leaving the spreadsheet, what the contract says this charge should be? If the answer requires pulling a separate document mid-review, the preparation step is not finished. Document every gap explicitly rather than leaving a blank cell. A blank could mean the term does not exist, was not found, or was not yet requested. Each of those has a different implication for the audit, and only an explicit note distinguishes them. Once the data set reaches this state, [invoice-to-contract testing can proceed](/guides/the-three-way-match-gap-what-your-erp-structurally-cannot) the same way it would for any other service category: line by line, against a defined term, with the basis for every flagged variance visible in the same row. For the wider pattern this sits inside, start with the [margin drift](/guides/contract-compliance-controls-p2p) guide.

Questions & Answers

How far back should we pull waste and environmental invoices for an audit?

12 to 18 months is the typical window, because that range usually covers at least one full contract rate cycle and any seasonal service changes, such as added pickups during high-volume periods. A shorter window can miss a rate escalation or a surcharge change that only shows up once a year.

What if we cannot find the signed contract for a hauler?

Request a copy directly from the vendor and note the gap in your preparation file in the meantime. Without a signed contract, there is no baseline to test the invoice against, so any variance found before the contract arrives should be treated as provisional, not a confirmed finding.

Do fuel surcharges need special handling in a waste audit?

Yes. A fuel surcharge is usually tied to a formula referencing a named diesel index, not a flat number. Extract the formula and the index it references, then compare the invoiced percentage against what the formula would produce for that billing period, rather than assuming the stated percentage is current.

How do we handle a hauler that bills under multiple vendor IDs?

Reconcile the vendor master first. Confirm which vendor IDs are tied to the same underlying contract and merge them for audit purposes, even if AP keeps them separate for payment routing. Otherwise the same rate error across sites looks like several small, unrelated variances instead of one pattern.

What counts as a red flag during data preparation, before testing even starts?

An invoice line with no corresponding contract clause, a surcharge with no referenced formula, a site billed under a name that does not match any contract on file, or a tonnage charge with no independent weight ticket. Each of these is worth flagging during preparation rather than waiting for formal testing to surface it.

Margin Drift Resources