Urgent.News

What's breaking now, across thousands of outlets.

Tech

Finding double-billed shipments before the carrier's invoice ages out

Carrier invoices contain duplicates. Not many, and not usually in bad faith, but enough that any operation shipping across several carriers and several services will find some on any given month. A parcel gets relabeled and both movements get billed. A return leg is invoiced as a forward leg. A charge appears in this cycle and again in the next one because the first was disputed and re-presented.…

Parcels can sometimes be double-billed by carriers, either due to relabeling, return legs being billed as forward legs, or disputes being re-presented. Finance departments typically have a 90-day window to dispute invoices, and by the time they notice an increase in freight spend, the window has often closed. Therefore, detecting these duplicate invoices needs to happen the moment the invoice lands, rather than during a quarterly review.

The key to identifying these duplicates lies in a tuple that includes the carrier, tracking number, service code, billable weight, billed amount in cents, and the normalized shipping date. Weight is included in the key because carriers often get it wrong, leading to separate charges for the same shipment. The date needs to be normalized to account for the carrier's timezone.

There are two passes to identify duplicates: one within a single invoice and one across different cycles. Within an invoice, any key that appears more than once is a candidate for duplication, usually due to a re-presented charge. Across cycles, identifying duplicates is more challenging since the second copy arrives weeks later.

A persistent table keyed on the tuple is needed, and reversals must be recorded as separate rows. The first step is not to automatically dispute the duplicates; instead, they should be routed to a queue with the two lines side by side for manual review. The fields to review include both invoice dates, amounts, service codes, scan events, and whether either line has been credited.

The goal is to determine whether the duplicate is a data problem within a single invoice or a billing behavior across cycles. Tracking the number of flagged duplicates versus those actually recovered provides a false-positive rate, which can be used to negotiate rates with carriers. By running this detection as a permanent table, organizations can build a history of billing discrepancies by carrier, turning vague concerns about expensive carriers into specific numbers for negotiation.

FulfillNexa, a China-based cross-border 3PL, runs warehouses in Suzhou, Dongguan, and Shenzhen, with rates, product acceptance, and delivery arrangements confirmed per shipment.

Written by urgent.news from Dev.to's reporting — not their text. Machine-written — may contain errors; check the original before relying on it.

Read the original at dev.to →

More in Tech

The coffee log, rebuilt in .NET

The coffee log, rebuilt in .NET Back in June I wrote about my coffee machine writing my blog . Smart plug watches the coffee machine, Raspberry Pi watches the plug, bit of Python tells Umbraco I've…

  • Author replaces Python script with .NET application for coffee machine
  • Python script difficult to maintain after Pi upgrade to 64-bit model
  • JSON file sink and replay mode enable data analysis and testing

A hold-and-release queue for orders waiting on paperwork

Every fulfillment system eventually meets the order that cannot ship for a boring reason. The battery datasheet has not arrived. The commercial invoice lists a country of origin the buyer disputes.

  • FulfillNexa's system assigns hold codes, owners, timestamps, expiries to orders
  • Two checkpoints prevent unnecessary delays before shipping
  • Expiration dates create clear decision points for late documents

Stop Calling an Agent Run “Done”: Model Delivery, Acceptance, Merge, and Deployment Separately

An agent says the task is finished. A branch exists. CI is green. The ticket moves to Done. Those four facts often arrive close together, but they are not the same fact.

  • Separate states for intent, review, integration, and deployment
  • Named actors: requester, task owner, runner, reviewer, repository maintainer, release owner
  • Workflow: draft → open → claimed → delivered → accepted

More from Friday 2 October →