For Agents
Manage contacts, products, treasuries, and invoicing inside a Holded ERP account through the public REST API.
Get started with Holded API in minutes using your preferred integration method.
# Add to your MCP client config (Claude Desktop, Cursor, Windsurf)
{
"jentic": {
"url": "https://api.jentic.com/mcp",
"auth": "oauth"
}
}
# Then ask your agent:
"create a contact in holded"
# → Jentic returns the GET /events tool with parameter schema, agent executes.What an agent can do with Holded API API.
Manage Holded contacts (clients, suppliers) with CRUD operations
Maintain a product catalog with pricing, codes, and attributes
Read and create treasuries to represent bank and cash accounts
Connect CRM records to invoicing for end-to-end revenue tracking
Coordinate accounting, invoicing, projects, and team data through one API surface
GET STARTED
Use for: I want to create a new contact in Holded, List all products in the Holded catalog, Get the details for a specific treasury account, Update the contact details for an existing client
Not supported: Does not handle payment processing, payroll, or banking transaction execution — use for Holded ERP record management (contacts, products, treasuries, invoicing) only.
Holded is an ERP platform for small and medium businesses that bundles invoicing, CRM, project management, team operations, and accounting in one product. The API exposes contacts, products, treasuries (cash and bank accounts), and the related accounting and invoicing resources, so an agent can read and update the same records that the Holded UI does. It is intended for businesses that already operate inside Holded and want to automate finance, CRM, or operational workflows on top of their data.
Patterns agents use Holded API API for, with concrete tasks.
★ CRM and Contact Sync
Sales tools and forms keep contact data fresh by pushing to Holded contacts. The API supports list, get, create, update, and delete on contacts so agents can dedupe and merge against existing records. This avoids the duplicate-client problem that plagues teams that maintain CRM records by hand.
Create a Holded contact for 'Acme Inc' with email billing@acme.com and verify no duplicate already exists by name match.
Product Catalog Automation
E-commerce and operations teams keep their Holded product catalog in sync with their PIM or store backend. The API exposes product list, get, create, and update operations so price and code changes propagate without manual entry. Catalog drift between systems disappears.
Create a Holded product with name 'Widget Pro', code WP-001, and price 49.99 EUR.
Treasury and Cash Visibility
Finance leads need a daily view of cash across multiple bank and cash accounts. GET /api/treasuries lists all configured treasuries, and POST creates new accounts as banking relationships expand. Agents pull this for end-of-day cash dashboards or alerts on low balances.
List all Holded treasuries and return the account names alongside their treasury ids.
Agent-Run ERP Operations
An AI ops agent connected via Jentic handles routine ERP work: it creates contacts from inbound forms, adds products from spreadsheets, and reconciles treasuries against bank feeds. The Holded key header stays in the Jentic vault so the agent never holds the credential. End-to-end setup is under an hour because operation schemas load on demand.
From a CSV of new clients, create matching Holded contacts for any not already in the system and report which were created.
55 endpoints — holded is an erp platform for small and medium businesses that bundles invoicing, crm, project management, team operations, and accounting in one product.
METHOD
PATH
DESCRIPTION
/api/contacts
List contacts
/api/contacts
Create contact
/api/products
List products
/api/products
Create product
/api/treasuries
List treasuries
/api/contacts
List contacts
/api/contacts
Create contact
/api/products
List products
/api/products
Create product
/api/treasuries
List treasuries
Three things that make agents converge on Jentic-routed access.
Credential isolation
The Holded 'key' header is stored encrypted in the Jentic vault. Agents execute Holded calls through Jentic and never see the raw key value.
Intent-based discovery
Agents search by intent (e.g., 'create a contact in holded') and Jentic returns the matching Holded operation with its input schema, so the agent calls the right endpoint without reading docs.
Time to first call
Direct Holded integration: 1-2 days to wire auth and the broad set of contact, product, and treasury schemas. Through Jentic: under 1 hour — search, load schema, execute.
Alternatives and complements available in the Jentic catalogue.
Xero Accounting API
Xero is a widely used accounting platform with deep API coverage
Choose Xero when accounting depth and global reach matter; choose Holded when a single bundled ERP (invoicing, CRM, projects, accounting) is preferred.
Stripe API
Stripe collects payments that flow into Holded invoices and treasuries
Choose Stripe to actually collect customer card payments; reflect the resulting receipts against Holded invoices and treasuries.
Quaderno API
Tax compliance API used alongside ERP invoicing for multi-jurisdiction VAT
Choose Quaderno when VAT/global tax compliance is needed beyond Holded's built-in tax handling.
Specific to using Holded API API through Jentic.
What authentication does the Holded API use?
Holded uses an API key sent in the 'key' header on every request. Through Jentic, the key is stored encrypted in the Jentic vault and added to the Authorization header at execution time, so the agent never reads the raw value.
Can I create and update products with the Holded API?
Yes. POST /api/products creates a product with name, code, and price; PUT /api/products/{id} updates fields on an existing product; DELETE /api/products/{id} removes one. Use GET /api/products to enumerate the catalog before deciding which operation to call.
What are the rate limits for the Holded API?
Holded does not publish hard rate limits in its OpenAPI spec. Treat the API as moderate-volume — keep request rates below a few per second per account and back off on 429 responses, especially when batch-syncing contact or product data.
How do I create a Holded contact through Jentic?
Search Jentic for 'create holded contact', load POST /api/contacts, and execute with name, email, and any classification fields. Run pip install jentic and use the async SearchRequest, LoadRequest, ExecutionRequest pattern.
Does the Holded API expose treasuries (bank accounts)?
Yes. GET /api/treasuries lists existing treasuries (cash and bank account definitions), GET /api/treasuries/{id} retrieves a single one, and POST /api/treasuries creates new treasuries. Use these to map Holded accounts to external bank feeds.