---
title: Rillet API Integration on Truto
slug: rillet
category: Accounting
canonical: "https://truto.one/integrations/detail/rillet/"
---

# Rillet API Integration on Truto



**Category:** Accounting  
**Status:** Beta

## MCP-ready AI tools

Truto exposes 121 tools for Rillet that AI agents can call directly.

- **list_all_rillet_accounts** — List all accounts in the Rillet chart of accounts for the organization tied to the API credentials. Returns: id, code, name, type, subtype, status, intercompany, updated_at. Account ids are the stable identifiers used when creating journal entries, bills, and other postings.
- **create_a_rillet_account** — Create an account in the Rillet chart of accounts. Returns the created account including its id, code, name, type, subtype, status, intercompany flag, and updated_at; currency is inherited from the organization and status is set to ACTIVE. Requires the CreateAccountRequest JSON body (see the create-an-account reference for its required fields).
- **list_all_rillet_subsidiaries** — List all subsidiaries in Rillet. Returns: id, currency, timezone, trade_name, type. Use the returned subsidiary ids on endpoints that accept subsidiary_id, such as contracts, invoices, and reports.
- **get_single_rillet_subsidiary_by_id** — Get a single Rillet subsidiary by id. Returns: id, currency, timezone, trade_name, type. Required: id. Call list-all-subsidiaries first if you don't yet know which subsidiary id to use.
- **list_all_rillet_organizations** — Retrieve the Rillet organization profile tied to the API credentials in use (the current org). Use it to confirm the organization id, display name, and other org-level settings in integrations. Returns: id, currency, timezone, trade_name, created_at, updated_at.
- **list_all_rillet_members** — List organization members in rillet. Returns each member's identity: id, user_id, email, first_name, last_name, and status. Does not include role assignments — use list-role-assignments to see which member holds which role.
- **list_all_rillet_roles** — List every role defined in the organization, each with the flat set of permission keys it grants. Returns: id, name, description, is_system_role, permissions. Treat each permission key as an opaque, colon-delimited identifier — do not rely on its internal structure.
- **list_all_rillet_role_assignments** — List role assignments in Rillet. Returns: id, member_id, role_id, scope. Assignments reference the assigned organization member, role, and assignment scope by id only; resolve names via the roles and members endpoints, as this endpoint is not the source of truth for role or subsidiary names.
- **list_all_rillet_products** — List Rillet products — sellable goods and services for accounts receivable (contracts, invoices). Returns each product's id and its catalog attributes; supports optional status and currency filters.
- **create_a_rillet_product** — Create a product (good or service) in Rillet's catalog for use on contracts and invoices. Returns the created product's id and its catalog attributes, including pricing and revenue behavior. Required: a ProductRequest request body.
- **get_single_rillet_product_by_id** — Get a single Rillet product by id. Returns the product's id and its catalog attributes, including the pricing configuration used on contracts and invoices. Required: id (UUID of the product).
- **update_a_rillet_product_by_id** — Update a product definition in Rillet's catalog by id. Returns the updated product's id and its catalog attributes. Required: id plus a full ProductRequest body — this is a full-replace operation (PUT semantics): retrieve the product first and submit every field, since omitted fields may be cleared.
- **delete_a_rillet_product_by_id** — Delete a Rillet product by id. Returns an empty 204 response on success. Ensure no in-flight contracts or invoices still require the product before deleting. Required: id.
- **list_all_rillet_customers** — List Rillet accounts-receivable customers with pagination and optional name or external-reference filters. Returns: id, updated_at, name, name_on_invoice, address, shipping_address, emails, external_references, payment_terms, send_invoices_automatically, send_payment_reminders, allow_online_payments, fields, created_at. Sorted descending by created by default.
- **create_a_rillet_customer** — Create a customer in the Rillet Accounts Receivable catalog. Returns: id, updated_at, name, name_on_invoice, address, shipping_address, emails, external_references, payment_terms, send_invoices_automatically, send_payment_reminders, allow_online_payments, fields, created_at. Required: name. When address is provided, line1, city, state (2-letter code), zip_code, and country are all required.
- **get_single_rillet_customer_by_id** — Get a single Rillet customer by id, including billing profile details needed for updates. Returns: id, updated_at, name, name_on_invoice, address, shipping_address, emails, external_references, payment_terms, send_invoices_automatically, send_payment_reminders, allow_online_payments, fields, created_at. Required: id.
- **update_a_rillet_customer_by_id** — Update a Rillet customer by id in the Accounts Receivable catalog. Full-replace operation: omitting any body field sets it to null, so retrieve the customer first and include all existing fields with your changes. Returns: id, updated_at, name, name_on_invoice, address, shipping_address, emails, external_references, payment_terms, send_invoices_automatically, send_payment_reminders,…
- **delete_a_rillet_customer_by_id** — Permanently delete a Rillet customer by id. Verify no active contracts or open invoices reference the customer first. Returns an empty 204 response on success. Required: id.
- **get_single_rillet_settings_payment_by_id** — Get the payment method configured for auto-payment for a customer in Rillet. Returns the customer's configured auto-payment payment method object; the available docs do not enumerate its fields. Required: id (the customer's UUID).
- **create_a_rillet_settings_payment** — Set up auto-payment for a customer in Rillet. Kicks off the setup flow and returns a URL the customer must visit to complete setup (or to update the payment method if one is already configured). Returns the setup result object; the available docs do not enumerate its fields. Required: customer_id.
- **create_a_rillet_contracts_preview_invoice_schedule** — Preview the invoice schedule a contract would produce in Rillet, without creating the contract or persisting anything. Requires a JSON request body describing the contract. Returns the computed invoice schedule object.
- **list_all_rillet_contracts** — List all contracts in Rillet with pagination and filters for subsidiary, customer, status, and start/end date ranges. Useful for discovering contract ids, checking lifecycle state, or driving reporting extracts. Returns each contract with id, status, created_at, and updated_at.
- **create_a_rillet_contract** — Create a contract in Rillet, choosing the FULL scope when Rillet generates and sends the invoices (invoice numbers assigned automatically), or REVENUE_RECOGNITION_ONLY when contracts and invoices are issued from an external system and only recorded in Rillet for accounting. Returns the created contract including id, status, items, and schedules. Requires a JSON contract creation payload.
- **get_single_rillet_contract_by_id** — Get a single contract in Rillet by id. Returns the expanded contract including id, status, items, and schedules — always retrieve before issuing a full update so you preserve fields you do not intend to clear. Required: id.
- **delete_a_rillet_contract_by_id** — Delete a contract in Rillet by id. Permanently removes the contract — confirm downstream invoices, revenue schedules, and integrations no longer depend on it first. Returns an empty 204 response on success. Required: id.
- **create_a_rillet_contract_amendment** — Amend a contract in Rillet to add items, retire items, or change pricing or invoicing after go-live, preserving historical billing context. Returns the amended contract as the expanded contract object defined by Rillet's ExpandedContract schema. Use the preview amendment endpoint to dry-run the financial impact before committing. Required: contract_id and an amendment request body.
- **create_a_rillet_amendments_preview** — Preview how a Rillet contract will look after an amendment, without applying it. Returns the expanded contract including its id, items, schedules, and metadata. Required: contract_id (UUID of the contract) plus an amendment request body (see body schema). The preview has no effect on the actual contract.
- **rillet_contract_ends_bulk_update** — End an open-ended contract in Rillet by setting an explicit end date on a contract that previously had no close date; downstream invoicing and revenue recognition honor the new boundary. Returns an empty 204 response on success. Required: contract_id.
- **get_single_rillet_draft_contract_by_id** — Get a draft contract by id, including its line items and any attached external references. Returns: id, external_references, subsidiary_id, customer_id, name, amount, close_date, start_date, end_date, scope, items, line_items, created_at, updated_at. Required: id.
- **update_a_rillet_draft_contract_by_id** — Update a draft contract by id; items and external_references on the record are fully replaced, and a 404 is returned if the id is not a draft contract in the organization. Returns the updated draft contract including id, external_references, line_items, and updated_at. Required: id.
- **delete_a_rillet_draft_contract_by_id** — Delete a draft contract by id, permanently removing it along with its line items and external references — use this to programmatically reject a draft instead of using the Rillet UI. Returns an empty 204 response on success. Required: id.
- **list_all_rillet_draft_contracts** — List draft contracts staged in Rillet's Draft queue for a human to approve or reject before they become active contracts, with cursor pagination. Returns: id, external_references, subsidiary_id, customer_id, name, amount, close_date, start_date, end_date, scope, items, line_items, created_at, updated_at.
- **create_a_rillet_draft_contract** — Create a draft contract staged in Rillet's Draft state for a human to approve or reject; supply an external_references entry with a stable (type, id) pair to deduplicate retries. Returns the created draft contract including id, external_references, line_items, and created_at. Promotion to an active contract happens only via the Rillet UI.
- **get_single_rillet_contract_item_usage_by_id** — List all usage records for a contract item in Rillet, newest first. Returns the UsageRecords payload plus a pagination object with next_cursor for keyset paging. Required: id (the contract item's UUID).
- **rillet_contract_item_usages_bulk_update** — Upsert usage records for a contract item in Rillet: dates with no recorded usage get a new row, dates already recorded are overwritten. Returns the updated UsageRecords payload. Required: contract_item_id and a usage records body.
- **rillet_contract_item_usages_bulk_delete** — Delete a contract item's usage record in Rillet for a single calendar date, without resending the entire usage payload. Returns an empty 204 response on success. Required: contract_item_id and date.
- **list_all_rillet_invoices** — List all AR invoices in Rillet with filters for subsidiary, customer, overdue state, payment status, and update timestamp. Returns each invoice record with id and attributes (line items, tax breakdown, contract/customer linkage). Max 100 per page.
- **create_a_rillet_invoice** — Create an invoice in Rillet under a FULL scope (Rillet generates and sends the invoice and automatically assigns the invoice number) or a REVENUE_RECOGNITION_ONLY scope (invoice is issued externally and recorded for accounting, with the invoice number supplied manually). Returns the created invoice record: id, attributes.
- **get_single_rillet_invoice_by_id** — Get a single Rillet invoice by id, including its line items, tax breakdown, and linkage to contracts or customers. Returns the invoice record: id, attributes. Required: id (invoice UUID).
- **update_a_rillet_invoice_by_id** — Update a Rillet invoice by id. This is a full-replace (PUT) operation: every field must be included in the body, since omitted fields are set to null and wiped — retrieve the invoice first, then send all existing fields plus your changes. Returns the updated invoice record: id, attributes. Required: id.
- **delete_a_rillet_invoice_by_id** — Delete a Rillet invoice by id, permanently removing it when your policy allows (for example draft or voided states); confirm no downstream payments or revenue postings still depend on it. Returns an empty 204 response on success. Required: id.
- **update_a_rillet_invoice_tax_by_id** — Update taxes for an invoice in Rillet — recalculates or replaces the invoice's tax lines using the supplied tax payload, e.g. after changing taxable addresses or when integrating an external tax engine result. Returns the updated invoice object: id, attributes. Required: invoice_id and the tax payload body.
- **list_all_rillet_invoice_payments** — List all invoice payments in Rillet across every invoice in the organization, independent of which invoice each payment settled. Returns payment records including their public status, amount, currency, and created_at. Supports an updated.gt timestamp filter for incremental syncs; sorted descending by created or updated via sort_by.
- **rillet_invoice_sent_status_bulk_update** — Update the sent status of an invoice in Rillet — set the sent flag true once the billing system or email provider confirms delivery to the customer, or false while the document is still internal-only. Returns an empty 204 response on success. Required: invoice_id, sent.
- **list_all_rillet_credit_memos** — List customer credit memos in Rillet with pagination. Returns each memo's id, remaining balance, applications, tax metadata, and updated_at; use memo ids with retrieve-a-credit-memo before updates or when applying credits to invoices. Required: updated.gt to filter by update timestamp.
- **create_a_rillet_credit_memo** — Create a credit memo in Rillet that reduces receivable exposure before it is allocated to invoices. Returns the CreditMemo record including its id, remaining balance, applications, and tax metadata. The request body must capture subsidiary, customer, line-level reasons, and tax treatment for audit.
- **get_single_rillet_credit_memo_by_id** — Get a credit memo by id in Rillet. Returns the full CreditMemo payload including its id, remaining balance, applications, and tax metadata to echo on PUT updates. Always retrieve before editing — update-a-credit-memo replaces the entire resource when fields are omitted. Required: id.
- **update_a_rillet_credit_memo_by_id** — Update a credit memo by id in Rillet. Full-replace semantics: all fields must be included in the request body — omitting any field sets it to null and wipes existing data. Always retrieve-a-credit-memo first, then echo ALL existing fields plus your changes. Returns the updated CreditMemo: id, remaining balance, applications, tax metadata, updated_at. Required: id.
- **delete_a_rillet_credit_memo_by_id** — Delete a credit memo by id in Rillet, typically while it is still draft or unused. Confirm no invoice applications depend on it first. Returns an empty 204 response on success. Required: id.
- **update_a_rillet_credit_memo_tax_by_id** — Refresh tax quotes on an existing Rillet credit memo using the same structured tax payload as invoice tax updates, stamped with taxesCalculatedAt for auditability. Returns: id, subsidiary_id, credit_memo_number, customer_id, items, credit_memo_date, address, status, net_amount, total, applied_amount, remaining_amount, applications, exchange_rate, taxed_amount, external_references, updated_at,…
- **create_a_rillet_credit_memo_application** — Reconcile all applications on a Rillet credit memo: the request body is the desired application set, so applications missing from it are removed, new ones inserted, and existing ones updated when amount or application_date differ. Returns the updated credit memo including its id, applications, and updated_at. Required: credit_memo_id (UUID) and the full-reconcile request body.
- **rillet_credit_memo_applications_bulk_delete** — Unapply all applications from a credit memo, reverting every invoice allocation. Returns an empty 204 response on success. Required: credit_memo_id (UUID).
- **list_all_rillet_vendors** — List Rillet vendors with pagination; the returned vendor ids feed bill creation, vendor credits, and payment workflows. Returns vendor records including id and updated_at.
- **create_a_rillet_vendor** — Create a vendor master record in Rillet that accounts-payable teams can select on bills, vendor credits, and payments. Capture the vendor's legal name, remit-to address, default currency, and payment terms so downstream bills inherit correct due dates and banking instructions. Returns the created vendor record including its id.
- **get_single_rillet_vendor_by_id** — Get a Rillet vendor by id (UUID). Fetches the full vendor profile, including the identifiers you must echo back on PUT updates — use it before editing to avoid wiping optional fields. Returns the vendor record including its id. Required: id.
- **update_a_rillet_vendor_by_id** — Update a Rillet vendor by id (UUID). This is a full-replace PUT: include ALL existing fields in the body along with your changes, since omitted fields are set to null and wipe existing data — always retrieve the vendor first. Returns the updated vendor record including its id. Required: id.
- **delete_a_rillet_vendor_by_id** — Delete a Rillet vendor by id (UUID) when you no longer expect to pay it; confirm no open bills, credits, or scheduled payments still reference it to avoid orphaned payables. Returns an empty 204 response on success.
- **list_all_rillet_vendor_credits** — List vendor credits in Rillet, optionally filtered by vendor, subsidiary, and last-updated timestamp. Returns: credit_number, date, gl_impact_date, memo, line_items, vendor_id, subsidiary_id, id, organization_id, status, amount, applied_amount, remaining_amount, applications, updated_at.
- **create_a_rillet_vendor_credit** — Create a vendor credit in Rillet — records a credit memo amount that reduces future payables without touching specific bills; allocate it to bills afterwards with apply-vendor-credit. Returns: credit_number, date, gl_impact_date, memo, line_items, vendor_id, subsidiary_id, id, organization_id, status, amount, applied_amount, remaining_amount, applications, updated_at, attributes. Requires a…
- **get_single_rillet_vendor_credit_by_id** — Get a vendor credit in Rillet by id, including its remaining balance and application history — useful before updating or applying the credit to bills. Returns: credit_number, date, gl_impact_date, memo, line_items, vendor_id, subsidiary_id, id, organization_id, status, amount, applied_amount, remaining_amount, applications, updated_at, attributes. Required: id.
- **update_a_rillet_vendor_credit_by_id** — Update a vendor credit in Rillet by id. This is a full-replace operation: every field must be included in the request body, because omitted fields are set to null and existing data is wiped — retrieve the current record first, then send all existing fields plus your changes. Returns: credit_number, date, gl_impact_date, memo, line_items, vendor_id, subsidiary_id, id, organization_id, status,…
- **delete_a_rillet_vendor_credit_by_id** — Delete a vendor credit in Rillet by id, permanently removing it from the subledger — make sure no applications or downstream reconciliations still rely on the credit first. Returns an empty 204 response on success. Required: id.
- **create_a_rillet_vendor_credit_application** — Apply a vendor credit to open bills in Rillet, allocating its remaining unapplied balance against specific bills to reduce the net amounts payable. Returns the updated vendor credit object with its id and schema-specific attributes (including remaining balance and application history). Required: vendor_credit_id.
- **list_all_rillet_bills** — List Rillet bills (accounts-payable records) with filters for vendor, subsidiary, and payment status. Returns each bill with id plus the vendor linkage, approval state, open balance, and document-reference fields under attributes. All filters are optional.
- **create_a_rillet_bill** — Create a Rillet bill accruing a new accounts-payable amount against a vendor with subsidiary context, line items, and due dates for your approval workflow. Returns the created bill record: id plus the remaining Bill fields under attributes (vendor linkage, approval state, open balance, document references). Requires a request body with the full bill details.
- **get_single_rillet_bill_by_id** — Get a single Rillet bill by id, including its vendor linkage, approval state, open balance, and document references. Returns the bill record: id plus the remaining Bill fields under attributes. Required: id. Retrieve the bill before updating it — update semantics require resubmitting every field.
- **update_a_rillet_bill_by_id** — Update a Rillet bill by id. This is a full-replace operation: omitting any field in the request body sets it to null, so retrieve the bill first and include ALL existing fields along with your changes. Returns the updated bill record: id plus the remaining Bill fields under attributes. Requires id and a request body.
- **delete_a_rillet_bill_by_id** — Delete a Rillet bill by id — typically one still in draft or created in error. Verify no posted payments, accrual journals, or vendor credit applications reference the bill before deleting. Returns an empty 204 response on success. Required: id.
- **list_all_rillet_bill_payments** — List the payments recorded against a specific bill in Rillet. Returns each payment's id and its content-specific attributes (the BillPayment object). Required: bill_id.
- **create_a_rillet_bill_payment** — Create a bill payment in Rillet that settles all or part of a bill, updating the outstanding payable. Returns the created payment's id and its content-specific attributes. Required: bill_id and a request body including billId, which must match bill_id.
- **delete_a_rillet_bill_payment_by_id** — Delete a bill payment in Rillet, reversing a disbursement that failed or was duplicated and restoring the bill balance. Returns an empty 204 response on success. Required: bill_id and the payment id.
- **list_all_rillet_charges** — List Rillet charges awaiting policy review, subsidiary allocation, or conversion into reimbursable payables. Returns each charge including its id; the full attribute set follows Rillet's Charge schema in the API reference.
- **create_a_rillet_charge** — Create a charge in Rillet by submitting a JSON charge request body. Returns the created charge object including its id; the full attribute set follows Rillet's ChargeRequest schema in the API reference. Requires a JSON request body.
- **get_single_rillet_charge_by_id** — Get a single Rillet charge by id, including its merchant metadata, amounts, and workflow state for review before reimbursement. Returns the charge object including its id; the full attribute set follows Rillet's Charge schema in the API reference. Required: id.
- **delete_a_rillet_charge_by_id** — Delete a Rillet charge by id, permanently removing it from spend reporting — confirm the underlying bank activity will not be re-imported first. Returns an empty 204 response on success. Required: id (UUID of the charge).
- **list_all_rillet_reimbursements** — List reimbursements in Rillet, including requests created from approved charges or manual submissions, for payroll sync. Returns each reimbursement's id and updated_at.
- **create_a_rillet_reimbursement** — Create a reimbursement in Rillet from an approved charge or a manual submission. Returns the created reimbursement with its id and updated_at. Requires a CreateReimbursementRequest JSON body.
- **get_single_rillet_reimbursement_by_id** — Get a single reimbursement by id in Rillet, including its employee linkage, funding instructions, and approval history. Returns: vendor_id, items, reimbursement_date, impact_date, subsidiary_id, external_references, exchange_rate, id, status, updated_at. Required: id.
- **delete_a_rillet_reimbursement_by_id** — Delete a reimbursement by id in Rillet, for requests created prematurely or duplicated during intake so they no longer block payroll totals; confirm no outbound payments or GL accruals were posted first. Returns an empty 204 response on success. Required: id.
- **list_all_rillet_journal_entries** — List all GL journal entries in rillet. Returns entry records with id, subsidiary_id, entry_date, memo, ledger_type, status, reconciled flag, debit/credit journal_lines, created_at, and updated_at. Filter by subsidiary_id, book_id, account_ids, updated.gt timestamp, or a date.gte/date.lte posting-date range; sort_by accepts created or updated.
- **create_a_rillet_journal_entry** — Create a balanced manual journal entry in rillet for GL corrections. Returns the created entry including id, lines, date, and reconciled flag. Required: lines, date, and subsidiary_id. Prefer the dedicated AR or AP APIs when the business event already exists.
- **get_single_rillet_journal_entry_by_id** — Get a single journal entry in rillet by id, with every line and account reference needed for close review. Returns: id, book_id, subsidiary_id, name, currency, related_entity, items, date, reversal_date, attachmentUrl, exchange_rate, updated_at, lines, reconciled. Required: id. Retrieve before updating so new edits merge with existing lines without dropping balances.
- **update_a_rillet_journal_entry_by_id** — Update a manual journal entry in rillet by id, replacing its lines and header metadata under the same balancing rules as creation. Returns the updated entry including id, lines, date, and reconciled flag. Required: id and lines.
- **delete_a_rillet_journal_entry_by_id** — Delete a manual journal entry in rillet by id, typically before period lock while corrections remain allowed. Verify no reconciliations or downstream consolidations still rely on the entry first. Returns an empty 204 response on success. Required: id.
- **list_all_rillet_bank_accounts** — List all cash bank accounts configured for the organization in Rillet, optionally filtered by subsidiary. Returns: id, name, currency, bank_name, subsidiary_id, account_code, mask, transactions_start_date, status, code, type, subtype, intercompany, updated_at.
- **create_a_rillet_bank_account** — Create a Rillet bank account, registering its currency, institution identifiers, and GL cash account linkage so invoice payments, bill payments, and bank feeds post to the same cash subledger. Returns: id, name, currency, bank_name, subsidiary_id, account_code, mask, transactions_start_date, status, code, type, subtype, intercompany, updated_at. Requires a JSON request body…
- **get_single_rillet_bank_account_by_id** — Get a single Rillet bank account by id, including its configuration and status plus the identifiers downstream connectors need when refreshing balances. Returns: id, name, currency, bank_name, subsidiary_id, account_code, mask, transactions_start_date, status, code, type, subtype, intercompany, updated_at. Required: id.
- **delete_a_rillet_bank_account_by_id** — Delete a Rillet bank account by id when the entity closed the account or a duplicate connector mapping was created; verify no scheduled payments or open reconciliation batches still target the account first. Returns an empty 204 response on success. Required: id.
- **list_all_rillet_bank_transactions** — List Rillet bank transactions for reconciliation. Supports bank account, subsidiary, date-range, and updated-since filters. Returns: id, bank_account_id, subsidiary_id, date, name, merchant, net_amount, fee, pending, excluded, external_references, created_at, updated_at.
- **create_a_rillet_bank_transaction** — Create a Rillet bank transaction to insert a single bank feed line, such as a wire, ACH, or adjustment, that automated imports missed. Requires a JSON body per the upstream CreateBankTransactionRequest schema — the source requires the hosting bank account and value dates so cash reporting matches what treasury booked externally. Returns the stored bank transaction object, including its id.
- **get_single_rillet_bank_transaction_by_id** — Get a single Rillet bank transaction by id, including the counterparty text, amounts, and reconciliation flags cash teams use at month-end. Returns the bank transaction object, including its id, with the full field set defined by the upstream BankTransaction schema. Required: id (the bank transaction UUID).
- **update_a_rillet_bank_transaction_by_id** — Update a Rillet bank transaction by id to adjust memo, categorization, or reconciliation metadata without re-importing the feed batch. Requires a full JSON body per the upstream UpdateBankTransactionRequest schema so optional fields you intend to keep are not unintentionally cleared. Returns the updated bank transaction object, including its id. Required: id (the bank transaction UUID).
- **delete_a_rillet_bank_transaction_by_id** — Delete a Rillet bank transaction by id, for rows that were imported twice or created in error. Returns an empty 204 response on success. Required: id.
- **list_all_rillet_tax_rates** — List all available tax rates in Rillet. Returns tax rate records including their id — use the returned ids when creating bills with specific tax codes.
- **list_all_rillet_reports_arr_waterfalls** — Retrieve the ARR waterfall report from Rillet for a given month, breaking down how ARR moved between periods (beginning ARR, new business, expansion, contraction, churn). Returns the RevenueWaterfall report payload in `attributes`, shaped by the requested breakdown dimensions.
- **list_all_rillet_books** — List all accounting books in Rillet, with the primary book listed first. Returns: id, name, kind, mode. Only primary and adjustment-overlay book ids are accepted by report and journal-entry endpoints that take a book_id.
- **list_all_rillet_periods_last_closeds** — Retrieve the last closed accounting period in Rillet for book-close workflows. Returns the book record with its id and content-type-specific period fields (attributes), including closed-on timestamps. Responds with 404 when no period has ever been closed, meaning the book is not yet closed rather than the resource being missing.
- **list_all_rillet_healths** — Check the health of the Rillet API service. Returns an empty 200 OK response when the service process is running, without exercising downstream databases or queues. Intended for load balancer health checks.
- **list_all_rillet_api_keys** — Get API key information in Rillet. Confirms the key is recognized and returns basic identity metadata with fields defined upstream; call it during bootstrap or key rotation to distinguish invalid keys from connectivity failures.
- **list_all_rillet_fields** — List Rillet custom field definitions and their pick-list values for the organization. Returns each field with id, values, created_at, and updated_at.
- **create_a_rillet_field** — Create a custom field in Rillet (text, number, pick list, etc.) that can be attached to supported entities for reporting and automation. Returns the created field with id, created_at, and updated_at. Requires a JSON request body.
- **update_a_rillet_field_by_id** — Update an existing Rillet custom field's labels, validation rules, or visibility metadata without recreating historical values. Returns the updated field with id, created_at, and updated_at. Required: id.
- **create_a_rillet_field_value** — Create a selectable value on a pick-list style custom field in Rillet so entities can be tagged with a consistent taxonomy. Returns the parent field object including its id. Required: field_id. Create the parent field first so the new value inherits its scope before records reference it.
- **update_a_rillet_field_value_by_id** — Update a pick-list value in Rillet, renaming or reordering the entry while preserving its underlying id so historical records stay linked to the same option. Returns the parent field object including its id. Required: field_id and id. Prefer this over delete-and-recreate when auditing requires stable references.
- **delete_a_rillet_field_value_by_id** — Delete a field value in Rillet by id, retiring the pick-list option so it can no longer be selected while older records keep their history. Returns the parent field object including its id. Required: field_id and id. Confirm no automation or validation rules still require the value before removal.
- **list_all_rillet_reports_trial_balances** — Retrieve a trial balance report for a specified date range in Rillet. Returns the trial balance report object for that range (optionally scoped by book); its fields follow Rillet's report schema. Required: from_date and to_date, both ISO-8601 dates (YYYY-MM-DD) — both must be provided or the call will fail.
- **list_all_rillet_reports_balance_sheets** — Retrieve the Rillet balance sheet report as of a specified date. Returns the balance sheet report for the requested date; its field structure is defined by the upstream BalanceSheetReport schema in the Rillet API reference. Required: as_of_date (ISO-8601 date, YYYY-MM-DD).
- **list_all_rillet_reports_income_statements** — Retrieve the Rillet income statement (profit and loss) report for a specified date range. Returns the report record with its id and attributes (the report fields as defined upstream in the IncomeStatementReport schema). Required: from_date and to_date (ISO-8601 dates, YYYY-MM-DD); both must be provided or the call will fail.
- **list_all_rillet_reports_cash_flow_statements** — Get the Rillet cash flow statement report for a date range. Returns the report's id and its schema-defined attributes; the field-level structure follows the upstream CashFlowStatementReport schema. Required: from_date, to_date (ISO-8601 YYYY-MM-DD, both must be provided or the call fails).
- **list_all_rillet_reports_executive_pls** — Retrieve the executive profit and loss report with margins for a specified date range in Rillet. Returns the report object including its id and report-specific fields under attributes. Required: from_date, to_date.
- **list_all_rillet_reports_journal_entries** — List Rillet journal entries with line item amounts converted to the reporting currency. Returns journal_entries and a pagination object with next_cursor. Entries are sorted descending by created (default) or updated.
- **create_a_rillet_invoice_payment** — Record a manual cash receipt against an open Rillet invoice. Returns the created invoice payment including its id, status, created_at, and updated_at. Required: invoice_id. The request body supplies the payment amount, effective date, and the GL account code that maps to a funded cash account — Rillet resolves the account code before posting.
- **delete_a_rillet_invoice_payment_by_id** — Delete an uncleared invoice payment in Rillet, reversing the payment and restoring the invoice balance. Returns an empty 204 response on success. Required: invoice_id, id. Only uncleared payments can be deleted; cleared or reconciled payments are rejected.
- **list_all_rillet_invoice_payment** — List every payment attempt recorded against a single Rillet invoice, including successful, uncleared, and failed rows with their public status. Returns: id, status, invoice_id, amount, date, account_code, updated_at, created_at. Required: invoice_id.
- **update_a_rillet_invoice_payment_by_id** — Replace the amount, date, and cash account on an existing uncleared Rillet invoice payment. Returns the updated invoice payment including its id, status, created_at, and updated_at. Required: invoice_id, id. This is a full-replace operation (PUT semantics) — include all fields in the request body; cleared or reconciled payments are rejected.
- **get_single_rillet_approval_workflow_by_id** — Get a single approval workflow in Rillet by id. Returns: id, created_at, updated_at. Required: id.
- **list_all_rillet_approval_workflows** — List all approval workflows in Rillet. Returns each workflow's id, created_at, and updated_at.
- **update_a_rillet_approval_workflow_by_id** — Update an approval workflow in Rillet by id. Returns the updated workflow with id, created_at, and updated_at. Required: id.
- **create_a_rillet_bill_document** — Upload a document (PDF, JPEG, or PNG), such as an invoice, contract, or receipt, to an existing Rillet bill as a multipart form-data file. Returns an empty 204 response on success. Required: bill_id, file.
- **create_a_rillet_charge_document** — Upload a document (a receipt as PDF, JPEG, or PNG) to an existing charge in Rillet using multipart form data. Returns an empty 204 response on success. Required: charge_id, file.
- **create_a_rillet_reimbursement_document** — Attach a receipt file (PDF, JPEG, or PNG) to an existing reimbursement in Rillet. Returns an empty 204 response on success. Required: reimbursement_id, file.

## How it works

1. **Link your customer's Rillet account.** Use Truto's frontend SDK; we handle every OAuth and API key flow so you don't need to create the OAuth app.
2. **Authentication is automatic.** Truto refreshes tokens, stores credentials securely, and injects them into every API request.
3. **Call Truto's API to reach Rillet.** The Proxy API is a 1-to-1 mapping of the Rillet API.
4. **Get a unified response format.** Every response uses a single shape, with cursor-based pagination and data in the `result` field.

## Use cases

- **Sync AP and corporate card spend to the GL** — Spend management and AP automation platforms can push bills, charges, vendor credits, and reimbursements into Rillet with attached receipts, keeping the ledger audit-ready without manual re-entry by the finance team.
- **Hand off closed-won deals from CPQ to finance** — CPQ and RevOps tools can drop signed contracts into Rillet's draft queue with mapped products and customers, letting controllers approve deals before they hit the books while eliminating rekeying between sales and accounting.
- **Recognize revenue for usage-based billing engines** — Metering and billing platforms can issue invoices themselves and sync them to Rillet in revenue-recognition-only mode, feeding daily usage upserts so Rillet handles ASC 606 waterfalls without owning invoice delivery.
- **Pull GAAP and SaaS metrics into FP&A tools** — Financial planning and BI platforms can ingest pre-computed trial balances, income statements, cash flow statements, and ARR waterfalls directly from Rillet, skipping the work of reverse-engineering metrics from raw journal entries.
- **Post payroll runs as balanced journal entries** — Payroll and HRIS platforms can aggregate each run and push it into Rillet as a journal entry, keeping compensation expense, accruals, and tax liabilities properly booked without a manual close-week ritual.

## What you can build

- **Draft contract handoff with duplicate protection** — Push closed-won deals to Rillet's draft contracts endpoint with external reference IDs so finance can review, approve, and activate them without creating duplicate records.
- **Dual-scope invoice sync** — Create invoices in Rillet with either FULL scope (Rillet issues and sends the invoice) or REVENUE_RECOGNITION_ONLY scope when your billing engine owns invoice delivery but Rillet owns the GL impact.
- **Bulk usage upserts for contract items** — Stream daily consumption from a rating engine into Rillet using bulk usage updates on contract items, powering Rillet's billing schedules and revenue recognition automatically.
- **Receipt-attached expense sync** — Create charges, bills, and reimbursements in Rillet and upload the corresponding PDF or image receipts as documents on each record so every GL line is audit-ready.
- **Chart of accounts and tracking category mapping UI** — Fetch Rillet accounts, subsidiaries, and custom fields so your users can map their own SKUs, departments, or cost centers to Rillet dimensions before any transactions sync.
- **Financial report ingestion for dashboards** — Pull ARR waterfalls, trial balances, balance sheets, income statements, cash flow statements, and executive P&Ls on a schedule to power in-app board reporting and forecasting.

## FAQs

### How do end users authenticate their Rillet account?

Rillet uses API key authentication. Through Truto, your users provide their Rillet API key during connection setup, and Truto securely stores and injects the credential on every request so you never handle raw secrets.

### Can we attach receipts and supporting documents to transactions?

Yes. Rillet supports multipart form-data uploads for charges, bills, and reimbursements via dedicated document endpoints, so you can attach PDFs or images directly to the underlying GL line item.

### Does the integration support multi-entity companies?

Yes. Rillet is designed for multi-subsidiary setups. You can list subsidiaries and organizations, and tag transactions like invoices, bills, and journal entries with the correct entity for intercompany reporting.

### Can external billing systems recognize revenue in Rillet without issuing the invoice?

Yes. When creating an invoice, set the scope to REVENUE_RECOGNITION_ONLY. Your product remains the source of truth for invoice delivery and payment collection while Rillet handles deferred revenue, ARR waterfalls, and GL postings.

### How do we prevent duplicate records when syncing contracts or customers?

Rillet resources accept external reference IDs on creation. Persist your internal IDs on the Rillet record so subsequent syncs can look up, update, or skip records deterministically instead of creating duplicates.

### Can we read Rillet's pre-computed financial reports directly?

Yes. Rillet exposes trial balances, balance sheets, income statements, cash flow statements, executive P&Ls, journal entry reports, and ARR waterfalls as first-class endpoints, so you don't have to derive them from raw ledger data.

## Related reading

- [Connect Rillet to Claude: Sync Receivables, Payables, and GL Data](https://truto.one/blog/connect-rillet-to-claude-sync-receivables-payables-and-gl-data/) — Learn how to build a secure MCP server for Rillet to give Claude AI agentic read/write access to your financial subledgers, invoices, and accounting reports.
- [Connect Rillet to ChatGPT: Manage Billing and Financial Reports](https://truto.one/blog/connect-rillet-to-chatgpt-manage-billing-and-financial-reports/) — Learn how to build and connect a managed MCP server for Rillet, enabling ChatGPT to securely read financial reports, manage billing, and reconcile accounts.
- [Connect Rillet to AI Agents: Automate Contract and Revenue Ops](https://truto.one/blog/connect-rillet-to-ai-agents-automate-contract-and-revenue-ops/) — Learn how to connect Rillet to AI agents using Truto's /tools endpoint. Build autonomous workflows for contract creation, invoicing, and revenue ops.
