Extract Cintas Uniform Invoices to Excel for Multi-Location AP

Extract Cintas, UniFirst, Vestis, Alsco, and Aramark Uniform invoices to Excel at line-item granularity — per-location cost allocation and GL coding for AP.

Published
Updated
Reading Time
20 min
Topics:
Industry GuidesFacility ServicesCintasuniform rentalmulti-location APGL coding

A weekly Cintas invoice for a 50-site operation typically carries 30 or more line items per location: garment rental, mat rental, restroom services, first-aid replenishment, environmental fee, fuel surcharge, lost-garment fees, size-change fees, emblem charges, damage waivers. Each line needs a GL code, a cost center, and a location tag before it can be posted into QuickBooks, NetSuite, Sage Intacct, or Microsoft Dynamics. The myCintas portal hands AP a PDF, not a working spreadsheet, and copy-pasting from PDF for fifty sites a week is the part of the AP job everyone wants to retire.

To extract Cintas invoice to excel cleanly: parse the PDF for every line item, capture the location code attached to each line, and pivot the data so every location is a row and every service type a column. That inverts Cintas's default service-type-first grouping into the per-location view AP teams need. The same shape works for UniFirst, Vestis, Alsco, and Aramark Uniform invoices because all five vendors invoice on a weekly route-stop pattern; only the line-item naming differs. The resulting spreadsheet feeds QuickBooks, NetSuite, Sage Intacct, or Microsoft Dynamics with per-location cost allocation and GL coding intact.

This is not a niche AP problem. According to TRSA's industry overview of the linen, uniform and facility services sector, the North American linen, uniform and facility services industry generates approximately $50 billion in sales annually, employs more than 200,000 people, and operates 2,580 facilities — a footprint that pushes weekly or bi-weekly route-stop invoices into the AP queues of customers across nearly every multi-location vertical. Restaurant chains, manufacturing plants, hospital networks, dealer groups, retail headquarters, hotel and hospitality operators: most of them have a Cintas, UniFirst, Vestis, or Alsco contract somewhere on the AP queue.

The article is vendor-led on Cintas because that is the brand AP staff search for; if the contract on your sites is UniFirst, Vestis, Alsco, or Aramark Uniform, the approach below is for you too.

The Cintas line-item taxonomy and the GL bucket each one usually lands in

A weekly Cintas invoice prints the same dozen-or-so categories across every site: rental lines, services, surcharges, exceptions, and the occasional one-time charge. The list below is the working taxonomy AP teams use when they sit down to extract Cintas weekly invoice line items for garment rental, mat rental, restroom and the rest into a spreadsheet, with a sensible GL bucket beside each. The choice of GL is a company-specific call driven by your chart of accounts and what the controller wants visible at month-end; this is a menu of buckets to consider, not a one-true-answer.

Line item categoryWhat it is on the invoiceTypical GL bucket
Garment rentalWeekly rental of uniform shirts, pants, lab coats, FR garments, executive wear, butcher coats, kitchen apparelUniform expense, or a wages-clothing-rental sub-account where payroll keeps it next to wages
Mat rentalScraper mats, waterhog mats, anti-fatigue mats, logo mats, swap-out frequency varies by stopFacility services, or janitorial if mats sit there in your chart
Restroom servicesSoap and sanitizer dispenser refills, paper services, restroom dispenser maintenance, air freshener cartridgesJanitorial supplies
First-aid replenishmentCabinet restock, AED battery and pad checks, eyewash bottles, safety supply replenishmentSafety, or facility services where safety supply isn't a separate account
Environmental feeA percentage surcharge applied to garment and mat services, presented as a line item per service blockCoded back to the parent service GL, or to a dedicated surcharge GL the controller wants visibility on
Fuel surchargeA per-stop surcharge tied to fuel index movementsSame choice as environmental fee — back to parent service or to a dedicated surcharge GL
Energy / safety surchargeLess frequent but appears on some routesSame choice as the other surcharges
Lost garment / ruined garmentOne-time charge per item lost or damaged beyond repairEmployee chargeback if you charge it back, shrinkage if you absorb it
Size changeCharge for swapping a garment to a different size on an existing employeeUniform expense
Emblem / monogramOne-time setup charge for adding a name patch or logoUniform expense, or a one-time setup sub-account
Damage waiver / loss waiverOptional weekly charge in exchange for waiving lost-garment costsInsurance, or risk, depending on how the controller treats it
Direct sale / consumableOne-time purchase of items kept by the site (boots, towels, paper goods)Uniform expense for apparel, janitorial supplies for paper, supplies generally for everything else
Stop charge / minimum chargeA floor charge on routes that fall below the contracted weekly minimumFacility services, with a memo flag so it surfaces in the controller's review

Vertical context matters when the same line item lands in different buckets across the chart of accounts. A manufacturing plant on FR garments will often track FR rental separately from standard industrial rental so safety can review wear patterns; the GL split lives between two sub-accounts of uniform expense. A restaurant chain typically codes kitchen apparel against COGS-prep-labor rather than uniform expense, since the apparel cost moves with shift volume. A hospital network usually splits hygiene-supply line items across per-department supply GLs (med-surg supplies, OR supplies, environmental services) rather than rolling them all into a single janitorial bucket. Cintas invoice GL coding for a multi-site operation is genuinely a chart-of-accounts decision; the value of the taxonomy is naming every category once so the conversation with the controller covers all of them.

The categories above are the same ones you'll see, in the same order they typically appear, on a UniFirst, Alsco, Vestis, or Aramark Uniform invoice — the surface naming differs (covered later) but the taxonomy is shared.

Pivot the invoice from service-type-first to location-first

The structural problem with a Cintas invoice for a multi-location operation is that the vendor groups by service type at the top level. The PDF arrives organized as a Garment Rental block with every site's weekly rental lines underneath, then a Mat Rental block with every site's mat lines, then Restroom Services, then First Aid, then surcharges. The vendor's reasoning is operational — the route driver delivers garments on one stop and mats on another — and the invoice mirrors how the service is delivered, not how AP needs to allocate the cost.

What AP needs is the inverse. Site 4427's controller wants to see Site 4427's weekly cost in one place: garment $312.40, mat $48.60, restroom $74.00, first-aid $22.50, environmental fee $18.32, fuel surcharge $9.18, total $484.00. Then Site 4428's. Then a roll-up across the region. The same data, pivoted, but pivoted off a column structure the PDF doesn't surface as columns.

Cintas invoice cost allocation per location works when the extraction shape lets the pivot happen with one PivotTable in Excel. Every row carries:

  • location_code — the four-digit site number Cintas prints on each line, or your internal site code if you've mapped them
  • location_name — the location's friendly name from your chart of accounts
  • service_type — garment rental, mat rental, restroom services, first-aid, environmental fee, fuel surcharge, lost garment, size change, damage waiver — extracted as a discrete column, not buried in the line description
  • line_description — the verbatim description Cintas prints (preserved for the audit trail and for chasing exceptions)
  • qty, unit_price, extended — the three numerical columns
  • invoice_number, invoice_date — repeated on every row so the row stands alone if exported

The column that does the work is service_type. Once it's a discrete column, the per-location pivot is one PivotTable: rows are location_code, columns are service_type, values are extended. The roll-up to region or division is one more PivotTable on top. The cost-allocation conversation with the controller stops being "let me re-read the PDF" and becomes "here's the per-site cost grid."

The structural pattern here isn't unique to uniform services. It's the same pattern that shows up in splitting a consolidated Sysco invoice across multiple restaurant locations: a vendor groups its invoice the way it delivered the service, and the AP team needs the inverse for cost allocation. Once the service-type column is extracted cleanly, the pivot is mechanical regardless of which vendor's invoice you started from.

The practical question is how the service_type column gets populated cleanly across hundreds or thousands of lines. Building it manually in Excel — picking through the PDF block headers and tagging each line — is the work the spreadsheet was supposed to eliminate. The approach that holds up at 50-site, 200-site, or 500-site volume is to extract Cintas and uniform-services invoice line items to Excel automatically using a prompt that names the column structure above and instructs the extraction to repeat the location code on every line item row. A working prompt for a Cintas weekly invoice reads roughly like this:

Extract every line item from this Cintas invoice. One row per line item. For each row, capture: location_code (the site number printed on the line), location_name, service_type (one of: garment rental, mat rental, restroom services, first-aid, environmental fee, fuel surcharge, lost garment, size change, emblem, damage waiver, direct sale, stop charge), line_description (verbatim from the invoice), qty, unit_price, extended, invoice_number, invoice_date. Repeat invoice_number and invoice_date on every row. Classify environmental fee and fuel surcharge as their own service_type values rather than rolling them into the parent service.

The same prompt, saved once, runs every week against every invoice. The output is the per-line-item, per-location spreadsheet that pivots into the per-location cost view in one step.

Isolate environmental fee, fuel surcharge, and exception charges into their own columns and rows

The line items most worth extracting into discrete columns are the surcharges. Environmental fee, fuel surcharge, and where they appear, energy surcharge and safety surcharge — these are the lines that move year-on-year independently of the underlying service. They are the lines most commonly creeping up between contract reviews; 5 to 10 percent year-on-year is not unusual. Pulling them into their own columns in the per-location pivot turns "is this surcharge moving" into a copy-down formula instead of a manual re-read of every PDF.

In practice this means the per-location pivot from the previous section gets four more columns alongside the service-type columns: environmental_fee, fuel_surcharge, energy_surcharge, safety_surcharge. Each value is the per-location, per-week amount of that surcharge, summed across whichever services it applied to (garment, mat, or both, depending on the contract). A Cintas environmental fee fuel surcharge audit becomes a quarter-over-quarter delta in those four columns rather than a forensic exercise. The numbers either drift up at the rate the contract permits, drift up faster, or stay flat — and the controller can see which without leaving Excel.

The exception charges work the other way. Lost garment, ruined garment, size change, damage waiver, loss waiver, emblem, monogram, and replacement allowance: these are one-time charges on individual lines, often tied to a specific employee or department or piece of equipment. They are also the lines a location manager will want to dispute or chase down before AP pays. Rolling them into a generic "other" bucket on the per-location pivot loses the information that lets AP route them.

The handling that works is to keep exception charges as their own rows in the underlying line-item extract, with the verbatim line_description preserved. Cintas typically prints enough detail on the line — the employee name, the garment SKU, the route stop reference — that a quick filter on service_type = lost garment (or size change, or damage waiver) gives the location manager a chase list per stop. Where the invoice prints the SSR (Service Sales Rep) name or the route stop reference on each exception line, capture those into their own columns too: ssr_name, route_stop_ref. AP gets a starting point for the dispute conversation, and the location manager gets the names and references they need to follow up before the invoice posts.

The other practical reason to isolate surcharges and exceptions is that they're the lines with the loosest contractual definition, which makes them the highest-yield targets for the rate-creep audit covered in a separate article. Surcharges quoted at "current fuel index" or "applicable environmental rate" don't have a fixed cap in most service agreements; exception charges are usually billed at list price rather than at the rental rate the negotiated contract specifies. The audit conversation only happens if the underlying data is shaped right, and the column structure above is what makes it possible.

The same approach across UniFirst, Vestis, Alsco, and Aramark Uniform

Mixed-vendor uniform contracts are the norm at any operation that has grown by acquisition or signed regional contracts at different times. A 120-site restaurant chain might have Cintas at the original sites, UniFirst at the sites that came over with a 2018 acquisition, and Vestis paperwork starting to arrive at the sites that historically billed under Aramark. The per-location-pivoted column shape from earlier works across all five — Cintas, UniFirst, Vestis, Alsco, Aramark Uniform — because all five vendors invoice on a weekly or bi-weekly route-stop pattern. Only the surface naming of line items differs.

A UniFirst invoice to excel extraction lands in essentially the same column structure as a Cintas one: location code, location name, service type, line description, quantities, prices, extended, invoice number, invoice date. UniFirst groups its rental lines slightly differently from Cintas — the company tends to break out shop apparel from executive wear earlier in the line listing, and uses its own naming for ancillary services like restroom and hygiene supply — but the categories map cleanly to the taxonomy from earlier. The same is true of Alsco uniform invoice excel extraction: Alsco's invoice convention overlaps Cintas closely on garment and mat lines, with slight divergence on restroom and hygiene-supply naming and on how stop charges are surfaced.

Vestis uniform invoice extraction is worth flagging separately because of the corporate history. Aramark spun out its uniform business as Vestis Corporation in 2023, so sites that historically received Aramark Uniform invoices now receive Vestis invoices. The line-item shape didn't change with the spinout, but the file naming and the AP routing inside many teams hasn't caught up — invoices are still filed mentally under "Aramark" by AP staff who haven't been told the parent rebranded. If your AP folder structure still has an "Aramark Uniform" subfolder, the Vestis invoices are landing in it, and they should. An Aramark uniform invoice spreadsheet today is a Vestis invoice spreadsheet, with the same per-location pivoted shape working across both pre-spinout and post-spinout paperwork.

The practical shortcut for handling multi-location uniform service invoice spreadsheet work across mixed vendors is to parameterize the extraction prompt on the vendor name. The prompt template stays the same; what changes is the vendor name and a short list of vendor-specific service-type aliases (UniFirst's executive-wear naming, Alsco's hygiene-supply naming, Vestis's legacy-Aramark line headers on older paperwork). One saved prompt per vendor, with each prompt naming the same column structure, is the operational pattern. The column structure on the output side is identical across all five vendors, which means the per-location pivot, the surcharge isolation, and the ERP import all work without per-vendor branching downstream.

This pattern — same extraction shape, different vendor surface naming — is also how AP teams handle other multi-vendor multi-site billing categories. The same shape that pivots a Cintas weekly invoice across 50 sites also supports commercial cleaning invoice extraction across locations, pest-control invoice extraction for multi-site AP, pulling managed print services invoices into Excel by device with base and overage clicks separated per location, breaking out Shred-it and Stericycle consolidated invoices by console, stop, surcharge, and medical-waste line for multi-site AP, and consolidating Mail Boxes Etc franchisee invoices into a single multi-country Excel sheet, where the location dimension is country and franchisee rather than US site code. The column-shape-first approach is what makes the work portable.

One vendor archetype to keep separate from this discussion: Aramark Refreshments, the canteen, break-room, and coffee-services business that did not move to Vestis. Aramark Refreshments invoices have a different line-item shape (consumables, equipment lease, service visits) and a different per-stop billing rhythm. They sit in a different sibling article, not this one — if the invoice lists coffee, water, snack, or canteen items, treat it as a different vendor archetype regardless of the Aramark name on the masthead.

Loading the per-location spreadsheet into QuickBooks, NetSuite, Sage Intacct, and Microsoft Dynamics

Once the line-item data is in the column structure described earlier, the import shape for each of the four major mid-market ERPs is straightforward. The minimum column set every system expects is small and uniform; what differs is what each system calls those fields and how it handles dimensional structure beyond the basics.

For Cintas invoice QuickBooks import work specifically, QuickBooks Online and QuickBooks Desktop both accept a flat-list import with location mapped to the Class field (or the Location field, where Locations are enabled), GL account mapped to Account, amount mapped to Amount, the invoice number on each row carried in the Memo or Ref field, and the invoice date as the transaction date. QuickBooks doesn't natively support the multi-dimensional cost coding NetSuite and Intacct offer; the practical workaround for multi-site operations on QuickBooks is to use Class for site and let the GL account carry the service-type distinction, with the per-line-item granularity preserved in the memo field for the audit trail.

NetSuite uses department, class, and location as three separate dimensions, all of which can be populated from a flat-list import. Most multi-site operations map physical site to Location, business unit to Department, and the service-type column to Class — which gives the controller a three-way slice (site by department by service type) without any further coding. Sage Intacct's dimension structure is similar but more flexible; companies typically configure dimensions for Location, Department, and a custom dimension for service type that maps directly to the service-type column from the per-location pivot. Microsoft Dynamics 365 Business Central and the Finance & Operations product use financial dimensions that the import file populates per row, with location, department, and (where configured) service-line as the three most common dimensions populated from a uniform-services line-item extract.

The practical structure that drops cleanly into all four is to keep the per-location pivoted spreadsheet as the working analysis tool for AP and the controller, and produce a parallel flat-list output (one row per line item with location, GL account, amount, memo, reference, date) as the actual import file. Most extraction workflows produce both shapes from the same underlying data — the per-location pivot for the cost-allocation conversation, the flat-list for the import.

The mapping from service_type to GL account is where the line-item taxonomy from earlier earns its keep. Companies running automated GL-coding rules in NetSuite or Intacct can drive the GL assignment off the service_type column directly: garment rental → uniform expense, mat rental → facility services, restroom → janitorial supplies, and so on per the chart of accounts. Companies on QuickBooks usually code the GL once in the import-mapping spreadsheet (a small lookup table beside the line-item extract) rather than running rules inside the ERP. Either way, the line-item taxonomy stops being a manual decision per invoice and becomes a deterministic lookup driven by the column the extraction populated.

This is the same column-structure-first approach that underpins broader multi-location accounts payable automation across 5 to 500 sites: the import shape that serves AP at 5 sites is the import shape that serves AP at 500. Uniform-services invoices are one of the cleaner inputs to that pattern because the line-item taxonomy is bounded — the dozen-or-so categories from earlier cover essentially the whole invoice — which makes the GL mapping rule set finite and stable across vendors.

Where the myCintas portal, GetMyInvoices, and Ottimate fit alongside this workflow

A reader who landed on this article almost certainly saw three other things on the same search results page: the myCintas portal, GetMyInvoices, and Ottimate's Cintas-named landing page. Each one solves a real piece of the AP workflow; none of them produces the per-line-item, per-location spreadsheet this article walks. Saying where each fits, honestly, is more useful than pretending they don't exist.

The myCintas portal is Cintas's own customer portal, and it does the things a vendor portal does well. AP can pull individual invoice PDFs on demand, see statement-level reconciliation across recent invoices, check payment status, and have a defensible audit trail of what was billed and when. For the conversation with the SSR about a missed pickup or a disputed line, the portal is the right tool. What the portal doesn't do is hand AP a working line-item spreadsheet at multi-location granularity. The PDF download is the input to the extraction work this article describes, not a substitute for it.

GetMyInvoices solves the cross-vendor portal-download problem. If the AP team is logging into the myCintas portal for Cintas, the UniFirst portal for UniFirst, and a Vestis portal for the rebranded Aramark sites, GetMyInvoices automates the click-into-each-portal step and pulls the PDFs into a central location. That saves the manual download work, which is real time savings if the operation runs across multiple vendor portals. The output is still PDFs, though — the line-item extraction problem this article addresses still sits downstream of whatever GetMyInvoices delivers.

Ottimate (formerly Plate IQ) is a different shape of solution. It's an AP-automation product with a vendor-portal sync feature and a Cintas-named landing page, sitting inside a broader AP-automation suite that includes invoice approval workflows, payment scheduling, and accounting integrations. For an operation ready to migrate AP wholesale onto a single platform, that's a coherent procurement decision; the product covers more than line-item extraction. For an AP team that just wants the per-location uniform-services spreadsheet next Tuesday without a multi-month rollout, it's a heavier choice than the workflow needs. The two paths aren't mutually exclusive — a team running Ottimate for AP automation can still pull out a per-line-item spreadsheet for the controller's monthly review — but the framing question is what problem you're actually trying to solve.

The DIY-spreadsheet path covered in this article sits in a specific operational slot. The portal handles download. The aggregator handles cross-vendor download. The AP-automation product handles the broader workflow if the team is replacing AP tooling end-to-end. The spreadsheet path covered here handles the per-line-item, per-location data extraction that none of those produce as a working Excel — and it's the input that makes the cost-allocation conversation, the surcharge audit, and the ERP import work cleanly regardless of which of the other tools the operation runs alongside it.

For the reader whose next question is whether the surcharges and rate increases on those invoices are legitimate, that's a different searcher with a related task — the rate-creep audit pattern lives in a sibling article, with the column structure from this one as its starting point.

Extract invoice data to Excel with natural language prompts

Upload your invoices, describe what you need in plain language, and download clean, structured spreadsheets. No templates, no complex configuration.

Exceptional accuracy on financial documents
1–8 seconds per page with parallel processing
50 free pages every month — no subscription
Any document layout, language, or scan quality
Native Excel types — numbers, dates, currencies
Files encrypted and auto-deleted within 24 hours
Continue Reading