Retail & ecommerce / Finance

COD reconciliation: track collected cash through remittance

By Vikasraj YadavPublished 20 min read

For receivables lead with fulfilment operations · Plan implementation

TL;DR — what you’ll learn

  • Separate cash-on-delivery (COD) receivables into three distinct accounting states—`Dispatched Uncollected`, `Collected by Courier (Unremitted)`, and `Banked & Allocated`—instead of booking revenue directly against expected bank deposits.
  • Require dual proof before moving a shipment into `Collected by Courier`: both a terminal `Delivered` carrier status and a verified collection proof (`UPI/POS terminal reference` or `cash collection manifest signature`).
  • Reconcile every carrier remittance advice line by line against shipment collection records: when three deliveries collect `₹1,200.00`, `₹900.00`, and `₹1,500.00` (`₹3,600.00` total) but the bank credit is `₹3,400.00`, isolate the `₹200.00` difference into approved freight/COD fee deductions versus an unapproved courier shortfall.
  • Validate your COD receivable pipeline with three acceptance tests: delivered-without-collection-evidence quarantine, remittance shortfall dissection, and SLA-breached unremitted cash aging.

Topics: cod reconciliation · c · a · s · h · · o · n · · d · e · l · i · v · e · r · y · · r · e · c · o · n · c · i · l · i · a · t · i · o · n · ; · · c · o · u · r · i · e · r · · r · e · m · i · t · t · a · n · c · e · · r · e · c · o · n · c · i · l · i · a · t · i · o · n · ; · · C · O · D · · r · e · c · e · i · v · a · b · l · e · s

Light-ash and grey warehouse inspection counter with two dark monitors, docked handheld barcode scanners, a stainless parcel scale, unbranded kraft boxes and grey storage totes overlooking a high-bay pallet racking mezzanine.

Illustrative e-commerce returns grading and warehouse inventory reconciliation desk; not a client facility.

All quantities, amounts, product codes and events are illustrative teaching examples.

An Indian D2C footwear merchant dispatches 420 cash-on-delivery parcels through a national third-party logistics (3PL) aggregator during the first week of October. On Friday, a batch of three high-priority deliveries (AWB-9011, AWB-9012, and AWB-9013) is marked Delivered in the courier tracking portal with customer collections of ₹1,200.00, ₹900.00, and ₹1,500.00 (₹3,600.00 gross collected cash). The following Wednesday, the courier deposits ₹3,400.00 via NEFT (UTR-HDFC-778210) into the merchant's current account. Because the merchant's accounting team posts bank deposits as lump-sum journal entries against an undifferentiated COD clearing account—and also auto-marks a fourth parcel (AWB-9014, invoice value ₹1,850.00) as collected based solely on a webhook status of Delivered despite missing field-agent collection proof—two control failures occur simultaneously. First, the ₹200.00 remittance gap on the ₹3,600.00 batch (₹110.00 contracted COD handling fee plus ₹90.00 unapproved weight-dispute deduction) is written off as a generic bank charge. Second, when the carrier later amends AWB-9014 to Lost in Transit / Fake Delivery Scan, ₹1,850.00 sits stranded in the courier receivable ledger with no dispute ticket filed inside the carrier's 7-day claim window.

The operational decision for a receivables lead with fulfilment operations across D2C, marketplace merchant, and omnichannel businesses is how to track COD receivables across delivery collection and remittance batches—using structured order-level payment and COD reconciliation rules and settlement batch state verification—so every rupee is proven uncollected, held by the courier, deducted under contract, or banked (EasyEcom — Ecommerce Payment, COD, and RTO Reconciliation Workflows in India, Razorpay Documentation — Payment States, Refunds, and Settlement Dashboard (India)). By linking this control to NDR and RTO courier decision workflows and retail month-end close cut-off controls, receivables lead with fulfilment operations teams prevent downstream financial, operational, and audit breaks before records or funds move.

Why lump-sum COD clearing accounts conceal courier shortfalls and fake delivery scans

In prepaid e-commerce orders, payment authorization and capture occur before warehouse dispatch, meaning the payment gateway settlement window is short (T+1 or T+2 business days) and tied to an immutable gateway transaction ID. In cash-on-delivery (COD) fulfilment, physical custody of the parcel and financial custody of the cash are delegated to last-mile delivery agents operating across hundreds of pin-code hubs.

When finance teams lump all post-dispatch COD orders into a single COD Receivable general-ledger account and only reconcile when NEFT/RTGS bank credits arrive, four structural blind spots emerge:

  1. Conflating carrier Delivered status with verified cash collection: Last-mile field executives occasionally mark parcels Delivered at night to meet hub SLA targets while attempting actual handover the next morning—or, in worst-case hub exceptions, misreporting lost parcels as delivered. Without a verified collection proof field (cod_collection_ref, doorstep UPI collect UTR, or cash manifest receipt ID), assuming cash was collected inflates courier receivables with phantom balances.
  2. Inability to age courier-held cash against contractual remittance cycles: Most Indian 3PL and aggregator contracts specify a remittance cycle such as D+3 or Twice Weekly (Tuesday/Friday for deliveries completed 72 hours prior). If your ledger cannot separate parcels still in transit (Dispatched Uncollected) from parcels delivered four days ago (Collected Unremitted), finance cannot detect when a carrier holds collected merchant cash past the contracted settlement SLA.
  3. Netting freight, RTO penalties, and COD fees inside cash remittances: Several couriers and shipping aggregators deduct forward freight, COD collection charges, and disputed volumetric-weight surcharges directly from the merchant's COD remittance payout. Booking the net ₹3,400.00 bank deposit without decomposing the ₹3,600.00 gross collection hides unapproved carrier deductions inside revenue or bank charges.
  4. Month-end cut-off distortion across delivery and remittance dates: An order delivered on 29 October (₹1,500.00 collected by the courier) whose remittance batch settles on 3 November belongs to October sales and Collected Unremitted COD Receivable at month-end, not unfulfilled transit stock or November collections.

To maintain line-item auditability across every shipment, enforce four deterministic reconciliation equations:

  • Gross Collected COD (Batch B) = Sum of COD_Invoice_Amount(i) for all shipments i in Batch B with Verified_Delivery = True and Collection_Proof_ID != Null
  • Expected Net Remittance (Batch B) = Gross Collected COD (Batch B) - Approved_Contract_Deductions (Batch B)
  • Unexplained Remittance Shortfall (Batch B) = Expected Net Remittance (Batch B) - Actual Bank Credit (UTR_B)
  • Total Open COD Receivable = State_1 (Dispatched Uncollected) + State_2A (Delivered Pending Collection Proof) + State_2B (Collected Unremitted Within SLA) + State_2C (Collected Unremitted Overdue SLA) + State_3B (Remittance Shortfall Under Dispute)

Every shipment must transition sequentially through these states; no shipment may jump from Dispatched to Settled without passing collection-proof and line-amount verification.

Scroll horizontally to see all columns.

COD receivable sub-state Triggering operational event & required evidence Accounting & sub-ledger treatment Target aging / SLA window Mandatory exception action if SLA or evidence fails
1. Dispatched Uncollected Warehouse manifest scan + carrier AWB pickup scan (COD_Tag = True) Order remains in In-Transit COD Receivable; no courier cash liability booked yet 1 to 6 days (zone-dependent transit SLA) Trigger NDR/RTO intervention workflow if undelivered past D+6 days
2A. Delivered — Collection Proof Missing Carrier webhook reports Delivered, but collection_ref / cash manifest ID is blank Quarantined in Unverified Delivery Exception; blocked from confirmed cash ledger <= 24 hours from Delivered webhook timestamp Auto-raise carrier POD/collection proof query; block courier from closing AWB
2B. Collected — Unremitted (In SLA) Delivered status + verified collection_ref (doorstep UPI UTR or cash manifest ID) Reclassify from In-Transit to Courier Cash Held — Active Remittance Cycle Contracted cycle (e.g., D+3 business days) Include AWB in expected next remittance schedule forecast for treasury
2C. Collected — Unremitted (Overdue SLA) Verified collection age exceeds contracted D+3 remittance window with no CRF ID Flagged in Overdue Courier Receivable; escalate to carrier finance desk 0 days tolerance past D+3 cutoff (>72h–96h) Hold carrier freight invoice approval until overdue COD remittance batch settles
3. Remitted — Shortfall Disputed Bank UTR received and matched to CRF, but Net Deposit + Approved Fees < Collected Apply Actual Bank Credit + Approved Deduction; move gap to Carrier Claim Receivable <= 48 hours to file line-level carrier dispute Attach AWB collection proof, rate card, and CRF line to carrier debit note claim

By splitting Delivered — Collection Proof Missing from Collected — Unremitted and Remitted — Shortfall Disputed, the receivables lead prevents both premature cash assumptions and silent write-offs of carrier deductions.

Shipment-to-collection-to-remittance COD reconciliation state ledger Four-stage COD receivable lifecycle showing delivery collection evidence verification, shipment-level remittance batch allocation, deduction/shortfall separation, and bank UTR closure. 1. Delivery & Proof Gate AWB-9011..9013: ₹3,600 Check POD + Collection ID Hold AWB-9014 (No proof)
  <path d="M219 85 L248 85" stroke="#475569" stroke-width="1.8" marker-end="url(#arrow-r073)"/>

  <rect x="248" y="40" width="195" height="90" rx="8" fill="#fef9c3" stroke="#ca8a04" stroke-width="1.5"/>
  <text x="262" y="64" font-weight="700" fill="#854d0e">2. Courier Cash Ledger</text>
  <text x="262" y="84">Verified Collected: ₹3,600</text>
  <text x="262" y="102">Age vs D+3 Remittance SLA</text>
  <text x="262" y="118" font-size="11" fill="#475569">Expect CRF Batch Payout</text>

  <path d="M443 85 L472 85" stroke="#475569" stroke-width="1.8" marker-end="url(#arrow-r073)"/>

  <rect x="472" y="40" width="195" height="90" rx="8" fill="#ffedd5" stroke="#ea580c" stroke-width="1.5"/>
  <text x="486" y="64" font-weight="700" fill="#9a3412">3. CRF vs Bank Match</text>
  <text x="486" y="84">Bank UTR Deposit: ₹3,400</text>
  <text x="486" y="102">Gross Collected: ₹3,600</text>
  <text x="486" y="118" font-size="11" fill="#475569">Total Variance: ₹200.00</text>

  <path d="M667 85 L696 85" stroke="#475569" stroke-width="1.8" marker-end="url(#arrow-r073)"/>

  <rect x="696" y="40" width="200" height="90" rx="8" fill="#dcfce7" stroke="#16a34a" stroke-width="1.5"/>
  <text x="710" y="64" font-weight="700" fill="#166534">4. Shortfall Resolution</text>
  <text x="710" y="84">Approved COD Fee: ₹110</text>
  <text x="710" y="102">Unapproved Shortfall: ₹90</text>
  <text x="710" y="118" font-size="11" fill="#475569">Book ₹90 Carrier Claim</text>

  <rect x="24" y="166" width="872" height="164" rx="8" fill="#ffffff" stroke="#cbd5e1" stroke-width="1.2"/>
  <text x="44" y="194" font-weight="700" font-size="13" fill="#0f172a">Deterministic COD collection and remittance control gates (receivables lead + fulfilment ops)</text>
  <text x="44" y="220" fill="#334155">• Gate A: Collection Evidence Gate — Never book `Courier Cash Held` on a bare `Delivered` webhook; require `collection_ref` (UPI UTR / cash manifest).</text>
  <text x="44" y="246" fill="#334155">• Gate B: Gross-to-Net Remittance Split — Reconcile `Gross Collected (₹3,600) = Bank Credit (₹3,400) + Approved Deduction (₹110) + Open Shortfall (₹90)`.</text>
  <text x="44" y="272" fill="#334155">• Gate C: Aging & Freight-Offset Hold — Escalate any verified collection unremitted past `D+3` business days before releasing carrier freight payments.</text>
  <text x="44" y="302" font-weight="600" fill="#0369a1">Outcome: 100% shipment-level traceability from doorstep cash/UPI collection to bank UTR, isolating ₹90.00 shortfall and ₹1,850.00 unverified delivery.</text>
</g>
<defs>
  <marker id="arrow-r073" viewBox="0 0 10 10" refX="8" refY="5" markerWidth="6" markerHeight="6" orient="auto-start-reverse">
    <path d="M 0 0 L 10 5 L 0 10 z" fill="#475569"/>
  </marker>
</defs>
Four-stage COD receivable lifecycle showing delivery collection evidence verification, shipment-level remittance batch allocation, deduction/shortfall separation, and bank UTR closure.

Worked illustrative example: reconciling a ₹3,600.00 COD collection batch against a ₹3,400.00 deposit

Illustrative example (hypothetical scenario): To see how shipment-level COD reconciliation works in practice, trace four COD shipments (AWB-9011 through AWB-9014) handled by a D2C receivables team during a single weekly remittance cycle.

Step 1: Establish the baseline operational and financial parameters

  1. Shipment dispatch and doorstep collection records:
    • AWB-9011 (ORD-7101): COD invoice value ₹1,200.00. Marked Delivered on 10 October (14:15 IST) with verified doorstep UPI collection reference UPI-428391004122.
    • AWB-9012 (ORD-7102): COD invoice value ₹900.00. Marked Delivered on 10 October (16:40 IST) with verified cash manifest receipt CM-BLR-88219.
    • AWB-9013 (ORD-7103): COD invoice value ₹1,500.00. Marked Delivered on 11 October (11:20 IST) with verified doorstep UPI collection reference UPI-428419882310.
    • AWB-9014 (ORD-7104): COD invoice value ₹1,850.00. Marked Delivered on 11 October (21:55 IST), but collection_ref is NULL and no hub cash handover scan exists.
  2. Remittance batch (CRF-2026-1015) and bank credit details:
    • On 15 October, the carrier issues COD Remittance File CRF-2026-1015 covering AWB-9011, AWB-9012, and AWB-9013 (Gross Collected = ₹1,200.00 + ₹900.00 + ₹1,500.00 = ₹3,600.00).
    • The merchant's bank statement shows an NEFT deposit (UTR-HDFC-778210) of ₹3,400.00 against CRF-2026-1015, leaving a ₹200.00 gross-to-net difference.

Step 2: Reconcile states, exceptions, and financial or compliance impact

Now apply the governed COD reconciliation workflow to separate unverified deliveries, verified collections, approved contract deductions, and disputable carrier shortfalls:

  • Quarantining AWB-9014 (₹1,850.00) at Gate A: Because AWB-9014 lacks collection evidence (collection_ref = NULL), the system blocks it from entering Collected by Courier (₹3,600.00 verified pool) and holds ₹1,850.00 in State 2A: Delivered — Collection Proof Missing. Fulfilment operations triggers an immediate POD and hub-cash audit with the carrier rather than waiting for next week's remittance file.
  • Verifying the ₹3,600.00 collected pool: Shipments AWB-9011 (₹1,200.00), AWB-9012 (₹900.00), and AWB-9013 (₹1,500.00) pass Gate A and enter State 2B: Collected — Unremitted totaling ₹3,600.00.
  • Decomposing the ₹200.00 remittance deduction on CRF-2026-1015: Under the signed carrier rate card, the contracted COD collection fee is ₹35.00 per parcel for AWB-9011 and AWB-9012 plus ₹40.00 for AWB-9013 (Total Approved COD Handling Deduction = ₹35.00 + ₹35.00 + ₹40.00 = ₹110.00). However, the carrier also withheld an additional ₹90.00 on AWB-9013 (₹1,500.00 collected, ₹40.00 approved fee, ₹1,370.00 remitted instead of ₹1,460.00) citing an unverified volumetric weight penalty.
  • Posting the split accounting entries: Finance clears ₹3,600.00 from Collected — Unremitted COD Receivable by posting ₹3,400.00 to Bank Current Account, ₹110.00 to Approved COD Collection Fee Expense, and ₹90.00 to State 3B: Disputed Carrier Shortfall Receivable (AWB-9013), preserving the exact ₹90.00 claim until the carrier issues a credit settlement.

Scroll horizontally to see all columns.

Shipment / Batch ID Carrier status & proof ID Gross COD invoice (₹) Verified collected (₹) Banked + approved fee (₹) Open exception balance & ledger state
AWB-9011 (ORD-7101) Delivered + UPI-428391004122 ₹1,200.00 ₹1,200.00 ₹1,165.00 bank + ₹35.00 fee ₹0.00 — Closed & Reconciled (CRF-2026-1015)
AWB-9012 (ORD-7102) Delivered + CM-BLR-88219 ₹900.00 ₹900.00 ₹865.00 bank + ₹35.00 fee ₹0.00 — Closed & Reconciled (CRF-2026-1015)
AWB-9013 (ORD-7103) Delivered + UPI-428419882310 ₹1,500.00 ₹1,500.00 ₹1,370.00 bank + ₹40.00 fee ₹90.00 — State 3B: Disputed Carrier Shortfall
Batch CRF-2026-1015 Total 3 verified shipments ₹3,600.00 ₹3,600.00 ₹3,400.00 bank + ₹110.00 fee ₹90.00 net unapproved shortfall isolated
AWB-9014 (ORD-7104) Delivered — Proof ID = NULL ₹1,850.00 ₹0.00 (Unverified) ₹0.00 ₹1,850.00 — State 2A: Collection Proof Missing

Verified scenario calculation summary

  • Verified_Collected_COD_Batch (CRF-2026-1015) = ₹1,200.00 (AWB-9011) + ₹900.00 (AWB-9012) + ₹1,500.00 (AWB-9013) = ₹3,600.00
  • Gross_to_Net_Remittance_Gap = ₹3,600.00 (Verified Collected) - ₹3,400.00 (Bank UTR Deposit) = ₹200.00 total deduction
  • Approved_Contract_COD_Fees = ₹35.00 (AWB-9011) + ₹35.00 (AWB-9012) + ₹40.00 (AWB-9013) = ₹110.00
  • Unapproved_Disputed_Shortfall (AWB-9013) = ₹200.00 (Total Deduction) - ₹110.00 (Approved Fees) = ₹90.00
  • Expected_vs_Actual_AWB_9013_Net = ₹1,500.00 - ₹40.00 = ₹1,460.00 expected vs ₹1,370.00 remitted = ₹90.00 shortfall
  • Quarantined_Unverified_Delivery (AWB-9014) = ₹1,850.00 held in State 2A (Delivered - Collection Proof Missing)

Instead of writing off ₹200.00 as an opaque bank fee and losing track of AWB-9014 (₹1,850.00), the receivables lead books the exact ₹110.00 contracted fee, isolates the ₹90.00 unapproved deduction on AWB-9013 with rate-card proof, and forces an immediate carrier investigation on AWB-9014 within 24 hours of the suspect delivery scan.

Standard operating workflow for shipment-level COD reconciliation

To eliminate unmonitored COD clearing balances, enforce four sequential control steps across fulfilment operations and accounts receivable:

  1. Ingest carrier delivery webhooks with mandatory collection-proof validation (Owner: Fulfilment Operations Lead). Configure your order management or shipping aggregator feed to parse both the delivery status (Delivered) and the doorstep collection artifact (UPI reference, POS slip ID, or hub cash receipt ID). Route any Delivered COD parcel missing a collection artifact into the 24-Hour Proof Exception Queue before accounting reclassifies the receivable.
  2. Maintain a daily aging sub-ledger of collected but unremitted cash by carrier (Owner: Receivables Analyst). Group all verified Collected — Unremitted shipments by carrier and delivery date, comparing each parcel's elapsed days against the carrier's contracted remittance cycle (e.g., D+3 business days). Generate an automated daily aging report showing In-SLA Unremitted Cash versus Overdue Unremitted Cash.
  3. Allocate remittance advice files (CRF) line by line against bank credits and rate cards (Owner: Receivables Lead). When a bank NEFT/RTGS credit (UTR) arrives, match the UTR total to the carrier's CRF batch total, and then verify each AWB's remitted amount (₹3,400.00 deposit against ₹3,600.00 collected). Automatically post deductions that match contracted rate-card rules (₹110.00) and shunt any excess deduction (₹90.00) or under-remitted AWB into Disputed Carrier Shortfall.
  4. Enforce weekly carrier dispute resolution and freight-payment offset governance (Owner: Receivables Lead + Finance Controller). Review all open items in State 2A (Proof Missing), State 2C (Overdue Unremitted), and State 3B (Shortfall Disputed) every Tuesday before approving carrier freight invoices. Require formal credit notes or supplemental remittances from the carrier before closing any disputed COD balance.

Choosing the right reconciliation architecture: A controlled batch ledger template in your ERP or spreadsheet environment can suit a merchant working with a single courier and fewer than 500 COD orders per month. Once you ship across multiple carriers or an aggregator with differing remittance file schemas and freight-offset practices, deploy an automated feed adapter and exception queue that normalizes AWB-level collection and CRF records before posting to the general ledger.

Data lineage, exception handling, and system configuration boundaries

Before deploying this workflow across d2c; marketplace merchant; omnichannel operations, receivables lead with fulfilment operations teams must lock down four structural specifications that govern how records move from source capture to final sign-off:

  • Authoritative input data contract: Every run of this workflow must ingest and version-stamp the required source fields: shipment ids; delivery/collection evidence; cod amount; remittance advice; approved deductions; bank credits. Do not allow downstream summaries or manual adjustments to bypass these primary inputs; if a required identifier, timestamp, or supporting document reference is absent from the feed, hold the record in a pre-posting staging queue rather than interpolating missing values.
  • Deterministic exception quarantine rule: Operational streams routinely encounter edge cases that violate standard matching assumptions—specifically, a delivery status says delivered but has no collection evidence; retain the discrepancy rather than assuming cash was collected. Rather than forcing an automated override or silently netting out the discrepancy, isolate the anomalous record in a dedicated exception state with its full supporting evidence bundle attached for human review.
  • Pragmatic system architecture and tooling choice: A batch ledger can suit one carrier; use a feed adapter and exception queue for multiple report formats. Avoid over-engineering custom integration code before the underlying business rules, approval limits, and exception classifications are proven stable in a controlled operating model.
  • Verifiable acceptance and audit standard: The workflow is only considered production-ready when each collected amount is banked, supported by an approved deduction or explicitly outstanding. Furthermore, before any external reporting or policy reliance, require joint sign-off from the designated process owner and specialist reviewer confirming that all sample calculations, state transitions, and exception queues reconcile to primary source queries.

Operational governance and audit controls for sustained compliance

To prevent this workflow from eroding after the initial implementation sprint across define collection evidence; reconcile shipment and amount; allocate remittance batches; investigate shortfalls; age by state, embed four recurring governance checkpoints into your weekly retail operations cadence:

  1. Version-locked rule and threshold tables: Store every tolerance band, status-transition rule, and exception-routing map in a versioned configuration table rather than ad-hoc personal spreadsheets. Any threshold change requires sign-off from receivables lead with fulfilment operations and commercial finance, recording the effective timestamp and the cohort of transactions or accounts affected.
  2. Automated daily orphan and stale-state sweep: Run a scheduled morning query that flags records stuck in an intermediate state (Pending Verification, Awaiting Evidence, Held for Review, or Disputed) beyond their agreed service-level cutoff. Route aged exceptions directly to the named role owner before period-close or regulatory cutoffs are breached.
  3. Separation of operational execution from financial or compliance sign-off authority: Staff who execute operational entries, catalogue updates, or customer service actions should never have unilateral system permission to clear reconciliation variances, alter legal mappings, or post financial write-offs. Require independent review once cumulative adjustments exceed your materiality floor.
  4. Monthly root-cause retrospective tied to source-system hygiene: Aggregate exception logs by upstream root cause—such as missing remittance references, unversioned rate-card changes, or unmapped channel fields—and require the responsible upstream team to remediate the top three recurring defects before the next monthly cycle.

Bounded pilot scope, baseline measurement, and stop/recovery criteria

Because this workflow alters operational control gates across finance and financial reconciliation, run a bounded 30-day pilot in one category, carrier, or vendor cohort before enabling enterprise-wide enforcement:

Scroll horizontally to see all columns.

Pilot governance dimension Bounded design parameter Accountable owner Verification evidence required before expansion
Bounded pilot scope One primary COD courier partner (e.g., Surface/Express 3PL lane, ~1,200 COD shipments over 30 days) across all D2C storefront COD orders. Receivables lead with fulfilment operations Signed scope charter naming the exact carrier, vendor cohort, or channel group and excluding automated general-ledger postings until parallel reconciliation passes.
Pre-change baseline window 30-day historical COD shipment extract measuring unverified Delivered scan count, average days from delivery to bank UTR (D+N), and unitemized remittance write-offs (₹). Receivables lead with fulfilment operations + commercial finance analyst Locked 30-day historical baseline extract recording denominator counts, exception rates, and manual rework hours prior to rule activation.
Stop and recovery triggers Pause automated ERP voucher creation and revert to supervised batch posting if UTR-to-CRF totals diverge by >₹1.00 or if carrier webhook latency exceeds 12 hours. Receivables lead with fulfilment operations + IT systems administrator Tested rollback procedure that pauses automated holds or queue transitions within 30 minutes, preserves raw event logs, and reverts to supervised manual review.

During the pilot window, hold a weekly joint review between receivables lead with fulfilment operations, fulfilment or receiving operations, and commercial finance to inspect every quarantined exception record. Do not expand the rule set to additional cohorts or automate ledger adjustments until the pilot achieves zero unexplained reconciliation breaks across two consecutive weekly cut-offs.

Observable acceptance tests for your retail systems

Before relying on this workflow in production, execute three deterministic acceptance tests (ACT-R073-01 to ACT-R073-03) in your staging environment or controlled worksheet:

Scroll horizontally to see all columns.

Test ID Scenario setup Action executed in system Expected pass criteria Failure indicator
ACT-R073-01 Inject a carrier Delivered webhook for COD shipment AWB-9014 (₹1,850.00) with cod_collection_ref = NULL and cash_manifest_id = NULL. Run the daily COD state transition job. System blocks AWB-9014 from entering Collected — Unremitted (State 2B), places ₹1,850.00 in State 2A (Collection Proof Missing), and creates a carrier POD query ticket. System moves AWB-9014 into Collected by Courier based solely on the Delivered status string.
ACT-R073-02 Load verified collections for AWB-9011 (₹1,200.00), AWB-9012 (₹900.00), and AWB-9013 (₹1,500.00) totaling ₹3,600.00, with contracted COD fees of ₹110.00, and ingest a CRF + bank UTR deposit of ₹3,400.00. Execute the CRF-to-UTR allocation engine. Engine matches ₹3,400.00 cash and ₹110.00 approved fee, and isolates the remaining ₹90.00 on AWB-9013 in State 3B (Disputed Carrier Shortfall). Engine posts the entire ₹200.00 variance to bank charges/freight expense or fails to balance the ₹3,600.00 receivable.
ACT-R073-03 Advance the system clock to D+5 business days for a verified collected shipment (AWB-9020, ₹1,450.00) under a contracted D+3 remittance SLA with no CRF match. Run the morning COD aging sweep. System reclassifies AWB-9020 (₹1,450.00) into State 2C (Collected — Unremitted Overdue SLA) and places a hold flag on the carrier's pending freight bill. Shipment remains hidden in generic Open COD Receivables without an SLA breach alert.

Putting shipment-level COD reconciliation into practice

To bring full visibility to your COD receivables across courier collection and bank remittance batches, take these four actions this week:

  1. Split your general-ledger COD clearing account into distinct state sub-ledgers: Separate Dispatched Uncollected, Delivered Pending Collection Proof, Collected Unremitted, and Disputed Remittance Shortfalls so treasury and operations never confuse parcels in transit with cash held by couriers.
  2. Mandate collection proof fields on every Delivered COD webhook: Require your shipping aggregator or 3PL integration to pass the doorstep UPI reference or hub cash-receipt ID before any shipment is recognized as collected cash.
  3. Audit your last four carrier remittance files against contracted fee schedules: Decompose every gross-to-net remittance deduction (e.g., ₹3,600.00 collected vs ₹3,400.00 banked) to quantify how much unapproved freight or weight-dispute leakage was previously buried in bank charges.
  4. Link overdue COD remittance aging directly to carrier AP invoice release: Institute a hard finance rule that no 3PL freight invoice is approved for payment while that carrier holds verified COD collections past its contracted D+3 remittance window.

Discuss this workflow

Assess COD receivable states and one carrier's remittance exceptions with NextEdge Labs to eliminate unverified delivery assumptions and unapproved remittance shortfalls.

START A CONVERSATION

Let’s talk about your next build.

Prepare your brief below, then review and send it in your email app to sales@nextlabsonline.com.

SELECTED INDUSTRYRetail & ecommerce

Article: COD reconciliation: track collected cash through remittance · Finance

THE FIRST CONVERSATION

Your product idea, AI opportunity or automation challenge—and a useful first milestone.

All fields are required.

A few sentences about the problem, your users and timing are enough.

We’ll use your details to respond to your enquiry. Please don’t include patient records, passwords or confidential information. Privacy Policy · Website Terms.

References

Sources checked 15 October 2026. Vendor documentation supports platform facts; the worked examples and diagrams are original.

About the author

Vikasraj Yadav writes about operational decisions, software and automation for NextEdge Labs.