What FedEx Ground Collect Means, and How to Ship It

FedEx Ground Collect means the receiver pays the freight, not you. The charges are billed to the recipient's FedEx account number, which you have to know and send with the shipment. FedEx calls the payment type COLLECT, and it applies to the transportation charges on a FedEx Ground shipment.

Nobody hands the driver money. "Collect" here is a billing instruction, not a payment at the door — that is COD, which is a different thing entirely and a common mix-up.

Who uses it, and why#

Collect exists for inbound shipping. A big-box retailer — Walmart, Target, Home Depot — tells its vendors in a routing guide that inbound freight moves on the retailer's carrier account, and gives them the account number to bill. The vendor ships collect, the retailer gets its own negotiated rate, and the vendor's invoice never sees the charge.

If a customer has sent you a routing guide with a FedEx account number on it, this is the page you want.

The four ways a FedEx shipment can be billed#

payment_type Who is billed What you need
sender Your account (the default) Nothing
recipient The receiver's account Their FedEx account number
collect The receiver, as a collect shipment Their FedEx account number
third_party Someone who is neither shipper nor receiver Their account number, country and company

recipient and collect both end up on the receiver's invoice. FedEx treats them as distinct payment types, and "Ground Collect" is the one retailers name in a routing guide. Send the one you were given rather than assuming the two are interchangeable.

Collect is not COD#

Collect on Delivery (COD) is a service where the FedEx driver collects a payment — cash, cheque or money order — from the recipient before handing over the package, and FedEx remits it to you. It is about paying for the goods.

Collect billing decides which FedEx account gets invoiced for the shipping. No money changes hands at the door.

They are requested differently too: COD is an addon on the shipment, collect billing is a billing entry. Asking for one when you meant the other is the single most common mistake on this feature, which is why the API example is named "Ground Collect (Not COD)".

The request#

Add a billing entry of type transportation with payment_type collect and the receiver's account number:

{
  "carrier": "FedEx-REST",
  "action": "submitshipment",
  "params": {
    "key": "your-key-from-authenticate-request",
    "billing": [
      {
        "type": "transportation",
        "payment_type": "collect",
        "account": "abc123"
      }
    ],
    "packages": [
      {
        "width": 14,
        "length": 11,
        "height": 8,
        "weight": 5,
        "reference_code": "P_O_NUMBER",
        "reference_value": "abc123"
      }
    ],
    "shipper": "Acme Inc",
    "ship_addr1": "123 Main St.",
    "ship_city": "Vancouver",
    "ship_state": "WA",
    "ship_code": "98685",
    "ship_phone": "123-123-1234",
    "ship_country": "US",
    "to_name": "Big Box Store",
    "to_addr1": "123 Fake St.",
    "to_city": "New Hyde Park",
    "to_state": "NY",
    "to_code": "11040",
    "to_country": "US",
    "test": true
  }
}

That becomes shippingChargesPayment.paymentType: "COLLECT" with the account you supplied as the responsible party. Most routing guides also require a purchase-order number on the label, which is what the reference_code / reference_value pair above is for — see Reference Numbers on a Shipping Label.

account is the only field collect needs. country_code is accepted for international collect shipments where FedEx wants the payor's country.

Rating a collect shipment#

The FedEx Rates API will not quote it. FedEx only accepts the SENDER payment type on rate requests, so a billing entry with collect, recipient or third_party is ignored on getallrates and the quote you get back is the price on your account. Sending it anyway would fail with RATE.PAYMENTTYPE.NOTALLOWED.

This is a FedEx limit, not a RocketShipIt one, and it means the rate you can show internally for a collect shipment is not the rate the receiver will be billed — they pay on their own negotiated rates, which you cannot see. Pass the same billing entry on submitshipment and the label is billed correctly regardless. See Inaccurate Rates?.

Duties on international collect shipments#

Transportation and duties are billed separately. A second billing entry of type duties decides who pays customs charges, and it takes the same payment types plus third_party:

"billing": [
  { "type": "transportation", "payment_type": "collect", "account": "abc123" },
  { "type": "duties", "payment_type": "recipient" }
]

Without a duties entry FedEx bills duties and taxes to the sender.

The UPS equivalent#

UPS does not use the word "collect" for parcel shipments — the equivalent is bill receiver, and it needs the receiver's postal code as well as the account number:

"billing": [
  {
    "type": "transportation",
    "payment_type": "recipient",
    "account": "A1B2C3",
    "postal_code": "11040"
  }
]

RocketShipIt sends both to UPS as BillReceiver, so a routing guide that gives you only an account number is not enough for a UPS shipment — ask for the receiver's postal code too. ("Freight collect" on UPS means something narrower: a payer type on Ground Freight Pricing.)

Examples#

Further reading: FedEx Ground Collect on fedex.com, and every billing parameter in Parameters.