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

# Rillet

Rillet is an ERP that automates accounting workflows, including revenue recognition, close management, reporting, accounts receivable, and accounts payable.

- **Category:** accounting
- **Auth:** API_KEY, DCR_OAUTH
- **Composio-managed OAuth available?** No
- **Tools:** 174
- **Triggers:** 0
- **Slug:** `RILLET`
- **Version:** 00000000_00

## Tools

### Adds members to a customer family

**Slug:** `RILLET_ADD_CUSTOMER_FAMILY_MEMBERS`

Adds customers to a family and moves members already in it, in one call. Naming a member that already belongs gives it a new parent, so a branch can be restructured in a single request rather than through a sequence that would be invalid halfway through.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `members` | array | Yes | The customers to place in the family, and who each reports to. Each one reports to a member the family already has or to another customer in this list. Naming a customer that already belongs moves it rather than failing. |
| `customer_family_id` | string | Yes | UUID of the customer family to add members to. |

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

### Amends a contract

**Slug:** `RILLET_AMEND_A_CONTRACT`

Applies a contract amendment when you need to add items, retire items, or change pricing/invoicing after go-live. Unlike a full PUT update, amendments model business-time changes and preserve historical billing context. Use preview-contract-amendment to dry-run the financial impact before committing.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `body` | string | Yes | JSON request body matching the Rillet v4 operation schema. |
| `contract_id` | string | Yes | UUID of the contract to amend. |

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

### Reconciles credit memo applications

**Slug:** `RILLET_APPLY_CREDIT_MEMO`

Full reconcile of credit memo applications. The request body represents the desired set: missing applications are removed, new applications inserted, and existing applications updated when amount or application_date differ.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `applications` | array | Yes | Rillet request field applications. |
| `credit_memo_id` | string | Yes | UUID of the credit memo to be used in this operation. |

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

### Applies a vendor credit to bills

**Slug:** `RILLET_APPLY_VENDOR_CREDIT`

Allocates an existing vendor credit balance against specific open bills, reducing net amounts payable similar to a targeted vendor payment. Use after reviewing retrieve-a-vendor-credit so you apply only the remaining unapplied balance.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `applications` | array | Yes | Rillet request field applications. |
| `vendor_credit_id` | string | Yes | UUID of the vendor credit to be used in this operation. |

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

### Updates metadata for multiple accounts

**Slug:** `RILLET_BULK_UPDATE_ACCOUNT_METADATA`

Patches metadata on up to 1,000 accounts in one atomic request. Each account may receive different values. If an account is missing or any key or value is invalid, nothing is written for any account. Per account this behaves exactly like patch-account-metadata: keys omitted for that account are left unchanged; null, empty, and whitespace-only values clear that key.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `accounts` | array | Yes | Accounts to update, with 1 to 1,000 account-specific metadata patches. |

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

### Updates metadata for multiple bills

**Slug:** `RILLET_BULK_UPDATE_BILL_METADATA`

Patches metadata on up to 1,000 bills in one atomic request. Each bill may receive different values. If a bill is missing or any key or value is invalid, nothing is written for any bill. Per bill this behaves exactly like patch-bill-metadata: keys omitted for that bill are left unchanged; null, empty, and whitespace-only values clear that key. If any bill has a pending approval request, the entire request is rejected with a 400 and nothing is written.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `bills` | array | Yes | Rillet request field bills. |

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

### Updates metadata for multiple contracts

**Slug:** `RILLET_BULK_UPDATE_CONTRACT_METADATA`

Patches metadata on up to 1,000 contracts in one atomic request. Each contract may receive different values. If a contract is missing or any key or value is invalid, nothing is written for any contract. Per contract this behaves exactly like patch-contract-metadata: keys omitted for that contract are left unchanged; null, empty, and whitespace-only values clear that key.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `contracts` | array | Yes | Rillet request field contracts. |

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

### Updates metadata for multiple customers

**Slug:** `RILLET_BULK_UPDATE_CUSTOMER_METADATA`

Patches metadata on up to 1,000 customers in one atomic request. Each customer may receive different values. If a customer is missing or any key or value is invalid, nothing is written for any customer. Per customer this behaves exactly like patch-customer-metadata: keys omitted for that customer are left unchanged; null, empty, and whitespace-only values clear that key. Metadata-only changes are recorded in the audit log but do not trigger customer.updated webhooks or customer integration syncs.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `customers` | array | Yes | Rillet request field customers. |

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

### Updates metadata for multiple invoices

**Slug:** `RILLET_BULK_UPDATE_INVOICE_METADATA`

Patches metadata on up to 1,000 invoices in one atomic request. Each invoice may receive different values. If an invoice is missing or any key or value is invalid, nothing is written for any invoice. Per invoice this behaves exactly like patch-invoice-metadata: keys omitted for that invoice are left unchanged; null, empty, and whitespace-only values clear that key.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `invoices` | array | Yes | Rillet request field invoices. |

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

### Permanently cancels a pending milestone

**Slug:** `RILLET_CANCEL_A_MILESTONE`

Permanently forfeits a pending milestone allocation on a FULL contract without redistributing it or automatically issuing a refund. A nonzero allocation creates a linked credit memo; zero allocations do not. Retrying the saved effective_date is a no-op, while a different date conflicts. Completed milestones must be reversed before cancellation. This PUT operation sends the complete documented request representation.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `contract_id` | string | Yes | UUID of the contract that owns the milestone. |
| `milestone_ref` | string | Yes | Milestone UUID or stable key. A key must identify exactly one milestone in the contract. |
| `effective_date` | string | Yes | Cancellation business date within the contract term and allowed accounting period. |

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

### Completes a close checklist task

**Slug:** `RILLET_COMPLETE_A_CLOSE_CHECKLIST_TASK`

Marks the task as prepared, recorded as completed by the connected user at the current time. Requires an OAuth connection made by a named user; API keys are rejected with HTTP 403 because they do not act as a user. A task that is already completed is rejected with HTTP 409 so an earlier preparer's record is never overwritten. Returns the updated task.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `period` | string | Yes | The checklist's accounting month in ISO-8601 format (YYYY-MM). |
| `task_id` | string | Yes | UUID of the checklist task, from list-close-checklist-tasks. |

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

### Creates a bank account

**Slug:** `RILLET_CREATE_A_BANK_ACCOUNT`

Registers a treasury bank account with currency, institution identifiers, and linkage to the GL cash account used during transaction import. Accurate mapping here ensures invoice payments, bill payments, and bank feeds all post to the same cash subledger.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `mask` | string | No | Last digits of the bank account number |
| `name` | string | Yes | The bank account name |
| `currency` | string | Yes | Currency code following ISO-4217 |
| `bank_name` | string | Yes | Rillet request field bank_name. |
| `account_code` | string | Yes | The account code found in the Chart of Accounts |
| `subsidiary_id` | string | Yes | Rillet request field subsidiary_id. |
| `transactions_start_date` | string | No | The earliest date from which bank transactions are tracked for this account. Defaults to the date of creation when omitted. |

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

### Creates a bank transaction

**Slug:** `RILLET_CREATE_A_BANK_TRANSACTION`

Inserts a single bank feed line such as a wire, ACH, or adjustment when automated imports miss a statement row. Specify the hosting bank account and value dates so cash reporting matches what treasury already booked externally.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `fee` | object | No | A monetary amount that must be rounded to the currency's default decimal places (e.g., 2 decimal places for USD). |
| `date` | string | Yes | Rillet request field date. |
| `name` | string | Yes | Transaction description |
| `pending` | boolean | No | Whether the transaction is still pending |
| `excluded` | boolean | No | Whether the transaction is excluded from reconciliation |
| `merchant` | string | Yes | Merchant or counterparty name |
| `net_amount` | object | Yes | A monetary amount that must be rounded to the currency's default decimal places (e.g., 2 decimal places for USD). |
| `bank_account_id` | string | Yes | Rillet request field bank_account_id. |
| `external_references` | array | No | Rillet request field external_references. |

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

### Creates a bill

**Slug:** `RILLET_CREATE_A_BILL`

Accrues a new accounts-payable bill against a vendor with subsidiary context, line items, and due dates your approval workflow consumes. Attach supporting metadata now so matching payments, amortization schedules, and document uploads stay aligned with the payable.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `items` | array | Yes | Rillet request field items. |
| `due_date` | string | Yes | Rillet request field due_date. |
| `metadata` | object | No | Partial metadata update keyed by definition key. Omitting this property preserves all existing metadata. When supplied, omitted keys remain unchanged; null, empty, or whitespace-only values clear only the named key. |
| `bill_date` | string | Yes | Rillet request field bill_date. |
| `vendor_id` | string | Yes | Rillet request field vendor_id. |
| `impact_date` | string | No | Rillet request field impact_date. |
| `exchange_rate` | object | No | Rillet request field exchange_rate. |
| `subsidiary_id` | string | No | Rillet request field subsidiary_id. |
| `expense_number` | string | Yes | Rillet request field expense_number. |
| `external_references` | array | No | Rillet request field external_references. |

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

### Creates a bill payment

**Slug:** `RILLET_CREATE_A_BILL_PAYMENT`

Books a cash or scheduled disbursement that settles all or part of a bill, updating the outstanding payable and linking treasury activity. Provide funding source details consistent with your configured payment rails so downstream bank reconciliation stays accurate. IMPORTANT: Notice this operation has a redundancy between the `bill_id` path parameter and the `billId` attribute in the request body, which takes precedence and is used in internal logic. When executing this operation, both IDs must match, otherwise the request will be rejected. This is a legacy redundancy and will be removed in future versions of this operation.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `date` | string | Yes | Rillet request field date. |
| `amount` | object | Yes | A monetary amount that must be rounded to the currency's default decimal places (e.g., 2 decimal places for USD). |
| `bill_id` | string | Yes | UUID of the bill to be used in this operation. Must match the `billId` provided in the request body. |
| `account_code` | string | Yes | The account code found in the Chart of Accounts |

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

**Slug:** `RILLET_CREATE_A_CHARGE`

Create a charge

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `items` | array | Yes | Rillet request field items. |
| `vendor_id` | string | Yes | Rillet request field vendor_id. |
| `charge_date` | string | Yes | Rillet request field charge_date. |
| `impact_date` | string | No | Rillet request field impact_date. |
| `exchange_rate` | object | No | Rillet request field exchange_rate. |
| `subsidiary_id` | string | No | Rillet request field subsidiary_id. |
| `external_references` | array | No | Rillet request field external_references. |
| `funding_account_code` | string | No | Write-only. The bank account reduced directly by a pre-funded card charge. |
| `credit_card_account_code` | string | No | Write-only. The Credit Card liability account for a post-paid card charge. |

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

### Creates a chart of accounts

**Slug:** `RILLET_CREATE_A_CHART_OF_ACCOUNTS`

Initializes the entire chart of accounts for a bare organization in one atomic call. The organization must have no existing chart of accounts; otherwise the request fails with 409. The complete request is validated before any accounts or groups are created; validation failures return 400 without leaving a partial chart of accounts. Structural invariants match CSV import: exactly one `Accounts Receivable`, `Accounts Payable`, `Sales Tax Liability`, and `Retained Earnings`; at least one `Unbilled Revenue`, `Prepaid Expense`, and `Deferred Revenue`. The same default group scaffold as CSV import is created. Each account's optional `parent_grouping` reuses a scaffold group by name or creates a nested group under the account type root.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `accounts` | array | Yes | Rillet request field accounts. |

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

### Creates a contract

**Slug:** `RILLET_CREATE_A_CONTRACT`

Rillet supports two contract scope types: FULL and REVENUE_RECOGNITION_ONLY. The selected scope determines how the invoices are created and what information the user needs to provide. The FULL scope is used when contract invoices are generated and sent directly from Rillet. In this case, Rillet automatically assigns the invoice numbers. The REVENUE_RECOGNITION_ONLY scope is intended for situations where contracts and invoices are issued from another system and only need to be recorded in Rillet for accounting purposes. In this workflow, users must provide the invoice numbers manually. Other fields can be populated based on the data imported from the external system. For example, if your organization issues invoices through an external billing platform but tracks financials in Rillet, you should select REVENUE_RECOGNITION_ONLY.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `body` | string | Yes | JSON request body matching the Rillet v4 operation schema. |

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

### Creates a credit memo

**Slug:** `RILLET_CREATE_A_CREDIT_MEMO`

Opens a customer credit memo that reduces receivable exposure before you allocate it to specific invoices. Capture subsidiary, customer, line-level reasons, and tax treatment so finance can audit why the balance changed.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `items` | array | Yes | Rillet request field items. |
| `customer_id` | string | Yes | Rillet request field customer_id. |
| `exchange_rate` | object | No | Rillet request field exchange_rate. |
| `subsidiary_id` | string | No | Rillet request field subsidiary_id. |
| `credit_memo_date` | string | Yes | Rillet request field credit_memo_date. |
| `credit_memo_number` | string | No | Rillet request field credit_memo_number. |
| `external_references` | array | No | Rillet request field external_references. |

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

### Creates a customer

**Slug:** `RILLET_CREATE_A_CUSTOMER`

Creates a new customer in the Accounts Receivable catalog. Required fields: name. When providing a billing or shipping address, line1, city, zip_code, and country are required. State is required for United States addresses (use a 2-letter code such as 'TN' or 'CA') and may be omitted where it does not apply.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | Yes | Rillet request field name. |
| `emails` | array | No | All of the customer's emails. On update, send the full list: emails with an id are kept or edited, emails without an id are added, and emails left out are removed (omitting emails, or sending an empty list, removes them all). A removed email is also removed from every contract email_selection; to change an email and keep it selected, send its id. Rejected: an id on create, an id that doesn't belong to this customer, the same id twice, or the same address and type twice (addresses are compared ignoring case and surrounding spaces). |
| `fields` | array | No | Rillet request field fields. |
| `address` | object | No | Deprecated: use billing_addresses. In responses, the first address in billing_addresses. In requests without billing_addresses, it creates or edits that first billing address in place; the customer's other billing addresses are left untouched. |
| `tax_ids` | array | No | The customer's tax IDs. Omit on create for no tax IDs. On update, omit to keep the current tax IDs, send an empty list to clear them, or send a list to replace them all. Adding or changing tax IDs requires the customer to have an address, and they are validated with the organization's tax provider when one is connected. |
| `payment_terms` | integer | No | Rillet request field payment_terms. |
| `name_on_invoice` | string | No | Rillet request field name_on_invoice. |
| `shipping_address` | object | No | Deprecated: use shipping_addresses. In responses, the first address in shipping_addresses. In requests without shipping_addresses, it creates or edits that first shipping address in place; the customer's other shipping addresses are left untouched. |
| `billing_addresses` | array | No | All of the customer's billing addresses, returned in a stable order; the first is the default for new contracts and invoices. On update the list is authoritative: addresses sent with an id are updated, addresses without an id are added, and stored addresses left out are removed. Removing an address that is used by a contract or an invoice that can still be edited is rejected with a 400 naming those documents. Omit to leave billing addresses unchanged; send an empty list to remove them all. Cannot be combined with address. |
| `shipping_addresses` | array | No | All of the customer's shipping addresses. Same rules as billing_addresses. Cannot be combined with shipping_address. |
| `external_references` | array | No | Rillet request field external_references. |
| `allow_online_payments` | boolean | No | Allows this customer to pay invoices online via Stripe, and must be true before auto-payment can be set up for them. Omit on create to leave online payments off; omit on update to keep the customer's current setting. Enabling it requires Stripe to be configured for at least one subsidiary. |
| `send_payment_reminders` | boolean | No | When set to true, an email will be sent to customers periodically if they have not paid an invoice. |
| `send_invoices_automatically` | boolean | No | When set to true, invoices for this customer will be automatically sent via email on the invoice date. |

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

### Creates a customer family

**Slug:** `RILLET_CREATE_A_CUSTOMER_FAMILY`

Creates a family from customers that do not already belong to one. A child may report to another child, so a multi-level hierarchy is created in one call.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | No | Defaults to the root parent customer's name when omitted. |
| `child_links` | array | Yes | Every other member, and who it reports to. Each one reports to the root parent or to another customer in this list, which is how a hierarchy deeper than one level is created in a single call. |
| `root_parent_customer_id` | string | Yes | The customer at the top of the tree. It must not already belong to a family. |

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

### Creates a draft contract

**Slug:** `RILLET_CREATE_A_DRAFT_CONTRACT`

Stages a contract in the "draft" holding state instead of creating it directly as an active contract. Draft contracts appear in the Rillet UI under "Draft" for a human to approve or reject. ## Deduplication **To prevent duplicate draft contracts on retry, supply at least one `external_references` entry with a stable `(type, id)` pair.** When you POST again with any matching `(type, id)` pair, the prior draft record is replaced with the new payload. Draft contracts created without any `external_references` are not deduplicated — every POST creates a new record. ## External reference types Each reference's `type` must match a slug already defined under Rillet Settings → External References for the organization; unknown slugs return a 400. References attached at create time are preserved when the draft contract is promoted to an active contract.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | Yes | Rillet request field name. |
| `items` | array | Yes | Contract line items. At least one item is required. |
| `scope` | string ("FULL" | "REVENUE_RECOGNITION_ONLY") | Yes | The "FULL" scope includes revenue recognition and invoicing handled in Rillet. With the "REVENUE_RECOGNITION_ONLY" scope, invoicing is handled outside Rillet. |
| `amount` | object | Yes | Rillet request field amount. |
| `end_date` | string | No | Rillet request field end_date. |
| `close_date` | string | Yes | Rillet request field close_date. |
| `start_date` | string | No | Rillet request field start_date. |
| `customer_id` | string | Yes | Must reference a customer that already exists in Rillet. Use `POST /customers` first if needed. |
| `subsidiary_id` | string | Yes | Rillet request field subsidiary_id. |
| `email_selection` | object | No | Who receives the invoices of the contract created from this draft. If omitted, none is specified and the reviewer starts from all of the billing customer's emails. On update, omit to keep the current selection, or send ALL_CUSTOMER_EMAILS to follow the customer's emails. A draft keeps one entry per email, the first one sent. With SELECTED_EMAILS and no MAIN_SENDER recipient left, including an empty recipients list, no selection is stored, the same as the review page. A stored recipient that is not one of the billing customer's emails is rejected. |
| `billing_address_id` | string | No | ID of one of the billing customer's billing_addresses. If omitted, the first address in the customer's billing_addresses is used, or none when the customer has no billing address. Send null for no billing address. On update, omit to keep the current billing address, or send null to remove it. Rejected when the address does not belong to the billing customer or is not a billing address. |
| `external_references` | array | No | Cross-system identifiers for this draft contract. Each reference's `type` slug must already exist in the org's external reference types (configurable in Rillet Settings). **Required for deduplication.** Re-posting with any matching `(type, id)` pair replaces the prior draft record. Draft contracts created without external_references are not deduplicated. |
| `shipping_address_id` | string | No | ID of one of the ship-to customer's shipping_addresses. If omitted, the first address in the ship-to customer's shipping_addresses is used, or none when it has no shipping address. Send null for no shipping address. On update, omit to keep the current shipping address, or send null to remove it; a new shipping_customer_id sent without this field takes that customer's first shipping address. Rejected when the address does not belong to the ship-to customer or is not a shipping address. |
| `shipping_customer_id` | string | No | The customer to ship to. Omit, send null, or send customer_id to ship to the billing customer. On update, omit to keep the current ship-to customer, or send null to remove it and its shipping address; null with a shipping_address_id ships to the billing customer. |
| `purchase_order_number` | string | No | Optional purchase order number, carried onto the contract created from this draft and from there onto every invoice it generates. |

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

### Creates a journal entry

**Slug:** `RILLET_CREATE_A_JOURNAL_ENTRY`

Posts a balanced manual journal entry with explicit debit and credit lines, posting date, and subsidiary scope for GL corrections. Prefer dedicated AR or AP APIs when the business event already exists; reserve this for adjustments your automation cannot model yet.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `date` | string | Yes | Rillet request field date. |
| `name` | string | Yes | Rillet request field name. |
| `items` | array | Yes | Rillet request field items. |
| `book_id` | string | No | Rillet request field book_id. |
| `currency` | string | Yes | Currency code following ISO-4217 |
| `attachmentUrl` | string | No | Rillet request field attachmentUrl. |
| `exchange_rate` | object | No | Rillet request field exchange_rate. |
| `reversal_date` | string | No | Rillet request field reversal_date. |
| `subsidiary_id` | string | No | Rillet request field subsidiary_id. |
| `related_entity` | object | No | Rillet request field related_entity. |

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

### Creates an account

**Slug:** `RILLET_CREATE_AN_ACCOUNT`

Adds an account to the chart of accounts for the organization. The account currency is inherited from the organization, its status is ACTIVE, and its default grouping and closing behavior are derived from the selected type and subtype.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `code` | string | Yes | Unique account code within the organization. May contain letters, numbers, periods, and dashes. |
| `name` | string | Yes | Display name of the account. |
| `type` | string ("ASSET" | "LIABILITY" | "EQUITY" | "EXPENSE" | "INCOME") | Yes | Top-level accounting classification. Must be compatible with subtype. Allowed values: ASSET, LIABILITY, EQUITY, EXPENSE, INCOME. |
| `subtype` | string ("Revenue" | "Cost of Goods Sold" | "Operating Expense" | "Equity" | "Equity, Compensation" | "Other Current Liability" | "Other Long Term Liability" | "Accounts Payable" | "Accounts Receivable" | "Credit Card" | "Fixed Assets" | "Accumulated Depreciation" | "Other Current Asset" | "Bank" | "Allowance for Doubtful Accounts" | "Unbilled Revenue" | "Deferred Revenue" | "Prepaid Expense" | "Deferred Commissions" | "Right of Use Asset" | "Other Assets" | "Restricted Cash" | "Accrued Expense" | "Sales Tax Liability" | "Debt" | "Lease Liability" | "Customer Deposits" | "Customer Credit" | "Additional Paid In Capital" | "Accumulated Other Comprehensive Income" | "Retained Earnings" | "Operating Expense - Personnel" | "Operating Expense - Office Expenses" | "Operating Expense - Sales & Marketing" | "Operating Expense - Commissions" | "Operating Expense - Research & Development" | "Non Operating Expense" | "Non Operating Income") | Yes | Accounting subtype. The following exact values are accepted and must be paired with the indicated type: ASSET: `Accounts Receivable`, `Fixed Assets`, `Accumulated Depreciation`, `Other Current Asset`, `Bank`, `Allowance for Doubtful Accounts`, `Unbilled Revenue`, `Prepaid Expense`, `Deferred Commissions`, `Right of Use Asset`, `Other Assets`, `Restricted Cash`. LIABILITY: `Other Current Liability`, `Other Long Term Liability`, `Accounts Payable`, `Credit Card`, `Deferred Revenue`, `Accrued Expense`, `Sales Tax Liability`, `Debt`, `Lease Liability`, `Customer Deposits`, `Customer Credit`. EQUITY: `Equity`, `Equity, Compensation`, `Additional Paid In Capital`, `Accumulated Other Comprehensive Income`, `Retained Earnings`. |
| `intercompany` | boolean | Yes | Whether the account is used for intercompany accounting. |

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

### Creates an invoice

**Slug:** `RILLET_CREATE_AN_INVOICE`

A matching creation approval workflow returns HTTP 202 with invoice_id, approval_request_id, and status PENDING. This is a proposal, not a created invoice. Retrieve its contents using retrieve-an-invoice-creation-proposal. For approval proposals, pass idempotency_key on the initial call and retain it across retries. The key is optional; each call without one creates a new submission, including retries. The key does not deduplicate legacy creation when approvals are disabled or the invoice belongs to a contract. A rejected proposal remains closed; a deliberate new invoice uses a new key. Rillet supports two invoice scope types: FULL and REVENUE_RECOGNITION_ONLY. The selected scope determines how the invoice is created and what information the user needs to provide. The FULL scope is used when the invoice is generated and sent directly from Rillet.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `body` | string | Yes | JSON request body matching the Rillet v4 operation schema. |
| `idempotency_key` | string | No | Stable key for retries of an approval proposal. Ignored when approvals are disabled or the invoice belongs to a contract. Use a new key for a distinct proposal. |
| `replaces_request_id` | string | No | Current approval request to replace when deliberately revising a held proposal using the same key. |

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

### Creates an invoice payment

**Slug:** `RILLET_CREATE_AN_INVOICE_PAYMENT`

Records a manual cash receipt against an open invoice by amount, effective date, and a GL account code that maps to a funded cash account. Rillet resolves the account code to a cash account before posting, so verify chart-of-accounts mapping when automations fail validation.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `date` | string | Yes | Rillet request field date. |
| `amount` | object | Yes | A monetary amount that must be rounded to the currency's default decimal places (e.g., 2 decimal places for USD). |
| `invoice_id` | string | Yes | UUID of the invoice to be used in this operation. |
| `account_code` | string | Yes | The account code found in the Chart of Accounts |

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

### Creates a product

**Slug:** `RILLET_CREATE_A_PRODUCT`

Creates a new product (good or service) that can be referenced on contracts and invoices. Choose pricing and revenue behavior consistent with how you bill customers (one-time, recurring, usage, etc.). Set type to BUNDLE to create a bundle.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | Yes | Rillet request field name. |
| `type` | string ("PRODUCT" | "BUNDLE") | No | Defaults to PRODUCT. Can't be changed after the product is created. |
| `price` | string | Yes | Rillet request field price. |
| `bundle` | object | No | Required when type is BUNDLE. Not allowed for other types. |
| `fields` | array | No | Custom field values. On update, omitting this property or sending an empty array clears all fields. Must be omitted or empty for bundles. |
| `status` | string ("ACTIVE" | "INACTIVE") | No | Rillet request field status. |
| `description` | string | Yes | Rillet request field description. |
| `account_code` | string | No | The code of the account this product's revenue posts to. Required for standalone products. Not allowed for bundles. |
| `include_in_ssp` | boolean | No | Whether this product participates in SSP revenue allocation. Requires stored product SSP to be enabled. Not allowed for bundles. Omission or null preserves the flag on update; on create it defaults to true. Usage-priced products remain excluded from SSP allocation. |
| `revenue_pattern` | string ("DAILY" | "EVEN_PERIOD" | "PROGRESS") | No | How revenue from this product is recognized. Required for standalone products. Not allowed for bundles. |
| `include_in_arr_mrr` | boolean | Yes | Rillet request field include_in_arr_mrr. |
| `external_references` | array | No | References to this product in external systems. Must be omitted or empty for bundles. |
| `progress_plan_template` | string | No | Required when creating a PROGRESS product; measure must be MILESTONES and milestone revenue recognition must be enabled for the organization. Only accepted with revenue_pattern PROGRESS and a ONE_TIME price. On update, omission or null preserves the existing template; an object replaces the entire template. Milestone identifiers are retained for matching keys ignoring case, and generated for new keys. Changing revenue_pattern away from PROGRESS clears the template. |

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

**Slug:** `RILLET_CREATE_A_REIMBURSEMENT`

Create a reimbursement

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `items` | array | Yes | Rillet request field items. |
| `vendor_id` | string | Yes | Rillet request field vendor_id. |
| `impact_date` | string | No | GL impact date. Defaults to reimbursement_date if omitted. |
| `exchange_rate` | object | No | Rillet request field exchange_rate. |
| `subsidiary_id` | string | No | Rillet request field subsidiary_id. |
| `reimbursement_date` | string | Yes | Rillet request field reimbursement_date. |
| `external_references` | array | No | Rillet request field external_references. |
| `payable_account_code` | string | Yes | The account code found in the Chart of Accounts |

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

### Creates a reimbursement payment

**Slug:** `RILLET_CREATE_A_REIMBURSEMENT_PAYMENT`

Records a cash payment that settles all or part of a reimbursement.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `date` | string | Yes | Rillet request field date. |
| `amount` | object | Yes | A monetary amount that must be rounded to the currency's default decimal places (e.g., 2 decimal places for USD). |
| `account_code` | string | Yes | The account code found in the Chart of Accounts |
| `reimbursement_id` | string | Yes | UUID of the reimbursement to be used in this operation. |

#### 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 an auto-payment setup link

**Slug:** `RILLET_CREATE_AUTO_PAYMENT_SETUP_LINK`

Kicks off the setup of auto-payment for a customer. This will return a URL that the customer must visit to complete the setup. If the customer already has a payment method, this will return a URL to update the payment method.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `customer_id` | string | Yes | UUID of the customer to be used in this operation. |
| `subsidiary_id` | string | No | Rillet request field subsidiary_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 |

### Creates a vendor

**Slug:** `RILLET_CREATE_A_VENDOR`

Adds a vendor master record the accounts-payable team can select on bills, vendor credits, and payments. Capture legal name, remit-to address, default currency, and payment terms so downstream bills inherit correct due dates and banking instructions.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | Yes | Rillet request field name. |
| `email` | string | No | Rillet request field email. |
| `fields` | array | No | Rillet request field fields. |
| `tax_id` | string | No | Rillet request field tax_id. |
| `address` | object | No | Rillet request field address. |
| `account_code` | string | No | The account code found in the Chart of Accounts |
| `payment_terms` | integer | No | Rillet request field payment_terms. |
| `external_references` | array | No | Rillet request field external_references. |
| `ten_ninety_nine_eligible` | boolean | No | Rillet request field ten_ninety_nine_eligible. |

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

### Creates a vendor credit

**Slug:** `RILLET_CREATE_A_VENDOR_CREDIT`

Records a new vendor credit memo amount that reduces future payables without yet touching specific bills. After creation, use apply-vendor-credit to allocate the balance across one or more open bills.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `date` | string | Yes | Rillet request field date. |
| `memo` | string | No | Rillet request field memo. |
| `vendor_id` | string | Yes | Rillet request field vendor_id. |
| `line_items` | array | Yes | Rillet request field line_items. |
| `credit_number` | string | Yes | Rillet request field credit_number. |
| `subsidiary_id` | string | Yes | Rillet request field subsidiary_id. |
| `gl_impact_date` | string | Yes | Rillet request field gl_impact_date. |

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

### Creates an external reference type

**Slug:** `RILLET_CREATE_EXTERNAL_REFERENCE_TYPE`

Creates a `type` for use in `external_references`. If the organization already has a type with this `slug`, it is returned unchanged with `200`; otherwise it is created and returned with `201`. Reserved names are rejected.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | Yes | Label shown in Rillet. At least 3 characters. |
| `slug` | string | Yes | The `type` value used in `external_references`. No whitespace; 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 |

### Creates a field

**Slug:** `RILLET_CREATE_FIELD`

Defines a new custom field (text, number, pick list, etc.) that can be attached to supported Rillet entities for reporting and automation. After creation, use create-field-value to seed allowed pick-list entries or default values teams should see in the UI.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | Yes | The name of the field. |
| `values` | array | Yes | Rillet request field values. |

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

### Creates a field value

**Slug:** `RILLET_CREATE_FIELD_VALUE`

Adds a selectable value to a pick-list style custom field so users and APIs can tag entities with consistent taxonomy. Values inherit the field’s scope, so create them after the parent field exists and before importing records that reference the new code.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | UUID of the id to be used in this operation. |
| `name` | string | Yes | Rillet request field name. |

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

### Deletes a bank account

**Slug:** `RILLET_DELETE_A_BANK_ACCOUNT`

Removes a bank account definition when the entity closed the account or you mistakenly created a duplicate connector mapping. Ensure no scheduled payments or open reconciliation batches still target this bank account before deletion.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `bank_account_id` | string | Yes | UUID of the bank account to be used in this operation. |

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

### Deletes a bank transaction

**Slug:** `RILLET_DELETE_A_BANK_TRANSACTION`

Removes a bank transaction row that was imported twice or created in error before it affects reconciled cash balances. Confirm treasury agrees the underlying bank activity will not return on the next feed pull before deleting.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `bank_transaction_id` | string | Yes | UUID of the bank transaction to be used in this operation. |

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

### Deletes a bill

**Slug:** `RILLET_DELETE_A_BILL`

Removes a bill that should no longer drive AP balances, typically while it remains in draft or was created in error. Verify no posted payments, accrual journals, or vendor credit applications still reference the bill before deleting.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `bill_id` | string | Yes | UUID of the bill to be used in this operation. |

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

### Deletes a bill payment

**Slug:** `RILLET_DELETE_A_BILL_PAYMENT`

Reverses a previously recorded bill payment when the disbursement failed or was duplicated, restoring the bill balance accordingly. Treat this as a corrective action with the same controls you apply to voiding treasury transactions in your close process.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `bill_id` | string | Yes | UUID of the bill to be used in this operation. |
| `payment_id` | string | Yes | UUID of the payment to be used in this operation. |

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

### Deletes a charge

**Slug:** `RILLET_DELETE_A_CHARGE`

Drops a charge that should not influence spend reporting, for example duplicate imports from a card processor feed. Ensure finance agrees the underlying bank activity will not be re-imported before removing the charge permanently.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `charge_id` | string | Yes | UUID of the charge to be used in this operation. |

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

### Deletes a contract

**Slug:** `RILLET_DELETE_A_CONTRACT`

Permanently removes a contract when your business rules allow deletion. Confirm downstream invoices, revenue schedules, and integrations no longer depend on this contract before deleting it.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `contract_id` | string | Yes | UUID of the contract 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 |

### Deletes a document from a contract

**Slug:** `RILLET_DELETE_A_CONTRACT_DOCUMENT`

Removes one attachment from a contract. The stored file is deleted unless another contract or a milestone still uses it, or the file belongs to another part of Rillet. Works for files uploaded through the API or the Rillet application, or imported from Salesforce.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `contract_id` | string | Yes | UUID of the contract to be used in this operation. |
| `document_id` | string | Yes | The id returned by the upload or list endpoint. |

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

### Deletes a credit memo

**Slug:** `RILLET_DELETE_A_CREDIT_MEMO`

Removes a credit memo that should no longer affect AR balances, typically while it is still draft or unused. Confirm no invoice applications or downstream revenue adjustments depend on this memo before calling delete.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `credit_memo_id` | string | Yes | UUID of the credit memo to be used in this operation. |

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

### Deletes a customer

**Slug:** `RILLET_DELETE_A_CUSTOMER`

Permanently deletes a customer. Verify no active contracts or open invoices reference this customer first.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `customer_id` | string | Yes | UUID of the customer 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 |

### Dissolves a customer family

**Slug:** `RILLET_DELETE_A_CUSTOMER_FAMILY`

Dissolves the grouping. Every member becomes a standalone customer; no customer is deleted.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `customer_family_id` | string | Yes | UUID of the customer family to dissolve. |

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

### Deletes a draft contract

**Slug:** `RILLET_DELETE_A_DRAFT_CONTRACT`

Permanently removes a draft contract along with its line items and external references. Use this to programmatically reject a draft contract instead of doing it from the Rillet UI.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `draft_contract_id` | string | Yes | UUID of the draft contract to be used in this operation. |

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

### Deletes a document from a draft contract

**Slug:** `RILLET_DELETE_A_DRAFT_CONTRACT_DOCUMENT`

Removes one attachment from a draft contract. The stored file is deleted unless a contract, another draft contract or a milestone still uses it, or the file belongs to another part of Rillet. Works for files uploaded through the API or the Rillet application, or imported from Salesforce. A file imported from Salesforce stays removed when the draft contract is imported again, unless a newer version of it is uploaded in Salesforce.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `document_id` | string | Yes | The id returned by the upload or list endpoint. |
| `draft_contract_id` | string | Yes | UUID of the draft contract to be used in this operation. |

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

### Deletes a journal entry

**Slug:** `RILLET_DELETE_A_JOURNAL_ENTRY`

Deletes a manual journal entry that should be excluded from the ledger, typically prior to period lock while corrections remain allowed. Verify dependent reconciliations or downstream consolidations no longer rely on the entry before removal.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `journal_entry_id` | string | Yes | UUID of the journal entry to be used in this operation. |

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

### Deletes an invoice

**Slug:** `RILLET_DELETE_AN_INVOICE`

Permanently removes an invoice when your policy allows it (for example draft or voided states). Confirm no downstream payments or revenue postings still depend on this invoice.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `invoice_id` | string | Yes | UUID of the invoice 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 |

### Deletes a document from an invoice

**Slug:** `RILLET_DELETE_AN_INVOICE_DOCUMENT`

Removes one attachment from an invoice and deletes the stored file. Works for files uploaded through the API or the Rillet application. Removing a file from an invoice that was already sent does not change the email that went out.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `invoice_id` | string | Yes | UUID of the invoice to be used in this operation. |
| `document_id` | string | Yes | The id returned by the upload or list endpoint. |

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

### Deletes an invoice payment

**Slug:** `RILLET_DELETE_AN_INVOICE_PAYMENT`

Reverses a previously recorded uncleared invoice payment, restoring the invoice balance accordingly. Only uncleared payments can be deleted; cleared or reconciled payments are rejected. Treat this as a corrective action with the same controls you apply to voiding treasury transactions in your close process.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `invoice_id` | string | Yes | UUID of the invoice to be used in this operation. |
| `payment_id` | string | Yes | UUID of the payment to be used in this operation. |

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

### Deletes a product

**Slug:** `RILLET_DELETE_A_PRODUCT`

Permanently removes a product or bundle. Ensure no in-flight contracts or invoices require this product before deleting.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `product_id` | string | Yes | UUID of the product 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 |

### Deletes a reimbursement

**Slug:** `RILLET_DELETE_A_REIMBURSEMENT`

Removes a reimbursement that was created prematurely or duplicated during intake so it no longer blocks payroll totals. Confirm no outbound payments or GL accruals were posted against the reimbursement before deleting it.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `reimbursement_id` | string | Yes | UUID of the reimbursement to be used in this operation. |

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

### Deletes a reimbursement payment

**Slug:** `RILLET_DELETE_A_REIMBURSEMENT_PAYMENT`

Reverses an uncleared reimbursement payment that was recorded in error.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `payment_id` | string | Yes | UUID of the payment to be used in this operation. |
| `reimbursement_id` | string | Yes | UUID of the reimbursement to be used in this operation. |

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

### Deletes a usage record

**Slug:** `RILLET_DELETE_A_USAGE_RECORD`

Removes the usage entry for a single contract item on a specific calendar date. This is narrower than upsert-a-usage-record and is ideal when you need to wipe a mistaken day without resending the entire usage payload.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `date` | string | Yes | Calendar date of the usage row to delete (ISO-8601 format). |
| `contract_item_id` | string | Yes | UUID of the contract line item whose usage row should be removed. |

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

### Deletes a vendor

**Slug:** `RILLET_DELETE_A_VENDOR`

Removes a vendor you no longer expect to pay. Confirm no open bills, credits, or scheduled payments still reference this vendor to avoid orphaned payables.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `vendor_id` | string | Yes | UUID of the vendor to be used in this operation. |

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

### Deletes a vendor credit

**Slug:** `RILLET_DELETE_A_VENDOR_CREDIT`

Permanently removes a vendor credit that should not remain in the subledger. Ensure no applications or downstream reconciliations still rely on this credit before deleting.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `vendor_credit_id` | string | Yes | UUID of the vendor credit to be used in this operation. |

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

### Unapplies all credit memo applications

**Slug:** `RILLET_DELETE_CREDIT_MEMO_APPLICATIONS`

Removes every application from this credit memo, reverting all invoice allocations.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `credit_memo_id` | string | Yes | UUID of the credit memo to be used in this operation. |

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

### Deletes a field value

**Slug:** `RILLET_DELETE_FIELD_VALUE`

Retires a pick-list option that should no longer be selectable while keeping older records intact for read-only history. Confirm no automation or validation rules still require the value before removal to avoid breaking bulk imports.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `fieldId` | string | Yes | UUID of the field to be used in this operation. |
| `fieldValueId` | string | Yes | UUID of the fieldValue to be used in this operation. |

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

### Ends an open-ended contract

**Slug:** `RILLET_END_AN_OPEN_ENDED_CONTRACT`

Sets an explicit end date on a contract that previously had no close date (open-ended). Provide the final end_date in the request body; downstream invoicing and revenue recognition honor the new boundary. This PUT operation sends the complete documented request representation.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `end_date` | string | Yes | Rillet request field end_date. |
| `contract_id` | string | Yes | UUID of the open-ended contract to close. |

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

### Gets API key information

**Slug:** `RILLET_GET_API_KEY_INFORMATION`

Confirms the caller’s API key is recognized and returns basic identity metadata such as organization context when authentication succeeds. Integrations should call this during bootstrap or rotation to distinguish invalid keys from broader connectivity failures.

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

**Slug:** `RILLET_GET_CURRENT_ORGANIZATION`

Return the organization associated with the connected Rillet credentials, including its ID, currency, timezone, and trade name.

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

**Slug:** `RILLET_GET_FINANCIAL_REPORT`

Return either a trial balance for a date range or a balance sheet as of a date, with optional subsidiary and book filters. This reads calculated accounting results and does not post or modify entries.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `book_id` | string | No | Book UUID to report from; adjustment-overlay books include the combined primary and adjustment view. |
| `to_date` | string | No | Trial-balance period end in YYYY-MM-DD format; required for trial_balance and invalid for balance_sheet. |
| `from_date` | string | No | Trial-balance period start in YYYY-MM-DD format; required for trial_balance and invalid for balance_sheet. |
| `as_of_date` | string | No | Balance-sheet date in YYYY-MM-DD format; required for balance_sheet and invalid for trial_balance. |
| `report_type` | string ("trial_balance" | "balance_sheet") | Yes | Financial statement to calculate and return. |
| `breakdown_by` | string ("SUBSIDIARY" | "CUSTOM_FIELD") | No | Balance-sheet column breakdown; valid only for balance_sheet. Omit for a single total column. |
| `subsidiary_id` | string | No | Limit the report to this subsidiary UUID. |

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

### Gets payment method

**Slug:** `RILLET_GET_PAYMENT_METHOD`

Returns the payment method configured for auto-payment for the given customer.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `customer_id` | string | Yes | UUID of the customer to be used in this operation. |

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

### Returns service health

**Slug:** `RILLET_HEALTH`

Lightweight liveness probe that returns HTTP 200 when the service process is running, without exercising downstream databases or queues. Use for load balancer health checks where you only need to know the JVM responded.

#### 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 Accounting Reference Data

**Slug:** `RILLET_LIST_ACCOUNTING_REFERENCE_DATA`

Return one complete Rillet reference collection selected by resource: chart accounts, subsidiaries, books, bank accounts, tax rates, or custom fields. Use it to resolve IDs and accounting configuration before querying transactions or reports.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `country` | string | No | Filter tax_rates by an ISO 3166-1 alpha-2 country code; valid only when resource is tax_rates. |
| `resource` | string ("chart_accounts" | "subsidiaries" | "books" | "bank_accounts" | "tax_rates" | "custom_fields") | Yes | Reference collection to return: chart_accounts, subsidiaries, books, bank_accounts, tax_rates, or custom_fields. |
| `subsidiary_id` | string | No | Filter bank_accounts to one subsidiary; valid only when resource is bank_accounts. |
| `updated_after` | string | No | Return records updated after this ISO 8601 timestamp; valid only for chart_accounts or custom_fields. |

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

### Lists all approval workflows

**Slug:** `RILLET_LIST_ALL_APPROVAL_WORKFLOWS`

Returns every approval workflow in the organization tied to the API credentials, active and inactive, grouped by the kind of record they apply to and ordered by ascending `priority` within each group. This endpoint is not paginated and returns the complete set.

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

### Lists all charges

**Slug:** `RILLET_LIST_ALL_CHARGES`

Pages card or out-of-pocket employee charges awaiting policy review, subsidiary allocation, or conversion into reimbursable payables. Filter by subsidiary_id or updated.gt when syncing corporate card feeds into downstream expense automation.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `limit` | integer | No | Maximum number of rows to return in the page. |
| `cursor` | string | No | Pagination cursor to navigate through the full response. |
| `updated_gt` | string | No | Filter charges updated after this timestamp |
| `subsidiary_id` | string | No | Subsidiary to be used when filtering data |

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

### Lists all contract item usage records

**Slug:** `RILLET_LIST_ALL_CONTRACT_ITEM_USAGE_RECORDS`

Returns historical usage quantities for a contract item, newest first, with optional pagination cursors. Use before upsert-a-usage-record or delete-a-usage-record to understand existing coverage for each date.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `limit` | integer | No | Maximum number of rows to return in the page. |
| `cursor` | string | No | Pagination cursor to navigate through the full response. |
| `contract_item_id` | string | Yes | UUID of the contract line item whose usage rows are being listed. |

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

### Lists all credit memos

**Slug:** `RILLET_LIST_ALL_CREDIT_MEMOS`

Returns customer credit memos with pagination and filters for application state, customer, and subsidiaries. Use credit memo ids with retrieve-a-credit-memo before updates or when applying credits to invoices.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `limit` | integer | No | Maximum number of rows to return in the page. |
| `cursor` | string | No | Pagination cursor to navigate through the full response. |
| `updated_gt` | string | No | Filter credit memos updated after this timestamp |
| `subsidiary_id` | string | No | Subsidiary to be used when filtering data |

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

### Lists all customer families

**Slug:** `RILLET_LIST_ALL_CUSTOMER_FAMILIES`

Returns customer families with pagination and optional search or update filters. The response does not include members; use list-customer-family-members to read them.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `limit` | integer | No | Maximum number of rows to return in the page. |
| `cursor` | string | No | Pagination cursor to navigate through the full response. |
| `search` | string | No | Filter customer families by name. |
| `sort_by` | string ("created" | "updated") | No | the field the customer families should be sorted by descending (either created or updated) |
| `updated_gt` | string | No | Filter customer families updated after this timestamp |

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

### Lists all draft contracts

**Slug:** `RILLET_LIST_ALL_DRAFT_CONTRACTS`

Returns draft contracts with cursor pagination. Draft contracts are staged records that appear in the Rillet UI under "Draft" for a human to approve or reject before they become active contracts.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `limit` | integer | No | Maximum number of rows to return in the page. |
| `cursor` | string | No | Pagination cursor to navigate through the full response. |
| `customer_id` | string | No | Optional UUID filter by customer. |
| `subsidiary_id` | string | No | Subsidiary to be used when filtering data |

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

### Lists payments for a given invoice

**Slug:** `RILLET_LIST_ALL_INVOICE_PAYMENTS`

Returns every payment attempt tied to a single invoice, including successful, uncleared, and failed rows with their public status. Pair with retrieve-an-invoice when reconciling an account statement against what Rillet already applied.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `invoice_id` | string | Yes | UUID of the invoice to be used in this operation. |

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

### Lists all invoice payments

**Slug:** `RILLET_LIST_ALL_INVOICES_PAYMENTS`

Pages every customer payment recorded against invoices across the organization, independent of which invoice it settled. Use updated.gt and sort_by when syncing integrations; follow the pagination cursor until no next page remains.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `limit` | integer | No | Maximum number of rows to return in the page. |
| `cursor` | string | No | Pagination cursor to navigate through the full response. |
| `sort_by` | string ("created" | "updated") | No | the field the payments should be sorted by descending (either created or updated) |
| `updated_gt` | string | No | Filter payments updated after this timestamp |

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

### Lists all metadata definitions

**Slug:** `RILLET_LIST_ALL_METADATA_DEFINITIONS`

Returns the organization's metadata definitions: the custom fields that can hold values on contracts, customers, and invoices. Keys are permanent identifiers derived from the name at creation; API consumers bind to keys, which never change on rename. At most 50 active definitions can be assigned to one entity type. Definitions are managed in Settings, not through this API.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `status` | string ("ACTIVE" | "ARCHIVED") | No | Only definitions with this status. Omit to return both. |
| `entity_type` | string ("BILL" | "CONTRACT" | "CUSTOMER" | "INVOICE") | No | Only definitions assigned to this entity type. |

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

### Lists all products

**Slug:** `RILLET_LIST_ALL_PRODUCTS`

Returns sellable products and services for accounts receivable (contracts, invoices). Supports pagination and optional filters such as status, currency and type.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `type` | array | No | Optional product type filter. |
| `limit` | integer | No | Maximum number of rows to return in the page. |
| `cursor` | string | No | Pagination cursor to navigate through the full response. |
| `status` | string | No | Optional status filter (allowed values depend on the resource). |
| `currency` | string | No | Optional ISO currency code filter. |

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

### Lists all reimbursements

**Slug:** `RILLET_LIST_ALL_REIMBURSEMENTS`

Surfaces reimbursement requests created from approved charges or manual submissions, including subsidiary and freshness filters for payroll sync. Use pagination cursors for large populations and pair with retrieve-a-reimbursement when a row needs detailed audit context.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `limit` | integer | No | Maximum number of rows to return in the page. |
| `cursor` | string | No | Pagination cursor to navigate through the full response. |
| `updated_gt` | string | No | Filter reimbursements updated after this timestamp |
| `subsidiary_id` | string | No | Subsidiary to be used when filtering data |

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

### Lists all vendor credits

**Slug:** `RILLET_LIST_ALL_VENDOR_CREDITS`

Returns vendor credits with pagination and filters for vendor, subsidiary, and freshness. Credits represent vendor-issued balance reductions you can later apply to bills using apply-vendor-credit.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `limit` | integer | No | Maximum number of rows to return in the page. |
| `cursor` | string | No | Pagination cursor to navigate through the full response. |
| `vendor_id` | string | No | Optional UUID filter by vendor. |
| `updated_gt` | string | No | Filter vendor credits updated after this timestamp |
| `subsidiary_id` | string | No | Subsidiary to be used when filtering data |

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

**Slug:** `RILLET_LIST_BANK_TRANSACTIONS`

Return one page of bank transactions, optionally filtered by bank account, subsidiary, transaction-date range, or update time.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `limit` | integer | No | Maximum bank transactions to return in this page (1-100). |
| `cursor` | string | No | Opaque next_cursor from the prior response. It expires after two hours; an invalid or expired value can restart at page one. |
| `date_to` | string | No | Include transactions dated on or before this YYYY-MM-DD date. |
| `sort_by` | string ("created" | "updated") | No | Field used for descending result order. |
| `date_from` | string | No | Include transactions dated on or after this YYYY-MM-DD date. |
| `subsidiary_id` | string | No | Return transactions for this subsidiary UUID. |
| `updated_after` | string | No | Return bank transactions updated after this ISO 8601 timestamp. |
| `bank_account_id` | string | No | Return transactions for this bank-account UUID. |

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

### Lists bill payments

**Slug:** `RILLET_LIST_BILL_PAYMENTS`

Enumerates disbursements recorded against a specific bill, useful when reconciling vendor statements to internal cash movements. Combine with retrieve-a-bill to understand remaining balance after each payment posts.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `bill_id` | string | Yes | UUID of the bill to be used in this operation. |

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

**Slug:** `RILLET_LIST_BILLS`

Return one page of bills, optionally filtered by subsidiary, vendor, payment status, or update time.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `limit` | integer | No | Maximum bills to return in this page (1-100). |
| `cursor` | string | No | Opaque next_cursor from the prior response. It expires after two hours; an invalid or expired value can restart at page one. |
| `status` | string ("UNPAID" | "PAID" | "PARTIALLY_PAID" | "CREDITED" | "PARTIALLY_CREDITED" | "APPLIED") | No | Bill payment status to return. |
| `vendor_id` | string | No | Return bills for this vendor UUID. |
| `subsidiary_id` | string | No | Return bills for this subsidiary UUID. |
| `updated_after` | string | No | Return bills updated after this ISO 8601 timestamp. |

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

### Lists close checklist tasks

**Slug:** `RILLET_LIST_CLOSE_CHECKLIST_TASKS`

Returns the month-end close checklist for one accounting month: every task with its notes, due date, preparer, reviewer queue, completion and sign-off state. Use it to report close progress or to find the task_id needed by update, complete and sign-off. Resolve preparer and reviewer user ids to people with list-members (match on user_id). Responds with HTTP 404 when no checklist exists for the month.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `period` | string | Yes | The checklist's accounting month in ISO-8601 format (YYYY-MM). |
| `status` | string ("NOT_STARTED" | "IN_REVIEW" | "COMPLETE") | No | Only return tasks in this status. |
| `preparer_ids` | array | No | Only return tasks whose assigned preparer, or the user who completed them, is one of these user ids (comma-separated). A task completed by someone other than its assigned preparer matches either user. |
| `reviewer_ids` | array | No | Only return tasks where one of these user ids is a reviewer (comma-separated). |

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

### Lists documents attached to a contract

**Slug:** `RILLET_LIST_CONTRACT_DOCUMENTS`

Returns all attached documents, including those uploaded through the Rillet application or imported from Salesforce. Each download URL is valid for up to 1 hour; call this endpoint again to obtain fresh URLs. Documents are listed oldest first. Returns an empty `documents` array when the contract has no attachments.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `contract_id` | string | Yes | UUID of the contract to be used in this operation. |

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

**Slug:** `RILLET_LIST_CONTRACTS`

Return one page of contracts, optionally filtered by subsidiary, customer, lifecycle status, or inclusive/exclusive start and end date ranges.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `limit` | integer | No | Maximum contracts to return in this page (1-100). |
| `cursor` | string | No | Opaque next_cursor from the prior response. It expires after two hours; an invalid or expired value can restart at page one. |
| `status` | string ("ACTIVE" | "IN_EFFECT" | "CANCELLED" | "ENDED" | "AMENDED") | No | Contract lifecycle status to return. |
| `customer_id` | string | No | Return contracts for this customer UUID. |
| `end_date_to` | string | No | Include contracts ending on or before this YYYY-MM-DD date. |
| `end_date_from` | string | No | Include contracts ending on or after this YYYY-MM-DD date. |
| `start_date_to` | string | No | Include contracts starting on or before this YYYY-MM-DD date. |
| `subsidiary_id` | string | No | Return contracts for this subsidiary UUID. |
| `end_date_after` | string | No | Include contracts ending strictly after this YYYY-MM-DD date. |
| `end_date_before` | string | No | Include contracts ending strictly before this YYYY-MM-DD date. |
| `start_date_from` | string | No | Include contracts starting on or after this YYYY-MM-DD date. |
| `start_date_after` | string | No | Include contracts starting strictly after this YYYY-MM-DD date. |
| `start_date_before` | string | No | Include contracts starting strictly before this YYYY-MM-DD date. |

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

### Lists the members of a customer family

**Slug:** `RILLET_LIST_CUSTOMER_FAMILY_MEMBERS`

Returns the members of a customer family with pagination. Each member names the member it reports to, so you can rebuild the tree. Newest first, not alphabetical.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `limit` | integer | No | Maximum number of rows to return in the page. |
| `cursor` | string | No | Pagination cursor to navigate through the full response. |
| `search` | string | No | Filter members by customer name. |
| `sort_by` | string ("created" | "updated") | No | the field the members should be sorted by descending (either created or updated) |
| `customer_family_id` | string | Yes | UUID of the customer family whose members are listed. |
| `parent_customer_id` | string | No | Return only the direct children of this member. Omit it to page the whole family. Passing a customer from a different family gives you an empty page rather than an error. |

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

**Slug:** `RILLET_LIST_CUSTOMERS`

Return one page of accounts-receivable customers, optionally filtered by name, external reference, or update time.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `limit` | integer | No | Maximum customers to return in this page (1-100). |
| `cursor` | string | No | Opaque next_cursor from the prior response. It expires after two hours; an invalid or expired value can restart at page one. |
| `search` | string | No | Filter customers by name. |
| `sort_by` | string ("created" | "updated") | No | Field used for descending result order. |
| `updated_after` | string | No | Return customers updated after this ISO 8601 timestamp. |
| `external_reference_id` | string | No | External-system customer ID; provide external_reference_type with it. |
| `external_reference_type` | string | No | External-system reference type; provide external_reference_id with it. |

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

### Lists documents attached to a draft contract

**Slug:** `RILLET_LIST_DRAFT_CONTRACT_DOCUMENTS`

Returns all attached documents, including those uploaded through the Rillet application or imported from Salesforce. Each download URL is valid for up to 1 hour; call this endpoint again to obtain fresh URLs. Documents are listed oldest first. Returns an empty `documents` array when the draft contract has no attachments. Once the draft contract is confirmed, its documents are listed on the contract instead.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `draft_contract_id` | string | Yes | UUID of the draft contract to be used in this operation. |

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

### Lists documents attached to an invoice

**Slug:** `RILLET_LIST_INVOICE_DOCUMENTS`

Returns all attached documents, including those uploaded through the Rillet application. Each download URL is valid for up to 1 hour; call this endpoint again to obtain fresh URLs. Documents are listed oldest first. Returns an empty `documents` array when the invoice has no attachments.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `invoice_id` | string | Yes | UUID of the invoice to be used in this operation. |

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

Return one page of invoices, optionally filtered by subsidiary, customer, payment status, overdue state, external reference, or update time. Results intentionally omit bank-account and full postal-address details.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `limit` | integer | No | Maximum invoices to return in this page (1-100). |
| `cursor` | string | No | Opaque next_cursor from the prior response. It expires after two hours; an invalid or expired value can restart at page one. |
| `status` | string ("UNPAID" | "PAID" | "PARTIALLY_PAID" | "UNBILLED" | "CREDITED" | "PARTIALLY_CREDITED") | No | Invoice payment status to return. |
| `overdue` | boolean | No | When set, return only invoices whose overdue state matches this value. |
| `customer_id` | string | No | Return invoices for this customer UUID. |
| `subsidiary_id` | string | No | Return invoices for this subsidiary UUID. |
| `updated_after` | string | No | Return invoices updated after this ISO 8601 timestamp. |
| `external_reference_id` | string | No | External-system invoice ID; provide external_reference_type with it. |
| `external_reference_type` | string | No | External-system reference type, such as Stripe; provide external_reference_id with it. |

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

**Slug:** `RILLET_LIST_JOURNAL_ENTRIES`

Return one page of journal entries, optionally filtered by subsidiary, book, posting-date range, account IDs, or update time. Each result includes debit and credit lines with exact decimal amount strings.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `limit` | integer | No | Maximum journal entries to return in this page (1-100). |
| `cursor` | string | No | Opaque next_cursor from the prior response. It expires after two hours; an invalid or expired value can restart at page one. |
| `book_id` | string | No | Book UUID to report from; adjustment-overlay books include primary and adjustment entries. |
| `date_to` | string | No | Include entries posted on or before this YYYY-MM-DD date. |
| `sort_by` | string ("created" | "updated") | No | Field used for descending result order. |
| `date_from` | string | No | Include entries posted on or after this YYYY-MM-DD date. |
| `account_ids` | array | No | Return entries having at least one line posted to any listed chart-account UUID. |
| `subsidiary_id` | string | No | Return journal entries for this subsidiary UUID. |
| `updated_after` | string | No | Return journal entries updated after this ISO 8601 timestamp. |

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

### Lists documents attached to a manual journal entry

**Slug:** `RILLET_LIST_JOURNAL_ENTRY_DOCUMENTS`

Returns all attached documents, including those uploaded through the Rillet application. Each download URL is valid for up to 1 hour; call this endpoint again to obtain fresh URLs. Returns an empty array when the entry has no attachments. System-generated and non-posting entries are not supported.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `journal_entry_id` | string | Yes | UUID of an existing manual journal entry. |

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

### Lists organization members

**Slug:** `RILLET_LIST_MEMBERS`

Returns the identity of each member of the organization tied to the API credentials. This endpoint carries identity only (id, user, email, name, status); it does not return role assignments. Use list-role-assignments to discover which member is assigned which role, and list-roles to resolve what each role authorizes.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `limit` | integer | No | Maximum number of rows to return in the page. |
| `cursor` | string | No | Pagination cursor to navigate through the full response. |

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

### Lists reimbursement payments

**Slug:** `RILLET_LIST_REIMBURSEMENT_PAYMENTS`

Lists payments recorded against a reimbursement so external systems can reconcile its paid balance.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `reimbursement_id` | string | Yes | UUID of the reimbursement to be used in this operation. |

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

### Lists journal entries with reporting currency amounts

**Slug:** `RILLET_LIST_REPORTS_JOURNAL_ENTRIES`

Returns journal entries with line item amounts converted to the reporting currency.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `limit` | integer | No | Maximum number of rows to return in the page. |
| `cursor` | string | No | Pagination cursor to navigate through the full response. |
| `book_id` | string | No | Book ID to report on. Primary books return primary-only entries; adjustment-overlay books return primary and adjustment entries. |
| `sort_by` | string ("created" | "updated") | No | the field the journal entries should be sorted by descending (either created or updated) |
| `date_gte` | string | No | Filter journal entries with a posting date on or after this date (inclusive) |
| `date_lte` | string | No | Filter journal entries with a posting date on or before this date (inclusive) |
| `updated_gt` | string | No | Filter journal entries updated after this timestamp |
| `account_ids` | array | No | Filter journal entries that have at least one line item posting to any of these account ids (comma-separated) |
| `subsidiary_id` | string | No | Subsidiary to be used when filtering data |

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

### Lists role assignments

**Slug:** `RILLET_LIST_ROLE_ASSIGNMENTS`

Returns which organization member is assigned which role and the scope of that assignment. References roles and members by id only; join against list-roles and list-members to resolve names. This endpoint is not the source of truth for role or subsidiary names.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `limit` | integer | No | Maximum number of rows to return in the page. |
| `cursor` | string | No | Pagination cursor to navigate through the full response. |
| `member_id` | string | No | Filter assignments to a single organization member. |

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

### Lists roles

**Slug:** `RILLET_LIST_ROLES`

Returns every role defined in the organization along with the flat set of permission keys it grants. Each permission is an opaque, colon-delimited string; treat it as an opaque identifier and do not rely on its internal structure.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `limit` | integer | No | Maximum number of rows to return in the page. |
| `cursor` | string | No | Pagination cursor to navigate through the full response. |

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

**Slug:** `RILLET_LIST_VENDORS`

Return one page of accounts-payable vendors, optionally limited to records updated after a timestamp. Results omit tax IDs, addresses, email addresses, payment terms, custom fields, and account-code details.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `limit` | integer | No | Maximum vendors to return in this page (1-100). |
| `cursor` | string | No | Opaque next_cursor from the prior response. It expires after two hours; an invalid or expired value can restart at page one. |
| `updated_after` | string | No | Return vendors updated after this ISO 8601 timestamp. |

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

### Matches two bank transactions as a transfer

**Slug:** `RILLET_MATCH_BANK_TRANSACTIONS_AS_TRANSFER`

Matches two bank transactions as a transfer. The source transaction may be incoming or outgoing; the transaction amounts determine the direction. Cross-subsidiary transfers require access to both subsidiaries. For a same-subsidiary transfer with a difference, provide reconciliation_adjustment.account_id; reconciliation_adjustment.fields apply to the adjustment line. If either bank transaction has a fee, provide fees_account_id to book it. A transfer with fees on both bank transactions is not supported.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `transaction_id` | string | Yes | ID of the source bank transaction. Either leg can be incoming or outgoing. |
| `fees_account_id` | string | No | GL account for a fee on either bank transaction. Required if either leg has a fee; both legs cannot have fees. |
| `reconciliation_adjustment` | object | No | Optional account and custom fields for an adjustment entry when a same-subsidiary transfer has a difference. |
| `destination_transaction_id` | string | Yes | ID of the other bank transaction leg in the same organization. |

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

### Matches bank transactions to existing records

**Slug:** `RILLET_MATCH_BANK_TRANSACTIONS_TO_RECORDS`

Matches bank transactions to existing records. You can include different record types in one request, subject to the supported match combinations. To book a difference, provide reconciliation_adjustment.account_id. Optional reconciliation_adjustment.fields are custom field and value IDs applied to the adjustment entry, not to the matched records. Rillet calculates the difference.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `bill_ids` | array | No | Unique IDs of existing bills to match to the bank transactions. |
| `charge_ids` | array | No | Unique IDs of existing expense charges to match to the bank transactions. |
| `invoice_ids` | array | No | Unique IDs of existing invoices to match to the bank transactions. |
| `credit_memo_ids` | array | No | Unique IDs of existing credit memos to match to the bank transactions. |
| `fees_account_id` | string | No | GL account for bank fees. If omitted, the provider mapped account is used; a fee without either account fails the match. |
| `transaction_ids` | array | Yes | IDs of the bank transactions to match. They must all be unique and belong to the same subsidiary. |
| `journal_entry_ids` | array | No | Unique IDs of cash journal entries to clear; their cash GL account must match the bank transaction cash account. |
| `reimbursement_ids` | array | No | Unique IDs of existing reimbursements to match to the bank transactions. |
| `vendor_credit_ids` | array | No | Unique IDs of existing vendor credits to match to the bank transactions. |
| `reconciliation_adjustment` | object | No | Optional account, vendor and custom fields for an adjustment entry when amounts differ. |

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

### Matches bank transactions with new quick entries

**Slug:** `RILLET_MATCH_BANK_TRANSACTIONS_WITH_QUICK_ENTRY`

Creates a separate quick entry for each bank transaction in transaction_ids, using the same requested details. The transactions are not combined into one many-to-one (N:1) match. With line_items, supply exactly one ID.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | Yes | Name of the new quick entry. |
| `type` | string ("VENDOR" | "EMPLOYEE" | "OTHER" | "FEE" | "ADJUSTMENT" | "CUSTOMER" | "NONE") | Yes | Type of quick entry to create. VENDOR requires vendor_id; other types do not require a vendor. |
| `fields` | array | No | Custom fields on the generated entry. When line_items are supplied, use their fields instead. |
| `vendor_id` | string | No | Vendor associated with the quick entry. Required when type is VENDOR. |
| `account_id` | string | Yes | GL account for the offsetting entry line. Required in the request even when line_items supply explicit accounts. |
| `line_items` | array | No | Optional balanced debit and credit lines for a split quick entry. Use only when transaction_ids contains exactly one ID. |
| `customer_id` | string | No | Optional customer associated with the quick entry. |
| `description` | string | No | Optional description on the generated entry when line_items are not supplied. |
| `attachment_url` | string | No | Optional attachment URL for the quick entry. |
| `fees_account_id` | string | No | GL account for bank fees. If omitted, the provider mapped account is used; a fee without either account fails the match. |
| `transaction_ids` | array | Yes | One or more unique bank transaction IDs from the same subsidiary. Without line_items, each transaction gets a separate quick entry using these request details, not an N:1 match. With line_items, supply exactly one transaction 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 |

### Patches account metadata

**Slug:** `RILLET_PATCH_ACCOUNT_METADATA`

Partial update. Keys omitted from the request body are left unchanged; send a key with a null, empty, or whitespace-only value to clear it. Prefer this over update-account-metadata when setting or clearing individual keys, as it cannot disturb keys you did not name. Archived keys may only be cleared, never changed. Every key must name a definition assigned to accounts: an unknown key, or one assigned only to another entity type, fails the request with a 400. Keys are never silently ignored. The write is atomic: if any key fails validation, nothing is written.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `metadata` | object | Yes | Values keyed by definition key. A partial update: keys omitted here are left unchanged, and null, empty, or whitespace-only values clear one key. Values are trimmed; TEXT values allow at most 256 characters and no line breaks. |
| `account_id` | string | Yes | UUID of the account to patch metadata for. |

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

### Patches bill metadata

**Slug:** `RILLET_PATCH_BILL_METADATA`

Partial update. Keys omitted from the request body are left unchanged; send a key with a null, empty, or whitespace-only value to clear it. Prefer this over update-bill-metadata when setting or clearing individual keys, as it cannot disturb keys you did not name. Archived keys may only be cleared, never changed. Every key must name a definition assigned to bills: an unknown key, or one assigned only to another entity type, fails the request with a 400. Keys are never silently ignored. The write is atomic: if any key fails validation, nothing is written. Writes are rejected with a 400 while the bill has a pending approval request.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `bill_id` | string | Yes | UUID of the bill to patch metadata for. |
| `metadata` | object | Yes | Values keyed by definition key. A partial update: keys omitted here are left unchanged, and null, empty, or whitespace-only values clear one key. Values are trimmed; TEXT values allow at most 256 characters and no line breaks. |

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

### Patches contract metadata

**Slug:** `RILLET_PATCH_CONTRACT_METADATA`

Partial update. Keys omitted from the request body are left unchanged; send a key with a null, empty, or whitespace-only value to clear it. Prefer this over update-contract-metadata when setting or clearing individual keys, as it cannot disturb keys you did not name. Archived keys may only be cleared, never changed. Every key must name a definition assigned to contracts: an unknown key, or one assigned only to another entity type, fails the request with a 400. Keys are never silently ignored. The write is atomic: if any key fails validation, nothing is written.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `metadata` | object | Yes | Values keyed by definition key. A partial update: keys omitted here are left unchanged, and null, empty, or whitespace-only values clear one key. Values are trimmed; TEXT values allow at most 256 characters and no line breaks. |
| `contract_id` | string | Yes | UUID of the contract to patch metadata for. |

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

### Patches customer metadata

**Slug:** `RILLET_PATCH_CUSTOMER_METADATA`

Partial update. Keys omitted from the request body are left unchanged; send a key with a null, empty, or whitespace-only value to clear it. Prefer this over update-customer-metadata when setting or clearing individual keys, as it cannot disturb keys you did not name. Archived keys may only be cleared, never changed. Every key must name a definition assigned to customers: an unknown key, or one assigned only to another entity type, fails the request with a 400. Keys are never silently ignored. The write is atomic: if any key fails validation, nothing is written.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `metadata` | object | Yes | Values keyed by definition key. A partial update: keys omitted here are left unchanged, and null, empty, or whitespace-only values clear one key. Values are trimmed; TEXT values allow at most 256 characters and no line breaks. |
| `customer_id` | string | Yes | UUID of the customer to patch metadata for. |

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

### Patches invoice metadata

**Slug:** `RILLET_PATCH_INVOICE_METADATA`

Partial update. Keys omitted from the request body are left unchanged; send a key with a null, empty, or whitespace-only value to clear it. Prefer this over update-invoice-metadata when setting or clearing individual keys, as it cannot disturb keys you did not name. Archived keys may only be cleared, never changed. Every key must name a definition assigned to invoices: an unknown key, or one assigned only to another entity type, fails the request with a 400. Keys are never silently ignored. The write is atomic: if any key fails validation, nothing is written.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `metadata` | object | Yes | Values keyed by definition key. A partial update: keys omitted here are left unchanged, and null, empty, or whitespace-only values clear one key. Values are trimmed; TEXT values allow at most 256 characters and no line breaks. |
| `invoice_id` | string | Yes | UUID of the invoice to patch metadata for. |

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

### Previews contract amendment

**Slug:** `RILLET_PREVIEW_CONTRACT_AMENDMENT`

Preview a contract that has been amended. This has no effect on the actual contract, only provides a preview of what a contract will look like after it is amended.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `items` | array | Yes | List of new contract items and new versions of amended contract items. Existing contract items that do not appear in the list will remain unchanged. |
| `invoicing` | string | Yes | Rillet request field invoicing. |
| `contract_id` | string | Yes | UUID of the contract whose amendment you are previewing. |
| `amendment_date` | string | Yes | It cannot be earlier than the previous amendment date if the contract has already been amended. |

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

### Preview the invoice schedule for a contract

**Slug:** `RILLET_PREVIEW_INVOICE_SCHEDULE`

Computes and returns the invoice schedule the given contract would produce, without creating the contract or persisting anything.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `body` | string | Yes | JSON request body matching the Rillet v4 operation schema. |

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

### Refreshes a bundle

**Slug:** `RILLET_REFRESH_A_BUNDLE`

Updates the details the bundle keeps for each component product to the products' current values. Contracts that already sold the bundle don't change.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `product_id` | string | Yes | UUID of the bundle to refresh. |

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

### Removes a member from a customer family

**Slug:** `RILLET_REMOVE_A_CUSTOMER_FAMILY_MEMBER`

Removes one customer from the family; the customer itself is untouched. Anyone reporting to it moves up to its own parent. If this would leave the family with a single member it is dissolved instead. The root parent cannot be removed this way: dissolve the family instead.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `customer_id` | string | Yes | UUID of the customer to remove from the family. |
| `customer_family_id` | string | Yes | UUID of the customer family to remove the member from. |

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

### Renames a customer family

**Slug:** `RILLET_RENAME_A_CUSTOMER_FAMILY`

Changes the family's name. Membership is untouched: anything else in the body is ignored, so use the members endpoints to change who belongs.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | Yes | Rillet request field name. |
| `customer_family_id` | string | Yes | UUID of the customer family to rename. |

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

### Retrieves a bank account

**Slug:** `RILLET_RETRIEVE_A_BANK_ACCOUNT`

Returns configuration and status for a single bank account, including identifiers downstream connectors need when refreshing balances. Use before deleting or updating metadata so you preserve institution codes and default subsidiary routing.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `bank_account_id` | string | Yes | UUID of the bank account to be used in this operation. |

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

### Retrieves a bank account balance

**Slug:** `RILLET_RETRIEVE_A_BANK_ACCOUNT_BALANCE`

Returns the latest stored bank balance on or before the requested date in the bank account's native currency. The response includes the stored balance date so consumers can identify when the latest available balance predates the requested date.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `as_of_date` | string | Yes | Date on or before which to retrieve the latest stored bank balance (ISO-8601 format). |
| `bank_account_id` | string | Yes | UUID of the bank account. |

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

### Retrieves a bank transaction

**Slug:** `RILLET_RETRIEVE_A_BANK_TRANSACTION`

Fetches one bank transaction with counterparty text, amounts, and links to the Rillet transactions it settled. Use the reconciled transaction IDs to retrieve the reconciled bills, invoices, journal entries, or other source records.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `bank_transaction_id` | string | Yes | UUID of the bank transaction to be used in this operation. |

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

### Retrieves a bill

**Slug:** `RILLET_RETRIEVE_A_BILL`

Returns the authoritative bill record including vendor linkage, approval state, open balance, and document references. Fetch before update-a-bill because PUT semantics require you to resubmit every field to avoid nulling omitted values.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `bill_id` | string | Yes | UUID of the bill to be used in this operation. |

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

### Retrieves account metadata

**Slug:** `RILLET_RETRIEVE_ACCOUNT_METADATA`

Returns this account's metadata values keyed by definition key. Keys with no value are omitted. Existing values held by archived definitions remain readable here. Definition names, types and status come from list-all-metadata-definitions.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `account_id` | string | Yes | UUID of the account to retrieve metadata for. |

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

### Retrieves a charge

**Slug:** `RILLET_RETRIEVE_A_CHARGE`

Fetches a single charge with merchant metadata, amounts, and workflow state so reviewers can decide coding before reimbursement. Use this after list-all-charges surfaces an id that needs manual inspection or attachment to a bill.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `charge_id` | string | Yes | UUID of the charge to be used in this operation. |

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

### Retrieves a contract

**Slug:** `RILLET_RETRIEVE_A_CONTRACT`

Returns the expanded contract including items, schedules, and metadata required before updates or amendments. Always retrieve before issuing a full PUT update so you preserve fields you do not intend to clear.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `contract_id` | string | Yes | UUID of the contract 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 |

### Retrieves a credit memo

**Slug:** `RILLET_RETRIEVE_A_CREDIT_MEMO`

Loads the full credit memo payload, including remaining balance, applications, and tax metadata you must echo on PUT updates. Always retrieve before editing because update-a-credit-memo replaces the entire resource when fields are omitted.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `credit_memo_id` | string | Yes | UUID of the credit memo to be used in this operation. |

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

### Retrieves a customer

**Slug:** `RILLET_RETRIEVE_A_CUSTOMER`

Returns a single customer record including billing profile details, which are needed for updates.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `customer_id` | string | Yes | UUID of the customer 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 |

### Retrieves a customer family

**Slug:** `RILLET_RETRIEVE_A_CUSTOMER_FAMILY`

Returns a single customer family with its name, root parent and member count. The response does not include members; use list-customer-family-members to read them.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `customer_family_id` | string | Yes | UUID of the customer family 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 |

### Retrieves a draft contract

**Slug:** `RILLET_RETRIEVE_A_DRAFT_CONTRACT`

Returns a draft contract by id, including its line items and any attached external references.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `draft_contract_id` | string | Yes | UUID of the draft contract to be used in this operation. |

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

### Retrieves a journal entry

**Slug:** `RILLET_RETRIEVE_A_JOURNAL_ENTRY`

Retrieves a journal entry with every line, account reference, and reconciliation flag needed for close review or downstream edits. Call before update-a-journal-entry so you can merge new edits with existing lines without accidentally dropping balances.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `journal_entry_id` | string | Yes | UUID of the journal entry to be used in this operation. |

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

### Retrieves an approval workflow

**Slug:** `RILLET_RETRIEVE_AN_APPROVAL_WORKFLOW`

Returns one approval workflow: the conditions that decide which entries it applies to, and the ordered layers of approvers that must sign off. This is the control definition, not a record of approvals given. Approval workflows are not versioned — the response describes the workflow as it stands now, and an update overwrites it in place.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `approval_workflow_id` | string | Yes | UUID of the approval workflow to be used in this operation. |

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

### Retrieves an invoice

**Slug:** `RILLET_RETRIEVE_AN_INVOICE`

Returns invoice details including line items, tax breakdown, and linkage to contracts or customers. Use Accept application/json for structured data; application/pdf is only for human-readable exports when enabled.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `invoice_id` | string | Yes | UUID 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 |

### Retrieves a pending invoice creation proposal

**Slug:** `RILLET_RETRIEVE_AN_INVOICE_CREATION_PROPOSAL`

Retrieve the captured contents of an invoice awaiting creation approval. No effective invoice exists yet. After approval, retrieve the invoice through the normal invoice endpoint. Pending proposals are excluded from invoice lists.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `invoice_id` | string | Yes | Rillet invoice_id parameter. |

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

### Retrieves a product

**Slug:** `RILLET_RETRIEVE_A_PRODUCT`

Returns a single product or bundle definition, including pricing configuration used on contracts and invoices.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `product_id` | string | Yes | UUID of the product 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 |

### Retrieves a reimbursement

**Slug:** `RILLET_RETRIEVE_A_REIMBURSEMENT`

Returns the full reimbursement packet with employee linkage, funding instructions, and approval history for a single id. Helpful when validating totals before releasing ACH batches or answering employee support tickets.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `reimbursement_id` | string | Yes | UUID of the reimbursement to be used in this operation. |

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

### Retrieves a subsidiary

**Slug:** `RILLET_RETRIEVE_A_SUBSIDIARY`

Returns one subsidiary by id for the authenticated organization. Call list-all-subsidiaries first if you need to resolve which subsidiary id to use.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `subsidiary_id` | string | Yes | UUID of the subsidiary to retrieve (must belong to the organization). |

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

### Retrieves a vendor

**Slug:** `RILLET_RETRIEVE_A_VENDOR`

Fetches the full vendor profile including identifiers you must echo back on PUT updates. Use before editing to avoid wiping optional fields, and when validating tax or payment metadata during bill entry.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `vendor_id` | string | Yes | UUID of the vendor to be used in this operation. |

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

### Retrieves a vendor credit

**Slug:** `RILLET_RETRIEVE_A_VENDOR_CREDIT`

Loads a single vendor credit including remaining balance and application history. Retrieve before updating or applying so you know how much capacity is left to allocate to bills.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `vendor_credit_id` | string | Yes | UUID of the vendor credit to be used in this operation. |

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

### Retrieves bill metadata

**Slug:** `RILLET_RETRIEVE_BILL_METADATA`

Returns this bill's metadata values keyed by definition key. Keys with no value are omitted. Existing values held by archived definitions remain readable here. Definition names, types and status come from list-all-metadata-definitions.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `bill_id` | string | Yes | UUID of the bill to retrieve metadata for. |

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

### Retrieves cash flow statement report

**Slug:** `RILLET_RETRIEVE_CASH_FLOW_STATEMENT_REPORT`

Returns a cash flow statement report for the specified date range.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `book_id` | string | No | Book ID to report on. Primary books return primary-only figures; adjustment-overlay books return the combined primary and adjustment view. |
| `to_date` | string | Yes | End date for the report period. Uses ISO-8601 format (YYYY-MM-DD). |
| `from_date` | string | Yes | Start date for the report period. Uses ISO-8601 format (YYYY-MM-DD). |
| `breakdown_by` | string ("SUBSIDIARY" | "CUSTOM_FIELD") | No | How to break down the report columns. If not specified, returns a single total column. |
| `subsidiary_id` | string | No | Subsidiary to be used when filtering data |
| `custom_field_id` | string | No | The ID of the custom field to break down by. Required when breakdown_by is CUSTOM_FIELD. |

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

### Retrieves contract metadata

**Slug:** `RILLET_RETRIEVE_CONTRACT_METADATA`

Returns this contract's metadata values keyed by definition key. Keys with no value are omitted, including values held by archived definitions, which stay readable here. Definition names, types and status come from list-all-metadata-definitions.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `contract_id` | string | Yes | UUID of the contract to retrieve metadata for. |

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

### Retrieves customer metadata

**Slug:** `RILLET_RETRIEVE_CUSTOMER_METADATA`

Returns this customer's metadata values keyed by definition key. Keys with no value are omitted, including values held by archived definitions, which stay readable here. Definition names, types and status come from list-all-metadata-definitions.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `customer_id` | string | Yes | UUID of the customer to retrieve metadata for. |

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

### Retrieves executive P&L report

**Slug:** `RILLET_RETRIEVE_EXECUTIVE_PL_REPORT`

Returns an executive profit and loss report with margins for the specified date range.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `book_id` | string | No | Book ID to report on. Primary books return primary-only figures; adjustment-overlay books return the combined primary and adjustment view. |
| `to_date` | string | Yes | End date for the report period. Uses ISO-8601 format (YYYY-MM-DD). |
| `from_date` | string | Yes | Start date for the report period. Uses ISO-8601 format (YYYY-MM-DD). |
| `breakdown_by` | string ("SUBSIDIARY" | "CUSTOM_FIELD") | No | How to break down the report columns. If not specified, returns a single total column. |
| `subsidiary_id` | string | No | Subsidiary to be used when filtering data |
| `custom_field_id` | string | No | The ID of the custom field to break down by. Required when breakdown_by is CUSTOM_FIELD. |

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

### Retrieves income statement report

**Slug:** `RILLET_RETRIEVE_INCOME_STATEMENT_REPORT`

Returns an income statement (profit and loss) report for the specified date range.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `book_id` | string | No | Book ID to report on. Primary books return primary-only figures; adjustment-overlay books return the combined primary and adjustment view. |
| `to_date` | string | Yes | End date for the report period. Uses ISO-8601 format (YYYY-MM-DD). |
| `from_date` | string | Yes | Start date for the report period. Uses ISO-8601 format (YYYY-MM-DD). |
| `breakdown_by` | string ("SUBSIDIARY" | "CUSTOM_FIELD") | No | How to break down the report columns. If not specified, returns a single total column. |
| `subsidiary_id` | string | No | Subsidiary to be used when filtering data |
| `custom_field_id` | string | No | The ID of the custom field to break down by. Required when breakdown_by is CUSTOM_FIELD. |

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

### Retrieves invoice metadata

**Slug:** `RILLET_RETRIEVE_INVOICE_METADATA`

Returns this invoice's metadata values keyed by definition key. Keys with no value are omitted, including values held by archived definitions, which stay readable here. Definition names, types and status come from list-all-metadata-definitions.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `invoice_id` | string | Yes | UUID of the invoice to retrieve metadata for. |

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

### Retrieves last book closed period

**Slug:** `RILLET_RETRIEVE_LAST_BOOK_CLOSED_PERIOD`

Returns the most recently closed accounting period for book-close workflows, including closed-on timestamps your automation can cache. When no period has ever been closed the API responds with HTTP 404, so treat a missing resource as "not yet closed" rather than an outage.

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

### Retrieves ARR waterfall report

**Slug:** `RILLET_RETRIEVE_WATERFALL_REPORT`

Returns the ARR waterfall dataset for the requested month with optional breakdown dimensions, subsidiary filters, and pagination cursors for large tenants. Finance teams use this to explain beginning ARR, new business, expansion, contraction, and churn between periods.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `limit` | integer | No | Maximum number of rows to return in the page. |
| `month` | string | Yes | The month and year to export. Uses ISO-8061 format (YYYY-MM). |
| `cursor` | string | No | Pagination cursor to navigate through the full response. |
| `status` | string ("ACTIVE" | "COMMITTED") | Yes | whether to include committed or active entries |
| `breakdown` | string ("ARR" | "MRR") | Yes | whether annual or monthly breakdowns |
| `subsidiary_id` | string | No | Subsidiary to be used when filtering data |

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

### Reverses a milestone completion

**Slug:** `RILLET_REVERSE_A_MILESTONE_COMPLETION`

Removes the current completion and its recognition effect without cancelling the milestone, issuing a credit, or changing its allocation. The milestone must currently be completed. The milestone change and required revenue journal regeneration commit atomically.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `contract_id` | string | Yes | UUID of the contract that owns the milestone. |
| `milestone_ref` | string | Yes | Milestone UUID or stable key. A key must identify exactly one milestone in the contract. |

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

### Signs off a close checklist task as reviewer

**Slug:** `RILLET_SIGN_OFF_A_CLOSE_CHECKLIST_TASK`

Records the connected user's review sign-off on a completed task. Requires an OAuth connection made by a named user; API keys are rejected with HTTP 403. The task must be completed first (HTTP 409 otherwise). Only a reviewer on the task who has not signed off yet may sign off (HTTP 403 otherwise); when the organization enforces an ordered reviewer queue, it must also be their turn. A fully signed-off task is rejected with HTTP 409. Returns the updated task.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `period` | string | Yes | The checklist's accounting month in ISO-8601 format (YYYY-MM). |
| `task_id` | string | Yes | UUID of the checklist task, from list-close-checklist-tasks. |

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

### Reports API or MCP bugs and missing features

**Slug:** `RILLET_SUBMIT_AGENT_FEEDBACK`

Found something surprising, confusing, or missing while using the API or MCP tools? Tell us, even if you found a workaround. Report unclear tool schemas, confusing results, missing filters, excessive pagination, or missing bulk operations. Send one observation per request. Describe what you were trying to do and what you expected; for bugs, also include what actually happened. For MCP feedback, set endpoint to /mcp and include the affected tool name in description, for example list_all_journal_entries. You do not need to know the tool's underlying REST path. For API feedback, set endpoint to the affected API path. A writable API key or OAuth token with write scope is required. The organization and submitting credential are recorded from authentication, so you do not need to provide them.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `kind` | string ("BUG" | "MISSING_FEATURE") | Yes | Use BUG for unexpected behavior or MISSING_FEATURE for a capability you need. |
| `title` | string | Yes | A short summary of the issue or request. |
| `endpoint` | string | Yes | The affected API path, starting with /. For MCP feedback, use /mcp and name the affected tool in description. For a missing API endpoint, use the closest related path. |
| `agentName` | string | No | Optional name of the agent or integration that encountered this issue. |
| `description` | string | Yes | What you were trying to do and why the issue matters. For MCP feedback, include the affected tool name. Include sanitized request details if useful. |
| `actualBehavior` | string | No | Required for BUG. Describe what happened, including a sanitized tool error or API status code if available. |
| `expectedBehavior` | string | Yes | What you expected instead, or the capability that would let you complete the task. |

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

### Updates a bank transaction

**Slug:** `RILLET_UPDATE_A_BANK_TRANSACTION`

Adjusts memo, categorization, or reconciliation metadata on an existing bank transaction without re-importing the entire feed batch. Supply the full body expected by the schema so optional fields you intend to keep are not unintentionally cleared. This PUT operation sends the complete documented request representation.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `fee` | object | No | A monetary amount that must be rounded to the currency's default decimal places (e.g., 2 decimal places for USD). |
| `date` | string | Yes | Rillet request field date. |
| `name` | string | Yes | Transaction description |
| `pending` | boolean | No | Whether the transaction is still pending |
| `excluded` | boolean | No | Whether the transaction is excluded from reconciliation |
| `merchant` | string | Yes | Merchant or counterparty name |
| `net_amount` | object | Yes | A monetary amount that must be rounded to the currency's default decimal places (e.g., 2 decimal places for USD). |
| `bank_transaction_id` | string | Yes | UUID of the bank transaction to be used in this operation. |
| `external_references` | array | No | Rillet request field external_references. |

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

### Updates a bill

**Slug:** `RILLET_UPDATE_A_BILL`

IMPORTANT: This is a full-replace operation (PUT semantics). All fields must be included in the request body — omitting any field will set it to null, wiping existing data. Always call retrieve-a-bill first to fetch the current record, then include ALL existing fields in your update request along with your changes. Bills with line allocations return 422 BillHasSubsidiaryAllocations, even for a no-op update. These allocations cannot be sent through this API; edit the bill in Rillet instead.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `items` | array | Yes | Rillet request field items. |
| `bill_id` | string | Yes | UUID of the bill to be used in this operation. |
| `due_date` | string | Yes | Rillet request field due_date. |
| `metadata` | object | No | Partial metadata update keyed by definition key. Omitting this property preserves all existing metadata. When supplied, omitted keys remain unchanged; null, empty, or whitespace-only values clear only the named key. |
| `bill_date` | string | Yes | Rillet request field bill_date. |
| `vendor_id` | string | Yes | Rillet request field vendor_id. |
| `impact_date` | string | No | Rillet request field impact_date. |
| `exchange_rate` | object | No | Rillet request field exchange_rate. |
| `expense_number` | string | Yes | Rillet request field expense_number. |
| `external_references` | array | No | Rillet request field external_references. |

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

### Updates account metadata

**Slug:** `RILLET_UPDATE_ACCOUNT_METADATA`

IMPORTANT: This is a full-replace operation (PUT semantics). Every active metadata key omitted from the request body is cleared. To set or clear individual keys without disturbing the rest, use patch-account-metadata instead. Null, empty, and whitespace-only values clear a single key. Archived keys may only be cleared, never changed. Every key must name a definition assigned to accounts: an unknown key, or one assigned only to another entity type, fails the request with a 400. Keys are never silently ignored. The write is atomic: if any key fails validation, nothing is written.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `metadata` | object | Yes | Values keyed by definition key. A full replacement: every active key omitted here is cleared, and null, empty, or whitespace-only values clear one key. Values are trimmed; TEXT values allow at most 256 characters and no line breaks. |
| `account_id` | string | Yes | UUID of the account to update metadata for. |

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

### Updates a close checklist task

**Slug:** `RILLET_UPDATE_A_CLOSE_CHECKLIST_TASK`

Partial update of one task's details and assignments. Fields omitted from the body are left unchanged. Completion and reviewer sign-offs cannot be set or cleared here; use complete-a-close-checklist-task and sign-off-a-close-checklist-task. A reviewer who has already signed off keeps their place in the queue: a reviewer_ids list that drops or moves them is rejected with HTTP 409. Every preparer and reviewer must be an active member of the organization (see list-members). Returns the updated task.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | No | Rillet request field name. |
| `notes` | string | No | Replaces the task's notes. Send an empty string to clear them. Read the task first to append. |
| `period` | string | Yes | The checklist's accounting month in ISO-8601 format (YYYY-MM). |
| `task_id` | string | Yes | UUID of the checklist task, from list-close-checklist-tasks. |
| `due_date` | string | No | Sets a fixed due date, replacing any business-day due date rule on the task. |
| `preparer_id` | string | No | User id of the new preparer. Send null to unassign the preparer. |
| `reviewer_ids` | array | No | Replaces the ordered reviewer queue; list position sets the order. Reviewers who already signed off must stay in their position, so an empty list is only accepted while nobody has signed off. |
| `accounting_area` | string | No | Rillet request field accounting_area. |

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

### Updates a credit memo

**Slug:** `RILLET_UPDATE_A_CREDIT_MEMO`

IMPORTANT: This is a full-replace operation (PUT semantics). All fields must be included in the request body — omitting any field will set it to null, wiping existing data. Always call retrieve-a-credit-memo first to fetch the current record, then include ALL existing fields in your update request along with your changes.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `items` | array | Yes | Rillet request field items. |
| `credit_memo_id` | string | Yes | UUID of the credit memo to be used in this operation. |
| `credit_memo_date` | string | Yes | Rillet request field credit_memo_date. |
| `external_references` | array | No | Rillet request field external_references. |

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

### Updates a customer

**Slug:** `RILLET_UPDATE_A_CUSTOMER`

Updates a single customer record in the catalog. IMPORTANT: This is a full-replace operation (PUT semantics). All fields must be included in the request body — omitting any field will set it to null, wiping existing data. Always call retrieve-a-customer first to fetch the current record, then include ALL existing fields in your update request along with your changes. Exceptions that keep stored data when the field is omitted: - metadata: omit it to keep all existing metadata, or send only the keys you want to set or clear. - addresses: omit address and billing_addresses to keep the stored billing addresses, and likewise shipping_address and shipping_addresses. This is for backward compatibility: integrations built before customers could have several addresses won't wipe the ones they don't send.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | Yes | Rillet request field name. |
| `emails` | array | No | All of the customer's emails. On update, send the full list: emails with an id are kept or edited, emails without an id are added, and emails left out are removed (omitting emails, or sending an empty list, removes them all). A removed email is also removed from every contract email_selection; to change an email and keep it selected, send its id. Rejected: an id on create, an id that doesn't belong to this customer, the same id twice, or the same address and type twice (addresses are compared ignoring case and surrounding spaces). |
| `fields` | array | No | Rillet request field fields. |
| `address` | object | No | Deprecated: use billing_addresses. In responses, the first address in billing_addresses. In requests without billing_addresses, it creates or edits that first billing address in place; the customer's other billing addresses are left untouched. |
| `tax_ids` | array | No | The customer's tax IDs. Omit on create for no tax IDs. On update, omit to keep the current tax IDs, send an empty list to clear them, or send a list to replace them all. Adding or changing tax IDs requires the customer to have an address, and they are validated with the organization's tax provider when one is connected. |
| `metadata` | object | No | Partial metadata update keyed by definition key. Omitting this property preserves all existing metadata. When supplied, omitted keys remain unchanged; null, empty, or whitespace-only values clear only the named key. |
| `customer_id` | string | Yes | UUID of the customer to be used in this operation. |
| `payment_terms` | integer | No | Rillet request field payment_terms. |
| `name_on_invoice` | string | No | Rillet request field name_on_invoice. |
| `shipping_address` | object | No | Deprecated: use shipping_addresses. In responses, the first address in shipping_addresses. In requests without shipping_addresses, it creates or edits that first shipping address in place; the customer's other shipping addresses are left untouched. |
| `billing_addresses` | array | No | All of the customer's billing addresses, returned in a stable order; the first is the default for new contracts and invoices. On update the list is authoritative: addresses sent with an id are updated, addresses without an id are added, and stored addresses left out are removed. Removing an address that is used by a contract or an invoice that can still be edited is rejected with a 400 naming those documents. Omit to leave billing addresses unchanged; send an empty list to remove them all. Cannot be combined with address. |
| `shipping_addresses` | array | No | All of the customer's shipping addresses. Same rules as billing_addresses. Cannot be combined with shipping_address. |
| `external_references` | array | No | Rillet request field external_references. |
| `allow_online_payments` | boolean | No | Allows this customer to pay invoices online via Stripe, and must be true before auto-payment can be set up for them. Omit on create to leave online payments off; omit on update to keep the customer's current setting. Enabling it requires Stripe to be configured for at least one subsidiary. |
| `send_payment_reminders` | boolean | No | When set to true, an email will be sent to customers periodically if they have not paid an invoice. |
| `send_invoices_automatically` | boolean | No | When set to true, invoices for this customer will be automatically sent via email on the invoice date. |

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

### Updates a draft contract

**Slug:** `RILLET_UPDATE_A_DRAFT_CONTRACT`

Replaces the draft contract identified by `draft_contract_id` with the supplied payload. The body shape matches `POST /draft-contracts` — items and external_references on the existing record are fully replaced. Returns 404 if the id is not a draft contract in the organization. Exceptions that keep stored data when the field is omitted: - shipping_customer_id, billing_address_id, shipping_address_id: omit them to keep the draft's current ship-to customer and addresses, or send null to clear them. - email_selection: omit it to keep the draft's current recipients. This is for backward compatibility: integrations built before these fields existed won't clear them on every update.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | Yes | Rillet request field name. |
| `items` | array | Yes | Contract line items. At least one item is required. |
| `scope` | string ("FULL" | "REVENUE_RECOGNITION_ONLY") | Yes | The "FULL" scope includes revenue recognition and invoicing handled in Rillet. With the "REVENUE_RECOGNITION_ONLY" scope, invoicing is handled outside Rillet. |
| `amount` | object | Yes | Rillet request field amount. |
| `end_date` | string | No | Rillet request field end_date. |
| `close_date` | string | Yes | Rillet request field close_date. |
| `start_date` | string | No | Rillet request field start_date. |
| `customer_id` | string | Yes | Must reference a customer that already exists in Rillet. Use `POST /customers` first if needed. |
| `subsidiary_id` | string | Yes | Rillet request field subsidiary_id. |
| `email_selection` | object | No | Who receives the invoices of the contract created from this draft. If omitted, none is specified and the reviewer starts from all of the billing customer's emails. On update, omit to keep the current selection, or send ALL_CUSTOMER_EMAILS to follow the customer's emails. A draft keeps one entry per email, the first one sent. With SELECTED_EMAILS and no MAIN_SENDER recipient left, including an empty recipients list, no selection is stored, the same as the review page. A stored recipient that is not one of the billing customer's emails is rejected. |
| `draft_contract_id` | string | Yes | UUID of the draft contract to be used in this operation. |
| `billing_address_id` | string | No | ID of one of the billing customer's billing_addresses. If omitted, the first address in the customer's billing_addresses is used, or none when the customer has no billing address. Send null for no billing address. On update, omit to keep the current billing address, or send null to remove it. Rejected when the address does not belong to the billing customer or is not a billing address. |
| `external_references` | array | No | Cross-system identifiers for this draft contract. Each reference's `type` slug must already exist in the org's external reference types (configurable in Rillet Settings). **Required for deduplication.** Re-posting with any matching `(type, id)` pair replaces the prior draft record. Draft contracts created without external_references are not deduplicated. |
| `shipping_address_id` | string | No | ID of one of the ship-to customer's shipping_addresses. If omitted, the first address in the ship-to customer's shipping_addresses is used, or none when it has no shipping address. Send null for no shipping address. On update, omit to keep the current shipping address, or send null to remove it; a new shipping_customer_id sent without this field takes that customer's first shipping address. Rejected when the address does not belong to the ship-to customer or is not a shipping address. |
| `shipping_customer_id` | string | No | The customer to ship to. Omit, send null, or send customer_id to ship to the billing customer. On update, omit to keep the current ship-to customer, or send null to remove it and its shipping address; null with a shipping_address_id ships to the billing customer. |
| `purchase_order_number` | string | No | Optional purchase order number, carried onto the contract created from this draft and from there onto every invoice it generates. |

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

### Updates a journal entry

**Slug:** `RILLET_UPDATE_A_JOURNAL_ENTRY`

Replaces the lines and header metadata on an existing manual journal entry, subject to the same balancing rules as creation. Always include the complete line list retrieved beforehand because partial payloads can clear fields the API treats as optional.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `date` | string | Yes | Rillet request field date. |
| `name` | string | Yes | Rillet request field name. |
| `items` | array | Yes | Rillet request field items. |
| `currency` | string | Yes | Currency code following ISO-4217 |
| `attachmentUrl` | string | No | Rillet request field attachmentUrl. |
| `exchange_rate` | object | No | Rillet request field exchange_rate. |
| `reversal_date` | string | No | Rillet request field reversal_date. |
| `journal_entry_id` | string | Yes | UUID of the journal entry to be used in this operation. |

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

### Records or corrects a milestone completion

**Slug:** `RILLET_UPDATE_A_MILESTONE_COMPLETION`

Creates or fully replaces the current completion on a milestone in a FULL contract. The reference may be the milestone UUID or its case-insensitive key. The completion date must fall within the owning line term. Omitted or null memo and external_references values clear those fields. An identical request is a no-op. The milestone change and required revenue journal regeneration commit atomically.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `memo` | string | No | Optional completion note. Omit or send null to clear the saved note. |
| `contract_id` | string | Yes | UUID of the contract that owns the milestone. |
| `milestone_ref` | string | Yes | Milestone UUID or stable key. A key must identify exactly one milestone in the contract. |
| `completed_date` | string | Yes | Actual completion date. It must fall within the owning contract line term. |
| `external_references` | string | No | Complete replacement of completion references. Omit, send null, or send an empty array to clear them. Every type must already be configured for the organization. |

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

### Updates an approval workflow

**Slug:** `RILLET_UPDATE_AN_APPROVAL_WORKFLOW`

Replaces an approval workflow's definition. The whole definition is required — a partial body is rejected, not merged, and fields this contract does not define are ignored. Send `type` and `active` back as read; changing either here is rejected, and combinations the Rillet app cannot configure are rejected too (see the individual fields). Entries already awaiting approval are unaffected, because an entry copies the layers it needs when approval starts; only entries registered after this call use the new definition. Deadlines and layer escalation rules are not part of this contract and are cleared, exactly as saving a workflow in Rillet clears them.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | Yes | Rillet request field name. |
| `type` | string ("JOURNAL_ENTRY" | "CONTRACT" | "INVOICE" | "BILL" | "CHARGE" | "CHARGE_REVERSAL" | "REIMBURSEMENT") | Yes | The kind of record a workflow applies to. Contract and Invoice are retained for backward-compatible reads but cannot be updated through this endpoint. |
| `active` | boolean | Yes | Required, and must equal the workflow's current value — activation is a dedicated operation in Rillet, so a definition update never changes it. Read the workflow first if you are unsure. |
| `methods` | array | Yes | Only `["IN_APP"]` is accepted today: `EMAIL` and `SLACK` deliver nothing, so they are rejected rather than stored. |
| `approval_layers` | array | Yes | Rillet request field approval_layers. |
| `condition_group` | object | Yes | A set of conditions combined by one logical operator, together with any nested groups. A group must carry at least one condition or one nested group; a workflow may carry at most five conditions across the whole tree, and nesting at most three levels deep. `groups` must be empty for now: nested combinations are not evaluated yet and are rejected, so a workflow currently has exactly one group. |
| `submission_sources` | array | No | Optional source scope for Bill, Charge, Charge Reversal, and Reimbursement workflows. Omit this field or send null to preserve the stored scope. An empty list means manual entry in Rillet only; a non-empty list applies exactly to the listed sources. To select Connected integrations, include `PROVIDER_IMPORT`, `SCHEDULED_SYNC`, and `REIMPORT`. |
| `approval_workflow_id` | string | Yes | UUID of the approval workflow to be used in this operation. |

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

### Updates an invoice

**Slug:** `RILLET_UPDATE_AN_INVOICE`

IMPORTANT: This is a full-replace operation (PUT semantics). All fields must be included in the request body — omitting any field will set it to null, wiping existing data. Always call retrieve-an-invoice first to fetch the current record, then include ALL existing fields in your update request along with your changes. Exceptions that keep stored data when the field is omitted: - metadata: omit it to keep all existing metadata, or send only the keys you want to set or clear. - shipping_customer_id, billing_address_id, shipping_address_id: omit them to keep the invoice's current ship-to customer and addresses, or send null to clear them. This is for backward compatibility: integrations built before these fields existed won't clear them on every update. - email_selection: omit it to keep the invoice's current recipients.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `body` | string | Yes | JSON request body matching the Rillet v4 operation schema. |
| `invoice_id` | string | Yes | UUID of the invoice to be used in this operation. |

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

### Updates an invoice payment

**Slug:** `RILLET_UPDATE_AN_INVOICE_PAYMENT`

Replaces the amount, date, and cash account on an existing uncleared invoice payment. Only uncleared payments can be updated; cleared or reconciled payments are rejected. This is a full-replace operation (PUT semantics) — include all fields in the request body.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `date` | string | Yes | Rillet request field date. |
| `amount` | object | Yes | A monetary amount that must be rounded to the currency's default decimal places (e.g., 2 decimal places for USD). |
| `invoice_id` | string | Yes | UUID of the invoice to be used in this operation. |
| `payment_id` | string | Yes | UUID of the payment to be used in this operation. |
| `account_code` | string | Yes | The account code found in the Chart of Accounts |

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

### Updates a product

**Slug:** `RILLET_UPDATE_A_PRODUCT`

Updates a single product or bundle definition in the catalog. IMPORTANT: This is a full-replace operation (PUT semantics). Include every field expected by ProductRequest; omitted fields may be cleared. Call retrieve-a-product first, merge your changes, then submit the full body.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | Yes | Rillet request field name. |
| `type` | string ("PRODUCT" | "BUNDLE") | No | Defaults to PRODUCT. Can't be changed after the product is created. |
| `price` | string | Yes | Rillet request field price. |
| `bundle` | object | No | Required when type is BUNDLE. Not allowed for other types. |
| `fields` | array | No | Custom field values. On update, omitting this property or sending an empty array clears all fields. Must be omitted or empty for bundles. |
| `status` | string ("ACTIVE" | "INACTIVE") | No | Rillet request field status. |
| `product_id` | string | Yes | UUID of the product to update. |
| `description` | string | Yes | Rillet request field description. |
| `account_code` | string | No | The code of the account this product's revenue posts to. Required for standalone products. Not allowed for bundles. |
| `include_in_ssp` | boolean | No | Whether this product participates in SSP revenue allocation. Requires stored product SSP to be enabled. Not allowed for bundles. Omission or null preserves the flag on update; on create it defaults to true. Usage-priced products remain excluded from SSP allocation. |
| `revenue_pattern` | string ("DAILY" | "EVEN_PERIOD" | "PROGRESS") | No | How revenue from this product is recognized. Required for standalone products. Not allowed for bundles. |
| `include_in_arr_mrr` | boolean | Yes | Rillet request field include_in_arr_mrr. |
| `external_references` | array | No | References to this product in external systems. Must be omitted or empty for bundles. |
| `progress_plan_template` | string | No | Required when creating a PROGRESS product; measure must be MILESTONES and milestone revenue recognition must be enabled for the organization. Only accepted with revenue_pattern PROGRESS and a ONE_TIME price. On update, omission or null preserves the existing template; an object replaces the entire template. Milestone identifiers are retained for matching keys ignoring case, and generated for new keys. Changing revenue_pattern away from PROGRESS clears the template. |

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

### Updates a vendor

**Slug:** `RILLET_UPDATE_A_VENDOR`

IMPORTANT: This is a full-replace operation (PUT semantics). All fields must be included in the request body — omitting any field will set it to null, wiping existing data. Always call retrieve-a-vendor first to fetch the current record, then include ALL existing fields in your update request along with your changes.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | Yes | Rillet request field name. |
| `email` | string | No | Rillet request field email. |
| `fields` | array | No | Rillet request field fields. |
| `tax_id` | string | No | Rillet request field tax_id. |
| `address` | object | No | Rillet request field address. |
| `vendor_id` | string | Yes | UUID of the vendor to be used in this operation. |
| `account_code` | string | No | The account code found in the Chart of Accounts |
| `payment_terms` | integer | No | Rillet request field payment_terms. |
| `external_references` | array | No | Rillet request field external_references. |
| `ten_ninety_nine_eligible` | boolean | No | Rillet request field ten_ninety_nine_eligible. |

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

### Updates a vendor credit

**Slug:** `RILLET_UPDATE_A_VENDOR_CREDIT`

IMPORTANT: This is a full-replace operation (PUT semantics). All fields must be included in the request body — omitting any field will set it to null, wiping existing data. Always call retrieve-a-vendor-credit first to fetch the current record, then include ALL existing fields in your update request along with your changes.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `body` | object | No | JSON request body matching the Rillet v4 operation schema. |
| `vendor_credit_id` | string | Yes | UUID of the vendor credit to be used in this operation. |

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

### Updates bill metadata

**Slug:** `RILLET_UPDATE_BILL_METADATA`

IMPORTANT: This is a full-replace operation (PUT semantics). Every active metadata key omitted from the request body is cleared. To set or clear individual keys without disturbing the rest, use patch-bill-metadata instead. Null, empty, and whitespace-only values clear a single key. Archived keys may only be cleared, never changed. Every key must name a definition assigned to bills: an unknown key, or one assigned only to another entity type, fails the request with a 400. Keys are never silently ignored. The write is atomic: if any key fails validation, nothing is written. Writes are rejected with a 400 while the bill has a pending approval request.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `bill_id` | string | Yes | UUID of the bill to update metadata for. |
| `metadata` | object | Yes | Values keyed by definition key. A full replacement: every active key omitted here is cleared, and null, empty, or whitespace-only values clear one key. Values are trimmed; TEXT values allow at most 256 characters and no line breaks. |

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

### Updates contract metadata

**Slug:** `RILLET_UPDATE_CONTRACT_METADATA`

IMPORTANT: This is a full-replace operation (PUT semantics). Every active metadata key omitted from the request body is cleared. To set or clear individual keys without disturbing the rest, use patch-contract-metadata instead. Null, empty, and whitespace-only values clear a single key. Archived keys may only be cleared, never changed. Every key must name a definition assigned to contracts: an unknown key, or one assigned only to another entity type, fails the request with a 400. Keys are never silently ignored. The write is atomic: if any key fails validation, nothing is written.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `metadata` | object | Yes | Values keyed by definition key. A full replacement: every active key omitted here is cleared, and null, empty, or whitespace-only values clear one key. Values are trimmed; TEXT values allow at most 256 characters and no line breaks. |
| `contract_id` | string | Yes | UUID of the contract to update metadata for. |

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

### Updates customer metadata

**Slug:** `RILLET_UPDATE_CUSTOMER_METADATA`

Full replacement: every active key omitted from the request is cleared. To set or clear individual keys without disturbing the rest, use patch-customer-metadata instead. Null, empty, and whitespace-only values clear one key. Unknown keys, archived keys, and definitions not assigned to customers fail the entire request with a 400. Metadata-only changes are recorded in the audit log but do not trigger customer.updated webhooks or customer integration syncs.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `metadata` | object | Yes | Values keyed by definition key. A full replacement: every active key omitted here is cleared, and null, empty, or whitespace-only values clear one key. Values are trimmed; TEXT values allow at most 256 characters and no line breaks. |
| `customer_id` | string | Yes | UUID of the customer to update metadata for. |

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

### Updates a field

**Slug:** `RILLET_UPDATE_FIELD`

Changes labels, validation rules, or visibility metadata on an existing custom field without recreating historical values. Coordinate with stakeholders before renaming because downstream integrations often key off the human-readable label. This PUT operation sends the complete documented request representation.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | UUID of the id to be used in this operation. |
| `name` | string | Yes | Rillet request field name. |
| `settings` | object | No | The settings of the field. EXPENSES: Applies to Bills, Credit Card Transactions and Manual Entries. REVENUE: Applies to Customers, Contracts, Invoices and Credit Memos. |

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

### Updates a field value

**Slug:** `RILLET_UPDATE_FIELD_VALUE`

Renames or reorders a pick-list entry while preserving its underlying id so historical records stay linked to the same option. Prefer this over delete-and-recreate when auditing requires stable references across reporting periods. This PUT operation sends the complete documented request representation.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | Yes | Rillet request field name. |
| `fieldId` | string | Yes | UUID of the field to be used in this operation. |
| `fieldValueId` | string | Yes | UUID of the fieldValue to be used in this operation. |

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

### Updates invoice metadata

**Slug:** `RILLET_UPDATE_INVOICE_METADATA`

IMPORTANT: This is a full-replace operation (PUT semantics). Every active metadata key omitted from the request body is cleared. To set or clear individual keys without disturbing the rest, use patch-invoice-metadata instead. Null, empty, and whitespace-only values clear a single key. Archived keys may only be cleared, never changed. Every key must name a definition assigned to invoices: an unknown key, or one assigned only to another entity type, fails the request with a 400. Keys are never silently ignored. The write is atomic: if any key fails validation, nothing is written.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `metadata` | object | Yes | Values keyed by definition key. A full replacement: every active key omitted here is cleared, and null, empty, or whitespace-only values clear one key. Values are trimmed; TEXT values allow at most 256 characters and no line breaks. |
| `invoice_id` | string | Yes | UUID of the invoice to update metadata for. |

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

### Updates invoice sent status

**Slug:** `RILLET_UPDATE_INVOICE_SENT_STATUS`

Marks whether an invoice has been delivered to the customer, which downstream workflows use for collections cadence and compliance reporting. Set the sent flag true after your billing system or email provider confirms delivery, or false while the document is still internal-only. This PUT operation sends the complete documented request representation.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `sent` | boolean | Yes | Rillet request field sent. |
| `invoice_id` | string | Yes | UUID of the invoice to be used in this operation. |

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

### Updates credit memo taxes

**Slug:** `RILLET_UPDATE_TAXES_FOR_A_CREDIT_MEMO`

Refreshes tax quotes on an existing credit memo using the same structured payload as invoice tax updates, stamped with taxesCalculatedAt for auditability. Use after line items change or when your tax engine recomputes jurisdiction-specific amounts before issuing the credit to the customer.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `items` | array | Yes | Rillet request field items. |
| `credit_memo_id` | string | Yes | UUID of the credit memo to be used in this operation. |
| `taxes_calculated_at` | string | Yes | ISO 8601 timestamp in UTC timezone (must end with 'Z') |

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

### Updates invoice taxes

**Slug:** `RILLET_UPDATE_TAXES_FOR_AN_INVOICE`

Recalculates or replaces tax lines on an existing invoice using the supplied tax payload. Use after changing taxable addresses or when integrating an external tax engine result. Returns `400` when the supplied taxes would turn an invoice total that is zero or positive into a negative total. Invoices whose total is already negative can still be updated.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `items` | array | Yes | Rillet request field items. |
| `invoice_id` | string | Yes | UUID of the invoice whose taxes should be recomputed. |
| `taxes_calculated_at` | string | Yes | ISO 8601 timestamp in UTC timezone (must end with 'Z') |

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

### Uploads a document to a charge

**Slug:** `RILLET_UPLOAD_CHARGE_DOCUMENT`

Attaches a receipt (PDF, TXT, JPG/JPEG, PNG, GIF, XLSX/XLS, DOCX/DOC, CSV, RTF, TIFF/TIF, BMP, Pages, Numbers, PPTX, or PPT) to an existing charge using multipart form data with a single file part. PDF, JPEG, and PNG keep content-signature validation and do not require a matching filename extension. Every other format requires an allowed filename extension and either a matching content type or application/octet-stream. Files detected as HTML are rejected regardless of their filename or declared content type.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `file` | object | Yes | Rillet request field file. |
| `charge_id` | string | Yes | UUID of the charge to be used in this operation. |

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

### Uploads a document to a contract

**Slug:** `RILLET_UPLOAD_CONTRACT_DOCUMENT`

Attaches one PDF, JPEG, PNG, or XLSX file to an existing contract. Existing attachments are preserved, including files uploaded through the Rillet application or imported from Salesforce. Repeating an upload creates another attachment. A file may be at most 9 MiB. The upload is refused when the contract already has 20 attachments, or when it would take the contract's attachments past 100 MiB in total; files uploaded through the Rillet application or imported from Salesforce count toward both limits. A file name may have at most 255 characters and must not contain a path.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `file` | object | Yes | Rillet request field file. |
| `contract_id` | string | Yes | UUID of the contract to be used in this operation. |

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

### Uploads a document

**Slug:** `RILLET_UPLOAD_DOCUMENT`

Attaches a document (PDF, TXT, JPG/JPEG, PNG, GIF, XLSX/XLS, DOCX/DOC, CSV, RTF, TIFF/TIF, BMP, Pages, Numbers, PPTX, or PPT) such as an invoice, contract, or receipt to an existing bill using multipart form data with a single file part. Call after the bill exists so approvers and auditors can open the evidence directly from the payable record. PDF, JPEG, and PNG keep content-signature validation and do not require a matching filename extension. Every other format requires an allowed filename extension and either a matching content type or application/octet-stream. Files detected as HTML are rejected regardless of their filename or declared content type.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `file` | object | Yes | Rillet request field file. |
| `bill_id` | string | Yes | UUID of the bill to be used in this operation. |

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

### Uploads a document to a draft contract

**Slug:** `RILLET_UPLOAD_DRAFT_CONTRACT_DOCUMENT`

Attaches one PDF, JPEG, PNG, or XLSX file to an existing draft contract. Existing attachments are preserved, including files uploaded through the Rillet application or imported from Salesforce. Repeating an upload creates another attachment. A file may be at most 9 MiB. The upload is refused when the draft contract already has 20 attachments, or when it would take the draft contract's attachments past 100 MiB in total; files uploaded through the Rillet application or imported from Salesforce count toward both limits. A file name may have at most 255 characters and must not contain a path. When the draft contract is confirmed, its attachments move to the contract. Re-creating the draft contract with POST /draft-contracts and the same external reference discards its attachments; use PUT to change a draft contract.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `file` | object | Yes | Rillet request field file. |
| `draft_contract_id` | string | Yes | UUID of the draft contract to be used in this operation. |

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

### Uploads a document to an invoice

**Slug:** `RILLET_UPLOAD_INVOICE_DOCUMENT`

Attaches one PDF, JPEG, PNG, or XLSX file to an existing invoice. Existing attachments are preserved, including files uploaded through the Rillet application. Repeating an upload creates another attachment. An invoice can have at most 10 attachments totalling at most 7 MiB, including files uploaded through the Rillet application, so the invoice email stays within delivery limits. A file name may have at most 255 characters and must not contain a path. Attachments are included when Rillet emails the invoice. Attach before the invoice is sent: adding a file to an invoice that was already sent does not send it again.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `file` | object | Yes | Rillet request field file. |
| `invoice_id` | string | Yes | UUID of the invoice to be used in this operation. |

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

### Uploads a document to a manual journal entry

**Slug:** `RILLET_UPLOAD_JOURNAL_ENTRY_DOCUMENT`

Appends one PDF, JPEG, PNG, or XLSX of at most 20 MiB to an existing manual journal entry. Create the journal entry first; for asynchronous imports, wait until the entry is available. Existing attachments are preserved. Repeating an upload creates another attachment. A journal entry can have at most 10 attachments, including files uploaded through the Rillet application. Attachments may be added to approved entries and entries in closed periods without changing accounting data or approval status. System-generated and non-posting entries are not supported.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `file` | object | Yes | Rillet request field file. |
| `journal_entry_id` | string | Yes | UUID of an existing manual journal entry. |

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

### Uploads a document to a reimbursement

**Slug:** `RILLET_UPLOAD_REIMBURSEMENT_DOCUMENT`

Attaches a receipt (PDF, TXT, JPG/JPEG, PNG, GIF, XLSX/XLS, DOCX/DOC, CSV, RTF, TIFF/TIF, BMP, Pages, Numbers, PPTX, or PPT) to an existing reimbursement using multipart form data with a single file part. PDF, JPEG, and PNG keep content-signature validation and do not require a matching filename extension. Every other format requires an allowed filename extension and either a matching content type or application/octet-stream. Files detected as HTML are rejected regardless of their filename or declared content type.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `file` | object | Yes | Rillet request field file. |
| `reimbursement_id` | string | Yes | UUID of the reimbursement to be used in this operation. |

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

### Upserts a usage record

**Slug:** `RILLET_UPSERT_A_USAGE_RECORD`

Creates usage records on dates where previously no usage was recorded. Overwrites usage records on dates where usage was previously recorded already.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `usage` | array | Yes | Rillet request field usage. |
| `contract_item_id` | string | Yes | UUID of the contract line item that carries the usage-priced 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 |
