Sells your OpenCart catalogue on N11: category and attribute mapping, price rules and stock buffer, products created as N11 tasks with per-item status and errors, stock and price sync, orders imported as real OpenCart orders, line approval from the order status, the cargo tracking number read back into the order history, cannot-supply cancel, returns, a job queue with retries and a full log. OpenCart 4, no OCMOD. Needs your own N11 seller API keys.
Tested on 4.1.0.4Version 1.0.1Compatible with OpenCart 4.1.0.4 No core file edits
Built forOpenCart
Every product with its N11 status1 of 6
What it does
Sells your OpenCart catalogue on N11: category and attribute mapping, price rules and stock buffer, products created as N11 tasks with per-item status and errors, stock and price sync, orders imported as real OpenCart orders, line approval from the order status, the cargo tracking number read back into the order history, cannot-supply cancel, returns, a job queue with retries and a full log. OpenCart 4, no OCMOD. Needs your own N11 seller API keys.
Know the limits. You need your own N11 seller account with API access (app key and secret) and a delivery template created in the seller panel. N11 publishes no sandbox, so "Test" and "Live" use the real API; the extension is tested against a stand-in built from the public documentation, not a live seller account. A seller cannot send a tracking number to N11 (the API has none), so it is read back only. N11 is polled by cron (no webhook), so new orders arrive at the next sync. One stock code per product; option-based variants are not listed separately in 1.0. Imported orders do not send e-mails or fire the events of other extensions. The extension is not affiliated with N11.
Features
Catalogue
Search the N11 category tree and map it to your categories; map every required attribute (colour, size, material ...) to a product attribute, the manufacturer, the model, the SKU or a fixed value
Create products on N11 from your shop; see per product whether it is not listed, waiting for N11 or live, and the exact reason when N11 rejects one
Price and stock
Markup in percent and a fixed amount per product, per category or for the account; price endings x.99, x.90 or whole numbers; the list price is never below the sale price, as N11 requires
Exchange rate from your OpenCart currencies or your own; stock buffer, zero limit and maximum
Changes and orders are pushed at the next sync; nothing is re-sent when nothing changed
Orders
Every N11 package becomes an OpenCart order: buyer, invoice and delivery address, lines at the price N11 sold them, totals, the status you choose, stock taken like a normal order
Later N11 statuses (shipped, delivered, cancelled) move the order along; unmapped products are listed as failed imports with the reason and retried
Set the order to Shipped: the lines are approved at N11 (Picking). N11 arranges the cargo; the tracking number it assigns is read back into the order history and shown on the order page
Cancel a line at N11 from the Orders page (cannot supply)
Returns are imported and can be approved from the admin
Reliable
Job queue with retries (5 minutes up to 12 hours), a Jobs page with a run button, a filtered log with CSV export, secrets encrypted and never logged
Events and cron only, no OCMOD, no core edits; OpenCart 4, tested on 4.1.0.4
What you get
Download & installOne installer package (.ocmod.zip) for OpenCart 4.0.2 – 4.1.x. There is no OpenCart 3 edition. Download it from My licenses right after payment.
12 months of updates & supportNew versions and help for 12 months (24 or 36 months at checkout). After that the extension keeps working; renew anytime at 50%.
License for your storeOne production domain with all its subdomains; staging and local development hosts are free. How licensing works
30-day refundFull refund within 30 days of your first purchase, no reason needed. Refund policy
Tested buildsOpenCart 4.1.0.4. Tested on OpenCart 4.1.0.4.
Documentation & supportFull guide (Installation, Configuration, Usage, Developer notes) on this page. Tickets from your account, first reply within 1 business day.
Compatibility
N11 Marketplace Connector works with OpenCart 4.1.0.4.
We list the builds we install and test on. “Tested” means the test plan ran on that build; “Supported” means the build is inside the supported range.
Compatibility
Version
Range
Runs on
Status
OpenCart 4.1.0.x
4.1.0.0 – 4.1.0.4
PHP 8.1 – 8.3
Tested on 4.1.0.4
OpenCart 4.0.2.x
4.0.2.0 – 4.0.2.3
PHP 8.0 – 8.2
Supported
1.0.0
Latest
First release for OpenCart 4.1: connection (app key and app secret, integrator name, shipment template), category and attribute mapping, price rules (list price never below the sale price), stock buffer, products created as N11 tasks with per-item status and readable errors, stock and price sync, order import into OpenCart orders, line approval (Picking) when the order is Shipped, the cargo tracking number assigned by N11 read back into the order history, returns (SOAP) with approval, cannot-supply cancel, job queue with retries, log with CSV export.
How do I install the extension?
Upload. Extensions > Installer: upload the .ocmod.zip. It is for OpenCart 4 (4.0.2 to 4.1.x).
Install and enable. Extensions > Extensions > Modules: install, open the settings and switch it on. Events register themselves; nothing is patched.
Enter the license key. Paste the key from My licenses. Subdomains, staging and local hosts are included; you have 14 days to do it.
OpenCart 4.1.0.4. Tested on OpenCart 4.1.0.4. The Compatibility tab lists every version range.
Do the extensions change core files?
No. They work through OpenCart events and standard extension types (modules, order totals, themes). No core file edits, no OCMOD patches, no theme template edits, so OpenCart updates and other extensions keep working.
What does the license cover?
One production store domain with every subdomain (www, shop., staging.), plus local development hosts such as localhost, *.local and *.test. A store on another domain needs its own license; a second-store license is 40% off. You have 14 days after installing to enter the key. 12 months of updates and support are included; after that the extension keeps working and renewals are 50% off. How licensing works
Can I get a refund?
Yes. Ask for a full refund within 30 days of your first purchase, no reason needed: open a ticket or write to [email protected] with your order number. The money goes back to the card or bank account you paid with within 5 business days of approval. Refund policy
How do I get help?
Open a ticket from your account, so your license details are attached. We answer Monday to Friday: bug reports within 1 business day, how-to questions within 2. Support policy. Not a customer yet? Ask a pre-sales question.
Sells your OpenCart catalogue on N11: category and attribute mapping, price rules, product creation, stock and price updates, order import into real OpenCart orders, line approval, tracking read-back, returns and an error list per product. OpenCart 4, no OCMOD.
What it does
Maps store categories to N11 categories and product attributes to N11 attributes, with a price markup per category or product, price endings and a stock buffer. The list price is never below the sale price.
Creates products on N11 (an asynchronous task), reads the result per product and shows the reason when N11 refuses one.
Sends stock and price on a schedule and when a product changes.
Imports N11 orders (shipment packages) into OpenCart without duplicates (buyer, addresses, prices as sold, stock like any order), follows status changes, approves the order lines at N11 when the order is Shipped, reads the cargo tracking number back into the order history and imports returns.
Credentials are stored encrypted; the extension polls N11, so no inbound firewall rule is needed.
A job queue with automatic retries (5 minutes, 15 minutes, 1 hour, 3 hours, 12 hours), a log with filters and CSV export.
Limits
You need your own N11 seller account with API access (app key and secret). N11 publishes no sandbox; the extension is tested against a stand-in of the N11 API built from the public documentation, not against a live seller account.
A seller cannot report a tracking number to N11 (the API has no call for it); N11 assigns it and the extension reads it back.
One N11 stock code per OpenCart product. Option-based variants are not listed as separate N11 variants in version 1.0.
Trademark
N11 is a trademark of its owner; this extension is not affiliated with or endorsed by N11.
Compatibility
OpenCart 4.1.x (tested on 4.1.0.4). PHP 7.4 or newer.
The queue needs the OpenCart cron or a secret web address (see Configuration).
Next steps
Installation
Requires OpenCart 4.1 (tested on 4.1.0.4), PHP 7.4 or newer with the cURL and OpenSSL extensions.
In the admin go to Extensions > Installer, upload kv_n11.ocmod.zip and click Install.
Extensions > Extensions, choose "Modules", find "N11 Marketplace Connector" and click Install (the green button).
Click Edit. Switch the connector on and, if you have one, enter your Kavio Labs license key. Without a key the extension works for 14 days.
The N11 pages are under Sales > N11: Listings, Connection, Categories, Attributes, Rules, Orders, Returns, Log, Jobs.
Cron. The install registers an hourly entry in the OpenCart cron, which needs the standard OpenCart cron line on your server (shown on the settings page). For a faster sync call the secret web address from the settings page every few minutes with your host cron.
Uninstall removes the mappings, rules, queue, log and the stored credentials. The OpenCart orders that were imported stay.
What you need from N11
A seller account with API access: an application with its app key and app secret (N11 seller panel, integration settings).
The name of the company that runs the integration (the "integrator" N11 asks for with every product task). Use your own company name and keep it the same.
The name of a delivery template you created in the N11 seller panel (Delivery information); every new listing uses it.
N11 publishes no sandbox: "Test" and "Live" talk to the real N11 API. Try your first products with a few items of your own.
Enable the connector. When off, no new work starts. Jobs that are already under way are still processed.
Status of imported orders. The order status given to a new N11 order (Processing by default, which takes the stock). The status mapping on the Rules page can override it.
Sync interval. How often stock and price are pushed, orders imported and the picking step reported.
Log retention and Debug log (stores each HTTP call with masked secrets; switch off when done).
Connection
Enter the app key and app secret (test and live side by side, N11 has no sandbox), the integrator name and the shipment template. The secret is stored encrypted and never shown again; leave the field empty to keep the stored value. "Save and test" calls N11 and shows the result.
Categories and attributes
On Categories search the N11 tree by name and map a leaf category to a store category. The deepest mapped category of a product decides where it is listed. Markup and fixed amount can be set per mapping. On Attributes pick the mapped category and map each N11 attribute to a product attribute, the manufacturer, the model, the SKU or a fixed value; values are matched with the allowed N11 values by name. Required attributes are marked; a product with a missing one is not sent and shows which one is missing.
Rules
Prices (markup, fixed amount, endings, list price, exchange rate), stock (buffer, zero limit, maximum), new listings (automatic creation, default brand, brand source, VAT rate, default weight) and orders (guest or attach to the customer with the same e-mail, status mapping). Shipping: report the Picking step when an order is Shipped. N11 assigns the cargo itself, so there is no tracking field to fill.
Usage
Connect and run "Save and test". The result says how many products N11 holds for your account.
Map a category, then its required attributes. The brand is an attribute of the N11 category ("Marka"): set a default brand on Rules, or choose the manufacturer or a product attribute as the brand source (the name is looked up on N11, exact match).
List products. On Listings add a product by ID with its stock code (the barcode defaults to the EAN code, then the SKU, then the model) or add all products of a category. The sync sends a create task; the products are "Waiting for N11" until N11 has processed it, then "Live". A rejected product shows the reason in the Last error column; fix the product and click Retry.
Stock and price follow your catalogue. A change to a mapped product, or an order that takes its stock, is pushed at the next sync. The list price is never lower than the sale price.
Orders. New N11 orders (shipment packages) appear under Sales > Orders with the note "N11 order ...". An order whose stock code is not mapped is shown on the Orders page under "Failed imports only" with the reason and retried.
Ship. Set the order to Shipped. The next sync approves the lines of the package at N11 (status Picking). N11 then arranges the cargo from your delivery template; you cannot send your own tracking number. When N11 reports the cargo, the carrier and tracking number are added to the order history and shown in the N11 panel on the order page.
Cannot supply. On Orders, "Cannot supply" cancels a line at N11 (enter the reason ID if you have one; empty means out of stock).
Returns are listed on the Returns page; Approve sends your answer to N11.
Run the queue by hand on the Jobs page with "Run the queue now".
Developer notes
Technical reference for developers who customize N11 Marketplace Connector.
Add-on identity
Item
Value
Extension code
kv_n11 (slug oc_n11)
Texts
src/texts.php, keys kv_n11.*
PHP namespace
KavioLabsKvN11 (shared src/ loaded from system/library/)
Shape
Hepsiburada / Trendyol connector pattern: OpenCart glue (Store, Core, Install, compat) plus the Marketplace Hub
Structure
The add-on has three layers. Only the last one knows N11.
HTTP (cURL, TLS verification, timeouts), encrypted credentials per company, settings, job queue (back-off 5 min / 15 min / 1 h / 3 h / 12 h), log with masking and CSV
Channel independent: category and attribute mapping, price rules and stock buffer, listing builder, product and batch sync, order import with buyer and address mapping, status mapping, shipment steps, returns, per item errors. It talks to the channel only through DriverInterface with normalized arrays (documented in the interface file)
Driver (Drivers\N11\, Client\Api)
Driver, Mapper, Api
Api = HTTP calls (appKey / appSecret headers, REST endpoints, SOAP as plain XML), Mapper = pure translation (unit tested with samples), Driver = the DriverInterface implementation. Hub\Hub::DRIVER names it
N11 API calls used
One host, https://api.n11.com, for REST and SOAP. REST calls carry the headers appKey and appSecret; the catalogue calls (/cdn/...) need only the key. SOAP calls carry <auth><appKey/><appSecret/></auth> in the body.
Purpose
Call
Connection test
GET /ms/product-query?page=0&size=1
Categories, attributes
GET /cdn/categories, GET /cdn/category/{id}/attribute (attribute values come with the attributes)
Create products
POST /ms/product/tasks/product-create (payload.integrator, payload.skus[], up to 1000, returns a task id)
Stock and price
POST /ms/product/tasks/price-stock-update (stockCode, quantity, salePrice + listPrice together, currencyType)
Task result
POST /ms/product/task-details/page-query (taskId, pageable; per item SUCCESS / FAIL with reasons; task status PROCESSED / IN_QUEUE / REJECT)
Orders
GET /rest/delivery/v1/shipmentPackages (startDate / endDate in epoch ms, page from 0, size up to 100, packageIds)
Approve lines
PUT /rest/order/v1/update (lines[].lineId = orderLineId, status Picking; the only status the service supports)
PUT /rest/delivery/v1/collectionRequest (logistics-company shipments) is documented by N11 but not used: it needs box count and desi per package
Notes that shape the code:
The hub's barcode is sent as the N11 stockCode (the key of price, stock and order lines); no N11 barcode is sent so a product is never matched into the n11 catalogue by accident.
Prices must have a dot and exactly two decimals. Mapper::money() writes a marker that Api::send() turns into a bare number just before the request leaves.
The brand is an attribute of the category ("Marka"), not a field: Driver::withBrand() adds it from the brand of the category mapping; the brand attribute is not asked for on the attribute page.
vatRate accepts 0, 1, 10, 20 only; the mapper snaps to the nearest.
A seller cannot report a tracking number; Driver::pushShipment() does nothing and HubOrders::follow() writes the carrier and tracking number of the package into the order history when N11 reports them. Invoice reporting is skipped (no REST call in the services used) and its rule is not shown.
Returns and partial cancellations exist only as SOAP; the add-on sends plain SOAP 1.1 XML over cURL (document/literal, empty SOAPAction), so the PHP SOAP extension is not needed.
The documentation names no maximum date range for the package list; the add-on never asks for more than 14 days and always looks back at least 3 days.
N11 documents a limit of 1000 package-list requests per minute; a 429 answer is retried by the queue.
API conformance (official n11 documentation)
Checked on 2026-11-06 against the provider's own documentation. Pages of https://developer.n11.com read in a browser.
Purpose
What the add-on does
Official source
Verified
Headers
REST calls carry appKey and appSecret (catalogue calls need only the key)
POST /ms/product/tasks/price-stock-update: listPrice and salePrice together, dot decimals with exactly 2 digits, currencyType TL, USD or EUR. The page says the same value may be sent for both and that listPrice must not be lower than salePrice, so the add-on sends listPrice = max(list, sale); equal values are allowed
Credentials per company (secrets sealed), last connection check
oc_kv_n11_log, oc_kv_n11_jobs
Log, queue
oc_kv_n11_product_map
Product mapping: stock code, listing state (N / P / Y), dirty flags, last pushed values, error
oc_kv_n11_order_map
Imported orders (package id), channel status, steps pushed, import error and retry time; the lines column keeps line id, SKU and quantity
oc_kv_n11_options
Rules per account
oc_kv_n11_category_map, oc_kv_n11_attr_map
Category mapping with price rule, attribute mapping
oc_kv_n11_cache
Cached reference data (categories, attributes)
oc_kv_n11_batches
Task ids waiting for their per item result
oc_kv_n11_returns
Return requests
Events used
OpenCart events register at install: the admin menu entry, the N11 panel on the order page (admin/view/sale/order_info/after), product change tracking for the next sync, the licence check, and the catalog cron controller. No OCMOD, no core file is changed.
Test the HTTP layer without N11
The base URL can be overridden for tests with the setting module_kv_n11_base_url (development only; empty in production).
tests/mock-server/server.js follows the documented API (headers, tasks, packages, SOAP envelopes, the two-decimal price rule); tests/unit.php covers the mapping and the OpenCart glue with samples shaped like the documentation (php81 tests/unit.php, php83 tests/unit.php); tests/e2e.js drives an OpenCart 4.1 admin in a headless browser against the mock.
FAQ
Do I need an N11 account?
Yes, a seller account with API access (app key and app secret). N11 decides which products and sellers it accepts.
Which OpenCart versions are supported?
OpenCart 4.1.x (tested on 4.1.0.4). This is the OpenCart 4 product; there is no OpenCart 3 package.
Where are my credentials stored?
In your own database, encrypted. They are never shown again after saving.
Does it send data to Kavio Labs?
No. The extension talks to N11 only. The license check sends your domain name to the Kavio Labs license server once a day.
Is there a test environment at N11?
No. N11 publishes no sandbox, so "Test" uses the same API as "Live". Test your first products with a few items of your own.
Does it need a webhook?
No. N11 offers none for sellers; the extension polls N11 on every sync interval.
Why can't I send my own tracking number?
The N11 seller API has no call for it. N11 assigns the cargo from your delivery template and returns the tracking number with the package; the extension reads it back into the order history.
The connection test fails with "Unauthorized". Check the app key and secret and that test and live credentials are not mixed up. N11 may also require your server IP to be registered.
An order was not imported. Open Orders > Failed imports only. The usual reason is a stock code that is not mapped to a product. Fix it; the import retries.
What happens when N11 is down?
Jobs fail, wait and are retried automatically (5 minutes up to 12 hours). Nothing is lost and nothing is sent twice.
What happens when the license expires?
New work stops (no syncs or order steps). The admin pages stay open and work already under way is still finished.
How do I get updates?
Install the new package over the old one in Extensions > Installer.
How do I get support?
Through the support tab of the product page where you bought it.
Server-side tracking for OpenCart 4.x and 3.0.x: purchases, refunds, add to cart, checkout, product views and leads go from your server to the free official GA4 Measurement Protocol, Meta Conversions API and TikTok Events API, deduplicated with the browser pixels through shared event ids. Consent-aware, SHA-256 hashed customer data, order status mapping, queue with retries, test mode and an event log. No paid relay, events only, no OCMOD.
The department store theme for OpenCart 4.x and 3.0.x: colour-coded departments, a department list beside the hero slider with two side promos, a big search with a department selector, tabbed product blocks, a 2 + 1 + 2 offer grid, deals of the day with real countdowns, a department showcase, a promotions band and a three-column product page with a sticky buy box. Four styles (Meridian, Harbor, Citrus, Night) and your own colours on top. Events only, no core changes.
Stop AI crawlers, scrapers, vulnerability scanners and unwanted countries before OpenCart 4.x or 3.0.x builds a page. Googlebot and Bingbot are verified by DNS and always allowed; 50+ bots get one switch each; country rules use free GeoIP databases and can close only the checkout; IP and network lists, rate limits, honeypots and the cart flood fix; a one-second challenge instead of a captcha; learning mode, dashboard, log, IP tester and Cloudflare export. No core changes, no OCMOD.