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

Versioning

OpenAPI Specs

Rate Limits

SDKs & Client Libraries

Language Library Type
TypeScript @weclapp/sdk Official, auto-generated from OpenAPI
Python weclappy Community, threaded with pagination
Python pyweclapp Community
PHP geccomedia/weclapp Community, Laravel/Eloquent style

3. Write Capability Verification

Confidence: HIGH. Write endpoints are extensively documented in the OpenAPI spec and confirmed by iPaaS connectors.

Evidence:

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)

DATEV Export (Native)

Strong native DATEV support — important for German market:

  1. Buchungsdatenservice — booking records + document images → DATEV
  2. Rechnungsdatenservice 1.0 — invoices, credit notes, cash transactions → tax advisor
  3. Journal-based export — all journal data
  4. CSV fallback — for non-DATEV systems

CSV Import/Export (Native)

Maesn Unified API

weclapp is supported by Maesn (European unified ERP/accounting API):

E-Invoice Formats


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

  1. ☐ Active weclapp account on ERP Trade plan (or ERP Services if only financial accounting needed)
  2. ☐ Admin user generates API token (My Settings > API)
  3. ☐ Provide Orcha with: tenant subdomain + API token
  4. ☐ Configure webhook subscriptions for relevant entities (optional, for real-time sync)
  5. ☐ Ensure chart of accounts and cost centers are set up in weclapp
  6. ☐ Map weclapp tax codes to Orcha's tax categories

Ongoing Costs for Customer


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:

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

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

Phased Integration Plan

Phase 1 — Reference Data Sync

Phase 2 — Invoice Push

Phase 3 — Payment Lifecycle

Phase 4 — (Future) Approval Bridge

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_PROGRESSCONFIRMEDCLOSED. 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.