# Quaderno

Quaderno is a tax compliance platform that automates tax calculations, invoicing, and reporting for businesses worldwide.

- **Category:** taxes
- **Auth:** API_KEY
- **Composio Managed App Available?** N/A
- **Tools:** 76
- **Triggers:** 0
- **Slug:** `QUADERNO`
- **Version:** 20260227_00

## Tools

### Add Expense Payment

**Slug:** `QUADERNO_ADD_EXPENSE_PAYMENT`

Adds a payment to an existing expense in Quaderno. Use when you need to record a payment received for an expense. Returns the payment record with ID, amount in cents, and payment method details.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | integer | Yes | The unique identifier for the expense to add payment to |
| `date` | string | Yes | The payment date in YYYY-MM-DD format |
| `amount` | number | No | Payment amount. If not provided, defaults to the expense total or 0 |
| `processor` | string | No | The payment processor name (e.g., stripe, paypal) |
| `processor_id` | string | No | The payment processor transaction ID |
| `payment_method` | string ("credit_card" | "cash" | "wire_transfer" | "direct_debit" | "check" | "iou" | "paypal" | "other") | Yes | Payment method used for the expense |

#### 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 |

### Calculate Tax Rate

**Slug:** `QUADERNO_CALCULATE_TAX_RATE`

Tool to calculate applicable tax rate for given address and transaction type. Use when you need tax details before invoicing.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `amount` | number | No | Monetary amount for tax calculation |
| `tax_id` | string | No | Customer's tax identification number, if available |
| `tax_code` | string | No | Tax code representing the product or service type |
| `to_country` | string | Yes | Destination country code (ISO 3166-1 alpha-2) |
| `from_country` | string | No | Origin country code (ISO 3166-1 alpha-2) |
| `product_type` | string ("good" | "service") | No | Type of item being sold |
| `to_postal_code` | string | No | Postal code of the destination address |

#### 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 Contact

**Slug:** `QUADERNO_CREATE_CONTACT`

Tool to create a new contact (customer or vendor). Use when you need to add a person or company contact in Quaderno.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `city` | string | No | City or locality of the address. |
| `kind` | string ("person" | "company") | Yes | Type of contact, either 'person' or 'company'. |
| `email` | string | No | Email address of the contact. |
| `region` | string | No | State or region of the address. |
| `country` | string | Yes | 2-letter ISO country code. |
| `phone_1` | string | No | Primary phone number of the contact. |
| `full_name` | string | No | Full name of the contact. Useful for companies or alternative display. |
| `last_name` | string | No | Last name of the contact. Optional for 'person'. |
| `department` | string | No | Department for company contacts. |
| `first_name` | string | Yes | First name of the contact (or primary contact name for companies). |
| `postal_code` | string | No | ZIP or postal code. |
| `street_line_1` | string | No | First line of street address. |
| `contact_person` | string | No | Primary contact person for company contacts. |

#### 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 Coupon

**Slug:** `QUADERNO_CREATE_COUPON`

Tool to create a new discount coupon in Quaderno. Use when you need to create either a percentage-based or fixed-amount discount coupon. Either percent_off or amount_off must be provided (but not both). For amount_off coupons, currency is required.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `code` | string | Yes | Unique coupon code that customers will use at checkout. Must be unique across all coupons. |
| `name` | string | No | Display name of the coupon shown to customers on invoices. If not provided, the code will be displayed. |
| `currency` | string | No | Three-letter ISO currency code (uppercase) for the amount_off discount. Required if amount_off is provided. Must be a supported currency in your payment processors. |
| `redeem_by` | string | No | Date after which the coupon cannot be redeemed (format: YYYY-MM-DD). If not set, coupon never expires. |
| `amount_off` | number | No | Fixed amount to discount from the subtotal in the currency specified. Required if percent_off is not provided. Must be positive. |
| `percent_off` | number | No | Percentage discount to apply to the subtotal (e.g., 25.5 for 25.5% off). Required if amount_off is not provided. Must be between 0 and 100. |
| `max_redemptions` | integer | No | Maximum number of times this coupon can be redeemed across all customers before it expires. If not set, coupon has unlimited redemptions. |

#### 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 Estimate

**Slug:** `QUADERNO_CREATE_ESTIMATE`

Creates a new estimate/quote in Quaderno for a customer with line items. Returns estimate with ID, number, permalink, and total amounts in cents. Use this when you need to create a cost estimate or quote for a project or service.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `city` | string | No | Billing city |
| `notes` | string | No | Internal notes for the estimate |
| `number` | string | No | Estimate number; auto-generated if omitted |
| `region` | string | No | Billing region/state |
| `tax_id` | string | No | Customer tax ID |
| `contact` | object | Yes | Contact information - either a reference object like {'id': 123} to use an existing contact, or a full contact object with fields like first_name, last_name, email, country, kind (person/company), contact_name |
| `country` | string | No | Billing country code |
| `subject` | string | No | Estimate subject or summary |
| `currency` | string | Yes | Three-letter ISO currency code (e.g., USD, EUR, GBP) |
| `tag_list` | string | No | Comma-separated list of tags |
| `po_number` | string | No | Purchase order number |
| `issue_date` | string | No | Estimate issue date (YYYY-MM-DD) |
| `postal_code` | string | No | Billing postal code |
| `street_line_1` | string | No | Billing street line 1 |
| `street_line_2` | string | No | Billing street line 2 |
| `custom_metadata` | object | No | Custom metadata key/value pairs |
| `payment_details` | string | No | Payment details info |
| `items_attributes` | array | Yes | List of line items - each item must have 'description' (string), 'quantity' (number), and 'unit_price' (number in currency units, not cents) |

#### 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 Evidence

**Slug:** `QUADERNO_CREATE_EVIDENCE`

Tool to create a new location evidence for tax compliance. Use when you need to create evidence records with billing country, IP address, or bank country information for verifying customer location.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ip_address` | string | No | Customer's IP address for location verification |
| `document_id` | integer | Yes | The ID of the invoice/document to attach evidence to |
| `bank_country` | string | No | Country of customer's bank (ISO 3166-1 alpha-2 code) |
| `billing_country` | string | No | Country from billing address (ISO 3166-1 alpha-2 code) |

#### 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 Expense

**Slug:** `QUADERNO_CREATE_EXPENSE`

Tool to create a business expense in Quaderno. Use when you need to record an expense from a supplier or vendor with line items and optional attachments.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `city` | string | No | The billing city |
| `items` | array | Yes | List of line items - each must have description, quantity, and unit_price. Maximum 200 items per request. |
| `notes` | string | No | Extra notes about the expense |
| `state` | string ("outstanding" | "late" | "uncollectible" | "paid" | "refunded" | "archived") | No | Expense status values. |
| `region` | string | No | The billing state/province/region |
| `contact` | string | Yes | Supplier/provider contact - either a full contact object with first_name, or a reference object like {'id': 123} to use an existing contact |
| `country` | string | No | The billing country - 2-letter ISO country code |
| `subject` | string | No | An optional summary description of the expense |
| `currency` | string | No | Three-letter ISO currency code (e.g., USD, EUR, GBP) |
| `tag_list` | array | No | List of tags for categorization |
| `po_number` | string | No | Purchase order number |
| `attachment` | string | No | Attached file (receipt, invoice, etc.) with base64-encoded data and filename |
| `issue_date` | string | No | Date when the expense was issued (YYYY-MM-DD format) |
| `postal_code` | string | No | The billing ZIP or postal code |
| `street_line_1` | string | No | The billing address line 1 (Street address/PO Box) |
| `street_line_2` | string | No | The billing address line 2 (Apartment/Suite/Unit/Building) |
| `payment_method` | string ("credit_card" | "cash" | "wire_transfer" | "direct_debit" | "check" | "iou" | "paypal" | "other") | No | Payment methods accepted by Quaderno expenses. |
| `custom_metadata` | object | No | Set of key-value pairs for storing additional information |
| `payment_details` | string | No | Detailed information about the payment |
| `payment_processor` | string | No | The payment processor used to pay the expense |
| `payment_processor_id` | string | No | The ID the payment processor assigned to the payment |

#### 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:** `QUADERNO_CREATE_INVOICE`

Creates a new invoice in Quaderno for a customer with line items. Returns invoice with ID, number, permalink, PDF URL, and total amounts in cents. Use this when you need to bill a customer for products or services.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `city` | string | No | Billing city |
| `items` | array | Yes | List of line items - each item must have 'description' (string), 'quantity' (number), and 'unit_price' (number in currency units, not cents) |
| `notes` | string | No | Internal notes for the invoice |
| `number` | string | No | Invoice number; auto-generated if omitted |
| `region` | string | No | Billing region/state |
| `tax_id` | string | No | Customer tax ID |
| `contact` | object | Yes | Contact information - either a reference object like {'id': 123} to use an existing contact, or a full contact object with fields like first_name, last_name, email, country |
| `country` | string | No | Billing country code |
| `subject` | string | No | Invoice subject or summary |
| `currency` | string | Yes | Three-letter ISO currency code (e.g., USD, EUR, GBP) |
| `due_date` | string | No | Payment due date (YYYY-MM-DD) |
| `evidence` | object | No | Evidence object for tax calculation |
| `tag_list` | string | No | Comma-separated list of tags |
| `po_number` | string | No | Purchase order number |
| `attachment` | object | No | Attachment object with data, filename, public flag |
| `issue_date` | string | No | Invoice issue date (YYYY-MM-DD) |
| `postal_code` | string | No | Billing postal code |
| `street_line_1` | string | No | Billing street line 1 |
| `street_line_2` | string | No | Billing street line 2 |
| `custom_metadata` | object | No | Custom metadata key/value pairs |
| `payment_details` | string | No | Payment details info |
| `recurring_period` | string ("days" | "weeks" | "months" | "years") | No | Recurring period unit |
| `payment_processor` | string | No | Payment processor name |
| `processor_fee_cents` | integer | No | Processor fee in cents |
| `recurring_frequency` | integer | No | Recurring frequency number |
| `payment_processor_id` | string | No | Processor-assigned invoice ID |

#### 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 Product

**Slug:** `QUADERNO_CREATE_PRODUCT`

Creates a new product that can be used as a line item in invoices, credit notes, and expenses. Use this to register products with their SKU, pricing, tax classification, and other details in your Quaderno account.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `code` | string | Yes | The product's SKU (Stock Keeping Unit). |
| `kind` | string ("one_off" | "subscription") | No | Type of product: one-off purchase or subscription. |
| `name` | string | Yes | The product's name for customer display. |
| `stock` | string | No | Stock of the physical product. |
| `country` | string | No | 2-letter ISO country code. Required if tax_based_on is 'country'. |
| `currency` | string | No | Three-letter ISO currency code in uppercase. |
| `tax_type` | string ("excluded" | "included") | No | Whether taxes are included in the unit_cost. |
| `tax_class` | string ("consulting" | "eservice" | "ebook" | "saas" | "standard" | "reduced") | No | Tax class that applies to the product. |
| `unit_cost` | string | Yes | The unit price to be charged. |
| `description` | string | No | The product's description for customer display. |
| `product_type` | string ("good" | "service") | No | The type of the product: 'good' or 'service'. |
| `tax_based_on` | string ("customer_country" | "country") | No | How taxes are calculated: based on customer country or a specific country. |
| `stripe_plan_id` | string | No | For Stripe subscriptions: ID of the Stripe price. |
| `paypal_interval_unit` | string ("daily" | "weekly" | "monthly" | "yearly") | No | For PayPal subscriptions: billing frequency unit. Defaults to 'monthly' if not specified for subscription products. |
| `paypal_interval_duration` | integer | No | For subscription products: number of times the charge should recur. |
| `paypal_interval_frequency` | integer | No | For PayPal subscriptions: number of intervals between subscription billings. |

#### 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 Receipt

**Slug:** `QUADERNO_CREATE_RECEIPT`

Creates a new receipt in Quaderno documenting payment for goods or services. Returns receipt with ID, number, permalink, PDF URL, and total amounts. Use when you need to create a receipt for a completed transaction.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `city` | string | No | Billing city |
| `items` | array | Yes | List of line items - each must have 'description' (string), 'quantity' (number), and 'unit_price' (number in currency units, not cents) |
| `notes` | string | No | Internal notes for the receipt |
| `number` | string | No | Receipt number; auto-generated if omitted |
| `region` | string | No | Billing region/state |
| `contact` | object | Yes | Contact information - either {'id': 123} to reference an existing contact, or a full contact object with at least 'first_name' |
| `country` | string | No | Billing country as 2-letter ISO code |
| `subject` | string | No | Brief summary or title for the receipt |
| `currency` | string | No | Three-letter ISO currency code (e.g., USD, EUR). Defaults to account's base currency if omitted |
| `due_date` | string | No | Payment due date (YYYY-MM-DD) |
| `evidence` | object | No | Evidence of customer location for tax compliance |
| `payments` | array | Yes | List of payments - each must have 'payment_method' (string) and 'amount' (number) |
| `tag_list` | array | No | List of tags for categorizing the receipt |
| `po_number` | string | No | Purchase order number |
| `attachment` | object | No | Attachment object with 'data' (base64), 'filename', and optional 'public' flag |
| `issue_date` | string | No | Receipt issue date (YYYY-MM-DD). Defaults to today if omitted |
| `postal_code` | string | No | Billing postal code |
| `exchange_rate` | number | No | Exchange rate for currency conversion |
| `street_line_1` | string | No | Billing street line 1 |
| `street_line_2` | string | No | Billing street line 2 |
| `custom_metadata` | object | No | Custom key-value pairs for additional data |
| `payment_details` | string | No | Additional payment method information |
| `payment_processor` | string | No | Name of payment processor (e.g., stripe, paypal) |
| `processor_fee_cents` | integer | No | Payment processing fee in cents |
| `payment_processor_id` | string | No | Transaction ID from the payment processor |

#### 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 Recurring

**Slug:** `QUADERNO_CREATE_RECURRING`

Tool to create a recurring document in Quaderno that automatically generates invoices on a schedule. Use when setting up subscription billing or periodic invoices for a customer.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `items` | array | Yes | List of line items (max 200 items per request, 1000 total). Each item requires: 'description' (string), 'quantity' (number), 'unit_price' (number in currency units) |
| `notes` | string | No | Extra notes about the recurring |
| `state` | string ("active" | "archived") | No | Status of the recurring document |
| `taxes` | array | No | Array of tax line objects, each detailing a tax applicable to the recurring |
| `contact` | object | Yes | Contact information - either {'id': 123} to reference an existing contact, or a full contact object with at least 'first_name' field |
| `subject` | string | No | Optional summary description for the document |
| `currency` | string | No | Three-letter ISO currency code in uppercase (e.g., USD, EUR, GBP) |
| `due_days` | string | No | Date on which payment is due in YYYY-MM-DD format |
| `end_date` | string | No | Date of last document issue in YYYY-MM-DD format |
| `tag_list` | array | No | List of tags for the recurring document |
| `frequency` | string ("daily" | "weekly" | "biweekly" | "monthly" | "bimonthly" | "quarterly" | "semiyearly" | "yearly" | "biyearly") | No | Recurring frequency (deprecated - use recurring_period and recurring_frequency instead) |
| `po_number` | string | No | Purchase order number |
| `start_date` | string | No | Date of first document issue in YYYY-MM-DD format. Defaults to 1 month from today |
| `custom_metadata` | object | No | Key-value pairs for storing additional structured information |
| `payment_details` | string | No | Detailed information about accepted payment methods |
| `recurring_period` | string ("days" | "weeks" | "months" | "years") | No | Recurring period unit |
| `recurring_frequency` | integer | No | Number of recurring periods between each document |

#### 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 Report Request

**Slug:** `QUADERNO_CREATE_REPORT_REQUEST`

Tool to request a new report generation in Quaderno. Use when you need to generate tax summaries, invoice lists, or credit note lists for a specific date range. Reports are generated asynchronously - this action returns immediately with a 'pending' state. Use the List Reporting Requests action to poll for completion status and retrieve the download URL when the report is ready.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `parameters` | object | Yes | Parameters specifying report details, including the date range (from_date and to_date) |
| `report_type` | string ("tax_summary" | "invoices_list" | "credits_list") | Yes | The type of report to generate: 'tax_summary' for tax reports, 'invoices_list' for invoice reports, or 'credits_list' for credit note reports |

#### 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 Tax ID

**Slug:** `QUADERNO_CREATE_TAX_ID`

Tool to create a tax ID in a specific jurisdiction. Use when you need to register your business's tax identification number (such as VAT) in a tax jurisdiction.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `value` | string | Yes | Value of the tax ID. For instance, a VAT number. |
| `valid_from` | string | No | The tax ID's validity date in YYYY-MM-DD format. Defaults to the beginning of the year. |
| `valid_until` | string | No | The tax ID's expiration date in YYYY-MM-DD format, or null if the tax ID has no expiration date. |
| `import_scheme` | boolean | No | Whether the business is registered or not in the EU import scheme for foreign sellers of physical goods. |
| `jurisdiction_id` | integer | Yes | ID of the tax jurisdiction where the tax ID is registered. |
| `permanent_establishment` | boolean | No | Whether your business has physical presence (office, warehouse, etc) in the given jurisdiction. |

#### 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 Transaction

**Slug:** `QUADERNO_CREATE_TRANSACTION`

Tool to create a sale or refund transaction in Quaderno. Use when you need to record revenue or refunds - the API automatically generates invoices/credit notes when autosend is enabled. Preferred API for automated invoice generation.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `type` | string ("sale" | "refund") | Yes | Transaction type: 'sale' for revenue or 'refund' for returns |
| `items` | array | Yes | Array of line items - each must have description, amount, and tax information |
| `payment` | object | No | Payment information for the transaction. |
| `evidence` | object | No | Location evidence for tax compliance. |
| `processor` | string | No | Sales platform name (e.g., 'shopify', 'stripe', 'woocommerce') |
| `processor_id` | string | No | Sales platform transaction ID for reference and deduplication |

#### 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 Webhook

**Slug:** `QUADERNO_CREATE_WEBHOOK`

Tool to create a new webhook in Quaderno to receive event notifications. Use when you need to subscribe to real-time events like invoice.created or contact.created. Quaderno signs all webhook events with X-Quaderno-Signature header using HMAC-SHA1. Retry logic: 1 attempt/hour for up to 72 hours.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `url` | string | Yes | The endpoint URL to receive webhook events. Must be publicly accessible and respond to HEAD requests with 200 OK status for verification. |
| `events_types` | array | Yes | Array of event types to subscribe to. Common events include: invoice.created, invoice.updated, invoice.deleted, contact.created, contact.updated, contact.deleted, checkout.succeeded, checkout.abandoned, payment.created, payment.deleted, credit.created, credit.updated, estimate.created, estimate.updated, expense.created, expense.updated, recurring.created, recurring.updated. |

#### 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:** `QUADERNO_DELETE_CONTACT`

Tool to permanently delete a contact by ID. Use when you have confirmed the contact ID is correct and no longer need the contact.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | Unique identifier of the contact to be deleted |

#### 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 Coupon

**Slug:** `QUADERNO_DELETE_COUPON`

Tool to permanently delete a coupon. Use when you have confirmed the coupon ID is correct and need to remove it permanently (cannot be undone).

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | Unique identifier of the coupon to be deleted |

#### 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 Estimate

**Slug:** `QUADERNO_DELETE_ESTIMATE`

Permanently deletes an estimate from Quaderno by its ID. This action removes the estimate record from your Quaderno account. Use this when you need to delete an estimate that was created in error or is no longer needed. The deletion is permanent and cannot be undone. Returns an empty response on success (HTTP 204 No Content).

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | The unique identifier (ID) of the estimate to delete. Can be provided as a string or integer. |

#### 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 Expense

**Slug:** `QUADERNO_DELETE_EXPENSE`

Permanently deletes an expense from Quaderno by its ID. This action removes the expense record from your Quaderno account. Use this when you need to delete an expense that was created in error or is no longer needed. The deletion is permanent and cannot be undone. Returns an empty response on success (HTTP 204 No Content).

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | The unique identifier (ID) of the expense to delete. Can be provided as a string or integer. |

#### 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 Product

**Slug:** `QUADERNO_DELETE_PRODUCT`

Tool to permanently delete a product by ID. Use when you have confirmed the product ID is correct and no longer need the product.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | Unique identifier of the product to be deleted |

#### 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 Recurring

**Slug:** `QUADERNO_DELETE_RECURRING`

Tool to permanently delete a recurring by ID. Use when you need to remove a recurring document from Quaderno. This action is irreversible.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | The unique identifier (ID) of the recurring to be deleted |

#### 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 Tax ID

**Slug:** `QUADERNO_DELETE_TAX_ID`

Permanently deletes a registered tax ID from your Quaderno account. Use this when you need to remove a tax jurisdiction registration that is no longer needed.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | The numeric ID of the registered tax ID to delete (e.g., '2313487') |

#### 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 Webhook

**Slug:** `QUADERNO_DELETE_WEBHOOK`

Tool to permanently delete a webhook by ID. Use when you have confirmed the webhook ID is correct and no longer need the webhook.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | integer | Yes | The unique identifier of the webhook to delete |

#### 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 |

### Deliver Credit Note

**Slug:** `QUADERNO_DELIVER_CREDIT_NOTE`

Sends a credit note to the customer via email. The contact associated with the credit note must have a valid email address. Returns the credit note details including the delivery email and PDF link.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | Unique identifier of the credit note to deliver. The associated contact must have a valid email address. |

#### 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 |

### Deliver Estimate

**Slug:** `QUADERNO_DELIVER_ESTIMATE`

Delivers an estimate to the customer via email. The estimate's contact must have a valid email address. Use this after creating or finalizing an estimate to send it to the customer.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | Unique identifier of the estimate to deliver via email to the customer 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 |

### Deliver Invoice

**Slug:** `QUADERNO_DELIVER_INVOICE`

Delivers an invoice to the customer via email. The invoice's contact must have a valid email address. Use this after creating or finalizing an invoice to send it to the customer.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | Invoice ID to deliver via email to the customer 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 |

### Deliver Receipt

**Slug:** `QUADERNO_DELIVER_RECEIPT`

Sends a receipt to the customer via email. The contact associated with the receipt must have a valid email address. Returns the receipt details including the delivery email and PDF link.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | Unique identifier of the receipt to deliver. The associated contact must have a valid email address. |

#### 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 Authorization

**Slug:** `QUADERNO_GET_AUTHORIZATION`

Tool to retrieve account credentials and verify API access. Use to validate authentication and get account details.

#### 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 Estimate

**Slug:** `QUADERNO_GET_ESTIMATE`

Tool to retrieve the details of an existing estimate by ID. Use when you need full estimate information for review or conversion to invoice.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | ID of the estimate to retrieve |

#### 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 |

### List Contacts

**Slug:** `QUADERNO_LIST_CONTACTS`

Tool to list contacts, paginated and filterable by name, email, or tax ID. Use when you need to retrieve subsets of your contacts.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `q` | string | No | Filter contacts by full name, email, or tax ID (case-sensitive) |
| `processor_id` | string | No | Filter contacts by external processor ID |

#### 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 |

### List Coupons

**Slug:** `QUADERNO_LIST_COUPONS`

Tool to list all coupons. Use when you need to retrieve available coupons sorted by creation date (newest first).

#### 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 |

### List Credits

**Slug:** `QUADERNO_LIST_CREDITS`

Tool to list all credit notes from Quaderno. Use when you need to retrieve credit notes with optional filtering by search query, date range, state, or processor ID.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `q` | string | No | Filters credit notes based on the credit number, customer name, or PO number |
| `date` | string | No | Filters credit notes based on the issue date. A date range must be entered in format 'YYYY-MM-DD,YYYY-MM-DD' or 'YYYY/MM/DD,YYYY/MM/DD' |
| `state` | string ("outstanding" | "late" | "uncollectible" | "paid" | "refunded" | "archived") | No | Current processing status of a credit note |
| `processor_id` | string | No | Filters credit notes based on its processor_id |

#### 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 |

### List Estimates

**Slug:** `QUADERNO_LIST_ESTIMATES`

Tool to list all estimates in the account, paginated and sorted by creation date (newest first). Use when you need to retrieve estimates, optionally filtered by contact name, state, or date range.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `q` | string | No | Filter results by contact name |
| `date` | string | No | Filter by date or date range |
| `state` | string | No | Filter by estimate state |
| `created_before` | integer | No | ID for pagination - returns estimates created before this ID |

#### 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 |

### List Evidence

**Slug:** `QUADERNO_LIST_EVIDENCE`

Tool to list all evidence objects. Use when you need to retrieve location evidences, optionally filtered by state or document ID.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `state` | string | No | Filter by one or more evidence states, comma-separated. Valid states: 'confirmed', 'unsettled', 'conflicting' |
| `document_id` | integer | No | Filter by related document ID |

#### 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 |

### List Expenses

**Slug:** `QUADERNO_LIST_EXPENSES`

List all expenses from Quaderno with pagination support. Returns expenses in reverse chronological order (newest first). Each expense includes complete details: contact information, line items, payments, taxes, and custom metadata. Use the 'limit' parameter to control page size (1-100, default 25). Use 'created_before' with an expense ID to paginate through results. Example: List first 50 expenses: ListExpenses(limit=50) Example: Get next page: ListExpenses(limit=50, created_before=168878750)

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `limit` | integer | No | Number of expenses to return per page. Default is 25, maximum is 100. |
| `created_before` | integer | No | Numeric expense ID. Returns expenses created before (earlier than) this expense ID, in reverse chronological order. Used for pagination to fetch the next page of results. |

#### 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 |

### List Invoices

**Slug:** `QUADERNO_LIST_INVOICES`

Tool to list all invoices from Quaderno with filtering support. Use when you need to retrieve invoices by various criteria such as number, customer name, date range, or payment status.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `q` | string | No | Filters invoices based on invoice number, customer name, or PO number |
| `date` | string | No | Filters invoices based on issue date. Must be a date range in format '2019-01-01,2019-12-31' or '2019/01/01,2019/12/31' |
| `state` | string ("outstanding" | "late" | "uncollectible" | "paid" | "refunded" | "archived") | No | Invoice state enumeration |
| `contact` | integer | No | Filters invoices based on customer ID |
| `processor_id` | string | No | Filters invoices based on the processor_id |

#### 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 |

### List Tax Jurisdictions

**Slug:** `QUADERNO_LIST_JURISDICTIONS`

Tool to list all tax jurisdictions. Use when you need supported jurisdictions for tax calculations.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `region` | string | No | Region or state filter. Case-sensitive. Use 'none' to return jurisdictions without a region. |
| `country` | string | No | 2-letter ISO 3166-1 country code to filter jurisdictions. Case-sensitive. |

#### 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 |

### List Products

**Slug:** `QUADERNO_LIST_PRODUCTS`

List all products (goods and services) from your Quaderno account. Supports filtering by name or SKU code using the 'q' parameter. Returns product details including pricing, tax settings, and subscription information.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `q` | string | No | Filter string to search products by name or SKU code (partial matching supported). |

#### 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 |

### List Receipts

**Slug:** `QUADERNO_LIST_RECEIPTS`

Tool to list all receipts from Quaderno with optional filtering by search query, date range, payment state, processor ID, or customer ID. Use when you need to retrieve receipts for reporting, reconciliation, or customer queries.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `q` | string | No | Filters receipts by receipt number, customer name, or PO number (case-sensitive) |
| `date` | string | No | Filters receipts by issue date range. Use format '2019-01-01,2019-12-31' or '2019/01/01,2019/12/31' |
| `state` | string ("outstanding" | "late" | "uncollectible" | "paid" | "refunded" | "archived") | No | Valid receipt states for filtering |
| `contact` | integer | No | Filters receipts by customer ID |
| `processor_id` | string | No | Filters receipts by external payment processor ID |

#### 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 |

### List Recurrings

**Slug:** `QUADERNO_LIST_RECURRINGS`

List all recurring documents (invoices, expenses, or estimates) from your Quaderno account. Recurring documents automatically generate new documents at specified intervals. Returns documents in reverse chronological order with support for pagination using the 'created_before' parameter.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `created_before` | integer | No | Numeric recurring ID. Returns recurring documents created before (earlier than) this recurring ID, in reverse chronological order. Used for pagination to fetch the next page of results. |

#### 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 |

### List Registered Tax IDs

**Slug:** `QUADERNO_LIST_REGISTERED_TAX_I_DS`

Tool to list all registered tax IDs. Use when retrieving jurisdictions where your business has registered tax IDs. Supports optional cursor-based pagination.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `limit` | integer | No | Maximum number of records to return (default 25, max 100). |
| `created_before` | integer | No | Cursor to return only tax IDs created before this timestamp. Use the `created_at` value from the last record of the previous page. |

#### 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 |

### List Reporting Requests

**Slug:** `QUADERNO_LIST_REPORTING_REQUESTS`

Retrieves all reporting requests for the account with their current status and download URLs. Use this tool to check the status of previously created reporting requests and obtain download URLs for completed reports. Reports are generated asynchronously, so use this endpoint to poll for completion status. When a report's state is 'succeeded', the report_url field will contain a temporary download link for the generated CSV file. Common use cases: - Check if a report generation request has completed - Retrieve download URLs for completed reports - Monitor all pending report requests - View historical report generations with their parameters (date ranges, report types)

#### 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 |

### List Sessions

**Slug:** `QUADERNO_LIST_SESSIONS`

List Quaderno Checkout sessions with optional filtering and pagination. Supports cursor-based pagination using 'created_before' and 'limit' parameters, and filtering by session status. Use this to retrieve checkout sessions from your Quaderno account.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `limit` | integer | No | Maximum number of sessions to return (1-100) |
| `status` | string | No | Filter sessions by status |
| `created_before` | integer | No | Session ID to paginate from. Returns sessions created before this ID |

#### 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 |

### List Tax Codes

**Slug:** `QUADERNO_LIST_TAX_CODES`

Tool to list all supported tax codes. Use when you need to retrieve the full set of tax codes for classifying items.

#### 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 |

### List Webhooks

**Slug:** `QUADERNO_LIST_WEBHOOKS`

Tool to list all webhooks. Use when you need to retrieve webhook configurations.

#### 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 |

### Mark Invoice Uncollectible

**Slug:** `QUADERNO_MARK_INVOICE_UNCOLLECTIBLE`

Tool to mark an invoice as uncollectible (bad debt). Use when an invoice cannot be collected and should be written off as a loss.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | The ID of the invoice to mark as uncollectible |

#### 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 |

### Ping API Service

**Slug:** `QUADERNO_PING`

Tool to check if the Quaderno API service is up and verify credentials. Use when testing API connectivity or checking service status before making actual requests.

#### 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 |

### Record Invoice Payment

**Slug:** `QUADERNO_RECORD_INVOICE_PAYMENT`

Tool to record a payment on an existing invoice. Use when a customer has paid an invoice and you need to record the payment details in Quaderno.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | The ID of the invoice to record a payment for |
| `date` | string | No | Payment date in YYYY-MM-DD format. Default is current date if not provided |
| `amount` | number | Yes | Paid amount in currency units (not cents) |
| `processor` | string | No | The payment processor used to process the payment |
| `processor_id` | string | No | The ID the payment processor assigned to the payment |
| `payment_method` | string ("credit_card" | "cash" | "wire_transfer" | "direct_debit" | "check" | "iou" | "paypal" | "other" | "credit") | No | Payment method options for invoice payment. |

#### 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 |

### Remove Invoice Payment

**Slug:** `QUADERNO_REMOVE_INVOICE_PAYMENT`

Tool to remove a payment from an invoice. Use when you need to delete a payment record that was applied to an invoice in error or needs to be adjusted.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | The unique identifier of the invoice from which to remove the payment. Can be provided as a string or integer. |
| `payment_id` | string | Yes | The unique identifier of the payment to remove from the invoice. Can be provided as a string or integer. |

#### 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 |

### Retrieve Contact

**Slug:** `QUADERNO_RETRIEVE_CONTACT`

Tool to retrieve details of an existing contact by ID. Use after confirming contact ID.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | ID of the contact to retrieve |

#### 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 |

### Retrieve Contact by Processor ID

**Slug:** `QUADERNO_RETRIEVE_CONTACT_BY_PROCESSOR_ID`

Tool to retrieve a contact by external payment processor customer ID and gateway name. Use when you have the processor's customer ID instead of Quaderno's internal contact ID.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `gateway` | string | Yes | Payment gateway name (e.g., stripe, paypal, braintree) |
| `customer_id` | string | Yes | External customer ID from the payment processor |

#### 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 |

### Retrieve Coupon

**Slug:** `QUADERNO_RETRIEVE_COUPON`

Retrieve detailed information about a specific coupon by its ID. Use this action when you need to fetch coupon details like discount percentage, redemption limits, or expiration dates. You must first obtain a valid coupon ID from the List Coupons action or from a coupon creation operation. Returns coupon code, discount amount/percentage, redemption statistics, and validity information.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | Unique identifier of the coupon to retrieve |

#### 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 |

### Retrieve Credit Note

**Slug:** `QUADERNO_RETRIEVE_CREDIT`

Tool to retrieve details of an existing credit note by ID. Use when you need full credit note details for refund processing or reporting.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | integer | Yes | The unique identifier for the credit note |

#### 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 |

### Retrieve Evidence

**Slug:** `QUADERNO_RETRIEVE_EVIDENCE`

Retrieves a specific evidence object by its ID. Evidence objects contain location proofs (billing country, IP address, bank country) used for tax compliance. Use this when you need detailed information about a specific evidence record, typically after obtaining the evidence ID from the LIST_EVIDENCE action.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | The unique identifier of the evidence object to retrieve (numeric 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 |

### Retrieve Expense

**Slug:** `QUADERNO_RETRIEVE_EXPENSE`

Tool to retrieve details of an existing expense by ID. Use after confirming expense ID.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | ID of the expense to retrieve |

#### 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 |

### Retrieve Invoice

**Slug:** `QUADERNO_RETRIEVE_INVOICE`

Tool to retrieve details of an existing invoice by ID. Use when you need full invoice details for reporting or reconciliation.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | ID of the invoice to retrieve |

#### 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 |

### Retrieve Tax Jurisdiction

**Slug:** `QUADERNO_RETRIEVE_JURISDICTION`

Tool to retrieve a tax jurisdiction by ID. Use when you need the name, country, and region of a specific jurisdiction after confirming its ID. Example: "Retrieve jurisdiction 94".

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | ID of the desired jurisdiction |

#### 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 |

### Retrieve Product

**Slug:** `QUADERNO_RETRIEVE_PRODUCT`

Tool to retrieve details of an existing product by ID. Use after confirming the product ID exists.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | ID of the desired product |

#### 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 |

### Retrieve Receipt

**Slug:** `QUADERNO_RETRIEVE_RECEIPT`

Tool to retrieve details of an existing receipt by ID. Use when you need full receipt details for reporting or reconciliation.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | The ID of the desired receipt. |

#### 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 |

### Retrieve Recurring

**Slug:** `QUADERNO_RETRIEVE_RECURRING`

Tool to retrieve details of an existing recurring document by ID. Use when you need information about a recurring invoice or expense subscription.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | The ID of the desired recurring |

#### 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 |

### Retrieve Reporting Request

**Slug:** `QUADERNO_RETRIEVE_REPORTING_REQUEST`

Tool to retrieve the status and download URL of a specific report request by ID. Use when you need to check if a report is ready and get the report_url to download it.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | integer | Yes | The report request identifier |

#### 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 |

### Retrieve Tax Code

**Slug:** `QUADERNO_RETRIEVE_TAX_CODE`

Tool to retrieve a specific tax code by ID. Use when you need details about a particular tax code classification.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string ("consulting" | "ebook" | "eservice" | "exempt" | "reduced" | "saas" | "standard") | Yes | The ID of the tax code to retrieve: consulting, ebook, eservice, exempt, reduced, saas, or standard |

#### 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 |

### Retrieve Tax ID

**Slug:** `QUADERNO_RETRIEVE_TAX_ID`

Tool to retrieve details of a specific tax ID by its ID. Use when you need to get information about a registered tax identification number.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | integer | Yes | ID of the desired tax ID. |

#### 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:** `QUADERNO_UPDATE_CONTACT`

Tool to update an existing contact in Quaderno. Use when you need to modify contact details such as name, address, email, or tax information.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | integer | Yes | ID of the contact to be updated. |
| `web` | string | No | The contact's website. |
| `city` | string | No | City/District/Suburb/Town/Village. |
| `kind` | string ("company" | "person") | No | Type of contact. |
| `email` | string | No | The contact's email address. |
| `notes` | string | No | Internal notes about the contact. |
| `region` | string | No | State/Province/Region. |
| `tax_id` | string | No | The contact's tax identification number. Quaderno can validate EU VAT numbers, ABN, and NZBN. |
| `country` | string | No | 2-letter ISO country code. |
| `phone_1` | string | No | The contact's phone number. |
| `discount` | number | No | Default discount for this contact. |
| `language` | string | No | The contact's preferred language. 2-letter ISO language code. |
| `last_name` | string | No | The contact's last name. Only if the contact is a 'person'. |
| `processor` | string | No | The external platform where the contact was imported from, if applicable. |
| `department` | string | No | If the contact is a 'company', this is the department. |
| `first_name` | string | No | The contact's first name. Only if the contact is a 'person'. |
| `tax_status` | string ("taxable" | "exempt" | "reverse") | No | Tax status for a contact. |
| `postal_code` | string | No | ZIP or postal code. |
| `processor_id` | string | No | The ID the payment processor assigned to the contact. |
| `street_line_1` | string | No | Address line 1 (Street address/PO Box). |
| `street_line_2` | string | No | Address line 2 (Apartment/Suite/Unit/Building). |
| `contact_person` | string | No | If the contact is a 'company', this is its contact person. |

#### 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 Coupon

**Slug:** `QUADERNO_UPDATE_COUPON`

Tool to update an existing coupon. Use when you need to modify coupon properties like discount amount, name, or redemption limits. Note: Coupons linked to Stripe cannot be edited and will return an error. Only fields provided in the request will be updated; omitted fields remain unchanged.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | Unique identifier of the coupon to update |
| `code` | string | No | Coupon code. Must be unique across all coupons |
| `name` | string | No | Name of the coupon displayed to customers on invoices |
| `currency` | string | No | Three-letter ISO currency code (uppercase) required when amount_off is set |
| `redeem_by` | string | No | Date (YYYY-MM-DD format) after which the coupon can no longer be redeemed |
| `amount_off` | number | No | Fixed amount discount in the specified currency. Cannot be used with percent_off. Requires currency field to be set |
| `percent_off` | number | No | Percentage discount applied to the purchase subtotal. Cannot be used with amount_off |
| `max_redemptions` | integer | No | Maximum number of times this coupon can be redeemed. Set to null for unlimited redemptions |

#### 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 Credit Note

**Slug:** `QUADERNO_UPDATE_CREDIT_NOTE`

Tool to update a credit note. Use when you need to modify metadata, tags, notes, billing address, or attach files to an existing credit note. Only limited fields can be updated if it has already been paid or delivered.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | integer | Yes | ID of the credit note to update |
| `notes` | string | No | Extra notes about the credit note |
| `tag_list` | string | No | Comma-separated list of tags (e.g., 'refund,urgent,2026') |
| `po_number` | string | No | Purchase order number |
| `attachment` | object | No | Represents a file attachment for the credit note. |
| `street_line_1` | string | No | Billing address line 1 |
| `street_line_2` | string | No | Billing address line 2 |
| `custom_metadata` | object | No | Custom key-value metadata attached to the credit note |
| `payment_details` | string | No | Details about accepted payment methods |

#### 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 Estimate

**Slug:** `QUADERNO_UPDATE_ESTIMATE`

Updates an existing estimate in Quaderno by modifying allowed fields. Use when you need to change estimate details like notes, purchase order number, tags, payment details, billing address, contact information, or line items. Fields not specified remain unchanged.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | integer | Yes | ID of the estimate to update |
| `city` | string | No | Billing city |
| `notes` | string | No | Extra notes about the estimate |
| `region` | string | No | Billing region/state |
| `tax_id` | string | No | Customer tax ID |
| `country` | string | No | Billing country (2-letter ISO code) |
| `subject` | string | No | Estimate subject or summary |
| `currency` | string | No | Three-letter ISO currency code (e.g., USD, EUR, GBP) |
| `tag_list` | string | No | Comma-separated list of tags (e.g., 'urgent,Q1-2026,project') |
| `po_number` | string | No | Purchase order number |
| `attachment` | object | No | Represents a file attachment for the estimate. |
| `contact_id` | string | No | Contact identifier |
| `issue_date` | string | No | Estimate issue date (YYYY-MM-DD) |
| `postal_code` | string | No | Billing postal code |
| `contact_name` | string | No | Contact name |
| `street_line_1` | string | No | Billing address line 1 |
| `street_line_2` | string | No | Billing address line 2 |
| `custom_metadata` | object | No | Custom key-value metadata attached to the estimate |
| `payment_details` | string | No | Details about accepted payment methods |
| `items_attributes` | array | No | List of line items to add, update, or remove |

#### 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 Evidence

**Slug:** `QUADERNO_UPDATE_EVIDENCE`

Tool to update an evidence object. Use when you need to modify location proofs (billing country, IP address, bank country, notes) for tax compliance records.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | integer | Yes | The unique identifier of the evidence object to update |
| `notes` | string | No | Internal notes about the evidence |
| `ip_address` | string | No | The customer's IP address |
| `ip_country` | string | No | 2-letter ISO 3166-1 code for the IP country |
| `document_id` | integer | No | Unique identifier for the related invoice |
| `bank_country` | string | No | 2-letter ISO 3166-1 code of the customer's bank country |
| `billing_country` | string | No | 2-letter ISO 3166-1 code of the billing country |
| `additional_evidence` | string | No | Additional evidence used to proof the customer's location. Required if there's an additional_evidence_country |
| `additional_evidence_country` | string | No | 2-letter ISO 3166-1 code for the additional evidence country |

#### 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 Expense

**Slug:** `QUADERNO_UPDATE_EXPENSE`

Updates an existing expense in Quaderno by modifying allowed fields. This action sends a PUT request to /expenses/{id}.json and returns the complete updated expense. Only specific fields can be modified: purchase order number (po_number), tags (tag_list), payment details (payment_details), notes, billing address (street_line_1, street_line_2), and custom metadata. Use this when you need to add or modify administrative information on an expense. Fields not specified in the request remain unchanged.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | integer | Yes | ID of the expense to update |
| `notes` | string | No | Extra notes about the expense |
| `tag_list` | string | No | Comma-separated list of tags (e.g., 'urgent,Q1-2026,corporate') |
| `po_number` | string | No | Purchase order number |
| `street_line_1` | string | No | Billing address line 1 |
| `street_line_2` | string | No | Billing address line 2 |
| `custom_metadata` | object | No | Custom key-value metadata attached to the expense |
| `payment_details` | string | No | Details about accepted payment methods |

#### 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:** `QUADERNO_UPDATE_INVOICE`

Updates an existing invoice in Quaderno by modifying allowed fields. This action sends a PUT request to /invoices/{id} and returns the complete updated invoice. Only specific fields can be modified after invoice creation: purchase order number (po_number), tags (tag_list), payment details (payment_details), notes, billing address (street_line_1, street_line_2), custom metadata, and file attachments. Use this when you need to add or modify administrative information on an invoice that hasn't been finalized or paid. Fields not specified in the request remain unchanged.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | integer | Yes | ID of the invoice to update |
| `notes` | string | No | Extra notes about the invoice |
| `tag_list` | string | No | Comma-separated list of tags (e.g., 'urgent,Q1-2026,corporate') |
| `po_number` | string | No | Purchase order number |
| `attachment` | object | No | Represents a file attachment for the invoice. |
| `street_line_1` | string | No | Billing address line 1 |
| `street_line_2` | string | No | Billing address line 2 |
| `custom_metadata` | object | No | Custom key-value metadata attached to the invoice |
| `payment_details` | string | No | Details about accepted payment methods |

#### 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 product

**Slug:** `QUADERNO_UPDATE_PRODUCT`

Tool to update a product; unspecified fields remain unchanged. Use after fetching the product to apply partial updates.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | integer | Yes | ID of the product to update |
| `code` | string | No | Product SKU (Stock Keeping Unit) |
| `kind` | string ("one_off" | "subscription") | No | Transaction type |
| `name` | string | No | Product name for display |
| `stock` | string | No | Product stock level |
| `country` | string | No | 2-letter ISO country code |
| `currency` | string | No | 3-letter ISO currency code, uppercase |
| `tax_type` | string ("excluded" | "included") | No | Whether unit_cost includes tax or not |
| `tax_class` | string ("consulting" | "eservice" | "ebook" | "saas" | "standard" | "reduced") | No | Tax class for the product |
| `unit_cost` | string | No | Unit price to be charged |
| `description` | string | No | Product description for display |
| `product_type` | string ("good" | "service") | No | Product type |
| `tax_based_on` | string ("customer_country" | "country") | No | Tax calculation basis |
| `stripe_plan_id` | string | No | Stripe subscription price ID |
| `paypal_interval_unit` | string ("daily" | "weekly" | "monthly" | "yearly") | No | Subscription billing frequency unit |
| `paypal_interval_duration` | integer | No | Subscription recurrence count |
| `paypal_interval_frequency` | integer | No | Subscription billing frequency count |

#### 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 Recurring

**Slug:** `QUADERNO_UPDATE_RECURRING`

Tool to update a recurring document in Quaderno. Use when you need to modify subscription details, billing information, line items, or recurring schedule. Only specified fields are updated; unspecified fields remain unchanged.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | integer | Yes | ID of the recurring document to update |
| `items` | array | No | Line items (max 200 per request, 1000 total per document) |
| `notes` | string | No | Extra notes about the recurring |
| `state` | string ("active" | "archived") | No | Recurring state options |
| `taxes` | array | No | Tax lines applicable to the recurring |
| `contact` | object | No | Contact information for a recurring. Can be either full contact or just ID. |
| `subject` | string | No | Summary description for the document |
| `currency` | string | No | Three-letter ISO currency code in uppercase (e.g., USD, EUR, GBP) |
| `due_days` | string | No | Payment due date (format: YYYY-MM-DD, e.g., '2020-07-27') |
| `end_date` | string | No | Date of the last document issue (format: YYYY-MM-DD, e.g., '2024-01-27') |
| `tag_list` | array | No | Tags for categorization (e.g., ['consulting', 'premium']) |
| `frequency` | string ("daily" | "weekly" | "biweekly" | "monthly" | "bimonthly" | "quarterly" | "semiyearly" | "yearly" | "biyearly") | No | Recurring frequency options. Deprecated in favor of recurring_period and recurring_frequency. |
| `po_number` | string | No | Purchase order number |
| `start_date` | string | No | Date of the first document issue (format: YYYY-MM-DD, e.g., '2023-01-27') |
| `custom_metadata` | object | No | Key-value pairs for storing additional structured information |
| `payment_details` | string | No | Detailed information about the accepted payment methods |
| `recurring_period` | string ("days" | "weeks" | "months" | "years") | No | Recurring period options |
| `recurring_frequency` | integer | No | Number of recurring periods between each document |

#### 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 Tax ID

**Slug:** `QUADERNO_UPDATE_TAX_ID`

Tool to update an existing tax ID in Quaderno. Use when you need to modify tax ID details such as validity dates, value, or establishment settings.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | integer | Yes | ID of the tax ID to be updated. |
| `value` | string | No | Value of the tax ID you need fixing. |
| `valid_from` | string | No | The tax ID's validity date in YYYY-MM-DD format. Defaults to the beginning of the year. |
| `valid_until` | string | No | The tax ID's expiration date in YYYY-MM-DD format, or null if the tax ID has no expiration date. |
| `import_scheme` | boolean | No | Whether the business is registered or not in the EU import scheme for foreign sellers of physical goods. |
| `permanent_establishment` | boolean | No | Whether your business has physical presence (office, warehouse, etc) in the given jurisdiction. |

#### 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 Webhook

**Slug:** `QUADERNO_UPDATE_WEBHOOK`

Tool to update an existing webhook configuration. Use when you need to modify webhook URL or event subscriptions.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | integer | Yes | The unique identifier for the webhook to update |
| `url` | string | No | The webhook endpoint URL that will receive event notifications. Must respond to HEAD requests with 200 OK. |
| `events_types` | array | No | An array of event types the webhook should listen for (e.g., invoice.created, contact.created, invoice.updated) |

#### 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 |

### Validate Tax ID

**Slug:** `QUADERNO_VALIDATE_TAX_ID`

Tool to validate a tax ID. Use when confirming whether a given country-specific tax ID is valid. Example: validate tax ID 'DE303954554' for Germany.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `tax_id` | string | Yes | The tax identification number to validate. |
| `country` | string | Yes | Tax ID's registration country as a 2-letter ISO 3166-1 code. |

#### 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 |

### Void Credit Note

**Slug:** `QUADERNO_VOID_CREDIT_NOTE`

Tool to void a credit note. Use when you need to cancel an existing credit note.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | integer | Yes | Unique identifier of the credit note to void |

#### 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 |
