Understanding How to Work With Faded Yellow Cab Receipts

Most people throw away their taxi receipts. I've been collecting them for about seven years now, mostly because I realized they contain data that standard ride-hailing apps don't give you anymore. The old-school yellow cab receipts from New York are paper records with magnetic strip information, QR codes that sometimes still scan, and heat-ink timestamps that fade differently depending on how the paper was stored. The first thing you need to know is that not all receipts are created equal. Pre-2015 taxis used thermal paper with dot-matrix printing. The driver would punch in the fare, time, and mile reading before tearing the receipt off the roll. After 2015, the city mandated digital payment terminals, and the receipts changed to printer-based thermal paper with different ink formulations. If you're trying to decode something old, the 2015 cutoff matters more than you'd think.

The New York Taxi Receipt Decoding The Paper Trail Of The City That Never Sleeps

The decoding process starts with visual inspection, but the real work happens in the metadata. Take the medallion number printed at the top left. It's a four to six digit identifier that corresponds to a specific cab license. You can cross-reference this against public TLC (Taxi and Limousine Commission) records, though the database only goes back to around 2013 with any reliability. Before that, medallion ownership records were paper-based and harder to trace. The QR code on modern receipts is where things get interesting. It encodes the trip ID, which is a unique alphanumeric string. If you photograph it clearly, you can parse the JSON payload. I've written a small Python script using the `pyzbar` library that reads the QR code and extracts the trip details. The payload typically includes the medallion number, trip timestamp, fare amount, and sometimes the starting coordinates. Here's roughly what the structure looks like: ``` {"trip_id":"T20240315-001847","medallion":"M22D8","pickup_time":"2024-03-15T08:47:00Z", "fare":14.50,"tolls":2.00,"tip":3.00} ``` This is useful for expense reports, audit trails, or just reconstructing where you've been. But there's a catch. The QR code format changed between 2018 and 2020. Old receipts use a different encoding scheme, and the `pyzbar` approach won't work on them. You need to switch to a manual hex dump of the QR data and parse it according to the TLC spec, which is publicly available but not well documented.

What Most People Miss About These Receipts

The fare breakdown on the receipt tells you more than the total. Look at the "Meter Reading" line. It shows the distance traveled in miles, usually to two decimal places. This is the actual metered distance, not the GPS-calculated route that Uber and Lyft show you. The difference can be significant in Manhattan, where traffic patterns distort GPS routing but the meter runs on actual wheel rotation. Another thing I found useful but that nobody talks about: the dispatcher surcharge. On receipts from pre-2015 cabs, there's often a line item for "Dispatcher Fee" added when you call for a ride rather than hailing on the street. This was $0.50 for many years and got folded into the base fare during the 2015 digitization. If you're comparing old receipts to new ones, this line item disappears and can make direct fare comparisons confusing. The serial number at the bottom of the receipt roll is another data point. It's a sequential identifier for the physical receipt book. I once used this to track down a missing receipt by contacting the medallion holder directly. The driver had kept the unused portion of the same roll, and the serial numbers confirmed we were looking at the same physical book. It took three phone calls and about twenty minutes to resolve. This kind of thing only works if the receipt is relatively recent and the medallion is still active.

Edge Cases That Will Trip You Up

Thermal paper degradation is the biggest problem. Receipts stored in drawers or wallets for more than a couple years will fade. The ink doesn't disappear uniformly — the fare and tip usually stay legible longer than the timestamp. I learned this the hard way when I tried to extract trip data from receipts I'd kept since 2016. About 40 percent of them were too faded for the QR code to scan at all. The workaround I ended up using was a combination of image enhancement and OCR. I took photos of the faded receipts with good lighting, ran them through a simple contrast-stretch algorithm in Photoshop, and then used Tesseract OCR with a custom-trained model for the receipt font. It's not perfect. The success rate dropped to about 60 percent even with enhancement, and the character recognition errors were random enough that you still need to verify key fields manually. Another edge case: duplicate receipts. Some drivers print two copies — one for the passenger and one for the cab's records. These will have identical trip IDs but slightly different serial numbers from the roll. If you're building a dataset, you need deduplication logic that checks the trip ID, not the serial number. I've seen people accidentally include both in their analysis and wonder why their trip counts are inflated.

Tools and Approaches That Actually Work

For digitized receipts (post-2015), a simple QR scanner app will give you the raw data. For the old thermal paper receipts, I recommend the Tesseract approach I mentioned, paired with a spreadsheet where you log each field and flag anything that doesn't look right. The human verification step is non-negotiable if you care about accuracy. There are also commercial services that specialize in receipt digitization. They charge per receipt and use a mix of OCR and human review. For bulk processing, it can be worth it. But if you're doing this for personal records or a small project, the DIY approach with free tools gets you 80 percent of the way there. One more thing: the TLC publishes annual trip data by medallion. If you have the medallion number, you can look up aggregate statistics like total trips and average fare. This won't give you individual trip details, but it's useful for validation. If your decoded receipt shows 500 trips in a single month for a medallion that the TLC data says averages 800 trips per year, something is off. The paper trail of a city like New York isn't just about nostalgia. These receipts are primary sources for understanding how urban transportation actually works — the routes people take, the fares they pay, the times of day they travel. The data is there if you know how to read it. Most people just throw them away.