Skip to content

WooCommerce

WooCommerce COD reconciliation: match every delivered order to its remittance

By the Veritally team · Updated · 5 min read

Quick answer

Export your WooCommerce orders and your courier's COD report for the same dates, match them by order number, and check that every delivered cash on delivery order was remitted in full, on time, under a UTR that appears in your bank statement. Delivered but not remitted after your remittance cycle, or remitted short, is money to claim.

Key points

  • WooCommerce marks COD orders with the payment method Cash on delivery (method id cod).
  • Only delivered COD parcels are owed to you. Parcels returned to origin (RTO) collect no cash.
  • Shiprocket's orders report carries your WooCommerce order number as the order ID, with the AWB, COD payable, remitted amount, CRF ID and UTR.
  • Count the remittance cycle from the delivered date, and allow a few days' grace.
  • Each remittance batch has a UTR; that is how you find it in your bank statement.

Why COD money goes missing on WooCommerce

Your WooCommerce order stays "Processing" or "Completed" whether or not the courier ever pays you the cash. The courier collects at the door, and the aggregator (Shiprocket for many stores) remits in batches. One batch pays for many orders, so a missing or short parcel hides inside a lump sum.

What to export

ReportWhereWhat it gives you
WooCommerce ordersWooCommerce, Orders (or an orders export plugin)Order number, date, total, refunds, status, payment method
Shiprocket orders reportShiprocket, Orders, ExportAWB, status, delivered date, COD payable, remitted amount, CRF ID, UTR
Delhivery or courier COD remittanceYour courier's dashboard, COD remittance reportAWB, COD amount, remitted amount, remittance date, UTR
Bank statementNet banking, Excel or CSVCredits with their UTR references

How to match, step by step

  1. Keep WooCommerce orders paid by Cash on delivery that are not cancelled or refunded in full.
  2. Match each order number to the courier report's order ID, and keep the parcels shown as delivered.
  3. Compare COD payable with the order total. A lower COD amount is a setting in your store or shipping app, not the courier's fault, but it is still money you didn't collect.
  4. Compare COD payable with the remitted amount. Equal means paid in full.
  5. Check the remitted date. Delivered, past your remittance cycle plus a few days, and nothing remitted means unpaid.
  6. Find each remittance's UTR in your bank statement and check the credit matches the batch total.

The gaps to look for

GapWhat it looks likeWho to raise it with
Delivered, not remittedDelivered, no remitted amount, past the cycleCourier or aggregator
Remitted shortRemitted amount below COD payableCourier or aggregator
COD amount below the orderCOD payable lower than the WooCommerce totalYour own store or shipping setup
RTO charged on a delivered parcelReturn freight billed on a delivered AWBCourier or aggregator
Remittance not in the bankA UTR that never shows in your statementCourier or aggregator, then your bank

Doing it every month without a spreadsheet

Matching by hand is fine for a few dozen COD orders. Above that, Veritally for WooCommerce does it inside WordPress: it reads your orders, takes the courier and bank reports you already download, and shows every gap with its evidence and a claim ready to send. See the set-up guide.

Frequently asked questions

How long does Shiprocket take to remit COD?

It depends on your plan and agreement. Check the remittance cycle in your Shiprocket account, and count from the delivered date, not the order date.

My WooCommerce order is Completed. Doesn't that mean I was paid?

No. For cash on delivery, Completed usually means delivered. Whether the courier paid you the cash is only in the remittance report and your bank.

What is a CRF ID?

Shiprocket's reference for one COD remittance batch. Many orders share one CRF ID, and the batch has one UTR you can find in your bank statement.

Do I need to share my Shiprocket login?

No. You download the reports yourself. Veritally never asks for a Shiprocket, WordPress or bank password.

Help us improve Veritally?

Essential storage keeps you signed in. With your OK, Google Analytics counts visits. No ads, and nothing from your reports is ever sent. Cookies