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
- Protocol: OData (Open Data Protocol) over REST/HTTP
- Base URL format:
https://{instance}.priority-connect.online/odata/Priority/{env}.ini/{company}
- Demo/sandbox:
https://t.eu.priority-connect.online/odata/Priority/tabbtd38.ini/usdemo (available since v25.0)
- Response format: JSON (default)
- Max response size: 350MB, 2,000 records per request (configurable via MAXAPILINES in v25.1+)
- Developer portal: prioritysoftware.github.io/restapi
- Postman collection: Available via developer portal for demo environment
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
- 100 API calls per minute per user
- 15 requests queued (10 concurrent + 5 in queue)
- 3-minute timeout per request
- Transaction counting: Write operations (POST/PATCH creating or updating forms) consume transactions, purchased in packages of 10,000/month. Forms classified as premium, regular, or free.
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):
- Renew licenses — System Management > System Maintenance > Renew License
- Create API user — Create a dedicated user (e.g., "orcha"), mark as "Active user" in Permissions
- Set API license — On the user's Licenses tab, select "App-Only License"
- Set API-user field — On the employee card, set the API-user field
- Generate auth token — System Management > Authentication Tokens for REST Interfaces
- Enable forms for API — Open
FORMLIMITED ("Limited Access/API Forms"), retrieve each form needed, and mark "Available for API"
- Send activation link — System Management > Users > Send Program Activation Link, select "API" as activation type
What this means for Orcha:
- The customer cannot just give us an API key — they need to go through the setup above
- We should provide a setup checklist listing exactly which forms to enable in FORMLIMITED (PINVOICES, SUPPLIERS, ACCOUNTS, COSTCENTERS, etc.)
- Transaction package costs are an ongoing expense for the customer — we should design for efficiency (batch operations, delta sync, avoid unnecessary writes)
- Pricing for API module + transaction packages is not publicly listed — the customer needs to contact Priority sales or their Priority partner
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 |
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) |
| 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
- Composite keys: Some financial forms (e.g., AINVOICES) use composite keys:
AINVOICES(IVNUM='T9696',IVTYPE='A',DEBIT='D')
- File attachments: Base64-encoded in format
data:application/pdf;base64,{content} with SUFFIX field
- Text fields: Support HTML, append mode, and digital signatures
- Form access control: Forms must be explicitly enabled for API access via the "Limited Access/API Forms" configuration (admin step required on customer side)
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
- Listed on Priority Software Marketplace
- Supports automation workflows with 2,400+ apps
- No-code environment for creating, updating, deleting entities
- Processes through official Priority API endpoints
4.3 Zapier
- Available on Priority Software Marketplace
- Described as "Automate any sync tasks with Zapier iPaaS"
- Details on specific operations not publicly documented
4.4 Other Connectors
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)
- XML file exchange documented in financial module integrations
- Export directory pattern:
invoice_out on FTP server
- Import directory pattern:
invoice_paid on FTP server
- Used for payment status confirmations (PAID/REJECTED with voucher numbers)
- Pricing likely custom-quoted, not self-service
5.3 ODBC
- Direct database access available for on-premise installations
- Not applicable for cloud/SaaS deployments
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 /ACCOUNTS — ACCNAME, ACCDES fields confirmed |
| Read suppliers/vendors |
YES |
High |
GET /SUPPLIERS — SUPNAME, 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 |
7. Recommended Path Forward
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)
- Obtain customer's
$metadata endpoint to get complete entity list and field definitions
- Verify form names for: accounts, suppliers, cost centers, A/P invoices
- Implement OAuth2 or PAT authentication flow
- Build reference data sync: Pull chart of accounts, suppliers, cost centers from Priority into Orcha for validation
Phase 2 — Document Push (Week 3-4)
- Implement invoice creation via POST to A/P invoice form (likely
CINVOICES)
- Implement line item creation via POST to invoice items sub-form
- Implement PDF attachment via POST to
EXTFILES_SUBFORM with base64-encoded PDF
- Implement batch operations for bulk invoice push (up to 100 per batch)
Phase 3 — Approval & Lifecycle (Week 5-6)
- Configure webhooks in customer's Priority instance for invoice status changes
- Build webhook receiver in Orcha to process status notifications (approved, paid, rejected)
- Investigate approval triggers — work with Priority support to confirm how to trigger approvals via API activations
- Implement status polling as fallback for forms without webhook configuration
Phase 4 — Production Hardening (Week 7-8)
- Rate limiting compliance — ensure <100 calls/minute, implement queuing
- Transaction monitoring — track API transaction consumption
- Error handling — handle 409 (conflict), timeout, and batch partial failures
- 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
Vendor Website