> ## Documentation Index
> Fetch the complete documentation index at: https://apidocs.returnhelper.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Create FBA shipment

Registers one or more inbound FBA shipments — i.e. tells Return Helper "Amazon dispatched a removal order with this tracking number to this warehouse, expect it." This is metadata-only: it doesn't create a label or trigger a physical action; it lets the warehouse correlate an arriving parcel to your removal order when it shows up.

## When to call

* After you create a Removal Order in Amazon Seller Central (or via the SP-API), once you have a tracking number from the carrier Amazon assigned.
* For each shipment within a removal order — Amazon often splits a single removal order into multiple parcels with different tracking numbers; create one FBA shipment per tracking number.

## Required fields

Each entry in `createFbaShipmentPayloadList`:

* **`trackingNumber`** — non-empty, single-line, must match a recognised tracking-number format. **Globally unique** — you cannot reuse a tracking number that's already on a non-expired FBA shipment record.
* **`removalOrderId`** — Amazon's removal order ID (e.g. `WS-1234567`). Single-line, valid format.
* **`warehouseId`** — The warehouse that the FBA is shipping to, must be a warehouse your account is authorised for. Discover via [Get all warehouses accessible to user](/api-reference/warehouse/get-all-warehouses-accessible-to-user).

## Cross-payload rules

* **No duplicate `trackingNumber` within a single batch.**
* **Same `removalOrderId` must always map to the same `warehouseId`** within the batch — you can't say "removal order WS-1 → warehouse 5" and "removal order WS-1 → warehouse 7" in the same call.

## Side effects

* An `FbaShipment` record is created per payload, linking the tracking number, removal order, and destination warehouse.
* When the parcel physically arrives, the warehouse uses these records to match it and trigger the `fbaShipmentArrived` webhook.
* No label is generated — you're not shipping; Amazon is.

## Related

* [Get FBA shipment details](/api-reference/fbashipment/get-fba-shipment-details) — fetch a single record by `fbaShipmentId` if a webhook event references one you don't have cached.
* [Create FBA instructions](/api-reference/fbainstruction/create-fba-instructions) — once a parcel has arrived (signalled by webhook), instruct the warehouse what to do with the inventory (dispose, recall, replenish, etc.).
* [Webhooks](/webhooks) — the FBA shipment lifecycle (arrival, instruction completion, etc.) is delivered exclusively via webhook events.


## OpenAPI

````yaml post /api/Fba/FbaShipment/create
openapi: 3.1.0
info:
  title: Return Helper API
  description: API documentation for Return Helper — covering User and Public endpoints.
  version: 1.0.0
servers:
  - url: https://api.returnshelper.com/uat/user
    description: Sandbox — User API
  - url: https://api.returnshelper.com/uat/public
    description: Sandbox — Public API
  - url: https://api.returnhelpercentre.com/v1/user
    description: Production — User API
  - url: https://api.returnhelpercentre.com/v1/public
    description: Production — Public API
  - url: https://api.returnhelperchina.com/user
    description: Production — User API (China)
security:
  - ApiKey: []
    ApiToken: []
paths:
  /api/Fba/FbaShipment/create:
    post:
      tags:
        - FbaShipment
      summary: Create FBA shipment
      operationId: ReturnUserApi_FbaShipment_Create
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UserCreateFbaShipmentRequest'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GeneralList_UserCreateFbaShipmentReply'
        '401':
          description: >-
            Authentication failed. Returned when the `x-rr-apikey` or
            `x-rr-apitoken` header is missing or invalid. The body uses the
            standard `ApiResponse` envelope with `meta.error.message` describing
            the auth failure.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponse'
      security:
        - ApiKey: []
          ApiToken: []
      servers:
        - url: https://api.returnshelper.com/uat/user
          description: Sandbox — User API
components:
  schemas:
    UserCreateFbaShipmentRequest:
      type: object
      properties:
        createFbaShipmentPayloadList:
          type: array
          items:
            $ref: '#/components/schemas/CreateFbaShipmentPayload'
          description: List of FBA shipment creation payloads
      required:
        - createFbaShipmentPayloadList
    GeneralList_UserCreateFbaShipmentReply:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/UserCreateFbaShipmentReply'
          description: List of created FBA shipments
    ApiResponse:
      type: object
      description: >-
        Universal response envelope. Successful responses include the business
        payload as additional top-level fields alongside `correlationId` and
        `meta`. Failed responses (auth errors, validation errors) only populate
        `correlationId` and `meta`, with `meta.errorCode` and `meta.error`
        describing the failure.
      properties:
        correlationId:
          type:
            - string
            - 'null'
          description: >-
            Unique correlation ID for tracing the request through Return Helper
            systems.
        meta:
          $ref: '#/components/schemas/ApiResponseMeta'
    CreateFbaShipmentPayload:
      type: object
      properties:
        removalOrderId:
          type: string
          description: Amazon removal order ID
        trackingNumber:
          type: string
          description: Shipment tracking number (converted to uppercase)
        warehouseId:
          type: integer
          description: Warehouse where the FBA shipment will be received
      required:
        - trackingNumber
        - warehouseId
    UserCreateFbaShipmentReply:
      type: object
      properties:
        fbaShipmentId:
          type: string
          format: uuid
        apiId:
          type: integer
          format: int32
        warehouseId:
          type: integer
          format: int32
        fbaShipmentStatusCode:
          type:
            - string
            - 'null'
        removalOrderId:
          type:
            - string
            - 'null'
        trackingNumber:
          type:
            - string
            - 'null'
        arrivalOn:
          type:
            - string
            - 'null'
          format: date-time
        createOn:
          type: string
          format: date-time
    ApiResponseMeta:
      type: object
      description: >-
        Application-level metadata for every API response. Inspect `status` and
        `errorCode` to detect soft-error responses (validation failures arrive
        as HTTP 200 with `meta.status: 400`).
      properties:
        status:
          type: integer
          description: >-
            Application-level status code. For successful operations this
            mirrors the HTTP status (e.g. 200). For validation failures it
            reports the logical status (e.g. 400) even though the wire HTTP
            status is 200.
        data:
          type: object
          additionalProperties:
            type: string
          description: Reserved free-form metadata key/value pairs. Usually empty.
        errorCode:
          type:
            - string
            - 'null'
          description: >-
            Machine-readable error code (e.g. `VALIDATION_FAILED`). Non-null
            only when the operation failed.
        error:
          type: object
          additionalProperties: true
          description: >-
            Field-level or message-level error detail keyed by request property
            name. Empty object on success.
  securitySchemes:
    ApiKey:
      type: apiKey
      in: header
      name: x-rr-apikey
      description: Your API key
    ApiToken:
      type: apiKey
      in: header
      name: x-rr-apitoken
      description: Your API token — keep this private

````