Priority Software ERP — Integration Research Report

Date: 2026-03-29 Target: Priority Software ERP Purpose: Assess API capabilities for Orcha integration (document ingestion, reference data sync, approval workflows)


1. Summary — Capability Matrix

Capability Direct API (OData) Via iPaaS Via Webhooks Via File/SFTP Verdict
Read invoices YES YES YES (XML) Available now
Write/create invoices YES (POST AINVOICES) YES (Workato, Make) YES (XML import) Available now
Read orders YES (GET ORDERS) YES Available now
Write orders YES (POST ORDERS) YES Available now
Read suppliers/vendors YES (SUPPLIERS — confirmed in SDK + GitHub) YES Available now
Write suppliers YES (POST SUPPLIERS) YES Available now
Read chart of accounts YES (ACCOUNTS — confirmed in SDK + GitHub) YES Available now
Write cost centers YES (COSTCENTERS — confirmed in SDK Form-Columns) YES Available now
Attach documents/PDFs YES (POST EXTFILES_SUBFORM) YES (Workato upload) Available now
Trigger/manage approvals PARTIAL (BPM activations) Possible via Make/Workato Needs vendor confirmation
Receive status changes YES (BPM webhooks) Available now
Batch operations YES (POST $batch, up to 100) YES (Workato batch) Available now

Overall assessment: Strong integration potential. Priority exposes all user-facing forms as OData entities with full CRUD. After deep research across SDK docs, SOP documents, and community GitHub repos, all key financial form names are now confirmed: SUPPLIERS, ACCOUNTS, COSTCENTERS, PINVOICES (A/P invoices), PORDERS (purchase orders), FNCTRANS (journal entries). Priority has 3,000+ internal forms; the customer must enable specific forms for API access via the FORMLIMITED configuration screen.


2. API Landscape

2.1 Core API — OData REST

2.2 Authentication

Method Details
Basic Auth Username/password
Personal Access Tokens (PAT) Token-based, recommended for server-to-server
OAuth2 (External ID / OIDC) External identity provider integration
App licensing headers X-App-Id + X-App-Key required for licensed integrations

2.3 Rate Limits & Throttling

2.4 Licensing & Access Requirements (What the Customer Needs)

The API is NOT automatically available to all Priority customers. There are several prerequisites:

What must be purchased/enabled:

Requirement Details
API Module Must be purchased separately from the base ERP license. The API is installed automatically when the application server is installed, but the license must be active.
API User Licenses Each user accessing the API needs an API license. Can be an "App-Only License" (dedicated integration user, doesn't consume a regular user seat).
Transaction Packages Write operations consume transactions, purchased in packages of 10,000/month. Since v25.1, all API users share one transaction pool.
Application License (optional) For third-party apps: Priority assigns an X-App-Id + X-App-Key pair. Without these headers, requests use generic API licensing.

Transaction cost model:

Transaction Type Applies To Cost
Premium Certain high-value forms Consumes premium transactions
Regular Most standard forms Consumes regular transactions
Free Some basic forms No transaction cost

Example: Creating an order with 5 line items = 6 transactions (1 parent + 5 children). Each form's transaction type is viewable in the "View License Details" report.

Customer setup steps (admin must do this):

  1. Renew licenses — System Management > System Maintenance > Renew License
  2. Create API user — Create a dedicated user (e.g., "orcha"), mark as "Active user" in Permissions
  3. Set API license — On the user's Licenses tab, select "App-Only License"
  4. Set API-user field — On the employee card, set the API-user field
  5. Generate auth token — System Management > Authentication Tokens for REST Interfaces
  6. Enable forms for API — Open FORMLIMITED ("Limited Access/API Forms"), retrieve each form needed, and mark "Available for API"
  7. Send activation link — System Management > Users > Send Program Activation Link, select "API" as activation type

What this means for Orcha:

2.5 Additional API Layers

Layer Purpose
Web SDK JavaScript SDK for browser-based interaction with Priority forms
Priority SDK Custom forms, procedures, and reports development
ODBC Direct database access (on-premise)
Webhooks Outbound event notifications via BPM rules

3. Write Capability Verification

Confidence: HIGH — Write operations are fully documented and confirmed.

3.1 Documented Write Operations

Operation Method Endpoint Example Confirmed
Create entity POST serviceRoot/ORDERS YES — documented with JSON payload
Create sub-entity POST serviceRoot/ORDERS('SO18000002')/ORDERITEMS_SUBFORM YES — documented
Create with nested items POST serviceRoot/ORDERS (with ORDERITEMS_SUBFORM array) YES — documented
Create invoice line item POST serviceRoot/AINVOICES(IVNUM='T9696',IVTYPE='A',DEBIT='D')/AINVOICEITEMS_SUBFORM YES — documented
Update entity PATCH serviceRoot/FAMILY_LOG('765') YES — documented
Delete entity DELETE serviceRoot/FAMILY_LOG('765') YES — documented
Upload attachment POST serviceRoot/ORDERS('SO21000113')/EXTFILES_SUBFORM YES — base64 encoded
Add text/notes PATCH serviceRoot/ORDERS('SO20000422')/ORDERSTEXT_SUBFORM YES — HTML supported, append mode
Batch operations POST serviceRoot/$batch YES — up to 100 ops, supports dependency references

3.2 Confirmed Entity/Form Names

The following form names were verified across Priority's official SDK documentation, OData API PDF, REST API developer portal, SOP documents, and community GitHub repositories. Priority has over 3,000 internal forms (per ODBC docs); these are the ones relevant to Orcha's integration needs.

Sales & A/R (Accounts Receivable)

Form Name Purpose Key Fields Confirmation Source
ORDERS Sales orders ORDNAME, CUSTNAME, QPRICE, CURDATE, STATDES REST API docs, SDK PDF, GitHub repos
ORDERITEMS_SUBFORM Order line items PARTNAME, TQUANT, PRICE, DUEDATE REST API docs
AINVOICES A/R invoices (outgoing) IVNUM, IVTYPE, DEBIT, CUSTNAME, TOTPRICE, IVDATE, STATDES REST API docs, GitHub repos
AINVOICEITEMS_SUBFORM A/R invoice line items PARTNAME, TQUANT, PRICE, QPRICE REST API docs, GitHub repos
CINVOICES Credit notes (A/R) IVNUM, CUSTNAME, TOTPRICE, IVDATE, STATDES GitHub repos (vipogroup, MisyuraIlya), ODBC docs
CINVOICEITEMS_SUBFORM Credit note line items PARTNAME, TQUANT, PRICE GitHub repos (MisyuraIlya)
EINVOICES Tax Invoice/Receipt combo Same structure as AINVOICES GitHub (benmen1980/WooCommercePriorityAPI)
FINVOICES Export/financial invoices SDK Form-Columns page
TINVOICES Receipts GitHub (benmen1980)
CPROF Price quotations/proforma CPROFNUM, CUSTNAME, QPRICE, STATDES SDK Execute-FormLoads, GitHub
RECEIPTS Receipts RECEIPT, CUSTNAME, CURDATE GitHub (vipogroup)

Purchasing & A/P (Accounts Payable)

Form Name Purpose Key Fields Confirmation Source
PORDERS Purchase orders ORDNAME, SUPNAME, QPRICE OData API PDF, SDK PDF (Removed Entities)
PINVOICES Purchase/vendor invoices (incoming) IVNUM, SUPNAME, TOTPRICE, IVDATE SDK PDF (Removed Entities), GitHub (skills-il)

Master Data

Form Name Purpose Key Fields Confirmation Source
CUSTOMERS Customer master CUSTNAME, CUSTDES, EMAIL, PHONE, WTAXNUM, ADDRESS REST API docs, SDK PDF, GitHub
SUPPLIERS Supplier/vendor master SUPNAME, SUPDES, EMAIL, PHONE, WTAXNUM, BANKACCOUNT SDK PDF (Removed Entities), GitHub (vipogroup)
LOGPART Parts/items/products PARTNAME, PARTDES, FAMILYNAME, SELLPRICE, COSTPRICE REST API docs, SDK PDF, GitHub
FAMILY_LOG Part families FAMILYNAME, FAMILYDESC REST API docs
PHONEBOOK Contacts SDK PDF (Table Keys)
WAREHOUSES Warehouses WARHSNAME, WARHSDES SDK PDF, Form-Columns, GitHub

Financial / General Ledger

Form Name Purpose Key Fields Confirmation Source
ACCOUNTS Chart of accounts ACCNAME, ACCDES SDK PDF (Removed Entities — menu ref), GitHub (assafch/DebtCollector)
COSTCENTERS Cost centers SDK Form-Columns page (confirmed as reference table)
FNCTRANS Journal entries FNCTRANSNUM, CURDATE, QPRICE SDK PDF (Removed Entities), GitHub (vipogroup, assafch)
FNCITEMS Journal entry items SDK Form-Columns
FNCITEMSB Profit/cost center storage SDK Form-Columns
ACCFNCITEMS Account financial items ACCNAME, ACCDES, balance columns SDK Form-Columns
FNCPATTERNS Journal entry codes FNCPATNAME SDK PDF
FNCBAL Fiscal periods SDK PDF
ELECTRONICINVOICES Electronic invoices SDK PDF

Payments & Banking

Form Name Purpose Confirmation Source
PAYMENTTYPE Payment type definitions Payments Guide SOP
PAYMENTDEF Account/credit card to charge SDK PDF
QIV Bank transfers SDK PDF
HIV Payments by check SDK PDF
DIGITALBANKS Digital banking SDK PDF

Tax / VAT

Form Name Purpose Confirmation Source
TAXBOXES Tax report boxes SDK PDF
TAXBOXDEFS_ONE Tax report box definitions SDK PDF
VATCOMPTYPES VAT report types SDK PDF
GENINVOICESEURO List of financial documents (EU) SDK PDF

Reconciliation

Form Name Purpose Confirmation Source
ACCRECONSP Account reconciliation (split) SDK Form-Columns
BANKRECONSP Bank reconciliation (split) SDK Form-Columns
CREDITRECONSP Credit card reconciliation (split) SDK Form-Columns

Documents / Shipping

Form Name Purpose Confirmation Source
DOCUMENTS_D Customer shipments / delivery notes SDK PDF, GitHub
DOCUMENTS_P Purchase receipt documents Webhook docs, GitHub
DOCUMENTS_T Warehouse transfers SDK Form-Columns
DOCUMENTS_N Return documents GitHub (MisyuraIlya)
DOCUMENTS_C Goods receipt documents GitHub (Dan9213665)

Universal Sub-forms

Form Name Purpose Confirmation Source
EXTFILES_SUBFORM File attachments (any parent form) REST API docs
ORDERSTEXT_SUBFORM Text/notes on orders REST API docs
TPAYMENT_SUBFORM Payment details on invoices/receipts GitHub (vipogroup)

System / Configuration

Form Name Purpose Confirmation Source
FORMLIMITED Controls which forms are API-accessible OData API PDF, Zapier SOP
STATUSTYPES BPM status types SDK Form-Loads
COMPANIES Company registry Payments Guide SOP

Note: The $metadata endpoint on the sandbox returned 401 (authentication required). The form names above are confirmed from documentation and production code, but a customer's specific Priority instance may have additional custom forms (prefixed with a 4-letter customer code, e.g., XXXX_CUSTOMERS).

3.3 Key Technical Details


4. iPaaS & Middleware Findings

4.1 Workato (Highest Signal)

Connector type: Community connector (published Feb 2025) 14 operations confirmed:

Operation Type Details
Search records (OData query) READ Custom OData queries
Get record details by ID READ Single record retrieval
Search records READ Simplified search
Get relative entity details READ Navigate to sub-forms
Download file READ File/attachment download
Create record WRITE Create any entity
Batch create record WRITE Bulk creation
Update record WRITE Modify any entity
Batch update record WRITE Bulk updates
Delete record WRITE Remove records
Create relative entity WRITE Create sub-form records
Update relative entity WRITE Update sub-form records
Upload file WRITE Attach documents
Custom action WRITE Flexible API calls

Verdict: Full CRUD + file upload + batch. This is a thin wrapper around the OData API — confirms direct API has the same capabilities.

4.2 Make.com

4.3 Zapier

4.4 Other Connectors

Platform Status
Celigo No connector found
n8n No native connector found
APPSeCONNECT Has Priority ERP integration
Engini Has Priority ERP connector with form activations
iConduct Has Priority API connector

5. Alternative Channels

5.1 Webhooks (Outbound)

Status: Available — Priority fires webhooks via BPM (Business Process Management) rules.

Feature Details
Setup location System Management > Periodic Maintenance > BPM Maintenance > Webhook Definitions
Trigger mechanism BPM rules on form status changes
Authentication Token-based (generated in webhook definition)
Payload format JSON with configurable fields
Headers priority-form-name, priority-bpm-subject, priority-bpm-id, priority-bpm-name, priority-bpm-token
Conditional firing Yes — rules can include conditions (e.g., VIP customers only)

Example payload:

{
  "DOCUMENTS_P": {
    "PDOCNO": "SH2000000880",
    "CDES": "David Smith",
    "CURDATE": "2020-07-28T00:00:00"
  }
}

Use for Orcha: Receive real-time notifications when invoice status changes (approved, paid, rejected) without polling.

5.2 File-Based Integration (FTP/SFTP)

5.3 ODBC


6. Orcha-Specific Deep Dive

6.1 Write Reference Data (Cost Centers, Accounts, GL Codes)

Need API Support Confidence Notes
Create/update cost centers YES High COSTCENTERS confirmed in SDK Form-Columns documentation
Write chart of accounts YES High ACCOUNTS confirmed in SDK + GitHub (assafch/DebtCollector uses ACCNAME, ACCDES)
Create GL codes YES High Part of ACCOUNTS form or FNCPATTERNS (journal entry codes)
Create departments LIKELY Medium HR/organizational forms exposed; exact form name needs verification

Form name confirmation: Unlike the initial report, these form names are now confirmed across multiple independent sources (Priority SDK Form-Columns page, SDK PDF Removed-Entities section, and production GitHub repos). COSTCENTERS appears as a reference table in the SDK Form-Columns documentation. ACCOUNTS is referenced both as a menu entity in the SDK and as a data table in community code (field ACCNAME used for lookups).

Customer setup required: The Priority admin must enable each form in FORMLIMITED ("Limited Access/API Forms") before API access works.

6.2 Write Transactional Data (Invoices, Credit Notes)

Need API Support Confidence Notes
Push A/R invoices YES High AINVOICES confirmed in docs with composite key
Push invoice line items YES High AINVOICEITEMS_SUBFORM confirmed with JSON example
Push A/P invoices YES High PINVOICES confirmed in SDK PDF + GitHub (skills-il). Note: CINVOICES is credit notes, NOT A/P invoices
Push purchase orders YES High PORDERS confirmed in OData API PDF + SDK PDF
Push credit notes YES High CINVOICES + CINVOICEITEMS_SUBFORM confirmed in GitHub (vipogroup, MisyuraIlya) + ODBC docs

Confirmed JSON for invoice line item creation:

POST serviceRoot/AINVOICES(IVNUM='T9696',IVTYPE='A',DEBIT='D')/AINVOICEITEMS_SUBFORM
{
    "PARTNAME": "TR0001",
    "TQUANT": 3
}

6.3 Attach Documents (PDF Upload)

Need API Support Confidence Notes
Upload PDF to invoice YES High EXTFILES_SUBFORM is universal across forms
Upload image attachments YES High Base64 encoding, any MIME type

Confirmed JSON for file attachment:

POST serviceRoot/ORDERS('SO21000113')/EXTFILES_SUBFORM
{
    "EXTFILEDES": "Invoice scan",
    "EXTFILENAME": "data:application/pdf;base64,{base64content}",
    "SUFFIX": ".pdf"
}

Note: Workato connector also exposes "Upload file" as a dedicated operation, confirming this works reliably.

6.4 Trigger/Manage Approvals

Need API Support Confidence Notes
Trigger approval workflow PARTIAL Medium BPM activations can be triggered, but unclear if API can change approval status directly
Approve/reject documents UNCERTAIN Low-Medium May require form-specific "activation" (procedure call) rather than simple PATCH
Route documents UNCERTAIN Low Routing logic typically lives in BPM engine

What we know: Priority's BPM engine handles approval workflows. Engini's connector mentions "activate form activations" — suggesting API can trigger procedures/activations on forms. This is the mechanism for approval actions but needs vendor confirmation for specific approval forms.

6.5 Read Status / Lifecycle Changes

Need API Support Confidence Notes
Poll document status YES High GET on any form returns current status fields
Receive status change events YES High Webhooks fire on BPM status transitions
Track payment status YES Medium Via polling or webhook on payment form status change

Recommended approach: Use webhooks for real-time status notifications (approved, paid, rejected) instead of polling. Configure BPM rules on the relevant financial forms.

6.6 Sync Reference Data Inbound (Read from Priority)

Need API Support Confidence Notes
Read chart of accounts YES High GET /ACCOUNTSACCNAME, ACCDES fields confirmed
Read suppliers/vendors YES High GET /SUPPLIERSSUPNAME, SUPDES, WTAXNUM, BANKACCOUNT fields confirmed
Read cost centers YES High GET /COSTCENTERS — confirmed in SDK Form-Columns
Read tax codes YES Medium TAXBOXES, VATCOMPTYPES confirmed; exact tax code form TBD

All reference data reads are straightforward GET operations. Form names and key fields confirmed across SDK documentation and production GitHub repos.

Orcha Integration Capability Summary

Orcha Need Priority Endpoint Method Confidence Customer Setup Required
Sync chart of accounts GET /ACCOUNTS READ High (confirmed) Enable form in FORMLIMITED
Sync suppliers GET /SUPPLIERS READ High (confirmed) Enable form in FORMLIMITED
Sync cost centers GET /COSTCENTERS READ High (confirmed) Enable form in FORMLIMITED
Push A/P invoices POST /PINVOICES WRITE High (confirmed) Enable form, API transaction package
Push A/R invoices POST /AINVOICES WRITE High (confirmed) Enable form, API transaction package
Push credit notes POST /CINVOICES WRITE High (confirmed) Enable form, API transaction package
Push purchase orders POST /PORDERS WRITE High (confirmed) Enable form, API transaction package
Push invoice lines POST /PINVOICES(...)/PINVOICEITEMS_SUBFORM WRITE High Included with invoice form
Attach PDF to invoice POST /PINVOICES(...)/EXTFILES_SUBFORM WRITE High (confirmed) None beyond form access
Write journal entries POST /FNCTRANS WRITE High (confirmed) Enable form in FORMLIMITED
Trigger approval Form activation via API WRITE Medium BPM configuration, vendor guidance
Receive status updates Webhook on BPM status change EVENT High (confirmed) BPM rule + webhook definition
Batch sync POST /$batch (up to 100 ops) WRITE High (confirmed) None

Architecture Decision

Approach Cost Complexity Control Recommendation
Direct OData API Low (transaction packages) Low-Medium Full Recommended
iPaaS (Workato/Make) $$$/ yr Medium Partial Only if customer already uses one
SFTP/File Custom pricing Medium-High Medium Fallback for legacy setups

Recommended: Direct OData API integration. The Priority OData API provides full CRUD on all forms, file attachments, batch operations, and webhook-based event notifications. This gives Orcha complete control without middleware costs.

Phased Integration Plan

Phase 1 — Discovery & Reference Data Sync (Week 1-2)

  1. Obtain customer's $metadata endpoint to get complete entity list and field definitions
  2. Verify form names for: accounts, suppliers, cost centers, A/P invoices
  3. Implement OAuth2 or PAT authentication flow
  4. Build reference data sync: Pull chart of accounts, suppliers, cost centers from Priority into Orcha for validation

Phase 2 — Document Push (Week 3-4)

  1. Implement invoice creation via POST to A/P invoice form (likely CINVOICES)
  2. Implement line item creation via POST to invoice items sub-form
  3. Implement PDF attachment via POST to EXTFILES_SUBFORM with base64-encoded PDF
  4. Implement batch operations for bulk invoice push (up to 100 per batch)

Phase 3 — Approval & Lifecycle (Week 5-6)

  1. Configure webhooks in customer's Priority instance for invoice status changes
  2. Build webhook receiver in Orcha to process status notifications (approved, paid, rejected)
  3. Investigate approval triggers — work with Priority support to confirm how to trigger approvals via API activations
  4. Implement status polling as fallback for forms without webhook configuration

Phase 4 — Production Hardening (Week 7-8)

  1. Rate limiting compliance — ensure <100 calls/minute, implement queuing
  2. Transaction monitoring — track API transaction consumption
  3. Error handling — handle 409 (conflict), timeout, and batch partial failures
  4. Retry logic with exponential backoff for transient failures

Key Risks & Mitigations

Risk Impact Mitigation
Form names differ per customer/version Blocks development Obtain $metadata early; build form-name mapping layer
Approval workflows can't be triggered via API Limits automation scope Confirm with Priority support; use Engini's form activation as reference
Transaction package costs scale with volume Ongoing cost Monitor consumption; use batch operations to reduce transaction count
Rate limit (100/min) constrains bulk sync Slow initial sync Use batch endpoint; implement smart delta-sync
Customer must enable forms for API access Deployment dependency Provide clear setup guide for Priority admin

8. Sources

Official Documentation

iPaaS & Middleware

Community & Third-Party

Vendor Website