---
title: "Look Up Shipment"
method: POST
path: "/shipments/lookup"
tags: ["Shipments"]
---

# Look Up Shipment

`POST /shipments/lookup`

## Request

- Base URL: `https://api.whop.com/api/v1`
- URL: `https://api.whop.com/api/v1/shipments/lookup`
- Auth: none required

Finds the delivery for a purchase from an account with customer tracking turned on, using exactly one order or tracking number plus the buyer's current receipt email. No authentication is required and no sign-in or session is created. Email matching ignores case and surrounding whitespace, but dots and +tags must match. Every miss returns the same 404: an unknown account, tracking turned off, a wrong number or email, an unpaid order or a purchase with nothing to ship. `shipment` is `null` while a paid physical purchase has no tracking yet. Limited to 30 attempts per five minutes per client IP. Responses are never cached or replayed with Idempotency-Key.

## Headers

- `Idempotency-Key` string

## Request body

- object
  - `account_id` string, required: The selling account, prefixed `biz_`.
  - `email` string, email, required: The buyer's current receipt email.
  - `order_number` string: The payment ID prefixed `pay_`, or the order number printed on the receipt (optional leading `#`). Supply this or `tracking_number`, not both.
  - `tracking_number` string: The exact carrier tracking number. Supply this or `order_number`, not both.

## Response `200`

shipment found

- ShipmentLookup
  - `payment_id` string, required: The matching payment, prefixed `pay_`.
  - `shipment` Shipment, required
    - `account_id` string, required: The account that owns this shipment, prefixed `biz_`.
    - `carrier` string, nullable, required: The shipping carrier detected for this shipment. Null until a tracking update identifies it.
    - `checkpoints` ShipmentCheckpoint[], required
      - `location` string, nullable, required: Where the carrier recorded the scan, such as `PHILADELPHIA, PA`. Null when the carrier sent none.
      - `message` string, nullable, required: Carrier's description of the scan, such as `Departed USPS Regional Facility`. Null when the carrier sent none.
      - `status` 'unknown' | 'pre_transit' | 'in_transit' | 'out_for_delivery' | 'delivered' | 'available_for_pickup' | 'return_to_sender' | 'failure' | 'cancelled' | 'error', required: Delivery status this carrier scan maps to.
      - `timestamp` string, nullable, required: When the carrier recorded the scan, as an ISO 8601 timestamp. Null when the carrier sent no scan time.
    - `created_at` string, required: The datetime the shipment was created (ISO 8601).
    - `id` string, required: Shipment ID, prefixed `ship_`.
    - `payment_id` string, required: The payment this shipment fulfills, prefixed `pay_`.
    - `status` 'unknown' | 'pre_transit' | 'in_transit' | 'out_for_delivery' | 'delivered' | 'available_for_pickup' | 'return_to_sender' | 'failure' | 'cancelled' | 'error', required: The current delivery status of this shipment.
    - `tracking_number` string, required: The carrier-assigned tracking number used to look up shipment progress.
    - `tracking_url` string, required: A customer-facing URL to track this shipment's progress.
    - `updated_at` string, required: The datetime the shipment was last updated (ISO 8601).

## Other responses

- `400`: Invalid Parameters
- `404`: Resource not found
- `409`: Conflict

## Changes

> 201 revisions in range; 1 not diffed.

- **2026-10-22** `73c7f0b84253`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/whop/apis/whop-api/changes/shipments/lookup/post.md)

---

[API](https://skmtc.dev/whop/apis/whop-api.md) - [All operations](https://skmtc.dev/whop/apis/whop-api/llms.txt) - [OpenAPI document](https://skmtc.dev/whop/apis/whop-api/revisions/2af1a3aa41c9?raw)
