Pickups can be tricky due to the fact all carriers have their own set of practices, routes, and rates. Each carrier has their own timeframes for each zip code for when they will allow you to schedule a pickup. This adds a lot of complexity to standardizing pickup times due to the variability of availability between zip codes combined with different rules imposed by each carrier. This article will outline some of the best practices when working with pickups through the EasyPost API.
The Pickup object allows you to schedule a pickup from your carrier from your customer's residence or place of business. For more visit our API Documentation.
Best Practices With Pickups
- It is recommended to schedule your pickup window 2-4 hours long. If you specify too long of a pickup window, or too short of a pickup window an error may be thrown by the carrier when trying to buy a pickup.
- It is usually best to schedule pickups during business hours. Some carriers may pick up after hours, but most will only pick up during 8am-5pm.
- Pickup availability and price are heavily based on the following factors
- Location
- Day of the week
- Service level
- Carrier
- You cannot change a pickup request. To change a request, you must cancel the original request and create a new pickup.
After you successfully create a pickup, you should see a pickup_rates object in the JSON response. This rate shows the price of the pickup with the carrier you are using.
"pickup_rates": [
{
"mode": "test",
"service": "Future-day Pickup",
"rate": "10.52",
"currency": "USD",
"created_at": "2020-06-02T17:43:51Z",
"updated_at": "2020-06-02T17:43:51Z",
"carrier": "UPS",
"pickup_id": "pickup_...",
"id": "pickuprate_...",
"object": "PickupRate"
}
]
The next step is to purchase the pickup. Below is a response of a successful purchase of a pickup:
{
"id": "pickup_...",
"object": "Pickup",
"created_at": "2020-06-02T17:43:51Z",
"updated_at": "2020-06-02T17:52:49Z",
"mode": "test",
"status": "scheduled",
"reference": "I'm a Pickup",
"min_datetime": "2020-06-03T08:00:00Z",
"max_datetime": "2020-06-03T12:00:00Z",
"is_account_address": false,
"instructions": "Package will be on the porch.",
"messages": [],
"confirmation": "2929602E9CP",
"address": {
"id": "adr_...",
"object": "Address",
"created_at": "2020-06-02T17:43:51Z",
"updated_at": "2020-06-02T17:43:51Z",
"name": "Jake",
"company": null,
"street1": "345 California Street",
"street2": "Fl 10",
"city": "San Francisco",
"state": "CA",
"zip": "94104",
"country": "US",
"phone": "6094120178",
"email": null,
"mode": "test",
"carrier_facility": null,
"residential": null,
"federal_tax_id": null,
"state_tax_id": null,
"verifications": {}
},
"carrier_accounts": [],
"pickup_rates": [
{
"mode": "test",
"service": "Future-day Pickup",
"rate": "10.52",
"currency": "USD",
"created_at": "2020-06-02T17:43:51Z",
"updated_at": "2020-06-02T17:43:51Z",
"carrier": "UPS",
"pickup_id": "pickup_...",
"id": "pickuprate_...",
"object": "PickupRate"
}
]
}
After you successfully purchase the pickup, you will see a status of “scheduled”. As long as this status says “scheduled”, the pickup is still planned to occur. If the status changes to “cancelled”, that means the pickup was cancelled by the carrier for some reason such as the driver couldn’t make it to you on their route, etc. If the pickup does get cancelled, the carrier will not charge you for it, but you will need to schedule another pickup. If we are unable to determine the status of a pickup from the carrier, it will be marked as “unknown”.
Information in regards to FedEx pickups:
- Express pickups can be scheduled SAME DAY
- Express same day latest pickup time request is variable but rule of thumb is before 14:00 (the same day)
- Ground pickups need to be scheduled for the NEXT DAY
- Cut times are variable but rule of thumb is before 17:00 (the previous day)
- The ready time must be the same or after the time of the API request; not prior to the request. For example, if you are sending a request to create a pickup at 2pm, then the ready time must be 2pm or after. If you use an 8am value, the request will fail for same day pickup.
Also, FedEx doesn't respect the “max_datetime”, they only look at the time and assume it's the same day, so if you pass in a “min_datetime” of today at 2pm, and a “max_datetime” of tomorrow at 10am, that won't work, because FedEx will think you're passing the max_datetime before the min_datetime
Information in regards to USPS pickups:
- USPS does not support scheduling pickups more than a day in advance. No matter how you set min and max datetime they will come next-day.
- USPS pickups are free of charge