weclapp ERP — API Integration Analysis for Orcha
Date: 2026-04-10
Vendor: weclapp (acquired by Exact in 2022)
Website: https://www.weclapp.com/en/
API Docs: https://www.weclapp.com/api/
1. Summary — Capability Matrix
| Capability |
Direct API |
Via iPaaS |
Via DATEV |
Verdict |
| Read suppliers |
✅ GET /party |
✅ Make, Workato |
— |
Available now |
| Write suppliers |
✅ POST/PUT /party |
✅ Make, Workato |
— |
Available now |
| Read chart of accounts |
✅ GET /ledgerAccount |
— |
— |
Available now |
| Write chart of accounts |
✅ POST/PUT /ledgerAccount |
— |
— |
Available now |
| Read cost centers |
✅ GET /costCenter |
— |
— |
Available now |
| Write cost centers |
✅ POST/PUT /costCenter |
— |
— |
Available now |
| Read purchase invoices |
✅ GET /purchaseInvoice |
✅ Make, Workato |
✅ Export |
Available now |
| Write purchase invoices |
✅ POST/PUT /purchaseInvoice |
✅ Make, Workato |
— |
Available now |
| Upload documents/attachments |
✅ POST /document/upload |
✅ Make |
— |
Available now |
| Upload invoice for OCR |
✅ POST startInvoiceDocumentProcessing/multipartUpload |
— |
— |
Available now |
| Trigger/manage approvals |
❌ No dedicated endpoint |
— |
— |
Gap — UI-only |
| Read invoice/payment status |
✅ GET /purchaseOpenItem |
— |
— |
Available now |
| Create payment applications |
✅ POST /purchaseOpenItem/{id}/createPaymentApplication |
— |
— |
Available now |
| Webhooks (push events) |
✅ Full CRUD /webhook |
— |
— |
Available now |
| Read accounting transactions |
✅ GET /accountingTransaction |
— |
✅ Export |
Available now |
| Write accounting transactions |
⚠️ Batch only via /accountingTransaction/batchBooking |
— |
— |
Partial |
| Read bank transactions |
✅ GET /bankTransaction |
— |
— |
Available now |
| E-invoice support |
✅ ZUGFeRD, XRechnung |
— |
— |
Available now |
Overall: HIGH feasibility. weclapp covers nearly all Orcha AP automation needs via direct REST API. The only significant gap is programmatic approval workflow management.
2. API Landscape
Base URL
https://{tenant}.weclapp.com/webapp/api/v2/{entity}
Authentication
- API Token Header (recommended):
AuthenticationToken: {api_token}
- HTTP Basic Auth (alternative): username =
*, password = API token
- Tokens generated per user under My Settings > API
- No OAuth 2.0, no JWT
Versioning
- v2 (current, recommended) — OpenAPI 3.1.0, stricter validation, JSON-only
- v1 (legacy) — supported for ≥1 year after next major version
- v2 consolidates
/customer + /supplier + /contact + /lead → /party
OpenAPI Specs
Rate Limits
- No fixed published limits — adaptive load management
- Concurrent request limit per tenant with queue (waits up to 30s)
- Returns HTTP 429 when queue exhausted
- Recommendation: exponential backoff, 60+ second timeouts, prefer webhooks over polling
SDKs & Client Libraries
3. Write Capability Verification
Confidence: HIGH. Write endpoints are extensively documented in the OpenAPI spec and confirmed by iPaaS connectors.
Evidence:
- OpenAPI 3.1.0 spec lists POST/PUT/DELETE methods on all core entities
- Make.com (makeitfuture app, 37+ modules) confirms write operations for invoices, parties, orders, quotations
- Workato connector supports generic Create/Update Record against any entity
- Official TypeScript SDK generates full CRUD services per entity
- Community Python/PHP libraries implement POST/PUT operations
Key Write Endpoints for Orcha
| Endpoint |
Methods |
Notes |
POST /purchaseInvoice |
Create |
Full purchase invoice creation |
PUT /purchaseInvoice/id/{id} |
Update |
Modify existing invoice |
POST /purchaseInvoice/{id}/cancel |
Action |
Cancel invoice |
POST /purchaseInvoice/{id}/createCreditNote |
Action |
Create credit note from invoice |
POST /party |
Create |
Create supplier (set supplierActive: true) |
PUT /party/id/{id} |
Update |
Update supplier details |
POST /costCenter |
Create |
Create cost center |
POST /ledgerAccount |
Create |
Create GL account |
POST /document/upload |
Upload |
Upload document attachment |
POST /purchaseOpenItem/{id}/createPaymentApplication |
Action |
Apply payment to AP item |
POST /purchaseOpenItem/{id}/updatePaymentState |
Action |
Update payment status |
POST /accountingTransaction/batchBooking |
Batch |
Create accounting entries (batch only) |
4. iPaaS & Middleware Findings
| Platform |
Native Connector? |
Write Support |
Pricing |
| Make.com |
✅ 2 community apps (makeitfuture = 37+ modules) |
Full CRUD: invoices, parties, orders, quotations, tickets, documents |
From ~€9/mo |
| Workato |
✅ Native, object-agnostic |
Generic Create/Update/Search against any entity |
Enterprise ($10K+/yr) |
| Synesty |
✅ Add-on |
Articles, orders, inventory, customers |
€19.99/mo + base |
| SyncSpider |
✅ |
E-commerce sync (products, orders) |
Quote-based |
| n8n |
❌ HTTP Request only |
Any endpoint via HTTP |
Free (self-host) |
| Celigo |
❌ Universal HTTP only |
Via custom development |
Enterprise |
| Zapier |
❌ No native app |
Webhooks/Code workaround |
N/A |
| Tray.io |
❌ |
Via CDK/HTTP |
Enterprise |
Key insight: The Make.com makeitfuture app is the most comprehensive iPaaS connector, but for Orcha's use case, direct API integration is the clear winner given weclapp's excellent API documentation and OpenAPI spec.
5. Alternative Integration Channels
Webhooks (Native)
- Full CRUD on
/webhook endpoint
- Events: CREATE, UPDATE, DELETE per entity (e.g.
purchaseInvoice.created)
- Lightweight payload (entityId, entityName, type) — requires follow-up GET
- Retry policy: 1min → 5min → 30min → 5hrs → 1 day; deactivated after 1 day of failures
- Config: Settings > Integration > Webhooks
DATEV Export (Native)
Strong native DATEV support — important for German market:
- Buchungsdatenservice — booking records + document images → DATEV
- Rechnungsdatenservice 1.0 — invoices, credit notes, cash transactions → tax advisor
- Journal-based export — all journal data
- CSV fallback — for non-DATEV systems
CSV Import/Export (Native)
- Import/Export Wizard (Global Settings > Import/Export)
- Template-based master data import
- List-based exports
Maesn Unified API
weclapp is supported by Maesn (European unified ERP/accounting API):
- Read/write: accounts, bank accounts, bills, invoices, credit notes, customers, suppliers, payments, journals
- Webhook support
- Covers 12+ other ERP systems — potential future leverage
- ZUGFeRD and XRechnung supported natively
6. Licensing & Access Requirements
Pricing Plans
| Plan |
Price |
API Access |
Purchasing Module |
| ERP Starter |
€39/user/month |
❌ No |
❌ No |
| ERP Services |
€86/user/month |
✅ Yes |
❌ No |
| ERP Trade |
€163/user/month |
✅ Yes |
✅ Yes |
What the Customer Must Buy/Enable
| Requirement |
Details |
| Minimum plan |
ERP Trade (€163/user/month) for full AP automation (purchasing + API) |
| API token |
Generated per user under My Settings > API |
| User permissions |
Admin rights needed to generate tokens |
| No separate API license |
API access is a plan feature, not a separate purchase |
| No per-call costs |
No published transaction-based pricing |
| Add-on modules |
Contract management, helpdesk, POS available separately (from €55/mo/user) |
Customer Setup Checklist
- ☐ Active weclapp account on ERP Trade plan (or ERP Services if only financial accounting needed)
- ☐ Admin user generates API token (My Settings > API)
- ☐ Provide Orcha with: tenant subdomain + API token
- ☐ Configure webhook subscriptions for relevant entities (optional, for real-time sync)
- ☐ Ensure chart of accounts and cost centers are set up in weclapp
- ☐ Map weclapp tax codes to Orcha's tax categories
Ongoing Costs for Customer
- weclapp subscription (per user/month, plan-dependent)
- No additional API usage costs identified
- API token rotation at customer's discretion (regenerating invalidates previous tokens)
7. Orcha-Specific Deep Dive
7a. Reference Data Sync (Inbound to Orcha)
| Need |
Endpoint |
Method |
Confidence |
| Suppliers list |
GET /party (filter: supplierActive=true) |
GET |
✅ High |
| Chart of accounts |
GET /ledgerAccount |
GET |
✅ High |
| Cost centers |
GET /costCenter |
GET |
✅ High |
| Cost center groups |
GET /costCenterGroup |
GET |
✅ High |
| Tax codes |
GET /tax |
GET |
✅ High |
| Payment terms |
GET /termOfPayment |
GET |
✅ High |
| Currencies |
GET /currency |
GET |
✅ High |
| Articles/products |
GET /article |
GET |
✅ High |
7b. Document Push (Orcha → weclapp)
| Need |
Endpoint |
Method |
Confidence |
| Create purchase invoice |
POST /purchaseInvoice |
POST |
✅ High |
| Update purchase invoice |
PUT /purchaseInvoice/id/{id} |
PUT |
✅ High |
| Attach PDF to invoice |
POST /document/upload |
POST |
✅ High |
| Upload for OCR processing |
POST /purchaseInvoice/startInvoiceDocumentProcessing/multipartUpload |
POST |
✅ High |
| Create credit note |
POST /purchaseInvoice/id/{id}/createCreditNote |
POST |
✅ High |
| Cancel invoice |
POST /purchaseInvoice/id/{id}/cancel |
POST |
✅ High |
| Create new supplier |
POST /party |
POST |
✅ High |
v2 note: In v2, secondary properties like supplierNumber and costCenterNumber are removed — use *Id references instead. Unknown properties return HTTP 400.
7c. Approval Management
| Need |
Endpoint |
Method |
Confidence |
| Trigger approval |
❌ No dedicated endpoint |
— |
❌ Gap |
| Check approval status |
❌ No dedicated endpoint |
— |
❌ Gap |
| Approve/reject |
❌ No dedicated endpoint |
— |
❌ Gap |
This is the primary gap. weclapp has an internal authorization/workflow engine for purchasing, but it is not exposed via the API. Workarounds:
- Use custom attributes on
purchaseInvoice to track Orcha's approval status
- Use weclapp's
/task endpoint to create approval tasks
- Manage the approval workflow entirely within Orcha and only push the final approved invoice to weclapp
7d. Payment & Lifecycle Tracking
| Need |
Endpoint |
Method |
Confidence |
| Read open AP items |
GET /purchaseOpenItem |
GET |
✅ High |
| Apply payment |
POST /purchaseOpenItem/id/{id}/createPaymentApplication |
POST |
✅ High |
| Update payment state |
POST /purchaseOpenItem/id/{id}/updatePaymentState |
POST |
✅ High |
| Read payment runs |
GET /paymentRun |
GET |
✅ High |
| Subscribe to status changes |
POST /webhook (entity: purchaseInvoice) |
POST |
✅ High |
| Read bank transactions |
GET /bankTransaction |
GET |
✅ High |
8. Recommended Path Forward
Architecture: Direct API Integration (Recommended)
| Aspect |
Assessment |
| Approach |
Direct REST API v2 with API token auth |
| Cost |
Zero incremental (no middleware fees) |
| Complexity |
Low — excellent OpenAPI spec, official SDK |
| Control |
Full |
| Maintenance |
Monitor v2 changelog for breaking changes |
Why Direct API Over Alternatives
- vs. iPaaS (Make/Workato): Direct is simpler for Orcha's server-to-server use case. iPaaS adds cost and latency without meaningful benefit since weclapp's API is well-documented.
- vs. Maesn unified API: Consider Maesn only if Orcha wants to support many ERPs through a single integration layer. For weclapp specifically, direct API gives more control and avoids dependency.
- vs. DATEV bridge: DATEV export is one-directional (weclapp → DATEV). Not suitable for Orcha's write requirements.
Phased Integration Plan
Phase 1 — Reference Data Sync
- Sync suppliers (
GET /party), chart of accounts (GET /ledgerAccount), cost centers (GET /costCenter), tax codes (GET /tax), payment terms (GET /termOfPayment)
- Set up webhooks for real-time updates on reference data changes
Phase 2 — Invoice Push
- Create purchase invoices (
POST /purchaseInvoice) with line items, cost center assignments, tax codes
- Upload PDF attachments (
POST /document/upload)
- Handle credit notes and cancellations
Phase 3 — Payment Lifecycle
- Read open AP items (
GET /purchaseOpenItem)
- Apply payments and update payment states
- Subscribe to invoice status webhooks for real-time tracking
Phase 4 — (Future) Approval Bridge
- If weclapp exposes approval APIs in the future, integrate
- Until then: manage approvals in Orcha, push only approved invoices to weclapp
Risk Factors
| Risk |
Severity |
Mitigation |
| No approval workflow API |
Medium |
Manage approvals in Orcha, push final result |
| weclapp building native OCR (competitive overlap) |
Low |
Orcha's value is broader than OCR — workflow, compliance, multi-ERP |
| Acquired by Exact (2022) — API stability |
Low |
OpenAPI spec + v1 support policy gives runway |
| v2 strict validation (400 on unknown properties) |
Low |
Use OpenAPI spec for type-safe integration |
| No fixed rate limits |
Low |
Implement exponential backoff, prefer webhooks |
| Customer requires ERP Trade plan (€163/user/mo) |
Low |
This is standard for ERP customers needing procurement |
9. Sources
Official
SDKs & Libraries
iPaaS & Middleware
Third-Party Guides
10. Requirements Verification — Jira + Weclapp via Orcha
Context
A customer uses Jira as their PO/approval hub and weclapp as ERP/source of truth for inventory, GRNs, and accounting. Orcha sits in the middle: matching invoices against Jira POs (approval context) and weclapp POs + GRNs (quantity/receipt checks), then pushing ready invoices to DATEV.
10a. Weclapp as ERP / Source of Truth
| # |
Requirement |
Supported? |
Endpoint / Mechanism |
| 1 |
Treat Weclapp as source of truth for inventory & GRNs |
✅ Yes |
GET /incomingGoods for GRNs, GET /purchaseOrder with read-only receivedQuantity per line item |
| 2 |
Import POs from Weclapp (non-Jira cases) |
✅ Yes |
GET /purchaseOrder with full query/filter/pagination. Webhook on purchaseOrder.created for push notifications |
| 3 |
Auto-create/update POs from Jira-approved POs |
✅ Yes |
POST /purchaseOrder (create), PUT /purchaseOrder/id/{id} (update). All fields writable: supplier, items, quantities, prices, cost centers, dates |
| 4 |
Create purchase invoices from processed invoices |
✅ Yes |
POST /purchaseInvoice (direct) or POST /purchaseOrder/id/{id}/createPurchaseInvoice (from PO, supports invoice types: ADVANCE_PAYMENT, PART_PAYMENT, FINAL_INVOICE) |
| 5 |
Read GRN entries and link to POs/invoices |
✅ Yes |
Each GRN has purchaseOrders array (linked PO IDs); each incomingGoodsItem has purchaseOrderItemId (line-level link) |
| 6 |
Detect missing GRNs → feed into Orcha alerts |
✅ Yes |
Compare purchaseOrderItem.quantity vs purchaseOrderItem.receivedQuantity (read-only, cumulative). PO-level received boolean = false until fully received |
| 7 |
Update PO status (open → in payment → closed) |
⚠️ Partial |
PO status enum: ORDER_ENTRY_IN_PROGRESS → CONFIRMED → CLOSED. No "IN_PAYMENT" status. Payment lifecycle tracked separately via purchaseOpenItem.updatePaymentState (PAID/UNPAID) + read-only flags invoiced, paid on PO |
10b. Partial Shipments & Advance Payments
| # |
Requirement |
Supported? |
Endpoint / Mechanism |
| 8 |
Match multiple invoices and GRNs to a single PO |
✅ Yes |
Native 3-way matching. purchaseInvoiceItemRelationship links each invoice line to purchaseOrderItemId + incomingGoodsItemId + quantity. Multiple GRNs per PO supported (createIncomingGoods can be called repeatedly; receivedQuantity accumulates) |
| 9 |
Track cumulative quantities/amounts, flag over-delivery/over-billing |
✅ Yes |
purchaseOrderItem.receivedQuantity (cumulative received) and purchaseOrderItem.invoicedQuantity (cumulative invoiced) — both read-only, auto-updated. Orcha compares against quantity |
| 10 |
Flag price deviations above configurable threshold (e.g. 3%) |
⚠️ Orcha-side |
weclapp stores unitPrice on PO items and invoice items. No built-in tolerance — Orcha compares prices and flags deviations using its own configurable threshold |
| 11 |
Support advance payments |
✅ Yes |
createPurchaseInvoice accepts invoiceType enum: ADVANCE_PAYMENT_INVOICE, PART_PAYMENT_INVOICE, PREPAYMENT_INVOICE, FINAL_INVOICE. PO has advancePaymentStatus (OPEN/PAID) read-only field |
10c. Webhooks & Event Notifications
| # |
Requirement |
Supported? |
Endpoint / Mechanism |
| 12 |
Webhook when POs are created/updated |
✅ Yes |
POST /webhook — subscribe to purchaseOrder entity events (CREATE, UPDATE, DELETE) |
| 13 |
Webhook when GRNs are created |
✅ Yes |
Subscribe to incomingGoods entity events |
| 14 |
Webhook when invoices change status |
✅ Yes |
Subscribe to purchaseInvoice entity events |
| 15 |
Sufficient API surface for all requirements |
✅ Yes |
670 endpoints, full CRUD on all core entities, native webhook CRUD |
10d. Cross-System Behavior (Jira + Weclapp via Orcha)
| # |
Requirement |
weclapp Coverage |
Notes |
| 16 |
Match invoice against weclapp PO + GRNs |
✅ Yes |
purchaseInvoiceItemRelationship is designed for this — links invoice line → PO line → GRN line with quantity |
| 17 |
Detect missing PO or GRN |
✅ Yes |
Query purchaseOrderItem.receivedQuantity vs quantity; check purchaseOrders array on invoice |
| 18 |
Keep Jira/Weclapp statuses aligned with payment lifecycle |
✅ Yes |
POST /purchaseOpenItem/id/{id}/updatePaymentState (PAID/UNPAID + date). Webhook on purchaseInvoice.updated notifies Orcha, which relays to Jira |
| 19 |
Push only "ready" invoices into DATEV |
✅ Yes |
weclapp has native DATEV export. Orcha controls when invoices reach ENTRY_COMPLETED / OPEN_ITEM_CREATED status before DATEV export triggers |
10e. Key Endpoint Details for Implementation
Purchase Order Lifecycle
Status enum (supplierOrderStatusType):
ORDER_ENTRY_IN_PROGRESS → ORDER_ENTRY_COMPLETED → ORDER_DOCUMENTS_PRINTED → CONFIRMED → CLOSED
→ CANCELLED
Read-only flags (updated automatically):
received: boolean — true when all items fully received via GRNs
invoiced: boolean — true when all items fully invoiced
paid: boolean — true when all open items paid
Advance payment:
advancePaymentStatus: OPEN | PAID (read-only)
Purchase Invoice Lifecycle
Status enum (purchaseInvoiceStatusType):
NEW → OCR_VERIFICATION → INVOICE_RECEIVED → INVOICE_VERIFICATION → INVOICE_CHECKED
→ ENTRY_COMPLETED → DOCUMENT_CREATED → OPEN_ITEM_CREATED → CANCELLED
Payment status (paymentStatus):
OPEN | PAID | NO_OPEN_ITEM | UNKNOWN | CLEARED_WITH_CREDIT_NOTE | CREDIT_NOTE_CLEARED
Invoice types:
STANDARD_INVOICE | ADVANCE_PAYMENT_INVOICE | PART_PAYMENT_INVOICE
PREPAYMENT_INVOICE | FINAL_INVOICE | CREDIT_ADVICE | CREDIT_NOTE
3-Way Matching Data Model
purchaseInvoice
└── purchaseInvoiceItems[]
└── purchaseInvoiceItemRelationships[]
├── purchaseOrderItemId → links to PO line item
├── incomingGoodsItemId → links to GRN line item
└── quantity → matched quantity
GRN Creation (Two Paths)
Path 1: From PO
POST /purchaseOrder/id/{id}/createIncomingGoods
Body: { additionalPurchaseOrderIds: [...], customAttributes: {...} }
→ Returns incomingGoods entity
Path 2: Direct + Link
POST /incomingGoods → create GRN
POST /incomingGoods/id/{id}/addPurchaseOrders → link POs afterward
Body: { ids: ["poId1", "poId2"] }
10f. Gaps & Workarounds Summary
| Gap |
Severity |
Workaround |
| No "IN_PAYMENT" PO status |
Low |
Use PO status (CONFIRMED/CLOSED) + purchaseOpenItem payment state (PAID/UNPAID) + read-only flags (invoiced, paid) as composite status. Orcha maps to its own lifecycle |
| No approval workflow API |
N/A |
Approvals live in Jira per these requirements — weclapp receives already-approved POs |
| Price deviation threshold not in weclapp |
Low |
By design — Orcha owns matching logic and configurable thresholds. weclapp provides raw price data |
| Webhook payloads are lightweight |
Low |
Payloads contain only entityId, entityName, type. Orcha issues a follow-up GET for full data. Standard pattern |
Verdict: weclapp covers 100% of these requirements with minor mapping needed for PO payment lifecycle status. The native 3-way matching data model is particularly strong and aligns exactly with Orcha's cross-system matching workflow.