Date: 2026-02-22 Author: Max (with Claude Code) For: Co-founder review
Agicap has undocumented write API endpoints for invoices, POs, and credit notes. We confirmed them by creating a test account, authenticating via OAuth 2.0, and reverse-engineering the full DTO schema through validation errors. The API works, but needs a "connection" to be provisioned by Agicap before we can actually push data. Next step: contact Agicap to get a connection set up.
| Channel | Result |
|---|---|
| Agicap Public API | Write endpoints exist (undocumented). Confirmed via direct testing. |
| Celigo (iPaaS) | Native Agicap connector with confirmed Import (write) support. ~$6k/yr minimum. |
| Chift (unified API) | Dead end. Agicap is a customer of Chift, not a connector. |
| SFTP | Custom-quoted professional services engagement. No self-service. No documented formats. |
| Agicap UI | "Banks and Integrations" page only handles bank connections, not API integration sources. |
POST https://api.agicap.com/public/auth/v1/token with client credentialsagicap:public-api, token lifetime: 3600sGET /public/treasury-bank-journal/v1/entities/211584/exports?size=5&after=2020-01-01T00:00:00Z → HTTP 200, {items:[], cursor:{...}}GET /public/business-documents/v1/entities/211584/connections → HTTP 200, []By sending intentionally incomplete requests, we got HTTP 400 validation errors that revealed:
5 writable document types:
POST .../connections/{connectionId}/supplier-invoicesPOST .../connections/{connectionId}/client-invoicesPOST .../connections/{connectionId}/purchase-ordersPOST .../connections/{connectionId}/supplier-credit-notesPOST .../connections/{connectionId}/client-credit-notesBoth v1 and v2 of the API exist. URL pattern:
https://api.agicap.com/public/business-documents/{v1|v2}/entities/{entityId}/connections/{connectionId}/{resource}
By sending wrong field types and checking for 400 vs 500 responses, we mapped which fields the backend actually parses:
Required fields (V2 supplier/client invoices):
| Field | Type |
|---|---|
externalId |
string |
invoiceNumber |
string |
currency |
string |
amounts.totalAmount |
number |
amounts.taxesAmount |
number |
amounts.dueAmount |
number |
status |
enum: none, draft, due, paid, cancelled, deleted, paymentExecuted |
issueDate |
DateTimeOffset |
dueDate |
DateTimeOffset |
counterParty.id |
string |
Optional fields (confirmed parsed by DTO):
| Field | Type |
|---|---|
counterParty.name |
string |
paymentDate |
Nullable<DateTimeOffset> |
metadata |
IDictionary<string, string> |
Variations by document type:
purchaseOrderNumber instead of invoiceNumbercreditNoteNumber and don't require dueDateFields confirmed NOT on the DTO (silently ignored by .NET backend): description, costCenter (top-level), category, account, tags, lineItems, notes, paymentTerms, reference, supplier, contact, bankAccount, paymentMethod, and ~15 others tested
Valid statuses:
none, draft, due, paid, cancelled, deleted, paymentExecutednone, draft, due, paid, cancelled, deletedExample V2 request body:
[{
"externalId": "orcha-001",
"invoiceNumber": "INV-2024-001",
"currency": "EUR",
"amounts": {"totalAmount": 119.00, "taxesAmount": 19.00, "dueAmount": 119.00},
"status": "draft",
"issueDate": "2024-01-15",
"dueDate": "2024-02-15",
"counterParty": {"id": "supplier-001", "name": "Test Supplier GmbH"},
"metadata": {"costCenter": "CC-001", "glAccount": "4200"}
}]
All return 404: categories, cost-centers, accounts, contacts, suppliers, expected-transactions, payment-orders, settings, integrations, sources
POST /connections endpoint exists but returns HTTP 500 for every field combinationmetadata Field (Cost Centers + GL Accounts)Cost centers and GL accounts are not available as standalone endpoints (404). However, both v1 and v2 DTOs have a metadata field typed as IDictionary<string, string>. This is almost certainly how custom data like cost centers and GL accounts get attached to invoices.
We can't test which metadata keys Agicap recognizes until we have a live connection. This is a key question for Agicap.
| Capability | Can we do it? | How? | Confidence |
|---|---|---|---|
| Write invoices (supplier/client) | YES | Business Documents API v2 | 95%+ (validated via API) |
| Write purchase orders | YES | Business Documents API v2 | 95%+ (validated via API) |
| Write credit notes (supplier/client) | YES | Business Documents API v2 | 95%+ (validated via API) |
| Push cost centers | Likely | Via metadata field on invoices |
80% (field exists, keys untested) |
| Push GL accounts | Likely | Via metadata field on invoices |
80% (field exists, keys untested) |
| Trigger approval workflows | NO | Not possible via any channel | 95%+ |
| Read bank journal entries | YES | Treasury Bank Journal API | Confirmed |
| Read transactions | YES | Treasury Bank Journal exports | Confirmed |
| Read card expenses | Likely | Card Expenses Bank Journal API | High |
| Approach | Cost | Complexity | Best When |
|---|---|---|---|
| Direct Agicap API (recommended) | $0 | Low | Agicap provisions a connection for us |
| Celigo middleware | ~$6k/yr | Medium | If connection can only be created via Celigo |
| SFTP | Custom quote | High | If API approach fails entirely |
Recommended: Direct API integration via Business Documents v2. Auth is standard OAuth 2.0, schema is straightforward, backend is .NET/C#. Build a native Clojure module following Orcha's DATEV/Maesn pattern.
Send them this:
We're building an integration from our invoice processing platform (Orcha) to Agicap via your Business Documents API v2. We've confirmed the write endpoints work and reverse-engineered the DTO schema.
We need:
- A connection provisioned for entity 211584 (GET /connections currently returns [])
- Full API documentation for Business Documents v2 write endpoints
- What
metadatakeys are recognized for cost centers and GL accounts?- Is there a partner API program for direct integration?
Contact via: https://agicap.com/en/partners/become-partner/
metadata: {"costCenter": "CC-001"} and check if it's persistedmetadata: {"glAccount": "4200"} and check if it's persistedThe current API credentials (Client ID MWKY9K5mrD) were used during this exploration and should be rotated.
| Resource | URL |
|---|---|
| Developer Portal | https://api.agicap.com/ |
| Business Documents Guide | https://api.agicap.com/guides/business_documents |
| Business Documents v2 | https://api.agicap.com/api-details/business-documents-v2 |
| Auth Guide | https://api.agicap.com/guides/authentication |
| Partner Program | https://agicap.com/en/partners/become-partner/ |
| Celigo Agicap Connector | https://docs.celigo.com/hc/en-us/articles/30494709375515 |
| Legacy API Docs | https://openapi.agicap.com/docs/index.html |
| Postman Collection | https://www.postman.com/agicap-data-int/workspace/agicap-public/ |
POST /connections returns 500 for all payloads. Needs Agicap involvement.