<!-- BusyBot node reference — https://busybot.net/tools/magento/ -->

> Node: Magento 2 (`magento`) · Action · v1
> Category: Sales · Credentials: Magento 2 API (`magento2Api`)
> Updated: 2026-08-16

# Magento 2

> Manage Magento 2 customers, products, orders, and invoices.

## Overview

Magento 2 is an open-source e-commerce platform. This tool allows creating, reading, updating, and deleting customers and products, managing orders (get, cancel, ship), and creating invoices through the Magento 2 Admin REST API. It uses bearer token authentication and supports advanced filtering with Magento search_criteria.

**Category:** Sales  
**Tool Name:** `magento`  
**Version:** 1

**Appearance:** Icon: `lucide-CircleDollarSign` | Color: `#F26322`

## Node Type

**Action** — processes input items and produces output

## Input / Output

| Direction | Port(s) |
|-----------|--------|
| Input | `Input` |
| Output | `Output`, `Error` |

## Credentials

This tool requires **Magento 2 API** credentials.
See the [Credentials Guide](https://busybot.net/credentials/magento2-api/) for setup instructions.

### Resources

| Resource | Value |
|----------|-------|
| Customer | `customer` |
| Invoice | `invoice` |
| Order | `order` |
| Product | `product` |

### Operations

Which operations are available depends on the selected resource — see the parameter subsections below.

| Operation | Value | Description |
|-----------|-------|-------------|
| Create | `create` | Create a new customer, invoice or product |
| Delete | `delete` | Delete a customer or product |
| Get | `get` | Get a single customer, order or product |
| Get Many | `getAll` | Get many customers, orders or products |
| Update | `update` | Update a customer or product |
| Cancel | `cancel` | Cancel an order |
| Ship | `ship` | Ship an order |

### Parameters

#### Customer: Create

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Email | `string` | Yes | — | Email address of the customer to create. |
| First Name (`firstname`) | `string` | Yes | — | First name of the customer to create. |
| Last Name (`lastname`) | `string` | Yes | — | Last name of the customer to create. |
| Additional Fields | `collection` | No | `{}` | — |
| — Addresses | `fixedCollection` | No | `{}` | — |
| — — Street | `string` | Yes | — | — |
| — — City | `string` | Yes | — | — |
| — — Region | `string` | No | — | — |
| — — Postal Code | `string` | Yes | — | — |
| — — Country | `string` | Yes | — | Two-letter ISO country code (e.g. US, GB, DE). Find codes at https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2. |
| — — Company | `string` | No | — | — |
| — — Fax | `string` | No | — | — |
| — — First Name | `string` | Yes | — | — |
| — — Last Name | `string` | Yes | — | — |
| — — Middle Name | `string` | No | — | — |
| — — Prefix | `string` | No | — | — |
| — — Suffix | `string` | No | — | — |
| — — Telephone | `string` | Yes | — | — |
| — — Default Billing | `boolean` | No | `false` | Whether this address is the default billing address. |
| — — Default Shipping | `boolean` | No | `false` | Whether this address is the default shipping address. |
| — Amazon ID | `string` | No | — | — |
| — Confirmation | `string` | No | — | — |
| — Custom Attributes | `fixedCollection` | No | `{}` | — |
| — — Attribute Code | `string` | No | — | The custom attribute code. Find available codes via the Magento API: GET /rest/default/V1/attributeMetadata/customer. |
| — — Value | `string` | No | — | — |
| — Date of Birth | `string` | No | — | Date of birth in YYYY-MM-DD format. |
| — Default Billing Address ID | `string` | No | — | — |
| — Default Shipping Address ID | `string` | No | — | — |
| — Gender | `options` | No | — | — |
| | | | | Options: `1` (Male), `2` (Female), `3` (Not Specified) |
| — Group ID | `string` | No | — | Customer group ID. Find available groups via the Magento API: GET /rest/default/V1/customerGroups/search. |
| — Is Subscribed | `boolean` | No | `false` | — |
| — Middle Name | `string` | No | — | — |
| — Password | `string` | No | — | — |
| — Prefix | `string` | No | — | — |
| — Store ID | `string` | No | — | Store ID. Find available stores via the Magento API: GET /rest/default/V1/store/storeConfigs. |
| — Suffix | `string` | No | — | — |
| — Vertex Customer Code | `string` | No | — | — |
| — Vertex Customer Country | `string` | No | — | — |
| — Website ID | `string` | No | — | Website ID. Find available websites via the Magento API: GET /rest/default/V1/store/websites. |

#### Customer: Delete

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Customer ID | `string` | Yes | — | ID of the customer. |

#### Customer: Get

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Customer ID | `string` | Yes | — | ID of the customer. |

#### Customer: Get Many

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Return All | `boolean` | No | `false` | Whether to return all results or only up to a given limit. |
| Limit | `number` | No | `50` | Max number of results to return. _(shown when Return All is `false`)_ |
| Filter | `options` | No | `none` | How to filter the results. |
| | | | | Options: `none` (None), `manual` (Build Manually), `json` (JSON) |
| Must Match | `options` | No | `anyFilter` | Whether to match any or all filter conditions. _(shown when Filter is `manual`)_ |
| | | | | Options: `anyFilter` (Any Filter), `allFilters` (All Filters) |
| Filters | `fixedCollection` | No | `{}` | _(shown when Filter is `manual`)_ |
| — Field | `string` | No | — | The field to filter by (e.g. email, status, sku, created_at). |
| — Condition Type | `options` | No | `eq` | — |
| | | | | Options: `eq` (Equals), `neq` (Not Equal), `gt` (Greater Than), `gteq` (Greater Than or Equal), `lt` (Less Than), `lte` (Less Than or Equal), `like` (Like — supports SQL wildcard characters such as %), `in` (In — value can be a comma-separated list), `nin` (Not In — value can be a comma-separated list), `null` (Null), `notnull` (Not Null), `moreq` (More or Equal) |
| — Value | `string` | No | — | The filter value. _(hidden when Condition Type is `null`, `notnull`)_ |
| Filters (JSON) | `string` | No | — | Raw JSON search_criteria object. See https://devdocs.magento.com/guides/v2.4/rest/performing-searches.html. _(shown when Filter is `json`)_ |
| Options | `collection` | No | `{}` | — |
| — Sort | `fixedCollection` | No | `[]` | — |
| — — Direction | `options` | No | `ASC` | The sorting direction. |
| | | | | Options: `ASC` (Ascending), `DESC` (Descending) |
| — — Field | `string` | No | — | The field to sort by (e.g. email, created_at, entity_id, sku). |

#### Customer: Update

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Customer ID | `string` | Yes | — | ID of the customer to update. |
| Email | `string` | No | — | Updated email address of the customer. |
| First Name (`firstName`) | `string` | No | — | — |
| Last Name (`lastName`) | `string` | No | — | — |
| Update Fields | `collection` | No | `{}` | — |
| — Addresses | `fixedCollection` | No | `{}` | — |
| — — Street | `string` | Yes | — | — |
| — — City | `string` | Yes | — | — |
| — — Region | `string` | No | — | — |
| — — Postal Code | `string` | Yes | — | — |
| — — Country | `string` | Yes | — | Two-letter ISO country code (e.g. US, GB, DE). |
| — — Company | `string` | No | — | — |
| — — Fax | `string` | No | — | — |
| — — First Name | `string` | Yes | — | — |
| — — Last Name | `string` | Yes | — | — |
| — — Middle Name | `string` | No | — | — |
| — — Prefix | `string` | No | — | — |
| — — Suffix | `string` | No | — | — |
| — — Telephone | `string` | Yes | — | — |
| — — Default Billing | `boolean` | No | `false` | — |
| — — Default Shipping | `boolean` | No | `false` | — |
| — Amazon ID | `string` | No | — | — |
| — Confirmation | `string` | No | — | — |
| — Custom Attributes | `fixedCollection` | No | `{}` | — |
| — — Attribute Code | `string` | No | — | The custom attribute code. |
| — — Value | `string` | No | — | — |
| — Date of Birth | `string` | No | — | Date of birth in YYYY-MM-DD format. |
| — Default Billing Address ID | `string` | No | — | — |
| — Default Shipping Address ID | `string` | No | — | — |
| — Gender | `options` | No | — | — |
| | | | | Options: `1` (Male), `2` (Female), `3` (Not Specified) |
| — Group ID | `string` | No | — | — |
| — Is Subscribed | `boolean` | No | `false` | — |
| — Middle Name | `string` | No | — | — |
| — Password | `string` | No | — | — |
| — Prefix | `string` | No | — | — |
| — Store ID | `string` | No | — | — |
| — Suffix | `string` | No | — | — |
| — Vertex Customer Code | `string` | No | — | — |
| — Vertex Customer Country | `string` | No | — | — |

#### Invoice: Create

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Order ID | `string` | Yes | — | The order ID to create an invoice for. |

#### Order: Cancel

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Order ID | `string` | Yes | — | The order ID. |

#### Order: Get

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Order ID | `string` | Yes | — | The order ID. |

#### Order: Get Many

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Return All | `boolean` | No | `false` | Whether to return all results or only up to a given limit. |
| Limit | `number` | No | `50` | Max number of results to return. _(shown when Return All is `false`)_ |
| Filter | `options` | No | `none` | How to filter the results. |
| | | | | Options: `none` (None), `manual` (Build Manually), `json` (JSON) |
| Must Match | `options` | No | `anyFilter` | Whether to match any or all filter conditions. _(shown when Filter is `manual`)_ |
| | | | | Options: `anyFilter` (Any Filter), `allFilters` (All Filters) |
| Filters | `fixedCollection` | No | `{}` | _(shown when Filter is `manual`)_ |
| — Field | `string` | No | — | The field to filter by (e.g. email, status, sku, created_at). |
| — Condition Type | `options` | No | `eq` | — |
| | | | | Options: `eq` (Equals), `neq` (Not Equal), `gt` (Greater Than), `gteq` (Greater Than or Equal), `lt` (Less Than), `lte` (Less Than or Equal), `like` (Like — supports SQL wildcard characters such as %), `in` (In — value can be a comma-separated list), `nin` (Not In — value can be a comma-separated list), `null` (Null), `notnull` (Not Null), `moreq` (More or Equal) |
| — Value | `string` | No | — | The filter value. _(hidden when Condition Type is `null`, `notnull`)_ |
| Filters (JSON) | `string` | No | — | Raw JSON search_criteria object. See https://devdocs.magento.com/guides/v2.4/rest/performing-searches.html. _(shown when Filter is `json`)_ |
| Options | `collection` | No | `{}` | — |
| — Sort | `fixedCollection` | No | `[]` | — |
| — — Direction | `options` | No | `ASC` | The sorting direction. |
| | | | | Options: `ASC` (Ascending), `DESC` (Descending) |
| — — Field | `string` | No | — | The field to sort by (e.g. email, created_at, entity_id, sku). |

#### Order: Ship

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Order ID | `string` | Yes | — | The order ID. |

#### Product: Create

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| SKU | `string` | Yes | — | Stock-keeping unit of the product. |
| Name | `string` | Yes | — | Product name. |
| Attribute Set ID (`attributeSetId`) | `string` | Yes | — | The attribute set ID. Find available attribute sets via the Magento API: GET /rest/default/V1/products/attribute-sets/sets/list?search_criteria=0. |
| Price | `number` | No | `0` | Product price. |
| Additional Fields | `collection` | No | `{}` | — |
| — Custom Attributes | `fixedCollection` | No | `{}` | — |
| — — Attribute Code | `string` | No | — | The product attribute code. |
| — — Value | `string` | No | — | — |
| — Status | `options` | No | `1` | — |
| | | | | Options: `1` (Enabled), `2` (Disabled) |
| — Type | `string` | No | — | Product type (e.g. simple, configurable, virtual, bundle, downloadable, grouped). Find available types via GET /rest/default/V1/products/types. |
| — Visibility | `options` | No | `4` | — |
| | | | | Options: `1` (Not Visible), `2` (Catalog), `3` (Search), `4` (Catalog & Search) |
| — Weight (LBS) | `number` | No | `0` | — |

#### Product: Delete

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| SKU | `string` | Yes | — | Stock-keeping unit of the product. |

#### Product: Get

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| SKU | `string` | Yes | — | Stock-keeping unit of the product. |

#### Product: Get Many

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Return All | `boolean` | No | `false` | Whether to return all results or only up to a given limit. |
| Limit | `number` | No | `50` | Max number of results to return. _(shown when Return All is `false`)_ |
| Filter | `options` | No | `none` | How to filter the results. |
| | | | | Options: `none` (None), `manual` (Build Manually), `json` (JSON) |
| Must Match | `options` | No | `anyFilter` | Whether to match any or all filter conditions. _(shown when Filter is `manual`)_ |
| | | | | Options: `anyFilter` (Any Filter), `allFilters` (All Filters) |
| Filters | `fixedCollection` | No | `{}` | _(shown when Filter is `manual`)_ |
| — Field | `string` | No | — | The field to filter by (e.g. email, status, sku, created_at). |
| — Condition Type | `options` | No | `eq` | — |
| | | | | Options: `eq` (Equals), `neq` (Not Equal), `gt` (Greater Than), `gteq` (Greater Than or Equal), `lt` (Less Than), `lte` (Less Than or Equal), `like` (Like — supports SQL wildcard characters such as %), `in` (In — value can be a comma-separated list), `nin` (Not In — value can be a comma-separated list), `null` (Null), `notnull` (Not Null), `moreq` (More or Equal) |
| — Value | `string` | No | — | The filter value. _(hidden when Condition Type is `null`, `notnull`)_ |
| Filters (JSON) | `string` | No | — | Raw JSON search_criteria object. See https://devdocs.magento.com/guides/v2.4/rest/performing-searches.html. _(shown when Filter is `json`)_ |
| Options | `collection` | No | `{}` | — |
| — Sort | `fixedCollection` | No | `[]` | — |
| — — Direction | `options` | No | `ASC` | The sorting direction. |
| | | | | Options: `ASC` (Ascending), `DESC` (Descending) |
| — — Field | `string` | No | — | The field to sort by (e.g. email, created_at, entity_id, sku). |

#### Product: Update

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| SKU | `string` | Yes | — | Stock-keeping unit of the product. |
| Update Fields | `collection` | No | `{}` | — |
| — Attribute Set ID (`attribute_set_id`) | `string` | No | — | The attribute set ID. |
| — Custom Attributes | `fixedCollection` | No | `{}` | — |
| — — Attribute Code | `string` | No | — | — |
| — — Value | `string` | No | — | — |
| — Name | `string` | No | — | — |
| — Price | `number` | No | `0` | — |
| — Status | `options` | No | `1` | — |
| | | | | Options: `1` (Enabled), `2` (Disabled) |
| — Type | `string` | No | — | Product type (e.g. simple, configurable, virtual, bundle, downloadable, grouped). |
| — Visibility | `options` | No | `4` | — |
| | | | | Options: `1` (Not Visible), `2` (Catalog), `3` (Search), `4` (Catalog & Search) |
| — Weight (LBS) | `number` | No | `0` | — |

#### All Operations

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Max Concurrency | `number` | No | `10` | Maximum number of items to process concurrently. |

## Output Data

The store's response is **merged onto the input item's JSON** — whatever the input item already carried stays on the output item, with the Magento fields written over the top of it. Binary data on the input item is forwarded unchanged.

Every operation except **Get Many** produces exactly one output item per input item. The three **Get Many** operations fan out: they emit **one output item per record returned**, each a copy of the input item with that record's fields merged in. A Get Many that matches nothing produces no output item at all for that input.

Operations that return no body — `Customer: Delete`, `Invoice: Create`, `Order: Cancel`, `Order: Ship` and `Product: Delete` — merge a fixed confirmation object instead:

```json
{
  "success": true
}
```

| Resource: Operation | What lands on the output item |
|---------------------|-------------------------------|
| Customer: Create / Get / Update | The customer record returned by the store |
| Customer: Get Many | One item per customer in the search result |
| Customer: Delete | `success: true` |
| Invoice: Create | `success: true` |
| Order: Get | The order record returned by the store |
| Order: Get Many | One item per order in the search result |
| Order: Cancel / Ship | `success: true` |
| Product: Create / Get / Update | The product record returned by the store |
| Product: Get Many | One item per product in the search result |
| Product: Delete | `success: true` |

Record fields are passed through exactly as the store returns them, so the field names available downstream are the ones your Magento installation reports for that entity.

Reference a returned field downstream by expression, e.g. `{{ $json.sku }}`.

## Usage Examples

- Create a new customer in Magento
- Get all products from Magento store
- Cancel a Magento order
- Create an invoice for a Magento order
- Update a product price in Magento

## Example Configuration

Create a customer from an upstream item, subscribing them to the newsletter:

```json
{
  "type": "magento",
  "parameters": {
    "resource": "customer",
    "operation": "create",
    "email": "{{ $json.email }}",
    "firstname": "{{ $json.firstName }}",
    "lastname": "{{ $json.lastName }}",
    "additionalFields": {
      "group_id": "1",
      "website_id": "1",
      "store_id": "1",
      "is_subscribed": true
    }
  }
}
```

Update a product's price and set a custom attribute, one item at a time:

```json
{
  "type": "magento",
  "parameters": {
    "resource": "product",
    "operation": "update",
    "sku": "{{ $json.sku }}",
    "updateFields": {
      "price": 24.99,
      "status": 1,
      "customAttributes": {
        "customAttribute": [
          {
            "attribute_code": "special_price",
            "value": "19.99"
          }
        ]
      }
    }
  }
}
```

Pull the 100 most recent pending orders, newest first:

```json
{
  "type": "magento",
  "parameters": {
    "resource": "order",
    "operation": "getAll",
    "returnAll": false,
    "limit": 100,
    "filterType": "manual",
    "matchType": "allFilters",
    "filters": {
      "conditions": [
        {
          "field": "status",
          "condition_type": "eq",
          "value": "pending"
        }
      ]
    },
    "options": {
      "sort": {
        "sort": [
          {
            "field": "created_at",
            "direction": "DESC"
          }
        ]
      }
    }
  }
}
```

Invoice the order that arrived on the item:

```json
{
  "type": "magento",
  "parameters": {
    "resource": "invoice",
    "operation": "create",
    "orderId": "{{ $json.entity_id }}"
  }
}
```

Fetch every enabled product using raw Magento search criteria:

```json
{
  "type": "magento",
  "parameters": {
    "resource": "product",
    "operation": "getAll",
    "returnAll": true,
    "filterType": "json",
    "filterJson": "{\"search_criteria\":{\"filter_groups\":[{\"filters\":[{\"field\":\"status\",\"value\":\"1\",\"condition_type\":\"eq\"}]}]}}"
  }
}
```

### Error Handling

| Mode | Behavior |
|------|----------|
| **stop** | Halts workflow on first error |
| **continue** | Skips failed items, passes successful ones through |
| **errorPort** | Routes failed items to Error output port |

## Tips

Manage Magento 2 e-commerce data: customers, products, orders, and invoices via REST API.

### Important Notes

1. **Collection vs FixedCollection**:
   - Collection parameters use flat object structure: `{"paramName": {"field": "value"}}`
   - FixedCollection parameters require groupKeys: `{"paramName": {"groupKey": [items]}}`

2. **Conditional Parameters**: Many parameters are only available based on the selected resource and operation. Always check display conditions.

3. **Required Fields**: Create operations typically require core identifying fields (email for customers, sku for products, etc.).

4. **Filtering**: Use `filterType: "manual"` for simple conditions or `filterType: "json"` for complex Magento search criteria.

5. **Pagination**: Set `returnAll: false` and specify `limit` to control result set size for performance.