# List rebills for a shipment

`GET https://api.mothership.com/beta/rebills/by_shipment_id/{shipmentId}`

Sandbox: `https://sandbox.api.mothership.com/beta/rebills/by_shipment_id/{shipmentId}`

Lists a shipment's rebills, newest first. A shipment that doesn't exist or isn't yours is a 404, and one of your shipments without rebills is an empty list.

Pass the shipment's reference number, such as `MS5016101`. A shipment that doesn't exist or belongs to another organization is a `404 NOT_FOUND`, and one of your shipments without rebills returns an empty `results`.

Most shipments have one rebill or none. The response pages like [List rebills](https://docs.mothership.com/reference/listrebills), with `page`, `perPage`, `total` and `hasMore`.

## Authorization

Send your API token as a Bearer token: `Authorization: Bearer <token>`.

## Path parameters

- `shipmentId` (string, required): The reference number of the shipment, such as MS5016101.

## Query parameters

- `page` (integer, optional, min 1): The page of results to return, starting at 1. Defaults to 1.
- `perPage` (integer, optional, min 1, max 100): The most rebills to return on a page, from 1 to 100. Defaults to 25.

## Responses

### 200

A page of the shipment's rebills, inside `data`.

- `data` (object, required)
  - `results` (array of objects, required): The rebills on this page, newest first.
    - `id` (string, required): The ID of the rebill.
    - `referenceNumber` (string, required): The reference number of the rebill, such as MSSR5016101. A second rebill on the same shipment ends in -2.
    - `status` (string, required): Where the rebill is in its review. The Rebills reference page explains each status. One of: `scheduled`, `disputed`, `finalized`, `processed`, `waived`, `voided`, `accepted`, `failed`.
    - `shipmentId` (string, required): The reference number of the shipment the carrier billed for, such as MS5016101.
    - `proNumber` (string, required, nullable): The carrier's PRO number on the bill.
    - `amountCents` (integer, required): The total of the line items in cents.
    - `processingFeeCents` (integer, required): The carrier bill processing fee in cents, or 0 when there is none. It may apply if the rebill is finalized or a dispute is lost.
    - `totalAmountCents` (integer, required): amountCents plus processingFeeCents.
    - `currency` (string, required): Three-letter ISO currency code, in lowercase. Always 'usd'.
    - `disputableUntil` (string, required, nullable): ISO string of when the review window ends. Until then you can accept or dispute each line item, and after it the rebill is charged as billed.
    - `invoiceId` (string, required, nullable): The ID of the invoice that charges the rebill, once its review is over. Pass it to Retrieve an invoice. Null before then, and when there is nothing to charge.
    - `lineItems` (array of objects, required): The charges the carrier billed.
      - `id` (string, required): The ID of the line item.
      - `type` (string, required): The kind of charge. The Rebills reference page explains each type. One of: `bill-of-lading-correction`, `reconsignment`, `delivery-attempt`, `driver-labor`, `expedited-delivery`, `additional-freight`, `lumper-fee`, `pickup-address-change`, `pickup-attempt`, `reactivated-shipment`, `return-shipment`, `detention`, `incorrect-weight`, `liftgate-pickup`, `liftgate-delivery`, `incorrect-dimensions`, `appointment`, `residential-pickup`, `residential-delivery`, `inside-pickup`, `inside-delivery`, `excessive-length`, `commodity-class-up`, `tradeshow`, `blind-shipment`, `government-airport-gas-mine-or-refinery-delivery`, `container-freight-station-pickup`, `container-freight-station-delivery`, `storage-fee`, `amazon-distribution-center`, `call-before-delivery`, `carrier-or-service-upgrade`, `limited-truck-access-pickup`, `limited-truck-access-delivery`, `hazmat`, `toll-fee`, `freight-coverage`, `oversize-fee`, `scheduled-delivery`, `documentation`, `cancellation-fee`, `cargo-details-updated`.
      - `name` (string, required): The name of the charge, as the dashboard shows it.
      - `amountCents` (integer, required): The amount of the charge in cents.
      - `explanation` (string, required): What the charge is and why the carrier billed it, in Markdown.
      - `avoidanceGuidance` (string, required): How to avoid this charge on later shipments, in Markdown.
      - `disputeEvidence` (string, required): What a dispute of this charge needs to succeed, in Markdown.
      - `disputeRequiresDocuments` (boolean, required): Whether a dispute of this charge must include supporting documents.
      - `acceptedAt` (string, required, nullable): ISO string of when you accepted the charge.
      - `dispute` (object, required, nullable): The dispute on this line item, or null when the charge has not been disputed.
        - `id` (string, required): The ID of the dispute.
        - `lineItemId` (string, required): The ID of the line item the dispute is about.
        - `status` (string, required): Where the dispute is. The Rebills reference page explains each status. One of: `under-review`, `with-carrier`, `info-needed`, `resolved-approved`, `resolved-waived-approved`, `resolved-charged`, `withdrawn`, `voided`.
        - `reason` (string, required, nullable): The reason you picked when you disputed the charge, such as Wasn't performed.
        - `message` (string, required, nullable): Your explanation of why the charge is wrong.
        - `infoRequested` (string, required, nullable): What Mothership last asked you to send while the status was info-needed, or null when Mothership has not asked for anything.
        - `fileIds` (array of strings, required): The files you attached to the dispute. Download one with Retrieve a file.
        - `createdAt` (string, required): ISO string of when you disputed the charge.
        - `updatedAt` (string, required): ISO string of when the dispute last changed.
    - `createdAt` (string, required): ISO string of when the rebill was created.
    - `updatedAt` (string, required): ISO string of when the rebill last changed.
    - `statusUpdatedAt` (string, required): ISO string of when the status last changed.
  - `page` (integer, required): The page of results returned, starting at 1.
  - `perPage` (integer, required): The most rebills a page holds.
  - `total` (integer, required): How many rebills match, across every page.
  - `hasMore` (boolean, required): True if a later page has more rebills.

## Example request

```bash
curl --request GET \
  --url 'https://sandbox.api.mothership.com/beta/rebills/by_shipment_id/MS5016101' \
  --header "Authorization: Bearer $MOTHERSHIP_API_TOKEN" \
  --header 'Accept: application/json'
```

## Example response (200)

```json
{
  "data": {
    "results": [
      {
        "id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
        "referenceNumber": "MSSR5016101",
        "status": "processed",
        "shipmentId": "MS5016101",
        "proNumber": "1234567890",
        "amountCents": 4500,
        "processingFeeCents": 1500,
        "totalAmountCents": 6000,
        "currency": "usd",
        "disputableUntil": "2026-03-29T17:00:00.000Z",
        "invoiceId": "9b2e6d41-0c7a-4f3e-8d15-6a4c2e9f1b70",
        "lineItems": [
          {
            "id": "1b4e28ba-2fa1-4d3b-a3f5-ef19b5a7633b",
            "type": "liftgate-delivery",
            "name": "Liftgate Delivery",
            "amountCents": 4500,
            "explanation": "The driver used a liftgate to unload the freight because the delivery location had no dock.",
            "avoidanceGuidance": "Add liftgate service when you book a delivery to a location without a dock.",
            "disputeEvidence": "Proof that the delivery location has a loading dock, such as a photo or the receiver's confirmation.",
            "disputeRequiresDocuments": true,
            "acceptedAt": "2026-03-21T09:30:00.000Z",
            "dispute": null
          }
        ],
        "createdAt": "2026-03-19T17:00:00.000Z",
        "updatedAt": "2026-03-21T09:31:12.000Z",
        "statusUpdatedAt": "2026-03-21T09:31:12.000Z"
      }
    ],
    "page": 1,
    "perPage": 25,
    "total": 1,
    "hasMore": false
  }
}
```