Description
@wals-pro/n8n-nodes-weclapp



n8n community node for the weclapp ERP REST API (v2). Covers 16 resources with CRUD and entity actions, a generic Custom API Call operation for everything else, and a webhook trigger node. Maintained by Wals-pro, a weclapp implementation partner — we build and run weclapp automations for customers, and this node is what our own workflows use.
Status: stable. The node is in productive use at Wals-pro and follows semantic versioning: breaking changes only land in major releases, each documented with migration notes in the CHANGELOG. Known gaps are tracked in GitHub Issues. This is a community project — issues, pull requests, and first-time contributors are very welcome, see Contributing.
Package name: install @wals-pro/n8n-nodes-weclapp. The unscoped n8n-nodes-weclapp on npm is an unrelated package by a different author — that name was taken before this project existed, so this node is published under the @wals-pro scope.
—
Requirements
- n8n with community nodes enabled — self-hosted (
N8NCOMMUNITYPACKAGES_ENABLED=true), or n8n Cloud once the node is available there. - A weclapp API v2 token.
- Node.js ≥ 20.15 (only for manual npm installs).
- To use the node as a tool for AI Agents on self-hosted n8n, additionally set
N8NCOMMUNITYPACKAGESALLOWTOOL_USAGE=true.
Installation
n8n GUI (self-hosted): Settings → Community nodes → Install →
@wals-pro/n8n-nodes-weclapp
npm:
npm install @wals-pro/n8n-nodes-weclapp
Docker:
docker exec -u node -it
npm install -g @wals-pro/n8n-nodes-weclapp
Restart n8n after installation.
—
Authentication
1. In weclapp: User Settings (top-right menu → your name) → API token → Generate/copy.
2. In n8n: Credentials → New → search for weclapp API.
3. Base URL: https://
4. API Key: the token from step 1.
5. Test credential — n8n sends GET /currency?pageSize=1 and expects 200 OK.
Details: docs/usage.md — Authentication
—
Quick start
1. Add a weclapp node.
2. Resource → Article, Operation → Get Many.
3. Enable Return All to fetch every page, or leave it off and set a Limit.
4. Optionally add a Filter, e.g. status / Equals / ACTIVE.
Importable example: docs/examples/article-list.json
—
Supported resources
| Resource | Operations |
|—|—|
| Article | Get, Get Many, Create, Update, Delete + 7 actions |
| Party (Customer / Supplier) | Get, Get Many, Create, Update, Delete |
| Sales Order | Get, Get Many, Create, Update, Delete + order actions |
| Purchase Order | Get, Get Many, Create, Update, Delete + 11 actions |
| Sales Invoice | Get, Get Many, Create, Update, Delete + PDF |
| Purchase Invoice | Get, Get Many, Create, Update, Delete + Apply Payment |
| Quotation | Get, Get Many, Create, Update, Delete + PDF |
| Shipment | Get, Get Many, Create, Update, Delete + PDF |
| Warehouse / Stock | Get, Get Many + bookIncoming / bookOutgoing |
| Bank Account / Transaction | Get, Get Many |
| Document | Get, Get Many, Upload, Download |
| Production Order | Get, Get Many, Create, Update + PDF |
| Ticket + Comment | Full CRUD |
| Tag / Unit / User | Get, Get Many |
| Webhook | CRUD |
| Custom API Call | Any method / path — covers the remaining 130+ entities |
—
Behavior notes
Things this node does that are worth knowing before you build on it:
50, max 1000 — weclapp’s per-page ceiling). Return All paginates automatically at 1000 records per request.sort parameter (- prefix for descending).From List), resource and operation descriptions are written to be model-readable. Self-hosted n8n needs N8NCOMMUNITYPACKAGESALLOWTOOL_USAGE=true.-eq, -ne, -in, -null, …). in/notin accept comma lists (A,B,C). For OR and parenthesized logic, use Raw Filter Expression — it passes a verbatim weclapp filter= string.properties, includeReferencedEntities, additionalProperties, serializeNulls are sent as query parameters. additionalProperties results (e.g. shipment availability) are merged onto each row under json.additionalProperties.PUT with ignoreMissingProperties=true. No prior version fetch needed; only the fields you send change. A body of { "status": "DELIVERYNOTEPRINTED" } is a valid, complete update.{ error } into the main output. Gate downstream marker writes with {{ $json.id != null && $json.error == null }}, or use Stop On Error for marker workflows.More in docs/usage.md.
—
Trigger node
weclapp Trigger starts workflows on weclapp entity events:
1. Add weclapp Trigger, select Entity Type and Events (Created / Updated / Deleted).
2. Activate the workflow — the webhook is registered in weclapp automatically and removed on deactivation.
Example: docs/examples/webhook-trigger.json
—
Examples
| Example | What it shows |
|—|—|
| article-list.json | List articles with a status filter |
| party-create.json | Create a customer |
| sales-order-lifecycle.json | Get and update a sales order |
| webhook-trigger.json | Receive weclapp events |
| reconciliation-find.json | Fetch open bank transactions + invoices |
—
Contributing
This is a community project. We use the node for our own customer automations, but it only covers the weclapp API well if people bring their real-world use cases — so contributions of every size are genuinely welcome, and issues are actively triaged and worked.
descriptions/*Description.ts; copy an existing one as the pattern.Dev setup
git clone https://github.com/Wals-pro/n8n-nodes-weclapp.git
cd n8n-nodes-weclapp
npm install
npm run dev # n8n at http://localhost:5678 with hot reload
| Script | Description |
|—|—|
| npm run build | Compile to dist/ |
| npm run lint | n8n community node linter |
| npm run test | vitest unit + integration tests |
| npm run codegen | Regenerate entity metadata from @weclapp/sdk |
Before submitting a PR: npm run lint && npm run build && npm run test.
—
Related
License
MIT — Copyright (c) 2026 Wals-pro