In short
To start, create the key with «Por áreas» (by area) permissions and set Cuenta, Ventas, Contabilidad, Contactos, Bandeja de entrada, Desarrolladores and Sistema to «Leer» (Read). Everything else to «Ninguno» (None). The assistant can then read everything the connector knows how to read and cannot create anything in Holded.
If later you want drafts or journal entries, raise only the areas you need to «Full». Do not use «Escribir» (Write) on its own: in Holded it does not include Read.
Which permissions to tick for what you want to do
Pick the column that fits your case. The table is generated from the connector's real tools: an area is «Leer» if the assistant only reads it and «Full» if it also creates something there (because in Holded Write does not include Read). Names are shown as in Holded in Spanish, with the English meaning in brackets.
| Holded area | Questions and analysis onlyRecommended to start. The assistant reads, never creates. | Questions and draftsPlus drafts of invoices, credit notes, quotes, proformas and receipts, and creating or updating contacts. | Accounting firm doing the booksPlus purchases and their payments, the inbox (upload and convert receipts) and journal entries. |
|---|---|---|---|
| Cuenta (Account) | Leer (Read) | Leer (Read) | Leer (Read) |
| Ventas (Sales) | Leer (Read) | Full | Full |
| Contabilidad (Accounting) | Leer (Read) | Leer (Read) | Full |
| Contactos (Contacts) | Leer (Read) | Full | Full |
| Bandeja de entrada (Inbox)optional | Leer (Read) | Leer (Read) | Full |
| Desarrolladores (Developers)optional | Leer (Read) | Leer (Read) | Leer (Read) |
| Sistema (System)optional | Leer (Read) In all three cases, as a precaution. According to the Holded API, numbering series belong to Ventas → Configuración de facturación (Sales → Invoicing settings); while we confirm it with a real key, also leave «Sistema» (System) at «Leer» so the series lookup works. | ||
| CRM, Proyectos (Projects), Inventario (Inventory), Equipo (Team) | Ninguno (None) Not used by the connector: leave them at «Ninguno». | ||
Fine-tune by resource (least privilege)
Inside each area Holded lets you set the level resource by resource. To grant only what is needed, these are the resources the connector uses in each case; every other resource can stay at «Ninguno».
| Holded area | Questions and analysis only | Questions and drafts | Accounting firm doing the books |
|---|---|---|---|
| Cuenta (Account) → Información de la cuenta (Account information) | Leer (Read) | Leer (Read) | Leer (Read) |
| Ventas (Sales) → Presupuestos (Quotes) | Leer (Read) | Full | Full |
| Ventas (Sales) → Facturas (Invoices) | Leer (Read) | Full | Full |
| Ventas (Sales) → Configuración de facturación (Invoicing settings) | Leer (Read) | Leer (Read) | Leer (Read) |
| Ventas (Sales) → Facturas proforma (Proforma invoices) | Leer (Read) | Full | Full |
| Ventas (Sales) → Recibos (Receipts) | Leer (Read) | Full | Full |
| Contabilidad (Accounting) → Bancos (Banks) | Leer (Read) | Leer (Read) | Leer (Read) |
| Contabilidad (Accounting) → Previsión de tesorería (Cash-flow forecast) | Leer (Read) | Leer (Read) | Leer (Read) |
| Contabilidad (Accounting) → Plan de cuentas (Chart of accounts) | Leer (Read) | Leer (Read) | Leer (Read) |
| Contabilidad (Accounting) → Libro diario (Journal) | Leer (Read) | Leer (Read) | Full |
| Contabilidad (Accounting) → Cuentas de gasto (Expense accounts) | Leer (Read) | Leer (Read) | Leer (Read) |
| Contabilidad (Accounting) → Pagos (Payments) | Leer (Read) | Leer (Read) | Leer (Read) |
| Contabilidad (Accounting) → Compras (Purchases) | Leer (Read) | Leer (Read) | Full |
| Contabilidad (Accounting) → Remesas (Remittances) | Leer (Read) | Leer (Read) | Leer (Read) |
| Contabilidad (Accounting) → Impuestos (Taxes) | Leer (Read) | Leer (Read) | Leer (Read) |
| Contactos (Contacts) → Contactos (Contacts) | Leer (Read) | Full | Full |
| Bandeja de entrada (Inbox) → Bandeja de entrada (Inbox) | Leer (Read) | Leer (Read) | Full |
| Desarrolladores (Developers) → Uso (Usage) | Leer (Read) | Leer (Read) | Leer (Read) |
Bandeja de entrada (Inbox) and Desarrolladores → Uso (Developers → Usage) are optional: the connector works without them, but the assistant will not see documents waiting to be booked or warn you about your API usage.
To connect the key you need at least read access to invoices, contacts and the chart of accounts. Always tick Cuenta (Account information) too: without it you cannot connect from Claude or ChatGPT, we cannot check which company the key belongs to, and the assistant cannot confirm which company it is working on. If something is missing, the connection window tells you what.
With Ventas (Sales) at «Full», the assistant can also email documents and record collections: Holded grants those with the same permission as creating. You confirm each one first.
For accounting firms, «Full» on the whole Contabilidad area also covers accounting writes added later (for example reconciling or creating accounts). If you prefer the minimum, use the per-resource table and widen it when they are switched on.
Create the key with those permissions
- 1
Open Configuración → Desarrolladores → Credenciales
Sign in to the Holded of the company you want to connect (each company has its own key) with a user who can see «Desarrolladores» (Developers): the owner, an administrator or the Developer role. Click + Agregar API Token (Add API token) and give it a recognisable name, e.g. “Claude and ChatGPT (Isaak)”.
- 2
Choose «Permiso por áreas» (by area)
Holded offers ready-made modes («Análisis», read-only, and «Operativo») and «Por áreas». Use «Por áreas»: the ready-made modes open areas the connector does not use (CRM, Projects, Inventory…) and «Operativo» does not include writing invoices or accounting.
You can set a global permission and then adjust each area. The clearest way: global at «Ninguno» and raise only the areas in the table.
- 3
Set the level of each area
Each area (and each resource in it) accepts Ninguno (None), Leer (Read), Escribir (Write) or Full. Some screens show them as «Sin acceso», «Lectura», «Escritura» and «Full». Copy the column for your case. If you choose write access anywhere, Holded asks you to type «Doy mi consentimiento» (I give my consent) to confirm.
- 4
Create the token and copy it in that same window
Click Crear Token and copy the full key (it starts with
pat_). Holded shows it in full only once. More detail in the key guide (in Spanish). - 5
Paste it at isaak.pro
Paste it in the connection window (from Claude, ChatGPT or your dashboard). Before saving it we check with Holded which company it belongs to and, if a required permission is missing, we tell you which one.
Change or revoke permissions later
Raise or lower permissions: edit the key
In Holded → Configuración → Desarrolladores → Credenciales, edit the key, change the levels and save. The key stays the same: you do not need to do anything at isaak.pro or reconnect Claude or ChatGPT. Changes apply from the next request.
Use another key: change it in the dashboard
- Create the new key in the same company's Holded.
- At isaak.pro open Dashboard → Empresas, open the company and, under «Conexión con Holded», click Cambiar clave (Change key). Only the company owner and administrators can do this.
- Paste the new key. If it has the Cuenta permission and belongs to another company (different tax ID), we reject it so data never mixes: add it as a new company instead.
- Changing the key invalidates the Claude and ChatGPT authorisations for that company (the dashboard marks them «Ya no funciona»). Revoke them and reconnect the assistant.
- Delete the old key in Holded.
Remove access
- Everything: delete the key in Holded. From then on Holded rejects every connector request for that company.
- One assistant only: on the company page, «Claude y ChatGPT», revoke its authorisation. The key stays saved for the others.
- Disconnect the company from isaak.pro: on the same page, «Conexión con Holded» → disconnect. Also delete the key in Holded if you will not use it again.
What happens if a permission is missing
When connecting: if a required permission is missing, the connection window does not save the key and shows the exact permission, e.g. «Al token de Holded le falta este permiso: Ventas → Facturas: Leer».
While using the connector: if the assistant tries something the key is not allowed to do, Holded rejects it and Claude or ChatGPT show a message (in Spanish) naming the missing permission, e.g. «Contabilidad → Bancos: Leer», where to change it, and that the other tools keep working.
How to fix it: edit the key in Holded, set that resource (or its area) to «Leer», or «Full» if you also need to create, save and ask again. Only that tool fails meanwhile. The table at the end shows what stops working without each permission.
If Holded says the key itself is not valid (deleted or revoked), create a new one and change it in the dashboard. More messages in Error messages (in Spanish).
Holded permissions and isaak.pro permissions add up
An action only happens if all three layers allow it:
- The Holded key (this guide): what Holded allows with that key. It is the ceiling for every user of the company.
- Your isaak.pro role, per company (Dashboard → Usuarios): «Solo lectura» (read-only) reads but creates nothing, even if the key is «Full»; «Acceso completo» (full access) reads and creates drafts or records with confirmation; «Administrador» also manages the company (details, connections, team).
- The Claude or ChatGPT authorisation: when you connect the assistant you choose whether it works with that company only or with all of yours. It grants the connector's tools and you can revoke it at any time from the dashboard.
Example: with the key at «Full» and a read-only user, that user cannot create anything. With a full-access user and the key at «Leer», they cannot either: Holded rejects it.
Security
- Least privilege: tick only what you will use. If you will only ask questions, everything at «Leer». You can always widen it later by editing the key.
- The connector deletes nothing: none of its tools deletes data in Holded, even with the key at «Full».
- Every write is confirmed: the assistant first shows you what it will create or send, and only does it when you confirm in the conversation. The confirmation works once and expires after 10 minutes.
- Drafts, unless Holded says otherwise: documents are created unapproved, but if your Holded has auto-approval on, or when converting an inbox document, they may end up issued. The assistant tells you how it ended up.
- The key never leaves isaak.pro: we store it encrypted and never pass it to Claude or ChatGPT. Treat it like a password and do not send it by chat.
Every tool and its permission
Full list of the connector's tools, generated from the code. Those marked † were deduced from the resource name in the Holded API and are pending confirmation with a real key.
| Tool | Minimum Holded permission | What stops working without it |
|---|---|---|
holded_list_invoicesRead sales invoices · read | Ventas (Sales) → Facturas (Invoices): Leer (Read) | Sales invoices cannot be listed or opened. Required to connect. |
holded_get_invoiceRead sales invoices · read | Ventas (Sales) → Facturas (Invoices): Leer (Read) | Sales invoices cannot be listed or opened. Required to connect. |
holded_list_documentsRead documents and PDFs · read | Depending on the document type, one of:Ventas (Sales) → Facturas (Invoices): Leer (Read)Ventas (Sales) → Presupuestos (Quotes): Leer (Read)Ventas (Sales) → Facturas proforma (Proforma invoices): Leer (Read)Ventas (Sales) → Recibos (Receipts): Leer (Read)Contabilidad (Accounting) → Compras (Purchases): Leer (Read) | Documents of that type (credit notes, quotes, proformas, receipts, purchases or refunds) cannot be read or downloaded as PDF. |
holded_get_documentRead documents and PDFs · read | Depending on the document type, one of:Ventas (Sales) → Facturas (Invoices): Leer (Read)Ventas (Sales) → Presupuestos (Quotes): Leer (Read)Ventas (Sales) → Facturas proforma (Proforma invoices): Leer (Read)Ventas (Sales) → Recibos (Receipts): Leer (Read)Contabilidad (Accounting) → Compras (Purchases): Leer (Read) | Documents of that type (credit notes, quotes, proformas, receipts, purchases or refunds) cannot be read or downloaded as PDF. |
holded_get_document_pdfRead documents and PDFs · read | Depending on the document type, one of:Ventas (Sales) → Facturas (Invoices): Leer (Read)Ventas (Sales) → Presupuestos (Quotes): Leer (Read)Ventas (Sales) → Facturas proforma (Proforma invoices): Leer (Read)Ventas (Sales) → Recibos (Receipts): Leer (Read)Contabilidad (Accounting) → Compras (Purchases): Leer (Read) | Documents of that type (credit notes, quotes, proformas, receipts, purchases or refunds) cannot be read or downloaded as PDF. |
holded_create_invoice_draftCreate drafts and convert documents · write | Ventas (Sales) → Facturas (Invoices): Escribir (Write)Optional: Contactos (Contacts) → Contactos (Contacts): Leer (Read) | Drafts of that document type cannot be created (nor converted, e.g. a quote into an invoice).If you give the customer name instead of its id, it looks it up in Contacts (read). |
holded_create_documentCreate drafts and convert documents · write | Depending on the document type, one of:Ventas (Sales) → Facturas (Invoices): Escribir (Write)Ventas (Sales) → Presupuestos (Quotes): Escribir (Write)Ventas (Sales) → Facturas proforma (Proforma invoices): Escribir (Write)Ventas (Sales) → Recibos (Receipts): Escribir (Write)Contabilidad (Accounting) → Compras (Purchases): Escribir (Write) | Drafts of that document type cannot be created (nor converted, e.g. a quote into an invoice). |
holded_convert_documentCreate drafts and convert documents · write † | Depending on the document type, one of:Ventas (Sales) → Facturas (Invoices): Escribir (Write)Ventas (Sales) → Presupuestos (Quotes): Escribir (Write)Ventas (Sales) → Facturas proforma (Proforma invoices): Escribir (Write)Ventas (Sales) → Recibos (Receipts): Escribir (Write)Contabilidad (Accounting) → Compras (Purchases): Escribir (Write) | Drafts of that document type cannot be created (nor converted, e.g. a quote into an invoice).Creates the target document as a draft (e.g. from quote to invoice). |
holded_send_documentSend by email · write | Depending on the document type, one of:Ventas (Sales) → Facturas (Invoices): Escribir (Write)Ventas (Sales) → Presupuestos (Quotes): Escribir (Write)Ventas (Sales) → Facturas proforma (Proforma invoices): Escribir (Write)Ventas (Sales) → Recibos (Receipts): Escribir (Write) | The document cannot be emailed from the conversation. |
holded_attach_document_fileAttach files · write | Depending on the document type, one of:Ventas (Sales) → Facturas (Invoices): Escribir (Write)Ventas (Sales) → Presupuestos (Quotes): Escribir (Write)Ventas (Sales) → Facturas proforma (Proforma invoices): Escribir (Write)Ventas (Sales) → Recibos (Receipts): Escribir (Write)Contabilidad (Accounting) → Compras (Purchases): Escribir (Write) | Files cannot be attached to an existing document. |
holded_list_recurring_invoicesRead recurring invoices · read † | Ventas (Sales) → Facturas (Invoices): Leer (Read) | Recurring invoices and their schedule cannot be read. |
holded_get_recurring_invoiceRead recurring invoices · read † | Ventas (Sales) → Facturas (Invoices): Leer (Read) | Recurring invoices and their schedule cannot be read. |
holded_get_recurring_invoice_scheduleRead recurring invoices · read † | Ventas (Sales) → Facturas (Invoices): Leer (Read) | Recurring invoices and their schedule cannot be read. |
holded_list_numbering_seriesNumbering series · read | Ventas (Sales) → Configuración de facturación (Invoicing settings): Leer (Read) | The assistant cannot list the series; drafts use the default Holded series. |
holded_list_expense_accountsExpense accounts · read † | Contabilidad (Accounting) → Cuentas de gasto (Expense accounts): Leer (Read) | Expense accounts used to classify purchases cannot be read. |
holded_get_expense_accountExpense accounts · read † | Contabilidad (Accounting) → Cuentas de gasto (Expense accounts): Leer (Read) | Expense accounts used to classify purchases cannot be read. |
holded_upload_inbox_documentUpload and convert in the inbox · write † | Bandeja de entrada (Inbox) → Bandeja de entrada (Inbox): Escribir (Write) | Receipts or invoices cannot be uploaded to the inbox, converted into a purchase or linked to an existing one. |
holded_list_inbox_documentsRead the inbox · read † | Bandeja de entrada (Inbox) → Bandeja de entrada (Inbox): Leer (Read) | Documents waiting to be booked, and their files, cannot be read. |
holded_get_inbox_documentRead the inbox · read † | Bandeja de entrada (Inbox) → Bandeja de entrada (Inbox): Leer (Read) | Documents waiting to be booked, and their files, cannot be read. |
holded_convert_inbox_documentUpload and convert in the inbox · write † | Bandeja de entrada (Inbox) → Bandeja de entrada (Inbox): Escribir (Write) | Receipts or invoices cannot be uploaded to the inbox, converted into a purchase or linked to an existing one.Depending on your Holded settings, the purchase may be issued rather than a draft: the assistant tells you. |
holded_attach_inbox_documentUpload and convert in the inbox · write † | Bandeja de entrada (Inbox) → Bandeja de entrada (Inbox): Escribir (Write) | Receipts or invoices cannot be uploaded to the inbox, converted into a purchase or linked to an existing one. |
holded_download_inbox_fileRead the inbox · read † | Bandeja de entrada (Inbox) → Bandeja de entrada (Inbox): Leer (Read) | Documents waiting to be booked, and their files, cannot be read. |
holded_get_inbox_file_previewRead the inbox · read † | Bandeja de entrada (Inbox) → Bandeja de entrada (Inbox): Leer (Read) | Documents waiting to be booked, and their files, cannot be read. |
holded_get_connected_companyIdentify the company · read | Cuenta (Account) → Información de la cuenta (Account information): Leer (Read) | You cannot connect from Claude or ChatGPT. From the dashboard you can, but we cannot check which company (name and tax ID) the key belongs to, and the assistant cannot confirm which company it is working on. |
holded_get_api_usageAPI quota · read | Desarrolladores (Developers) → Uso (Usage): Leer (Read) | The assistant cannot tell you how many Holded API calls the company has used this month. Everything else works. |
holded_list_bank_movementsBanks and transactions · read † | Contabilidad (Accounting) → Bancos (Banks): Leer (Read) | Bank accounts, balances and transactions (the basis for reconciliation) cannot be read. |
holded_list_cash_movementsBanks and transactions · read † | Contabilidad (Accounting) → Bancos (Banks): Leer (Read) | Bank accounts, balances and transactions (the basis for reconciliation) cannot be read. |
holded_list_treasury_accountsBanks and transactions · read | Contabilidad (Accounting) → Bancos (Banks): Leer (Read) | Bank accounts, balances and transactions (the basis for reconciliation) cannot be read. |
holded_get_treasury_accountBanks and transactions · read | Contabilidad (Accounting) → Bancos (Banks): Leer (Read) | Bank accounts, balances and transactions (the basis for reconciliation) cannot be read. |
holded_list_paymentsRead payments · read | Contabilidad (Accounting) → Pagos (Payments): Leer (Read) | Recorded payments and collections cannot be read. |
holded_get_paymentRead payments · read | Contabilidad (Accounting) → Pagos (Payments): Leer (Read) | Recorded payments and collections cannot be read. |
holded_pay_documentRecord collections and payments · write | Depending on the document type, one of:Ventas (Sales) → Facturas (Invoices): Escribir (Write)Ventas (Sales) → Recibos (Receipts): Escribir (Write)Contabilidad (Accounting) → Compras (Purchases): Escribir (Write) | A document cannot be marked as collected or paid. |
holded_list_payment_methodsPayment methods · read † | Ventas (Sales) → Configuración de facturación (Invoicing settings): Leer (Read) | The payment methods configured in Holded cannot be listed. |
holded_list_remittancesRemittances · read † | Contabilidad (Accounting) → Remesas (Remittances): Leer (Read) | Bank remittances cannot be read. |
holded_get_remittanceRemittances · read † | Contabilidad (Accounting) → Remesas (Remittances): Leer (Read) | Bank remittances cannot be read. |
holded_list_invoicing_forecastsCash-flow forecast · read † | Contabilidad (Accounting) → Previsión de tesorería (Cash-flow forecast): Leer (Read) | Forecast collections and payments cannot be read. |
holded_get_invoicing_forecastCash-flow forecast · read † | Contabilidad (Accounting) → Previsión de tesorería (Cash-flow forecast): Leer (Read) | Forecast collections and payments cannot be read. |
holded_list_accountsChart of accounts · read | Contabilidad (Accounting) → Plan de cuentas (Chart of accounts): Leer (Read) | The chart of accounts and its balances cannot be read, and entries cannot be created. Required to connect. |
holded_list_daily_ledgerJournal · read | Contabilidad (Accounting) → Libro diario (Journal): Leer (Read) | The journal and the detail of an entry cannot be read. |
holded_get_ledger_entryJournal · read | Contabilidad (Accounting) → Libro diario (Journal): Leer (Read) | The journal and the detail of an entry cannot be read. |
holded_create_daily_ledger_entryCreate journal entries · write † | Contabilidad (Accounting) → Libro diario (Journal): Escribir (Write)Contabilidad (Accounting) → Plan de cuentas (Chart of accounts): Leer (Read) | Manual entries cannot be created in the journal. |
holded_list_taxesTaxes · read | Contabilidad (Accounting) → Impuestos (Taxes): Leer (Read) | The taxes (VAT rates, withholdings) of the account cannot be listed. |
holded_list_contactsRead contacts · read | Contactos (Contacts) → Contactos (Contacts): Leer (Read) | Customers, suppliers and their attachments cannot be read. Required to connect. |
holded_get_contactRead contacts · read | Contactos (Contacts) → Contactos (Contacts): Leer (Read) | Customers, suppliers and their attachments cannot be read. Required to connect. |
holded_search_contactsRead contacts · read | Contactos (Contacts) → Contactos (Contacts): Leer (Read) | Customers, suppliers and their attachments cannot be read. Required to connect. |
holded_list_contact_attachmentsRead contacts · read † | Contactos (Contacts) → Contactos (Contacts): Leer (Read) | Customers, suppliers and their attachments cannot be read. Required to connect. |
holded_get_contact_attachmentRead contacts · read † | Contactos (Contacts) → Contactos (Contacts): Leer (Read) | Customers, suppliers and their attachments cannot be read. Required to connect. |
holded_create_contactCreate and update contacts · write | Contactos (Contacts) → Contactos (Contacts): Escribir (Write) | Customers or suppliers cannot be created or updated. |
holded_update_contactCreate and update contacts · write | Contactos (Contacts) → Contactos (Contacts): Leer (Read)Contactos (Contacts) → Contactos (Contacts): Escribir (Write) | Customers or suppliers cannot be created or updated. |
FAQ
- Why «Full» and not «Escribir» (Write)?
- Because in Holded Write lets you create but not read. The assistant needs to read what it is about to create (the customer, the series, whether it already exists), so writing needs «Full».
- Do I need to reconnect if I change permissions?
- No, if you edit the same key in Holded. Yes, if you replace it with another key: then reconnect Claude or ChatGPT.
- With «Full», can the assistant delete things or make transfers?
- No. The connector has no delete or transfer tools, and every write asks you to confirm first.
- I am an accounting firm: what should I ask my clients for?
- For reviewing, the “Questions and analysis only” column. If you will record purchases or journal entries, the “Accounting firm” one. Each company creates its key in its own Holded; see the guide for accounting firms (in Spanish).
- What about CRM, Projects, Inventory or Team?
- The connector does not use them: leave them at «Ninguno».