What you'll build
A shipping option that lets customers pay cash when their parcel is delivered, visible only to customers in the countries where your carrier actually supports cash collection. Customers outside those countries will not see the option at all — no confusing unavailable states, just a clean checkout.
Before you start
- You are using a checkout provider that supports COD: Qliro, Walley, or Kustom. Shopify's native checkout does not support cash on delivery through Shipit — if you use Shopify Checkout, this option is not available.
- Your carrier offers a COD service in the target country. Confirm this in the Shipit Catalog before proceeding.
- You have an existing delivery checkout configuration for the target market.
Step 1 — Create a shipping option for COD
Navigate to Delivery Checkout → Shipping Options and click Add Shipping Option.
| Field | Value |
|---|---|
| Name | Pay on delivery |
| Description | Pay cash when your order arrives |
| Service code | home-delivery-cod |
| Base price | Your carrier's COD rate (carriers typically charge a handling fee) |
| Currency | Target market currency |
Select the COD-capable carrier service from the Shipit Catalog. Services that support cash collection are marked in the catalog — if the service does not list COD capability, the carrier will not accept the collection instruction.
Step 2 — Enable cash on delivery
The is_cod flag has no toggle in the shipping option form. It must be set via the Shipit API or enabled in bulk by your Shipit account manager when configuring a COD carrier service. Once set, the flag is preserved through all subsequent form saves and does not need to be re-applied.
Tip: If you are unsure whether your carrier service has the COD flag enabled, contact Shipit support. A method without the flag will not pass the collection instruction to the carrier even if the rule allows it to appear in checkout.
Step 3 — Restrict by destination country
Add a rule that hides the option for customers outside your supported market.
| Rule field | Value |
|---|---|
| Condition type | destination_country |
| Operator | notSameAs |
| Value | DE (replace with your target country ISO code) |
| Action type | disable_method |
| Conditions match | all |
| Priority | 10 |
| Is active | true |
Tip: To support COD in multiple countries, add one condition per country code, set the operator to
notIn, and list the supported country codes. Set Conditions match toallso the option hides only when the destination is outside all supported countries.
How it works
At checkout, Shipit evaluates the destination country from the customer's delivery address. If the country does not match your supported market, the disable_method rule fires and the COD option is removed from the list of options returned to the checkout provider. Customers in the supported country see it normally and can select it like any other delivery method.
When the customer completes their order, Shipit creates a shipment with the COD flag set. The carrier picks up the parcel from your warehouse, delivers it to the customer, collects payment (cash or card depending on the carrier), and remits the collected amount to you minus any handling fees per your carrier contract.
Trade-offs to consider
| Factor | Cash on Delivery |
|---|---|
| Customer reach | Extends to customers without payment cards or who distrust online payments |
| Fraud risk | Higher — customers may refuse delivery; you bear return shipping cost |
| Handling fee | Carriers typically charge €1–4 per COD parcel |
| Remittance delay | Carrier remits collected funds on a schedule (weekly/monthly) |
| Failed delivery | If customer is absent or refuses, the parcel returns to you unfulfilled |
Warning: COD is not a Shipit-level payment method. Shipit passes the collection instruction to the carrier — the actual collection, fraud risk, and remittance are governed entirely by your carrier contract. Review your contract terms before enabling COD for high-value orders.
Testing it
- In a test checkout session, set the delivery address to your target country. Confirm the "Pay on delivery" option appears.
- Change the delivery address to a different country. Confirm the option disappears.
- Complete a test order using your carrier's sandbox environment and verify the COD flag appears on the generated label data.
If the option does not hide correctly, confirm the country code in your rule matches the ISO 3166-1 alpha-2 format your checkout provider sends (e.g., DE not Germany).
