SOAP / REST API Add-On

Adds CRUD WebAPI endpoints for pricelists (pricelists, pricelist products, customer assignments, group assignments).

Package

  • Composer package: mageb2b/pricesystem-pricelist-api
  • Magento module: MageB2B_PricesystemPricelistApi

Installation

composer config bearer.repo.softwaresilo.io <token>
composer config repositories.softwaresilo composer https://repo.softwaresilo.io/
composer require mageb2b/pricesystem-pricelist-api:*

php bin/magento setup:upgrade
php bin/magento cache:flush

Endpoints (Overview)

Pricelist endpoints:

Method URL
GET /V1/pricesystem/pricelist/:id
GET /V1/pricesystem/pricelist/search
POST /V1/pricesystem/pricelist
PUT /V1/pricesystem/pricelist/:id
POST /V1/pricesystem/pricelistbulk
DELETE /V1/pricesystem/pricelist/:id
DELETE /V1/pricesystem/pricelist/all

Pricelist product endpoints:

Method URL
GET /V1/pricesystem/pricelistproduct/:id
GET /V1/pricesystem/pricelistproduct/search
POST /V1/pricesystem/pricelistproduct
POST /V1/pricesystem/pricelistproductbulk
PUT /V1/pricesystem/pricelistproduct/:id
PUT /V1/pricesystem/pricelistproductbulk
DELETE /V1/pricesystem/pricelistproduct/:id

Customer assignment endpoints:

Method URL
GET /V1/pricesystem/pricelistcustomer/:id
GET /V1/pricesystem/pricelistcustomer/search
POST /V1/pricesystem/pricelistcustomer
PUT /V1/pricesystem/pricelistcustomer/:id
DELETE /V1/pricesystem/pricelistcustomer/:id
DELETE /V1/pricesystem/pricelistcustomer/deleteByCustomerId/:customerId

Customer group assignment endpoints:

Method URL
GET /V1/pricesystem/pricelistgroup/:id
GET /V1/pricesystem/pricelistgroup/search
POST /V1/pricesystem/pricelistgroup
PUT /V1/pricesystem/pricelistgroup/:id
DELETE /V1/pricesystem/pricelistgroup/:id

Authentication

All endpoints above require a valid admin bearer token.

curl -X POST "https://your-store.com/rest/V1/integration/admin/token" \
  -H "Content-Type: application/json" \
  -d '{"username":"admin","password":"***"}'

Then call endpoints with:

-H "Authorization: Bearer <ADMIN_TOKEN>"

Request Payloads

The following payloads are the request wrappers expected by Magento WebAPI for this module.

Pricelist Requests

GET /V1/pricesystem/pricelist/:id
No request body.

GET /V1/pricesystem/pricelist/search
No request body. Use searchCriteria query parameters, for example:

/V1/pricesystem/pricelist/search?searchCriteria[filter_groups][0][filters][0][field]=name&searchCriteria[filter_groups][0][filters][0][value]=B2B&searchCriteria[filter_groups][0][filters][0][condition_type]=like&searchCriteria[currentPage]=1&searchCriteria[pageSize]=20

POST /V1/pricesystem/pricelist and PUT /V1/pricesystem/pricelist/:id use wrapper key pricelist:

{
  "pricelist": {
    "id": 12,
    "name": "B2B Winter 2026",
    "active": true,
    "priority": 10,
    "from_date": "2026-03-01",
    "to_date": "2026-12-31",
    "website_id": 1,
    "products": [
      {
        "product_id": "24-MB01",
        "qty": 1,
        "price": "49.90",
        "price_application_type": 1,
        "start": "2026-03-01",
        "end": "2026-12-31",
        "price_attribute_id": 77
      }
    ],
    "customers": "42,99",
    "groups": "1,3",
    "is_base_pricelist": false,
    "customer_attribute": "",
    "customer_attribute_value": "",
    "customer_address_attribute": "",
    "customer_address_attribute_value": "",
    "customer_attribute_combine": false
  }
}

POST /V1/pricesystem/pricelistbulk uses wrapper key pricelists:

{
  "pricelists": [
    {
      "name": "PL A",
      "active": true,
      "priority": 10,
      "website_id": 1
    },
    {
      "id": 12,
      "name": "PL B Updated",
      "active": true,
      "priority": 20,
      "website_id": 1
    }
  ]
}

For the pricelist object, customers and groups are REST input strings (comma-separated), not arrays. For assignment workflows, prefer the dedicated endpoints: /V1/pricesystem/pricelistcustomer* and /V1/pricesystem/pricelistgroup*.

DELETE /V1/pricesystem/pricelist/:id and DELETE /V1/pricesystem/pricelist/all
No request body.

Pricelist Product Requests

GET /V1/pricesystem/pricelistproduct/:id
No request body.

GET /V1/pricesystem/pricelistproduct/search
No request body. Example:

/V1/pricesystem/pricelistproduct/search?searchCriteria[filter_groups][0][filters][0][field]=pricelist_id&searchCriteria[filter_groups][0][filters][0][value]=12&searchCriteria[filter_groups][0][filters][0][condition_type]=eq

POST /V1/pricesystem/pricelistproduct and PUT /V1/pricesystem/pricelistproduct/:id use wrapper key pricelistProduct:

{
  "pricelistProduct": {
    "id": 55,
    "pricelist_id": 12,
    "product_id": "24-MB01",
    "qty": 1,
    "price": "49.90",
    "price_application_type": 1,
    "start": "2026-03-01",
    "end": "2026-12-31",
    "price_attribute_id": 77
  }
}

POST /V1/pricesystem/pricelistproductbulk and PUT /V1/pricesystem/pricelistproductbulk use wrapper key pricelistProducts:

{
  "pricelistProducts": [
    {
      "id": 55,
      "pricelist_id": 12,
      "product_id": "24-MB01",
      "qty": 1,
      "price": "47.90",
      "price_application_type": 1
    },
    {
      "id": 56,
      "pricelist_id": 12,
      "product_id": "24-MB04",
      "qty": 5,
      "price": "37.90",
      "price_application_type": 5
    }
  ]
}

DELETE /V1/pricesystem/pricelistproduct/:id
No request body.

Pricelist Customer Assignment Requests

GET /V1/pricesystem/pricelistcustomer/:id
No request body.

GET /V1/pricesystem/pricelistcustomer/search
No request body. Example:

/V1/pricesystem/pricelistcustomer/search?searchCriteria[filter_groups][0][filters][0][field]=pricelist_id&searchCriteria[filter_groups][0][filters][0][value]=12&searchCriteria[filter_groups][0][filters][0][condition_type]=eq

POST /V1/pricesystem/pricelistcustomer and PUT /V1/pricesystem/pricelistcustomer/:id use wrapper key pricelistCustomer:

{
  "pricelistCustomer": {
    "id": 90,
    "pricelist_id": 12,
    "customer_id": "alice@example.com"
  }
}

DELETE /V1/pricesystem/pricelistcustomer/:id and DELETE /V1/pricesystem/pricelistcustomer/deleteByCustomerId/:customerId
No request body.

Pricelist Group Assignment Requests

GET /V1/pricesystem/pricelistgroup/:id
No request body.

GET /V1/pricesystem/pricelistgroup/search
No request body. Example:

/V1/pricesystem/pricelistgroup/search?searchCriteria[filter_groups][0][filters][0][field]=pricelist_id&searchCriteria[filter_groups][0][filters][0][value]=12&searchCriteria[filter_groups][0][filters][0][condition_type]=eq

POST /V1/pricesystem/pricelistgroup and PUT /V1/pricesystem/pricelistgroup/:id use wrapper key pricelistGroup:

{
  "pricelistGroup": {
    "id": 77,
    "pricelist_id": 12,
    "group_id": 3
  }
}

DELETE /V1/pricesystem/pricelistgroup/:id
No request body.

Field Notes

  • price_application_type values:
    • 1 = fixed
    • 2 = surcharge nominal
    • 3 = surcharge percent
    • 4 = discount nominal
    • 5 = discount percent
  • product_id can resolve from ID or SKU, depending on pricesystem/api/product_attribute_code.
  • customer_id can resolve from ID or email, depending on pricesystem/api/customer_attribute_code.
  • website_id supports numeric website ID and website code.

For the full list, see: Pricesystem SOAP / REST API

Found an issue with this documentation? Let us know