# Cancel Fulfillment — Shopify 

> Cancels a fulfillment. Run the Search for Orders action and inspect the order's fulfillments to obtain the fulfillment GID. See the documentation.

- Key: `shopify-cancel-fulfillment`
- Type: Action (Write)
- Version: 0.0.5
- App: Shopify  (`shopify`) — https://pipedream.com/apps/shopify.md
- This page (HTML): https://pipedream.com/apps/shopify/actions/cancel-fulfillment
- Hints: destructive · open-world
- Source: https://github.com/PipedreamHQ/pipedream/blob/master/components/shopify/actions/cancel-fulfillment/cancel-fulfillment.mjs

## Description

Cancels a fulfillment. Run the **Search for Orders** action and inspect the order's fulfillments to obtain the fulfillment GID. [See the documentation](https://shopify.dev/docs/api/admin-graphql/latest/mutations/fulfillmentCancel).

## Props

| Prop | Type | Required | Description |
|---|---|---|---|
| `orderId` | `string` | No | When an order GID is provided, the available fulfillments are scoped to that order's fulfillments. Retrieve order GIDs via the Search for Orders action. Options are loaded from the connected account. |
| `fulfillmentId` | `string` | Yes | The fulfillment GID to cancel, in the format gid://shopify/Fulfillment/444. Obtain it from the order's fulfillments via the Search for Orders action. If an Order ID is provided, the available fulfillments are scoped to that order. Options are loaded from the connected account. |

## Run it

**MCP**

```ts
import { Client } from "@modelcontextprotocol/sdk/client/index.js"
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js"
import { PipedreamClient } from "@pipedream/sdk"

const pd = new PipedreamClient({
  projectId: process.env.PIPEDREAM_PROJECT_ID!,
  clientId: process.env.PIPEDREAM_CLIENT_ID!,
  clientSecret: process.env.PIPEDREAM_CLIENT_SECRET!,
  projectEnvironment: "production",
})

const accessToken = await pd.rawAccessToken

const transport = new StreamableHTTPClientTransport(
  new URL("https://remote.mcp.pipedream.net/v3"),
  {
    requestInit: {
      headers: {
        Authorization: `Bearer ${accessToken}`,
        "x-pd-project-id": process.env.PIPEDREAM_PROJECT_ID!,
        "x-pd-environment": "production",
        "x-pd-external-user-id": "{external_user_id}", // any stable ID for this user in your system
        "x-pd-app-slug": "shopify",
      },
    },
  },
)

const mcp = new Client({ name: "my-agent", version: "1.0.0" })
await mcp.connect(transport)

const { tools } = await mcp.listTools()

// listTools() hands your model this tool's input schema, so it can
// fill the arguments itself:
const result = await mcp.callTool({
  name: "shopify-cancel-fulfillment",
  arguments: {
    orderId: "Order ID",
    fulfillmentId: "Fulfillment ID",
  },
})
```

**TypeScript**

```ts
import { PipedreamClient } from "@pipedream/sdk"

const pd = new PipedreamClient({
  projectId: process.env.PIPEDREAM_PROJECT_ID!,
  clientId: process.env.PIPEDREAM_CLIENT_ID!,
  clientSecret: process.env.PIPEDREAM_CLIENT_SECRET!,
  projectEnvironment: "production",
})

const result = await pd.actions.run({
  id: "shopify-cancel-fulfillment",
  externalUserId: "{external_user_id}", // any stable ID for this user in your system
  configuredProps: {
    shopify: { authProvisionId: "apn_xxxxxxx" },
    orderId: "Order ID",
    fulfillmentId: "Fulfillment ID",
  },
})

console.log(result)
```

**cURL**

```bash
curl -X POST https://api.pipedream.com/v1/connect/{project_id}/actions/run \
  -H "Content-Type: application/json" \
  -H "X-PD-Environment: production" \
  -H "Authorization: Bearer {access_token}" \
  -d '{
    "external_user_id": "{external_user_id}",
    "id": "shopify-cancel-fulfillment",
    "configured_props": {
      "shopify": { "authProvisionId": "apn_xxxxxxx" },
      "orderId": "Order ID",
      "fulfillmentId": "Fulfillment ID"
    }
  }'
```

---

- App: https://pipedream.com/apps/shopify.md · All apps: https://pipedream.com/apps
