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

# Create a movement

> Create an RTO movement by action (VAH, VAB, ISL, USL, ISC, USC).

Create a movement by action (`VAH`, `VAB`, `ISL`, `USL`, `ISC`, `USC`). Do not send a provider, configuration, or process type — both come from the shipment.

### Path Parameters

<ParamField path="id" type="string" required>
  Shipment Public ID (`shp_…`).
</ParamField>

### Headers

<ParamField header="Idempotency-Key" type="string" required>
  Unique key that makes retrying this request safe for 24 hours. A UUID is recommended.
</ParamField>

### Body

<ParamField body="action" type="string" required>
  Movement action. Allowed values: `VAH`, `VAB`, `ISL`, `USL`, `ISC`, `USC`.
</ParamField>

<ParamField body="quantity" type="integer" required>
  Number of packages (colli) moved.
</ParamField>

<ParamField body="grossWeightKg" type="number" required>
  Gross weight of those packages, in kg.
</ParamField>

<ParamField body="customsSupervision" type="string" required>
  Whether the goods are under customs supervision: `Y` (yes) or `N` (no).
</ParamField>

<ParamField body="goodsHandlingCode" type="string" required>
  PGTS goods-handling status:

  * `N` — not applicable (the ordinary case)
  * `A` — export under Inward Processing Relief (IPR)
  * `H` — trade policy measures apply in the customs-free zone
  * `B` — IPR goods subject to trade policy measures
  * `G` — goods undergo a usual form of handling in the customs-free zone
  * `C` — IPR goods that underwent a usual form of handling
</ParamField>

<ParamField body="hawbId" type="string">
  HAWB Public ID (`hawb_…`). Omit for the master AWB.
</ParamField>

<ParamField body="partyId" type="string">
  RTO party Public ID (`rpty_…`). Required for `VAH`, `VAB`, `ISL`, and `USL`.
</ParamField>

<ParamField body="customsDeclaration" type="object">
  Customs declaration for the movement. Required for `VAH`, `VAB`, `ISC` and `USC` unless one is already on file (for example, an allocation or the configured RTO licence). Not allowed for `ISL` and `USL`, which reuse the linked movement's declaration. The fields depend on `source`:

  <Expandable title="properties">
    <ParamField body="source" type="string" required>
      Where the declaration comes from. Allowed values: `INTERNAL`, `EXTERNAL`, `RTO_LICENSE`, `DECO`, `ENTREPOT`. `VAH`/`VAB` accept `EXTERNAL` or `RTO_LICENSE`; `ISC` accepts `INTERNAL`, `EXTERNAL` or `ENTREPOT`; `USC` also accepts `DECO`.
    </ParamField>

    <ParamField body="declarationId" type="string">
      `INTERNAL` only, required. Declaration Public ID (`dec_…`) on this shipment with an accepted MRN.
    </ParamField>

    <ParamField body="documentType" type="string">
      Required for `EXTERNAL` and `ENTREPOT`. PGTS document type, for example `X` (full declaration).
    </ParamField>

    <ParamField body="declarationType" type="string">
      `EXTERNAL` only, required. Declaration type, for example `IM`, `EX` or `T1`.
    </ParamField>

    <ParamField body="declarationNumber" type="string">
      `EXTERNAL` only, required. MRN or other customs reference.
    </ParamField>
  </Expandable>

  `RTO_LICENSE` and `DECO` take no other fields, and `ENTREPOT` only `documentType`: the licence or permit number comes from your RTO configuration. Any field not listed for the chosen source is rejected.
</ParamField>

<CodeGroup>
  ```json VAH theme={null}
  {
    "action": "VAH",
    "quantity": 10,
    "grossWeightKg": 400,
    "customsSupervision": "Y",
    "goodsHandlingCode": "N",
    "partyId": "rpty_3f9a1c0e5b7d4e2f8a6c1b9d0e3f7a25",
    "customsDeclaration": {
      "source": "EXTERNAL",
      "documentType": "X",
      "declarationType": "T1",
      "declarationNumber": "26NL00012345678901"
    }
  }
  ```

  ```json VAB theme={null}
  {
    "action": "VAB",
    "quantity": 10,
    "grossWeightKg": 400,
    "customsSupervision": "Y",
    "goodsHandlingCode": "N",
    "partyId": "rpty_3f9a1c0e5b7d4e2f8a6c1b9d0e3f7a25"
  }
  ```

  ```json ISL theme={null}
  {
    "action": "ISL",
    "quantity": 10,
    "grossWeightKg": 400,
    "customsSupervision": "Y",
    "goodsHandlingCode": "N",
    "partyId": "rpty_3f9a1c0e5b7d4e2f8a6c1b9d0e3f7a25"
  }
  ```

  ```json USL theme={null}
  {
    "action": "USL",
    "quantity": 10,
    "grossWeightKg": 400,
    "customsSupervision": "Y",
    "goodsHandlingCode": "N",
    "hawbId": "hawb_3f9a1c0e5b7d4e2f8a6c1b9d0e3f7a25",
    "partyId": "rpty_3f9a1c0e5b7d4e2f8a6c1b9d0e3f7a25"
  }
  ```

  ```json ISC theme={null}
  {
    "action": "ISC",
    "quantity": 10,
    "grossWeightKg": 400,
    "customsSupervision": "Y",
    "goodsHandlingCode": "N",
    "customsDeclaration": {
      "source": "EXTERNAL",
      "documentType": "X",
      "declarationType": "IM",
      "declarationNumber": "26NL12345678901234"
    }
  }
  ```

  ```json USC theme={null}
  {
    "action": "USC",
    "quantity": 10,
    "grossWeightKg": 400,
    "customsSupervision": "Y",
    "goodsHandlingCode": "N",
    "customsDeclaration": {
      "source": "INTERNAL",
      "declarationId": "dec_3f9a1c0e5b7d4e2f8a6c1b9d0e3f7a25"
    }
  }
  ```
</CodeGroup>

<ResponseExample>
  ```json 202 Accepted theme={null}
  {
    "movementId": "mov_3f9a1c0e5b7d4e2f8a6c1b9d0e3f7a25",
    "shipmentId": "shp_3f9a1c0e5b7d4e2f8a6c1b9d0e3f7a25",
    "action": "ISL",
    "status": "QUEUED",
    "processType": "IMPORT_HANDLING",
    "trigger": "API",
    "originalMovementId": null,
    "createdAt": "2026-06-10T08:30:00.000Z",
    "updatedAt": "2026-06-10T08:30:00.000Z"
  }
  ```
</ResponseExample>
