---
canonical_url: "https://docs.composio.dev/toolkits/holded"
markdown_url: "https://docs.composio.dev/toolkits/holded.md"
product: "platform"
version: null
last_updated: null
---

# Holded

Holded is business management software for managing sales documents, invoices, services, contacts, contact groups, and tags.

- **Category:** sales & crm
- **Auth:** API_KEY
- **Composio-managed OAuth available?** N/A
- **Tools:** 10
- **Triggers:** 0
- **Slug:** `HOLDED`
- **Version:** 00000000_00

## Tools

### Create Contact

**Slug:** `HOLDED_CREATE_CONTACT`

Create a customer, supplier, lead, debtor, creditor, or unclassified contact and return its new Holded ID.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | Yes | Full name of the person or legal name of the company. |
| `email` | string | No | Primary email address. |
| `phone` | string | No | Landline phone number. |
| `mobile` | string | No | Mobile phone number. |
| `tax_id` | string | No | Tax identification number, such as NIF or CIF. |
| `website` | string | No | Contact website URL. |
| `is_person` | boolean | No | True for an individual person; false for a company. |
| `trade_name` | string | No | Commercial name when different from the legal name. |
| `vat_number` | string | No | EU VAT number for intra-community operations. |
| `contact_type` | string ("client" | "debtor" | "supplier" | "creditor" | "lead") | No | How Holded classifies the contact; omit to leave it unclassified. |
| `billing_address` | object | No | Billing address for the contact. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Invoice

**Slug:** `HOLDED_CREATE_INVOICE`

Create a sales invoice for an existing contact and return its ID; this does not send, approve, or record payment for the invoice.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `body` | string | No | Rich-text content printed on the invoice. |
| `tags` | array | No | Existing Holded tags to attach to the invoice. |
| `items` | array | Yes | Invoice lines. Provide at least one priced product or service line for a billable invoice. |
| `notes` | string | No | Internal notes visible only to the Holded team. |
| `currency` | string | No | ISO 4217 currency code, such as EUR. |
| `discount` | number | No | Global invoice discount percentage. |
| `due_date` | string | No | Payment due date as YYYY-MM-DD or an RFC 3339 date-time. |
| `language` | string | No | ISO 639-1 invoice language code, such as es or en. |
| `contact_id` | string | Yes | Existing Holded contact ID for the customer. |
| `issue_date` | string | No | Issue date as YYYY-MM-DD or an RFC 3339 date-time; omit to use Holded's default. |
| `description` | string | No | Short free-text invoice description. |
| `currency_change` | number | No | Exchange rate when currency differs from the account currency. |
| `sales_channel_id` | string | No | Existing Holded sales-channel ID. |
| `numbering_series_id` | string | No | Existing invoice numbering-series ID to control document numbering. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete Contact

**Slug:** `HOLDED_DELETE_CONTACT`

Permanently delete one contact by ID; linked documents keep display text but lose the live contact association.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `contact_id` | string | Yes | Holded contact ID to permanently delete, a 24-character lowercase hexadecimal string. Use this for a fixture you created or a contact the user explicitly selected. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete Invoice

**Slug:** `HOLDED_DELETE_INVOICE`

Permanently delete one invoice and its recorded payments; its document number is not reused.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `invoice_id` | string | Yes | Holded invoice ID to permanently delete, a 24-character lowercase hexadecimal string. Use this for a fixture you created or an invoice the user explicitly selected. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Find Contacts

**Slug:** `HOLDED_FIND_CONTACTS`

Find Holded contacts by name prefix or an exact email, phone, mobile, tax ID, or external ID. With no filter, return one page of contacts.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | No | Contact name prefix to search, case- and diacritic-insensitively. Cannot be combined with exact-match filters. |
| `email` | string | No | Exact primary email address to match. |
| `limit` | integer | No | Maximum contacts to return in this page (1-200). |
| `phone` | string | No | Exact landline phone number to match. |
| `cursor` | string | No | Opaque cursor returned by the previous call. Repeat the same search filters when continuing; omit for the first page. |
| `mobile` | string | No | Exact mobile phone number to match. |
| `tax_id` | string | No | Exact tax identification number, such as NIF or CIF, to match. |
| `external_id` | string | No | Exact caller-defined external contact identifier to match. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Find Invoices

**Slug:** `HOLDED_FIND_INVOICES`

Find Holded invoices by fuzzy document-number prefix or list them by contact, payment status, issue date, or due date. With no filter, return one page of invoices.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `sort` | string ("date" | "-date" | "dueDate" | "-dueDate" | "total" | "-total") | No | Sort field; a leading minus means descending. |
| `limit` | integer | No | Maximum invoices to return in this page (1-200). |
| `cursor` | string | No | Opaque cursor returned by the previous call. Repeat the same search filters when continuing; omit for the first page. |
| `status` | string ("pending" | "completed" | "partial" | "cancelled" | "failed" | "overdue") | No | Payment status. Pending excludes partially paid invoices; query partial separately when calculating all outstanding receivables. Overdue includes unpaid or partially paid invoices past due. |
| `contact_id` | string | No | Filter by the exact Holded contact ID. |
| `due_date_end` | string | No | Latest due date, as YYYY-MM-DD or an RFC 3339 date-time. |
| `due_date_start` | string | No | Earliest due date, as YYYY-MM-DD or an RFC 3339 date-time. |
| `issue_date_end` | string | No | Latest issue date, as YYYY-MM-DD or an RFC 3339 date-time. |
| `document_number` | string | No | Fuzzy document-number prefix; minor typos are tolerated. Draft, deleted, and cancelled invoices are excluded from this search route. Cannot be combined with contact, status, date, due-date, or sort filters. |
| `issue_date_start` | string | No | Earliest issue date, as YYYY-MM-DD or an RFC 3339 date-time. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Contact

**Slug:** `HOLDED_GET_CONTACT`

Return the complete profile of one contact by its Holded contact ID.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `contact_id` | string | Yes | Holded contact ID, a 24-character lowercase hexadecimal string. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Invoice

**Slug:** `HOLDED_GET_INVOICE`

Return full details, lines, totals, and payment summary for one invoice by its Holded ID.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `invoice_id` | string | Yes | Holded invoice ID, a 24-character lowercase hexadecimal string. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Contact

**Slug:** `HOLDED_UPDATE_CONTACT`

Safely change selected fields on a contact without clearing unspecified profile data. Reads the contact before updating and returns the verified result.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `changes` | object | Yes | Fields to change. Omitted fields remain unchanged; an explicit null clears a nullable field. |
| `contact_id` | string | Yes | Holded contact ID, a 24-character lowercase hexadecimal string. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Invoice

**Slug:** `HOLDED_UPDATE_INVOICE`

Safely change selected mutable fields on an invoice without clearing unspecified invoice data or altering recorded payments. Reads the invoice before updating and returns the verified result.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `changes` | object | Yes | Invoice fields to change. Omitted fields remain unchanged; an explicit null clears a nullable field. |
| `invoice_id` | string | Yes | Holded invoice ID, a 24-character lowercase hexadecimal string. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |
