Cash on delivery total calculator
Know exactly what the courier should collect at the door: goods of 120, shipping of 15 and a COD fee of 5 make a collect total of 140, with a 135 subtotal for order and delivery. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Goods value
- 120
- Shipping
- 15
- Cod fee
- 5
- Goods plus shipping
- 135
- Total collect
- 140
Cash on delivery (COD) is still a major payment method in many ecommerce markets: the customer pays when the parcel arrives, and the courier must know the exact amount to collect. That figure is not only the product price—it usually includes shipping and a COD fee or surcharge the merchant or carrier charges for handling cash or card at the door. This cash on delivery total calculator accepts goods value, shipping, and COD fee, then returns the courier collect total and a goods-plus-shipping subtotal so warehouse slips, SMS reminders, and COD manifests stay consistent. Use any currency unit you already track; the tool does not convert FX—it only adds non-negative amounts and rounds to two decimal places for stable money totals.
What a COD total is and why goods, shipping, and fee are separate
Cash on delivery total—also called the courier collect amount or amount to be collected—is the money the delivery agent should receive from the recipient before handing over the package. Merchants often break that total into three ledger lines. Goods value is the merchandise subtotal: the sum of item prices after product-level discounts but before shipping and payment-method surcharges.
Shipping is the freight or delivery charge the customer agreed to pay, which may be zero under free-shipping thresholds. The COD fee is an extra charge for accepting payment at delivery: some carriers bill a flat collection fee, some bill a percentage of the invoice, and some merchants absorb it while still listing a zero fee for transparency. Keeping the three inputs separate matters for accounting and customer communication.
Finance teams post goods to revenue, shipping to freight income or contra-expense, and COD fees to payment-processing income or carrier cost recovery. Support agents need the same split when a customer asks why the courier asked for more than the product price shown on the product page. Operationally, the collect total is what goes on the airway bill, the COD slip, and the SMS that says “please keep X ready.”
Where a cash on delivery total calculator earns its keep
Ecommerce operations teams use a cash on delivery total calculator when printing COD manifests so every bag leaves the warehouse with the same collect amount the customer was shown at checkout. Marketplaces and multi-warehouse sellers need a deterministic oracle that sums goods, shipping, and COD fee the same way across storefront, OMS, and last-mile partner APIs. Call-centre and WhatsApp support bots can recompute the collect total when a shopper disputes what the courier requested, without opening a spreadsheet.
Finance and logistics analysts reconcile carrier remittance files against order history by replaying the three components through the same formula instead of reverse-engineering pasted totals. Failed validation does not consume balance. Document how you derive the COD fee in runbooks, store currency next to each order, and you get reproducible courier collect amounts for packing slips, SLA audits, and edge workers without standing up a full payments engine of your own.
What you can do with it
Checkout and SMS reminders
Show the courier collect total after adding shipping and COD surcharge so shoppers prepare the right amount before delivery.
FAQ
How is the cash on delivery total calculated?
All amounts use the same currency units you supply.
Does this tool compute the COD fee from a percentage?
No. Pass the fee you already calculated from your carrier or policy. The calculator only adds goods value, shipping, and that fee so results stay deterministic.
Can shipping or the COD fee be zero?
Yes. Enter zero for shipping when the order ships at no charge, and zero for the fee when cash on delivery costs the customer nothing or you absorb it. Negative amounts are not accepted.
Why is the courier asking for more than the product price?
Because the collect amount usually adds shipping and the cash on delivery fee to the goods. Goods of 120, shipping of 15 and a fee of 5 mean the courier collects 140, not 120.
Which currency should I use for a COD total?
Any currency you already track, as long as all three amounts use the same one. The calculator does not convert between currencies; it adds the amounts and rounds the result to two decimal places.
Related tools
For developers — API access
Everything on this page is available programmatically. This section is for teams who want to wire it into their own systems; everyone else can just use the tool above.
API endpoint
Prefer to automate it? One authenticated POST creates the task; the result comes back by webhook or a signed link. The same capability also runs here on the web, by email and from Telegram — and soon from our app too.
Call it from your stack
curl -X POST https://api.kit.forhosting.com/ecom/cod-total \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"goods_value":120,"shipping":15,"cod_fee":5}'const res = await fetch("https://api.kit.forhosting.com/ecom/cod-total", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"goods_value": 120,
"shipping": 15,
"cod_fee": 5
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/ecom/cod-total",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"goods_value": 120,
"shipping": 15,
"cod_fee": 5
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/ecom/cod-total", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"goods_value":120,"shipping":15,"cod_fee":5}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"goods_value":120,"shipping":15,"cod_fee":5}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/ecom/cod-total", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"goods_value": 120,
"shipping": 15,
"cod_fee": 5
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "ecom.cod_total",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}The API is asynchronous: the call returns a task_id immediately and the result arrives by webhook. Polling is capped at 1 req/s per task.
Pricing
Published price — no tokens, no invented credits. A failed task is never charged.
Errors
| HTTP | Code | Meaning |
|---|---|---|
401 | unauthorized | Missing or invalid API key. |
402 | insufficient_balance | Your balance doesn't cover the task price. |
404 | unknown_type | That task type doesn't exist. |
429 | rate_limited | Too many requests. Use the webhook instead of polling. |
Technical notes
What a COD total is and why goods, shipping, and fee are separate
This calculator implements the standard sum total_collect equals goods_value plus shipping plus cod_fee, and also returns goods_plus_shipping so labels can show “order and delivery” separately from the payment surcharge. It does not invent a COD fee from a percentage table: you pass the fee you already computed from your carrier contract or rate card, which keeps the endpoint deterministic and free of hidden policy rules.
Input contract, response fields, and validation behaviour
Extremely large amounts above one trillion in absolute magnitude are rejected as out of range. A short formula string restates the rule for display next to the result. POST a JSON body with three required non-negative finite numbers: goods_value (merchandise or order goods subtotal), shipping (freight or delivery charge; use zero for free shipping), and cod_fee (cash-on-delivery fee or surcharge; use zero when COD is free). Each field may arrive as a JSON number or as a numeric string; missing fields, empty strings, non-finite values, and negatives fail with invalid_input naming the field, and those failures are not billed. On success the body echoes the three inputs rounded to two decimal places, reports goods_plus_shipping as goods_value plus shipping, and total_collect as goods_plus_shipping plus cod_fee—the amount the courier should collect. Example: goods one hundred twenty, shipping fifteen, COD fee five yields goods_plus_shipping one hundred thirty-five and total_collect one hundred forty. Pair the response with your own currency code and locale formatting; this endpoint never converts currencies or applies tax rates—VAT, GST, and duties must be folded into the inputs if they belong in the cash the rider collects. Aliases such as order_value, freight, and collection_fee are accepted for convenience. Keep requests small, pin the two-decimal totals in tests, and reuse the same module in browser and API so free previews match prepaid automation byte-for-byte on every COD slip.
Integration use cases
COD packing slips and manifests
Print goods, shipping, COD fee, and total_collect on every slip so riders and customers see the same cash-to-collect figure.
Remittance reconciliation
Replay order components through total_collect = goods + shipping + COD fee when matching carrier settlement files to orders.
Technical questions
Can shipping or the COD fee be zero?
Yes. Use shipping 0 for free delivery and cod_fee 0 when you do not charge a collection surcharge. Negatives are rejected as invalid_input.
Which currency should I use?
Any single currency your order already uses. The endpoint does not convert FX or attach a currency code; format the numbers in your UI with your own locale rules.
What does the cash on delivery total calculator cost?
The browser tool is free. API requests use prepaid KIT balance at $0.002 per successful call; invalid input is not billed.