---
title: "Reject an offer"
method: PUT
path: "/v1/carrier/offers/{identifier}/reject"
tags: ["Carrier API"]
---

# Reject an offer

`PUT /v1/carrier/offers/{identifier}/reject`

## Request

- Base URL: `https://api.oway.io`
- URL: `https://api.oway.io/v1/carrier/offers/{identifier}/reject`
- Auth: HTTP bearer and API key in header `x-oway-api-key`

Reject a pending offer with a reason.

**Required fields:** `reason` (enum) is required. `reasonText` is optional but recommended for context.

**Reason values:** `capacity_unavailable`, `outside_service_area`, `rate_not_acceptable`, `timeline_not_feasible`, `other`

**State requirement:** The offer must be in PENDING status.

## Path parameters

- `identifier` string, required

## Request body

- RejectOfferRequest: Request body for rejecting an offer
  - `reason` 'capacity_unavailable' | 'outside_service_area' | 'rate_not_acceptable' | 'timeline_not_feasible' | 'other', required: Reason for rejecting the offer
  - `reason_text` string: Additional free-text explanation for the rejection

## Response `200`

Offer rejected successfully

- Offer: Carrier offer details
  - `id` string: Unique offer identifier
  - `status` 'PENDING' | 'ACCEPTED' | 'PICKED_UP' | 'DELIVERED' | 'REJECTED' | 'EXPIRED' | 'CANCELLED': Current offer/shipment status
  - `carrier_reference` string: Carrier's own tracking reference number
  - `rejection_reason` string: Reason for rejection (populated when status is REJECTED)
  - `rejection_reason_text` string: Free-text explanation for rejection
  - `order` Order: Order details visible to the carrier
    - `order_number` string: Human-readable PRO number for the shipment (5-character alphanumeric)
    - `order_status` 'INITIALIZED' | 'CONFIRMED' | 'ACCEPTED' | 'ASSIGNED' | 'PICKED_UP' | 'IN_TRANSIT' | 'DELIVERED' | 'CANCELLED' | 'REJECTED': Current status of the order
    - `description` string: Cargo description
    - `total_pallet_count` integer: Total number of pallets
    - `total_pounds_weight` number, float: Total weight in pounds
    - `po_number` string: Shipper's purchase order number
    - `ref_number` string: Shipper's reference number
    - `components` CarrierComponent[]: Individual pallet/component details
      - `pallet_count` integer: Number of pallets in this component
      - `pounds_weight` number, float: Weight in pounds for this component
      - `pallet_dimensions` number[]: Pallet dimensions [length, width, height] in inches
      - `freight_class` string: Freight class code
    - `created_at` string, date-time: When the order was created
    - `updated_at` string, date-time: When the order was last updated
  - `pickup` CarrierAddress: Address information for pickup or delivery locations
    - `name` string, required: Name of the location or business
    - `address1` string, required: Primary street address
    - `address2` string: Secondary address line (suite, unit, etc.)
    - `city` string, required: City name
    - `state` string, required: Two-letter subdivision code: a US state, territory or DC, or the subdivision of the country the country field names.
    - `zip_code` string, required: Postal code of the location, in the format of the country the country field names: a 5-digit ZIP code for a US stop.
    - `country` string: Two-letter ISO 3166-1 alpha-2 country code of the stop. Oway serves the US and its territories, so this is one of US, PR, GU, VI, AS or MP.
    - `phone_number` string, required: Contact phone number in E.164 format
    - `contact_person` string, required: Name of the contact person at this location
    - `open_time` string: Opening time for the location in 24-hour format (HH:mm). Defaults to 10:00 if not provided.
    - `close_time` string: Closing time for the location in 24-hour format (HH:mm). Defaults to 16:00 if not provided.
    - `notes` string: Additional notes or instructions for the driver
    - `liftgate_required` boolean: Whether a liftgate is required at this location
    - `limited_access` boolean: Whether this is a limited access location (residential, construction site, etc.)
    - `appointment_required` boolean: Whether an appointment is required for pickup/delivery
    - `lumper_required` boolean: Third-party labor handles loading/unloading at this stop; the driver does not handle freight.
    - `inside_required` boolean: Freight must be brought inside the facility rather than left at the dock.
  - `delivery` CarrierAddress: Address information for pickup or delivery locations
    - `name` string, required: Name of the location or business
    - `address1` string, required: Primary street address
    - `address2` string: Secondary address line (suite, unit, etc.)
    - `city` string, required: City name
    - `state` string, required: Two-letter subdivision code: a US state, territory or DC, or the subdivision of the country the country field names.
    - `zip_code` string, required: Postal code of the location, in the format of the country the country field names: a 5-digit ZIP code for a US stop.
    - `country` string: Two-letter ISO 3166-1 alpha-2 country code of the stop. Oway serves the US and its territories, so this is one of US, PR, GU, VI, AS or MP.
    - `phone_number` string, required: Contact phone number in E.164 format
    - `contact_person` string, required: Name of the contact person at this location
    - `open_time` string: Opening time for the location in 24-hour format (HH:mm). Defaults to 10:00 if not provided.
    - `close_time` string: Closing time for the location in 24-hour format (HH:mm). Defaults to 16:00 if not provided.
    - `notes` string: Additional notes or instructions for the driver
    - `liftgate_required` boolean: Whether a liftgate is required at this location
    - `limited_access` boolean: Whether this is a limited access location (residential, construction site, etc.)
    - `appointment_required` boolean: Whether an appointment is required for pickup/delivery
    - `lumper_required` boolean: Third-party labor handles loading/unloading at this stop; the driver does not handle freight.
    - `inside_required` boolean: Freight must be brought inside the facility rather than left at the dock.
  - `tracking` CarrierTracking: Shipment tracking information
    - `order_number` string: Human-readable PRO number for the shipment (5-character alphanumeric)
    - `order_status` 'INITIALIZED' | 'CONFIRMED' | 'ACCEPTED' | 'ASSIGNED' | 'PICKED_UP' | 'IN_TRANSIT' | 'DELIVERED' | 'CANCELLED' | 'REJECTED': Current status of the order
    - `actual_pickup_date` string, date-time: Actual pickup date/time (ISO 8601 format)
    - `actual_delivery_date` string, date-time: Actual delivery date/time (ISO 8601 format)
    - `estimated_pickup_date` string, date-time: Estimated pickup date/time (ISO 8601 format)
    - `estimated_delivery_date` string, date-time: Estimated delivery date/time (ISO 8601 format)
  - `payout` Payout: Carrier payout information
    - `total_in_cents` integer: Total payout amount in cents (USD). Includes base payout plus all additional charges.
  - `currency` string: ISO 4217 currency code for payout amounts
  - `assigned_driver` Driver: Assigned driver information
    - `name` string: Driver's full name
    - `phone` string: Driver's phone number in E.164 format (e.g., +15551234567)
    - `vehicle_id` string: Vehicle identifier assigned to this shipment
  - `pickup_confirmation` PickupConfirmation: Carrier-reported pickup confirmation details
    - `pickup_time` string, date-time: Actual pickup time
    - `address` string: Formatted pickup address
    - `latitude` number, double: GPS latitude at pickup
    - `longitude` number, double: GPS longitude at pickup
    - `driver_name` string: Name of driver who picked up
    - `signed_by` string: Name of person who handed over the shipment
    - `notes` string: Additional notes about the pickup
    - `recorded_at` string, date-time: When this confirmation was recorded
  - `delivery_confirmation` DeliveryConfirmation: Carrier-reported delivery confirmation details
    - `delivery_time` string, date-time: Actual delivery time
    - `address` string: Formatted delivery address
    - `latitude` number, double: GPS latitude at delivery
    - `longitude` number, double: GPS longitude at delivery
    - `signed_by` string: Name of person who received the shipment
    - `signature_image_url` string: URL to signature image
    - `proof_of_delivery_url` string: URL to proof of delivery document
    - `notes` string: Additional notes about the delivery
    - `recorded_at` string, date-time: When this confirmation was recorded
  - `pickup_pin` string: PIN code for pickup verification
  - `delivery_pin` string: PIN code for delivery verification
  - `deadline` string, date-time: Offer expiration time — must accept or reject before this time
  - `created_at` string, date-time: When this offer was created
  - `updated_at` string, date-time: When this offer was last updated

## Other responses

- `400`: Invalid request: reason is required
- `401`: Unauthorized: missing or invalid bearer token
- `403`: Forbidden: missing/invalid API key or API access not enabled
- `404`: Offer not found
- `409`: Offer not in valid state for rejection
- `500`: Internal server error

## Changes

- **2026-11-03** `8d96932e1dc6`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/shipoway/apis/oway-carrier-api/changes/v1/carrier/offers/:identifier/reject/put.md)

---

[API](https://skmtc.dev/shipoway/apis/oway-carrier-api.md) - [All operations](https://skmtc.dev/shipoway/apis/oway-carrier-api/llms.txt) - [OpenAPI document](https://skmtc.dev/shipoway/apis/oway-carrier-api/revisions/8d96932e1dc6?raw)
