Accounting for cash on delivery: how to track your money and cash flow
Practical way to organize cash on delivery accounting: track amounts held at delivery companies, settle returns, calculate real monthly profit through a simple table.
What is cash on delivery accounting and why does it differ from ordinary accounting?
Cash on delivery accounting isn't an ordinary sales log because in this model the sale doesn't complete at order time but at parcel delivery when you collect payment. Between the two moments your money passes multiple stages: confirmed order not yet shipped, parcel in transit, amount collected but pending at the shipper, return back to you with no revenue. Someone logging order as revenue the moment it arrives draws a fake financial picture, may be shocked that bank balance doesn't reflect sales dashboard at all.
So cash on delivery accounting rests on one rule: money counts as revenue only when actually collected and reaching you, all costs — including return shipping for rejected parcels — are charged against the full batch not the successful order alone. Goal of this guide is to give you a simple system you run in one table: track amounts held at the shipper, settle returns, calculate real monthly profit at month's end without illusions.
Why does your balance fool you? The cash gap in cash on delivery
What confuses most merchants most is the time gap between their spending and money arriving. You pay ad costs daily, buy product, pay confirmation and packing wages, all before a cent reaches you. Cash lags: parcel ships, then delivers days later, then the shipper holds the amount days before sending it to you in weekly or ten-day batches. This gap is the heart of managing cash flow in cash on delivery.
Result is a large chunk of capital is always "stuck": either goods in parcels on the road, or cash collected waiting to transfer. Anyone not tracking this held amount may think they're losing when money is fine just not arrived yet, or — worse — may reinvest proceeds not yet in their account, suddenly breaking cash flow even though on-paper sales are great.
How do you track amounts held at the delivery company?
Tracking shipper money starts by giving each order a clear financial status, then matching your log against the company statement regularly. Idea is to know at any moment how much you're owed and hasn't transferred yet, how much is exposed to loss in returns. Follow these steps:
- 1Give each order one of five financial statuses: confirmed not shipped, shipped in transit, delivered and collected, transferred to account, or returned.
- 2Log each order's ship date and expected delivery date to know which amounts should transfer soon and which are delayed.
- 3Keep a column called "Amount Due" = sum of delivered collected orders not yet transferred to your account.
- 4Match shipper statement against your log weekly: confirm every delivered parcel has a corresponding transfer, every deducted fee is justified and no delivered parcel was counted as returned.
- 5Chase parcels stuck long (neither delivered nor returned) before they become silent loss; this is the most-forgotten line item.
| Order status | Financial meaning | Where money is now |
|---|---|---|
| Confirmed not shipped | Possible commitment, no revenue | No money yet |
| Shipped in transit | Expected cash not certain | Your goods on the road |
| Delivered and collected | Cash owed to you | Held at delivery company |
| Transferred to account | Real available cash | In your account |
| Returned | Shipping loss, no revenue | Back to you loaded with fees |
How do you settle returns in your accounts?
Returns are the line item that most distorts profit if missed. Rejected parcel gives zero revenue only, it loads you with its shipping cost, in many contracts you pay both-way shipping. So matching collected amounts isn't enough; you must explicitly settle returns by deducting their cost from your proceeds, verify the shipper didn't charge you return fee for a parcel actually delivered.
Practical settlement is simple: match each returned parcel in the shipper statement against an order in your log, calculate its return fee, remove its price from "Amount Due" because it will never collect. Track return rate monthly; sudden spike signals ad exaggeration or weak phone confirmation, not just a bookkeeping number.
How do you calculate real monthly profit through a simple table?
At month's end don't calculate profit from order count, but from amounts actually collected after deducting all costs against the full batch. One table with two columns — category and amount — turns chaos into clear number. The table below is assumed example for illustration only; replace its numbers with your store's:
| Category | Amount |
|---|---|
| Amounts actually collected (210 delivered) | +735000 |
| Product cost for delivered | −252000 |
| Delivery fees on delivered orders | −94500 |
| Cost of shipping rejected parcels (90 rejected) | −27000 |
| Ad budget | −210000 |
| Platform and tool fees | −15000 |
| Monthly net profit | =136500 |
What accounts do you separate to manage cash flow?
Managing cash flow in cash on delivery is far easier when you separate money into buckets that don't mix, so you don't count receivables as available, or reserves as profit. Adopt this quick list:
When you need one place pooling your orders instead of scattered pages, SymplysisAI's built-in ecommerce store in every plan gives a unified log making matching and accounting easier. Free plan starts with one store and up to 50 monthly orders, no card, Lite plan raises it to 400 monthly orders, higher plans offer more stores and unlimited orders. AI generators — landing page, ad copy, poster, Arabic voiceover — copy from SymplysisAI into your Shopify, YouCan or Lightfunnels store. Generators are paid within plans starting around $15 monthly; see pricing page to pick the fit for your order volume.
- Receivables: price of delivered orders not yet transferred from shipper — your money but not in hand.
- Available cash: what actually landed your account, only source for funding ads and stock.
- Returns reserve: amount set aside upfront to absorb rejection losses, untouched in scaling.
- Fixed monthly costs: platform, tools, subscriptions, deduct first of month before profit calc.
- Net profit: what remains after all above, only amount counted as real gain available to withdraw.
Questions and answers
Do I log order as revenue when I confirm it?
No. In cash on delivery order becomes revenue only after delivery, collection and money reaching your account. Logging confirmed orders as revenue gives fake profit picture because some will reject or delay. Log them as "possible receivables," move to revenue only when actually collected.
How do I track amounts held at the delivery company?
Give each order a financial status (shipped, delivered and collected, transferred, returned), keep a column "Amount Due" summing delivered collected orders not yet transferred. Match shipper statement against your log weekly to confirm each delivered parcel has a matching transfer and charges are correct.
How do I calculate real profit after returns?
Start from actually collected amounts this month, not order count, deduct them: product cost on delivered, shipping fees on delivered, cost of shipping returns, ad budget, platform fees. Result is net profit. Returns count as full cost because they load shipping with no revenue against it.
How often do I match my accounts with the shipper?
Weekly minimum. Delayed matching makes spotting errors — parcel delivered counted returned, inflated fee, short transfer, lost parcel — harder and costlier. Weekly matching keeps "Amount Due" accurate, gives clear cash flow view before errors pile up.
What's the difference between profit and available cash in hand?
Profit is accounting number appearing month-end after deducting all costs, available cash is what actually landed your account right now. You can be profitable yet suffer tight liquidity because money is stuck in uncollected parcels. Separate receivables from available cash, spend only from the second.