← Back to EcomCentral
MAGENTO 1 SOAP v2 API

Magento 1 Setup Guide

Connect your Magento 1 store to EcomCentral using the built-in SOAP v2 API with an API user account.

About This Integration

This integration uses Magento 1's SOAP v2 API (also known as Magento API v2). Compatible with Magento 1.4–1.9 (Open Source and Commerce editions). Magento 1 reached End of Life in June 2020 but remains widely deployed.

ℹ️ EcomCentral connects via the WSDL endpoint at {store_url}/api/v2_soap/?wsdl. Some stores with mod_rewrite disabled use /index.php/api/v2_soap/?wsdl instead.
⚠️ PHP's SOAP extension must be enabled on the server running EcomCentral. Check php.ini for extension=soap and confirm with php -m | grep -i soap.

Prerequisites

Creating an API User

  1. Log in to your Magento administration panel
  2. Go to System → Web Services → SOAP/XML-RPC Roles
    Create a role (e.g. "EcomCentral") and assign the resources it needs (Sales, Catalog, etc.)
  3. Go to System → Web Services → SOAP/XML-RPC Users
  4. Click Add New User
  5. Enter a User Name (this becomes the username credential) and an API Key (this becomes api_key)
  6. In the User Role tab, assign the role you created in step 2
  7. Save the user
  8. Verify by visiting https://your-shop.com/api/v2_soap/?wsdl — it should return an XML WSDL document
✅ If you want to grant full access, assign the built-in Administrators role. For a production environment, create a custom role with only the resources EcomCentral needs.

Connection Credentials

KeyRequiredDescriptionExample
store_url Required Full root URL of your Magento store. EcomCentral appends /api/v2_soap/?wsdl automatically. https://shop.example.com
username Required API user login name (from System → Web Services → SOAP/XML-RPC Users) ecomcentral_api
api_key Required API key set for that user ••••••••
✅ Alternative key names accepted: url for the store URL; user for the username; apiKey or password for the API key.

API Methods Used

OperationSOAP MethodNotes
Test connectionlogin()Returns session token; confirms credentials
List orderssalesOrderList()Returns all orders (no server-side pagination); sliced client-side
Order detailsalesOrderInfo()By increment_id (e.g. "100000001"); includes addresses, items, tracks
List productscatalogProductList()Returns product_id, sku, name, type; price and stock excluded from list
Product detailcatalogProductInfo()By SKU; includes price, description, weight, status
List shipmentssalesOrderShipmentList()Filtered by order_increment_id
Create shipmentsalesOrderShipmentCreate()Auto-called when no shipment exists before adding tracking
Add trackingsalesOrderShipmentAddTrack()Carrier codes: ups, usps, fedex, dhl, custom
Update stockcatalogInventoryStockItemUpdate()By SKU; sets qty and is_in_stock=1
ℹ️ All SOAP calls pass the session token (obtained from login()) as the first argument. The session persists for the duration of a single EcomCentral request.

Order Statuses

Magento 1 uses string status codes. EcomCentral displays them with colour-coded badges.

Status CodeLabelBadge colour
complete complete Green
closed closed Green
pending pending Blue
processing processing Blue
pending_payment pending_payment Blue
payment_review payment_review Blue
holded holded Amber
fraud fraud Amber
canceled / cancelled canceled Red
refunded / voided refunded Red

Supported Features

FeatureSupportedNotes
View orders (paginated)Order increment_id, date, status, total + currency
View order detailCustomer info, billing & shipping addresses, line items (sku, name, qty, price), existing tracking
Add tracking numberAuto-creates a shipment if none exists, then calls salesOrderShipmentAddTrack
View products (paginated)Product ID, SKU, name; price and stock not in list (Magento 1 limitation)
View product detailVia SKU: price, weight, status, short description
Update stock quantityBy SKU via catalogInventoryStockItemUpdate; sets qty and marks in-stock
Test connectionCalls login() — success confirms store URL, username, and API key are valid
⚠️ Product list does not include price or stock — Magento 1 SOAP requires separate calls per product for those fields. Click a product row to open its detail and see price, weight, and the stock update form.

Troubleshooting

"Access denied" / authentication errors

The username or API key is wrong, or the API user has not been assigned a Role. Go to System → Web Services → SOAP/XML-RPC Users, open the user, check the User Role tab, and confirm a role with sufficient permissions is assigned.

PHP SOAP extension not found

EcomCentral requires the PHP soap extension. Enable it in php.ini by adding or uncommenting extension=soap, then restart the web server. Confirm with php -m | grep -i soap.

WSDL timeout / could not load WSDL

The WSDL endpoint is slow to load on some servers. Try opening https://your-shop.com/api/v2_soap/?wsdl directly in a browser — it should return an XML document within a few seconds. If it times out, check the store's server load or increase PHP's default_socket_timeout. Some stores require /index.php/api/v2_soap/?wsdl when mod_rewrite is disabled.

Shipment errors when adding tracking

Magento 1 requires an order to be in a shippable state (typically processing) before a shipment can be created. Orders with status complete, closed, or canceled may not allow new shipments. Check the order status in the Magento back-end.

Store URL format

Enter only the store root URL — for example https://shop.example.com. Do not append /api or /api/v2_soap/?wsdl; EcomCentral adds that path automatically. A trailing slash is harmless and will be stripped.

🔧 Quick sanity check — open https://your-shop.com/api/v2_soap/?wsdl in a browser. An XML WSDL document means the API is accessible. A blank page or 404 means the API URL path may differ — try prepending /index.php.