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.