Accounting · Beta
DualEntry
API integration
Ship Accounting features without building the integration. Full DualEntry API access via Proxy and 230+ MCP-ready tools for AI agents — extend models and mappings to fit your product.
Built for specific customer use cases. Issues are resolved quickly.
Talk to usUse Cases
Why integrate with DualEntry
Common scenarios for SaaS companies building DualEntry integrations for their customers.
Sync Corporate Card Spend into a Multi-Entity GL
Spend management platforms can push DirectExpenses, Bills, and VendorPayments into DualEntry, mapped to the correct company_id, GL account, and classification. This lets finance teams close the books without manual re-entry of card and reimbursement data.
Automate ASC 606 Revenue Recognition from Billing Events
Subscription billing and CPQ platforms can create Contracts, bulk-upsert Contract Usages, and push Change Orders into DualEntry. This offloads revenue recognition math to the accounting system while keeping the billing platform as the source of truth for pricing.
Close the Loop on Procure-to-Pay Approvals
Procurement tools can push Purchase Orders and Bills into DualEntry, subscribe to Webhooks for approval state changes, and then trigger Paper Check printing or record VendorPayments once approved. End users get one procurement workflow that natively drives their ERP.
Programmatic Bank Feeds and Reconciliation
Fintech and treasury apps can create Bank Connections, push Account Transactions, invoke bank_match_populate, and act on match suggestions to auto-reconcile. This gives banking platforms a native reconciliation experience inside DualEntry customers' ledgers.
Intercompany Journals for Multi-Entity Operators
PropTech, franchise, and holding-company SaaS can post IntercompanyJournalEntries that balance across multiple company_ids in a single call. This eliminates the manual eliminations and offset entries controllers otherwise do at month-end.
What You Can Build
Ship these features with Truto + DualEntry
Concrete product features your team can ship faster by leveraging Truto’s DualEntry integration instead of building from scratch.
Two-way Customer, Vendor, and Item Sync
Keep Customers, Vendors, and Items aligned between your app and DualEntry using list, create, update, and partial-update endpoints with webhook-driven change detection.
Push-to-Ledger for Invoices, Bills, and Journal Entries
Ship a one-click 'Send to DualEntry' action that creates Invoices, Bills, JournalEntries, or CashSales with attachments, then tracks status via get-by-id and webhooks.
Native Revenue Recognition Module
Expose Contracts, Contract Change Orders, and bulk usage upserts in your billing UI so customers configure performance obligations once and let DualEntry recognize revenue automatically.
AP Automation with Paper Check Printing
Trigger print_now or print_later paper checks from your AP tool, batch them via print-batches bulk update, and reconcile the resulting VendorPayments back into your platform.
Bank Feed + AI-Assisted Reconciliation
Create Bank Connections and push Account Transactions, then call bank_match_populate and surface bank_match_suggestions inside your product so users approve or unmatch entries in-app.
Approval-Aware Workflow Triggers
Poll Workflows, Execution States, and Inbox records — or subscribe to webhook topics — to gate downstream actions in your app on DualEntry approval outcomes.
SuperAI
DualEntry AI agent tools
Comprehensive AI agent toolset with fine-grained control. Integrates with MCP clients like Cursor and Claude, or frameworks like LangChain.
list_all_dual_entry_public_healths
Check the health of the DualEntry Public API to verify connectivity and that your API key is working. Returns: status, timestamp.
list_all_dual_entry_public_invoices
List Invoice records in DualEntry with filtering by company, customer, date range, amount, due date, currency, record status, and approval status. Returns: items, count, id, updated_at. Max 100 per page.
create_a_dual_entry_public_invoice
Create a new Invoice record in DualEntry. Defaults to posted status which requires company_id, customer_id, currency_iso_4217_code, exchange_rate, due_date, and at least one item line; set record_status to draft to defer required-field validation. Returns: bill_to_address, ship_to_address, billing_address, shipping_address, custom_fields, customer_name, attachments, payment, term_id, term_name,…. Required: date.
update_a_dual_entry_public_invoice_by_id
Update an existing Invoice record in DualEntry by id (the record number). Validates all required fields and business rules. Returns: bill_to_address, ship_to_address, billing_address, shipping_address, custom_fields, customer_name, attachments, payment, term_id, term_name, transaction_ids, bank_match_status, reconciliation_status, created_by, updated_by, approval_status, next_approvers,…. Required: id, date.
dual_entry_public_invoices_attach_attachment
Upload file attachments to an existing DualEntry invoice record. Returns the updated invoice including id, number, amount, attachments, and record_status. Required: record_number.
get_single_dual_entry_public_invoice_by_id
Get a single DualEntry invoice by id with all related data. Returns: bill_to_address, ship_to_address, billing_address, shipping_address, custom_fields, customer_name, attachments, payment, term_id, term_name, transaction_ids, bank_match_status, reconciliation_status, created_by, updated_by, approval_status, next_approvers, rejected_by, internal_id, number, code, items, company_id, company_name,…. Required: id.
dual_entry_public_invoices_partial_update
Partially update an existing DualEntry invoice by id, sending only the fields you want to change — anything omitted stays as-is. Returns the updated invoice object including id, number, amount, company_id, customer_id, items, and attachments. Required: id.
dual_entry_public_invoices_replace_attachments
Replace all attachments on a DualEntry invoice record; existing attachments are marked as deleted and the uploaded files become the new set. Returns the updated invoice object including id, number, amount, and attachments. Required: record_number.
list_all_dual_entry_public_sales_orders
List SalesOrder records in DualEntry with filtering by company, customer, date range, record status, invoiced status, and update timestamp. Returns: items, count, id, updated_at. Max 100 per page.
create_a_dual_entry_public_sales_order
Create a new SalesOrder record in DualEntry. A create request defaults to record_status: posted; set record_status: draft to skip required-field and line validation. Returns: bill_to_address, ship_to_address, billing_address, shipping_address, custom_fields, invoiced_status, attachments, term_id, term_name, created_by, updated_by, approval_status, next_approvers, rejected_by, internal_id, number,…. Required: memo, date, company_id, customer_id, currency_iso_4217_code, exchange_rate, items.
update_a_dual_entry_public_sales_order_by_id
Update an existing SalesOrder record in DualEntry by id. Validates all required fields and business rules. Returns: bill_to_address, ship_to_address, billing_address, shipping_address, custom_fields, invoiced_status, attachments, term_id, term_name, created_by, updated_by, approval_status, next_approvers, rejected_by, internal_id, number, items, company_id, company_name, company_currency,…. Required: id, memo, date, company_id, customer_id, currency_iso_4217_code, exchange_rate, items.
dual_entry_public_sales_orders_attach_attachment
Upload file attachments to a SalesOrder record in DualEntry by record number. Returns the updated sales order including id, number, company_id, customer_id, record_status, items, and attachments. Required: record_number.
get_single_dual_entry_public_sales_order_by_id
Get a specific SalesOrder record in DualEntry by id with all related data. Returns: bill_to_address, ship_to_address, billing_address, shipping_address, custom_fields, invoiced_status, attachments, term_id, term_name, created_by, updated_by, approval_status, next_approvers, rejected_by, internal_id, number, items, company_id, company_name, company_currency, customer_id, customer_name,…. Required: id.
list_all_dual_entry_public_bills
List Bill records in DualEntry with filtering by company, vendor, code, number, dates, record status, and approval status. Returns: items, count, id, created_at, updated_at. Max 100 per page.
create_a_dual_entry_public_bill
Create a new Bill record in DualEntry. Posted records require company_id, vendor_id, currency_iso_4217_code, exchange_rate, memo, and at least one items or expenses line; a draft defaults to empty memo, exchange_rate 1.0, and USD. Returns: custom_fields, supply_date, place_of_supply, tax_registration_numbers, tax, attachments, transaction_ids, term_id, term_name, bank_match_status,…. Required: date.
update_a_dual_entry_public_bill_by_id
Update an existing Bill record in DualEntry by id (record number). Validates all required fields and business rules for posted records. Returns: custom_fields, supply_date, place_of_supply, tax_registration_numbers, tax, attachments, transaction_ids, term_id, term_name, bank_match_status, reconciliation_status, created_by, updated_by, approval_status, next_approvers, rejected_by, internal_id,…. Required: id, date.
dual_entry_public_bills_attach_attachment
Upload file attachments to a DualEntry bill record by record number. Returns the updated bill including id, number, company_id, vendor_id, currency_iso_4217_code, due_date, record_status, and attachments. Required: record_number.
get_single_dual_entry_public_bill_by_id
Get a single DualEntry bill by id (record number). Returns: custom_fields, supply_date, place_of_supply, tax_registration_numbers, tax, attachments, transaction_ids, term_id, term_name, bank_match_status, reconciliation_status, created_by, updated_by, approval_status, next_approvers, rejected_by, internal_id, number, code, date, transaction_date, due_date, company_id, company_name,…. Required: id.
dual_entry_public_bills_partial_update
Partially update an existing DualEntry Bill record by sending only the fields you want to change. Returns the updated bill including id, number, record_status, company_id, vendor_id, due_date, items, and expenses. Subject to period locks, payment-applied restrictions, and approval-workflow rules. Required: id.
list_all_dual_entry_public_journal_entries
List DualEntry journal entries with filtering by company, account, date range, record status, and amount. Returns each record with id, number, code, company_id, date, record_status, items, attachments, created_at, updated_at. Max 100 per page.
create_a_dual_entry_public_journal_entry
Create a journal entry in DualEntry. Defaults to posted status, requiring company_id, currency_iso_4217_code, exchange_rate, memo, and at least one line item. Set record_status to draft to skip validation. Returns: custom_fields, attachments, reversal_items, items, bank_match_status, reconciliation_status, created_by, updated_by, approval_status, next_approvers, rejected_by, internal_id, number,…. Required: date.
update_a_dual_entry_public_journal_entry_by_id
Update an existing DualEntry journal entry by id. Full replacement of all fields and line items; validates required fields and business rules. Returns: custom_fields, attachments, reversal_items, items, bank_match_status, reconciliation_status, created_by, updated_by, approval_status, next_approvers, rejected_by, internal_id, number, code, transaction_id, company_id, company_name,…. Required: id, date.
dual_entry_public_journal_entries_attach_attachment
Upload file attachments to a DualEntry journal entry by record number. Returns the updated journal entry with id, number, date, record_status, items, and attachments. Required: record_number.
get_single_dual_entry_public_journal_entry_by_id
Get a single DualEntry journal entry by id, including line items and attachments. Returns: custom_fields, attachments, reversal_items, items, bank_match_status, reconciliation_status, created_by, updated_by, approval_status, next_approvers, rejected_by, internal_id, number, code, transaction_id, company_id, company_name, company_currency, memo, date, transaction_date, currency_iso_4217_code,…. Required: id.
list_all_dual_entry_public_purchase_orders
List DualEntry purchase orders with filtering by company, vendor, date range, record status, approval status, billing status, and lifecycle status. Returns: items, count, id, created_at, updated_at. Max 100 per page.
create_a_dual_entry_public_purchase_order
Create a new DualEntry purchase order. Defaults to record_status posted, which requires company_id, vendor_id, currency_iso_4217_code, exchange_rate, and at least one line item; use record_status draft to defer required fields. Returns: attachments, term_id, term_name, created_by, updated_by, approval_status, next_approvers, rejected_by, internal_id, number, date, company_id, company_name,…. Required: date, company_id, vendor_id, currency_iso_4217_code, exchange_rate, memo, items.
update_a_dual_entry_public_purchase_order_by_id
Update an existing DualEntry purchase order by id (record number) with full replacement of record data. Validates all required fields and business rules. Returns: attachments, term_id, term_name, created_by, updated_by, approval_status, next_approvers, rejected_by, internal_id, number, date, company_id, company_name, company_currency, vendor_id, vendor_name, currency_iso_4217_code, exchange_rate,…. Required: id, date, company_id, vendor_id, currency_iso_4217_code, exchange_rate, memo, items.
dual_entry_public_purchase_orders_attach_attachment
Upload file attachments to an existing DualEntry purchase order by record number. Returns the updated purchase order including id, number, company_id, vendor_id, attachments. Required: record_number.
get_single_dual_entry_public_purchase_order_by_id
Get a single DualEntry purchase order by id (record number) with all related data. Returns: attachments, term_id, term_name, created_by, updated_by, approval_status, next_approvers, rejected_by, internal_id, number, date, company_id, company_name, company_currency, vendor_id, vendor_name, currency_iso_4217_code, exchange_rate, billed_total, due_total, amount, memo, items, record_status,…. Required: id.
list_all_dual_entry_public_customer_prepayments
List CustomerPrepayment records in DualEntry with filtering by company, customer, date range, status, and currency. Returns: items, count. Max 100 per page.
create_a_dual_entry_public_customer_prepayment
Create a new CustomerPrepayment record in DualEntry. A create request defaults to record_status 'posted'; use 'draft' to defer required-field validation. Returns the created prepayment with id, number, record_status, company_id, customer_id, date, amount, exchange_rate, memo, lines, attachments, created_at, updated_at. Required: date, company_id, customer_id, currency_iso_4217_code, exchange_rate, amount, bank_or_undeposited_funds_amount.
update_a_dual_entry_public_customer_prepayment_by_id
Update an existing CustomerPrepayment record in DualEntry by id. Validates all required fields and business rules. Returns the updated prepayment with id, number, record_status, company_id, customer_id, date, currency_iso_4217_code, exchange_rate, memo, amount, lines, attachments, created_at, updated_at. Required: id, date, company_id, customer_id, currency_iso_4217_code, exchange_rate, amount, bank_or_undeposited_funds_amount.
dual_entry_public_customer_prepayments_attach_attachment
Upload file attachments to a CustomerPrepayment record in DualEntry by record number. Returns the updated prepayment with id, number, record_status, company_id, customer_id, date, amount, attachments, created_at, updated_at. Required: record_number.
get_single_dual_entry_public_customer_prepayment_by_id
Get a single CustomerPrepayment record in DualEntry by id. Returns the prepayment with id, number, record_status, company_id, customer_id, date, currency_iso_4217_code, exchange_rate, memo, amount, lines, attachments, created_at, updated_at. Required: id.
dual_entry_public_customer_prepayments_partial_update
Partially update a DualEntry customer prepayment by sending only the fields to change. Returns: transaction_ids, attachments, created_by, updated_by, custom_fields, internal_id, number, company_id, company_name, company_currency, customer_id, customer_name, account_number, memo, check_number, currency_iso_4217_code, date, transaction_date, exchange_rate, undeposited_funds_currency,…. Required: id.
list_all_dual_entry_public_customer_prepayment_applications
List CustomerPrepaymentApplication records in DualEntry with filtering by company, customer, date, currency, and status. Returns each record with id, number, record_status, company_id, customer_id, date, items, attachments, and updated_at. Max 100 per page.
create_a_dual_entry_public_customer_prepayment_application
Create a new CustomerPrepaymentApplication record in DualEntry. Defaults to posted status; use record_status draft to defer validation. Returns: attachments, classifications, transaction_ids, created_by, updated_by, internal_id, number, items, company_id, company_name, company_currency, customer_id, customer_name, customer_prepayment_number, customer_credit_number, currency_iso_4217_code,…. Required: date, company_id, currency_iso_4217_code, exchange_rate.
update_a_dual_entry_public_customer_prepayment_application_by_id
Update an existing CustomerPrepaymentApplication record in DualEntry by id. Only draft records can be updated; attempting to update a posted record returns 422. Returns: attachments, classifications, transaction_ids, created_by, updated_by, internal_id, number, items, company_id, company_name, company_currency, customer_id, customer_name, customer_prepayment_number, customer_credit_number,…. Required: id, date, company_id, currency_iso_4217_code, exchange_rate.
public_customer_prepayment_applications_attach_attachment
Upload file attachments to a CustomerPrepaymentApplication record in DualEntry. Returns the updated record with id, number, record_status, company_id, customer_id, date, items, and attachments. Required: record_number.
get_public_customer_prepayment_application_by_id
Get a single CustomerPrepaymentApplication record in DualEntry by id. Returns: attachments, classifications, transaction_ids, created_by, updated_by, internal_id, number, items, company_id, company_name, company_currency, customer_id, customer_name, customer_prepayment_number, customer_credit_number, currency_iso_4217_code, exchange_rate, memo, date, transaction_date, amount, record_status,…. Required: id.
public_customer_prepayment_applications_partial_update
Partially update a CustomerPrepaymentApplication record in DualEntry, sending only the fields you want to change — omitted fields remain unchanged. Returns the updated record including id, number, customer_id, date, lines, record_status, created_at, and updated_at. Updates are subject to period locks, payment-applied restrictions, and approval-workflow rules. Required: id.
list_all_dual_entry_public_customer_deposits
List CustomerDeposit records in DualEntry with filtering by company, customer, date range, status, and currency. Returns: items, count. Max 100 per page.
create_a_dual_entry_public_customer_deposit
Create a new CustomerDeposit record in DualEntry. A create request defaults to record_status 'posted'; use 'draft' to defer validation. Returns: custom_fields, attachments, created_by, updated_by, internal_id, number, transaction_id, date, transaction_date, company_id, company_name, company_currency, account_id, currency_iso_4217_code, exchange_rate, amount, memo, items, record_status,…. Required: date, company_id, account_number, currency_iso_4217_code, exchange_rate, items.
update_a_dual_entry_public_customer_deposit_by_id
Update an existing CustomerDeposit record in DualEntry by id. Returns: custom_fields, attachments, created_by, updated_by, internal_id, number, transaction_id, date, transaction_date, company_id, company_name, company_currency, account_id, currency_iso_4217_code, exchange_rate, amount, memo, items, record_status, created_at, updated_at, id, customer_id, lines. Required: id, date, company_id, account_number, currency_iso_4217_code, exchange_rate, items.
dual_entry_public_customer_deposits_attach_attachment
Upload file attachments to a CustomerDeposit record in DualEntry. Returns the updated deposit object including id, number, company_id, customer_id, date, record_status, and updated_at. Required: record_number.
get_single_dual_entry_public_customer_deposit_by_id
Get a single CustomerDeposit record from DualEntry by id. Returns: custom_fields, attachments, created_by, updated_by, internal_id, number, transaction_id, date, transaction_date, company_id, company_name, company_currency, account_id, currency_iso_4217_code, exchange_rate, amount, memo, items, record_status, created_at, updated_at, id, customer_id, lines, success, errors. Required: id.
list_all_dual_entry_public_customer_refunds
List CustomerRefund records in DualEntry with filtering by company, customer, date range, currency, and record status. Returns: items, count. Max 100 per page.
create_a_dual_entry_public_customer_refund
Create a new CustomerRefund record in DualEntry. Returns: custom_fields, attachments, classifications, transaction_ids, created_by, updated_by, internal_id, number, account_number, items, company_id, company_name, company_currency, customer_id, customer_name, memo, check_number, date, transaction_date, currency_iso_4217_code, exchange_rate, bank_or_credit_card_amount, amount, record_status,…. Required: date, company_id, customer_id, account_number, currency_iso_4217_code, exchange_rate.
update_a_dual_entry_public_customer_refund_by_id
Update an existing CustomerRefund record in DualEntry by id (record number). Returns: custom_fields, attachments, classifications, transaction_ids, created_by, updated_by, internal_id, number, account_number, items, company_id, company_name, company_currency, customer_id, customer_name, memo, check_number, date, transaction_date, currency_iso_4217_code, exchange_rate, bank_or_credit_card_amount,…. Required: id, date, company_id, customer_id, account_number, currency_iso_4217_code, exchange_rate.
dual_entry_public_customer_refunds_attach_attachment
Upload file attachments to a DualEntry CustomerRefund record. Returns the updated refund object including id, number, customer_id, date, lines, and attachments. Required: record_number.
get_single_dual_entry_public_customer_refund_by_id
Get a specific DualEntry CustomerRefund record by its record number. Returns the full refund object including id, number, customer_id, date, record_status, lines, and attachments. Required: id.
list_all_dual_entry_public_customer_credits
List CustomerCredit records in DualEntry with filtering, ordering, and pagination. Returns records with id, number, customer_id, date, record_status, and lines. Max 100 records per page.
create_a_dual_entry_public_customer_credit
Create a new CustomerCredit record in DualEntry. Returns the created record including id, number, customer_id, date, record_status, and lines. Defaults to posted status; set record_status to draft to skip required-field validation. Required: date, company_id, currency_iso_4217_code, exchange_rate.
update_a_dual_entry_public_customer_credit_by_id
Update an existing CustomerCredit record in DualEntry with the provided data, validating all required fields and business rules. Returns the updated record including id, number, customer_id, date, record_status, and lines. Required: id, date, company_id, currency_iso_4217_code, exchange_rate.
get_single_dual_entry_public_customer_credit_by_id
Get a specific CustomerCredit record in DualEntry by its record number. Returns the full record including id, number, customer_id, date, record_status, and lines. Required: id.
dual_entry_public_customer_credits_partial_update
Partially update an existing CustomerCredit record in DualEntry by id. Send only the fields you want to change — omitted fields stay unchanged. Returns the updated record including id, number, customer_id, date, and record_status. Required: id.
list_all_dual_entry_public_cash_sales
List CashSale records in DualEntry with filtering and ordering options. Returns each record with id, number, company_id, customer_id, currency_iso_4217_code, exchange_rate, record_status, items, attachments, created_at, and updated_at. Max 100 per page.
create_a_dual_entry_public_cash_sale
Create a new CashSale record in DualEntry. Returns: bill_to_address, ship_to_address, billing_address, shipping_address, custom_fields, attachments, classifications, transaction_ids, bank_match_status, reconciliation_status, created_by, updated_by, internal_id, number, items, company_id, company_name, company_currency, customer_id, customer_name, account_number, amount, memo, check_number, date,…. Required: date, company_id, customer_id, currency_iso_4217_code, exchange_rate, bank_or_undeposited_account_amount.
update_a_dual_entry_public_cash_sale_by_id
Update an existing CashSale record in DualEntry by id. Returns: bill_to_address, ship_to_address, billing_address, shipping_address, custom_fields, attachments, classifications, transaction_ids, bank_match_status, reconciliation_status, created_by, updated_by, internal_id, number, items, company_id, company_name, company_currency, customer_id, customer_name, account_number, amount, memo,…. Required: id, date, company_id, customer_id, currency_iso_4217_code, exchange_rate, bank_or_undeposited_account_amount.
dual_entry_public_cash_sales_attach_attachment
Upload file attachments to a CashSale record in DualEntry. Returns the updated CashSale including id, number, company_id, customer_id, currency_iso_4217_code, items, attachments, and record_status. Required: record_number.
get_single_dual_entry_public_cash_sale_by_id
Get a single CashSale record from DualEntry by id. Returns: bill_to_address, ship_to_address, billing_address, shipping_address, custom_fields, attachments, classifications, transaction_ids, bank_match_status, reconciliation_status, created_by, updated_by, internal_id, number, items, company_id, company_name, company_currency, customer_id, customer_name, account_number, amount, memo,…. Required: id.
list_all_dual_entry_public_customer_payments
List CustomerPayment records in DualEntry with filtering and ordering options. Returns: items, count. Max 100 per page.
create_a_dual_entry_public_customer_payment
Create a new CustomerPayment record in DualEntry. Returns the created payment including id, number, customer_id, date, transaction_currency, record_status, and lines. Defaults to record_status 'posted' when omitted. Required: date, company_id, check_number, currency_iso_4217_code, exchange_rate, memo.
update_a_dual_entry_public_customer_payment_by_id
Update an existing CustomerPayment record in DualEntry by id (record number). Returns the updated payment including id, number, customer_id, date, transaction_currency, record_status, and lines. Required: id, date, company_id, check_number, currency_iso_4217_code, exchange_rate, memo.
get_single_dual_entry_public_customer_payment_by_id
Get a single CustomerPayment record in DualEntry by id (record number). Returns: custom_fields, attachments, classifications, transaction_ids, bank_match_status, reconciliation_status, created_by, updated_by, internal_id, number, account_number, items, company_id, company_name, company_currency, customer_id, customer_name, memo, check_number, date, transaction_date, currency_iso_4217_code,…. Required: id.
dual_entry_public_customer_payments_partial_update
Partially update an existing CustomerPayment record in DualEntry by id (record number). Send only the fields you want to change. Returns the updated payment including id, number, customer_id, date, transaction_currency, record_status, and lines. Required: id.
list_all_dual_entry_public_vendor_payments
List VendorPayment records in DualEntry with filtering by company, vendor, date range, currency, status, and linked bill or vendor credit. Returns: items, count. Max 100 per page.
create_a_dual_entry_public_vendor_payment
Create a new VendorPayment record in DualEntry. Returns the created vendor payment including id, number, company_id, vendor_id, record_status, and updated_at. Required: date, company_id, check_number, account_number, currency_iso_4217_code, exchange_rate, memo.
update_a_dual_entry_public_vendor_payment_by_id
Update an existing VendorPayment record in DualEntry by id. Returns the updated vendor payment including id, number, company_id, vendor_id, record_status, and updated_at. Required: id, date, company_id, check_number, account_number, currency_iso_4217_code, exchange_rate, memo.
get_single_dual_entry_public_vendor_payment_by_id
Get a single VendorPayment record in DualEntry by id. Returns the vendor payment including id, number, company_id, vendor_id, record_status, and updated_at. Required: id.
list_all_dual_entry_public_vendor_prepayments
List VendorPrepayment records in DualEntry with filtering by company, vendor, date range, currency, record status, and updated-at window, plus ordering options. Returns: items, count. Max 100 records per page.
create_a_dual_entry_public_vendor_prepayment
Create a new VendorPrepayment record in DualEntry. Returns: custom_fields, attachments, bank_match_status, reconciliation_status, internal_id, transaction_ids, number, company_id, company_name, company_currency, vendor_id, vendor_name, account_number, date, transaction_date, check_number, amount, used_amount, remaining_amount, currency_iso_4217_code, exchange_rate,…. Required: date, company_id, vendor_id, check_number, amount, currency_iso_4217_code, exchange_rate, bank_or_undeposited_funds_amount, memo.
update_a_dual_entry_public_vendor_prepayment_by_id
Update an existing vendor prepayment record in DualEntry with the provided data, validating all required fields and business rules. Returns: custom_fields, attachments, bank_match_status, reconciliation_status, internal_id, transaction_ids, number, company_id, company_name, company_currency, vendor_id, vendor_name, account_number, date, transaction_date, check_number, amount, used_amount,…. Required: id, date, company_id, vendor_id, check_number, amount, currency_iso_4217_code, exchange_rate, bank_or_undeposited_funds_amount, memo.
get_single_dual_entry_public_vendor_prepayment_by_id
Get a specific vendor prepayment record in DualEntry by its record number, retrieving all related data. Returns: custom_fields, attachments, bank_match_status, reconciliation_status, internal_id, transaction_ids, number, company_id, company_name, company_currency, vendor_id, vendor_name, account_number, date, transaction_date, check_number, amount, used_amount, remaining_amount,…. Required: id.
list_all_dual_entry_public_vendor_prepayment_applications
List vendor prepayment application records in DualEntry with filtering by company, vendor, bill, currency, status, and date range. Returns: items, count. Max 100 per page.
create_a_dual_entry_public_vendor_prepayment_application
Create a new vendor prepayment application record in DualEntry. Returns: attachments, internal_id, transaction_ids, number, company_id, company_name, company_currency, vendor_id, vendor_name, vendor_prepayment_number, vendor_credit_number, exchange_rate, memo, date, transaction_date, currency_iso_4217_code, amount, items, record_status, created_at, updated_at, id, bill_id, transaction_currency.…. Required: date, company_id, currency_iso_4217_code, exchange_rate, memo, items.
update_a_dual_entry_public_vendor_prepayment_application_by_id
Update an existing vendor prepayment application record in DualEntry by id. Returns: attachments, internal_id, transaction_ids, number, company_id, company_name, company_currency, vendor_id, vendor_name, vendor_prepayment_number, vendor_credit_number, exchange_rate, memo, date, transaction_date, currency_iso_4217_code, amount, items, record_status, created_at, updated_at, id, bill_id,…. Required: id, date, company_id, currency_iso_4217_code, exchange_rate, memo, items.
get_single_dual_entry_public_vendor_prepayment_application_by_id
Get a single vendor prepayment application record in DualEntry by id, including all related data. Returns: attachments, internal_id, transaction_ids, number, company_id, company_name, company_currency, vendor_id, vendor_name, vendor_prepayment_number, vendor_credit_number, exchange_rate, memo, date, transaction_date, currency_iso_4217_code, amount, items, record_status, created_at, updated_at,…. Required: id.
list_all_dual_entry_public_vendor_credits
List VendorCredit records in DualEntry with filtering by company, vendor, date range, currency, status, and linked bill. Returns: items, count, id, created_at, updated_at. Max 100 per page.
create_a_dual_entry_public_vendor_credit
Create a new VendorCredit in DualEntry. Defaults to posted status; use draft to skip required-field checks. Posted records require company_id, vendor_id, currency, exchange_rate, and at least one line. Returns: custom_fields, attachments, supply_date, place_of_supply, tax_registration_numbers, tax, classifications, transaction_ids, created_by, updated_by, internal_id, number, bill_number,…. Required: date, vendor_id, company_id, currency_iso_4217_code, exchange_rate.
update_a_dual_entry_public_vendor_credit_by_id
Update an existing VendorCredit in DualEntry by record number with full replacement validation. Returns: custom_fields, attachments, supply_date, place_of_supply, tax_registration_numbers, tax, classifications, transaction_ids, created_by, updated_by, internal_id, number, bill_number, direct_expense_number, date, transaction_date, company_id, company_name, company_currency, vendor_id,…. Required: id, date, vendor_id, company_id, currency_iso_4217_code, exchange_rate.
get_single_dual_entry_public_vendor_credit_by_id
Get a specific VendorCredit in DualEntry by its record number with all related line items and attachments. Returns: custom_fields, attachments, supply_date, place_of_supply, tax_registration_numbers, tax, classifications, transaction_ids, created_by, updated_by, internal_id, number, bill_number, direct_expense_number, date, transaction_date, company_id, company_name, company_currency, vendor_id,…. Required: id.
list_all_dual_entry_public_vendor_refunds
List DualEntry vendor refund records with filtering, search, and ordering options. Returns: items, count. Max 100 per page.
create_a_dual_entry_public_vendor_refund
Create a new DualEntry vendor refund record. Returns: custom_fields, attachments, classifications, transaction_ids, created_by, updated_by, internal_id, number, account_number, items, company_id, company_name, company_currency, vendor_id, vendor_name, memo, check_number, date, transaction_date, currency_iso_4217_code, exchange_rate, bank_or_credit_card_amount, amount, record_status,…. Required: date, company_id, vendor_id, account_number, currency_iso_4217_code, exchange_rate.
update_a_dual_entry_public_vendor_refund_by_id
Update an existing DualEntry vendor refund record by id. Returns: custom_fields, attachments, classifications, transaction_ids, created_by, updated_by, internal_id, number, account_number, items, company_id, company_name, company_currency, vendor_id, vendor_name, memo, check_number, date, transaction_date, currency_iso_4217_code, exchange_rate, bank_or_credit_card_amount, amount, record_status,…. Required: id, date, company_id, vendor_id, account_number, currency_iso_4217_code, exchange_rate.
dual_entry_public_vendor_refunds_attach_attachment
Upload file attachments to a DualEntry vendor refund record. Returns the updated vendor refund record including id, number, company_id, vendor_id, record_status, transaction_currency, and updated_at. Required: record_number.
get_single_dual_entry_public_vendor_refund_by_id
Get a single DualEntry vendor refund record by id. Returns: custom_fields, attachments, classifications, transaction_ids, created_by, updated_by, internal_id, number, account_number, items, company_id, company_name, company_currency, vendor_id, vendor_name, memo, check_number, date, transaction_date, currency_iso_4217_code, exchange_rate, bank_or_credit_card_amount, amount, record_status,…. Required: id.
list_all_dual_entry_public_direct_expenses
List DirectExpense records in DualEntry with filtering and ordering options. Returns each record with id, number, company_id, vendor_id, record_status, transaction_currency, attachments, items, created_at, updated_at. Max 100 per page.
create_a_dual_entry_public_direct_expense
Create a new DirectExpense record in DualEntry. A create request defaults to record_status 'posted'; set record_status to 'draft' to defer required-field validation. Returns: custom_fields, attachments, supply_date, place_of_supply, tax_registration_numbers, tax, classifications, transaction_ids, bank_match_status, reconciliation_status, created_by, updated_by, internal_id, number, items,…. Required: date, company_id, vendor_id, account_number, currency_iso_4217_code, bank_or_credit_card_amount.
update_a_dual_entry_public_direct_expense_by_id
Update an existing DirectExpense record in DualEntry by id with full replacement of the provided data. Validates all required fields and business rules. Returns: custom_fields, attachments, supply_date, place_of_supply, tax_registration_numbers, tax, classifications, transaction_ids, bank_match_status, reconciliation_status, created_by, updated_by, internal_id, number, items, company_id,…. Required: id, date, company_id, vendor_id, account_number, currency_iso_4217_code, bank_or_credit_card_amount.
dual_entry_public_direct_expenses_attach_attachment
Upload file attachments to a DualEntry direct expense by record_number. Returns the updated direct expense record including id, number, company_id, vendor_id, record_status, and attachments. Required: record_number.
get_single_dual_entry_public_direct_expense_by_id
Get a specific DualEntry direct expense by id. Returns: custom_fields, attachments, supply_date, place_of_supply, tax_registration_numbers, tax, classifications, transaction_ids, bank_match_status, reconciliation_status, created_by, updated_by, internal_id, number, items, company_id, company_name, company_currency, vendor_id, vendor_name, account_number, amount, memo, check_number, date,…. Required: id.
list_all_dual_entry_public_bank_transfers
List BankTransfer records. Returns: items, count.
create_a_dual_entry_public_bank_transfer
Create BankTransfer record. Returns: bank_match_status, reconciliation_status, created_by, updated_by, internal_id, number, transaction_id, debit_entry_id. Required: date, company_id, debit_bank_account_number, credit_bank_account_number, amount.
update_a_dual_entry_public_bank_transfer_by_id
Update BankTransfer record. Returns: bank_match_status, reconciliation_status, created_by, updated_by, internal_id, number, transaction_id, debit_entry_id. Required: id, date, company_id, debit_bank_account_number, credit_bank_account_number, amount.
get_single_dual_entry_public_bank_transfer_by_id
Get BankTransfer record. Returns: bank_match_status, reconciliation_status, created_by, updated_by, internal_id, number, transaction_id, debit_entry_id. Required: id.
list_all_dual_entry_public_statistical_journals
List DualEntry statistical journal records with filtering by company, account, period, date, and status. Returns: items, count, id, created_at, updated_at. Max 100 per page.
create_a_dual_entry_public_statistical_journal
Create a new DualEntry statistical journal record. Returns the created record including id, number, record_status, items, and attachments. Required: account_id.
update_a_dual_entry_public_statistical_journal_by_id
Update an existing DualEntry statistical journal record by id. Returns the updated record including id, number, record_status, items, and attachments. Required: id, account_id.
dual_entry_public_statistical_journals_attach_attachment
Upload file attachments to a DualEntry statistical journal record. Returns the updated record including id, number, record_status, items, and attachments. Required: record_number.
get_single_dual_entry_public_statistical_journal_by_id
Get a single DualEntry statistical journal record by id. Returns the full record including id, number, record_status, items, and attachments. Required: id.
list_all_dual_entry_recurring_invoices
List recurring invoices in DualEntry with filtering and ordering options. Returns: items, count. Max 100 per page.
create_a_dual_entry_recurring_invoice
Create a new recurring invoice in DualEntry. Returns the created recurring invoice including id, number, company_id, recurring_type, and updated_at. Required: rrule, memo, name, date, company_id, status, recurring_type, record_payload.
update_a_dual_entry_recurring_invoice_by_id
Update an existing recurring invoice in DualEntry by id. Returns the updated recurring invoice including id, number, company_id, recurring_type, and updated_at. Required: id, rrule, memo, name, date, company_id, status, recurring_type, record_payload.
delete_a_dual_entry_recurring_invoice_by_id
Delete a recurring invoice in DualEntry by id. Returns: success, errors. Required: id.
get_single_dual_entry_recurring_invoice_by_id
Get a single recurring invoice in DualEntry by id. Returns: created_by, updated_by, internal_id, number, name, memo, date, company_id, company_name, company_currency, status, record_payload, rrule, next_occurrence, last_generated, recurring_type, records, created_at, updated_at, id, event_id, api_version, topic, object_type, object, webhook_uuid. Required: id.
list_all_dual_entry_recurring_bills
List RecurringBill records in DualEntry with filtering by company, recurring type, and update timestamps. Returns: items, count, id, created_at, updated_at. Max 100 per page.
create_a_dual_entry_recurring_bill
Create a new RecurringBill in DualEntry. Defaults to record_status 'posted'; use 'draft' to defer required fields. Returns: created_by, updated_by, internal_id, number, name, memo, date, company_id, company_name, company_currency, status, record_payload, rrule, next_occurrence, last_generated, recurring_type, records, created_at, updated_at, id, vendor_id, currency_iso_4217_code, exchange_rate,…. Required: rrule, memo, name, date, company_id, status, recurring_type, record_payload.
update_a_dual_entry_recurring_bill_by_id
Update an existing RecurringBill in DualEntry by id. Send line item id to update existing lines; omit to create new ones. Returns: created_by, updated_by, internal_id, number, name, memo, date, company_id, company_name, company_currency, status, record_payload, rrule, next_occurrence, last_generated, recurring_type, records, created_at, updated_at, id, vendor_id, currency_iso_4217_code,…. Required: id, rrule, memo, name, date, company_id, status, recurring_type, record_payload.
delete_a_dual_entry_recurring_bill_by_id
Delete a RecurringBill in DualEntry by id. Returns: success, errors. Required: id.
get_single_dual_entry_recurring_bill_by_id
Get a single RecurringBill in DualEntry by id. Returns: created_by, updated_by, internal_id, number, name, memo, date, company_id, company_name, company_currency, status, record_payload, rrule, next_occurrence, last_generated, recurring_type, records, created_at, updated_at, id, vendor_id, currency_iso_4217_code, exchange_rate, due_date, term_id, record_status, items, expenses, attachments,…. Required: id.
list_all_dual_entry_recurring_journal_entries
List RecurringJournalEntry records in DualEntry with filtering by company, number, recurring type, and update timestamps. Returns: items, count, id, created_at, updated_at. Max 100 per page.
create_a_dual_entry_recurring_journal_entry
Create a new RecurringJournalEntry record in DualEntry. Returns the created record including id, number, company_id, memo, record_status, items, and updated_at. Required: rrule, memo, name, date, company_id, status, recurring_type, record_payload.
update_a_dual_entry_recurring_journal_entry_by_id
Update an existing RecurringJournalEntry record in DualEntry by its record number. Returns the updated record including id, number, company_id, memo, record_status, items, and updated_at. Required: id, rrule, memo, name, date, company_id, status, recurring_type, record_payload.
delete_a_dual_entry_recurring_journal_entry_by_id
Delete a RecurringJournalEntry record in DualEntry by its record number. Returns: success, errors. Required: id.
get_single_dual_entry_recurring_journal_entry_by_id
Get a single RecurringJournalEntry record in DualEntry by its record number with all related data. Returns: created_by, updated_by, internal_id, number, name, memo, date, company_id, company_name, company_currency, status, record_payload, rrule, next_occurrence, last_generated, recurring_type, records, created_at, updated_at, id, currency_iso_4217_code, exchange_rate, items, record_status,…. Required: id.
list_all_dual_entry_public_companies
List companies in DualEntry with filtering, search, and ordering capabilities. Returns: items, count. Results are capped at 100 records per page.
get_single_dual_entry_public_company_by_id
Get a single DualEntry company by id with all related data including company access. Returns: created_at, updated_at, vat_registration_numbers, created_by, updated_by, id, name, parent_company_id, currency_iso_4217_code, address, tin, tin_type, is_active, is_elimination, fiscal_year_end_month, event_id, api_version, topic, object_type, object, webhook_uuid. Required: id.
list_all_dual_entry_public_accounts
List chart of accounts in DualEntry with filtering by type, status, company, currency, and date range. Returns: items, count. Max 100 per page.
create_a_dual_entry_public_account
Create a new account in the DualEntry chart of accounts with support for parent-child relationships and company access restrictions. Returns: created_at, updated_at, created_by, updated_by, id, name, number, description, is_active, is_system, company_id, parent_account_id, account_type, currency_iso_4217_code, category_1099, system_ref, is_monetary, financial_account_id. Required: name, number, account_type, currency_iso_4217_code, is_active, parent_account_id.
get_single_dual_entry_public_account_by_id
Get a specific DualEntry account by id. Returns the full account object including id, name, number, account_type, is_active, is_system, description, created_at, updated_at. Required: id.
list_all_dual_entry_public_budgets
List budgets in DualEntry with filtering by budget type, calendar year, company, and record status. Returns: items, count. Max 100 per page.
get_single_dual_entry_public_budget_by_id
Get a single DualEntry budget by id. Returns: id, name, company_id, company_name, budget_type, calendar_year, start_date, end_date, record_status, actuals_offset_in_months, classifications, updated_at, event_id, api_version, topic, object_type, object, webhook_uuid, created_at. Required: id.
list_all_dual_entry_public_contracts
List revenue recognition contracts in DualEntry with filtering by company, customer, status, dates, recognition mode, and more. Returns: items, count. Max 100 per page.
create_a_dual_entry_public_contract
Create a revenue recognition contract in DualEntry with its performance obligations and recognition schedule. Returns: custom_fields, completed_approvals_count, total_approvals_count, integration_remote_records, id, number, company_id, company_name, company_currency, customer_id, customer_name, name, currency_iso_4217_code, memo, date, term_id, default_ar_account_id, contract_template_id,…. Required: status.
update_a_dual_entry_public_contract_by_id
Update an existing revenue recognition contract in DualEntry. Direct edits are rejected when usage or an active contract has milestones; obligation rows superseded by a posted change order or targeted by a draft change order cannot be edited. Returns: custom_fields, completed_approvals_count, total_approvals_count, integration_remote_records, id, number, company_id, company_name,…. Required: id, status.
get_single_dual_entry_public_contract_by_id
Get a single revenue recognition contract in DualEntry by id, including its performance obligations. Returns: custom_fields, completed_approvals_count, total_approvals_count, integration_remote_records, id, number, company_id, company_name, company_currency, customer_id, customer_name, name, currency_iso_4217_code, memo, date, term_id, default_ar_account_id, contract_template_id, start_date,…. Required: id.
dual_entry_public_contracts_partial_update
Partially update specific fields on a revenue recognition contract in DualEntry by sending only the fields you want to change — anything you don't send stays as it is. Direct edits are rejected when usage or an active contract has milestones. Returns: custom_fields, completed_approvals_count, total_approvals_count, integration_remote_records, id, number, company_id, company_name,…. Required: id.
list_all_dual_entry_contract_usages
List all obligation usage records for a DualEntry contract. Returns: id, contract_id, obligation_id, usage_date, quantity, rate, amount, effective_rate, revenue_recognition_id, status, invoice_status, memo, created_at, updated_at, classifications. Required: contract_id.
create_a_dual_entry_usage_bulk_upsert
Upsert usage records in batch for contract obligations in DualEntry. Items with an 'id' field are updated; items without are created, and the operation generates revenue recognitions and invoices. Returns an array of usage record objects including id. Required: contract_id, items.
list_all_dual_entry_contract_change_orders
List change orders for a DualEntry contract with optional filtering by status, date range, and search. Returns: items, count.
create_a_dual_entry_contract_change_order
Create a change order on a DualEntry contract. Incomplete payloads are saved as drafts; complete payloads are validated and applied. Returns: id, number, company_id, company_name, contract_id, contract_name, effective_date, memo, apply_cumulative_catchup, catchup_amount, transaction_id, record_status, is_incomplete, obligation_modifications, obligation_additions, change_summary, created_at,…. Required: contract_id.
update_a_dual_entry_contract_change_order_by_id
Update an existing change order on a DualEntry contract. Incomplete drafts stay drafts; completing required fields applies the change order. Returns: id, number, company_id, company_name, contract_id, contract_name, effective_date, memo, apply_cumulative_catchup, catchup_amount, transaction_id, record_status, is_incomplete, obligation_modifications, obligation_additions, change_summary,…. Required: id, contract_id.
delete_a_dual_entry_contract_change_order_by_id
Archive an existing change order on a DualEntry contract (soft delete). Returns: success, errors. Required: id, contract_id.
get_single_dual_entry_contract_change_order_by_id
Get a single change order by ID for a DualEntry contract, including the obligation change summary. Returns: id, number, company_id, company_name, contract_id, contract_name, effective_date, memo, apply_cumulative_catchup, catchup_amount, transaction_id, record_status, is_incomplete, obligation_modifications, obligation_additions, change_summary, created_at, updated_at, event_id, api_version,…. Required: id, contract_id.
list_all_dual_entry_public_customers
List DualEntry customers with filtering, search, and ordering capabilities. Returns: items, count. Max 100 per page.
create_a_dual_entry_public_customer
Create a new customer in DualEntry with address and tax information. Set is_taxable to false for a tax-exempt customer (defaults to false). Returns the created customer including id, name, email, address, is_taxable, record_status, and updated_at. Required: name, email, address, country, phone, website.
update_a_dual_entry_public_customer_by_id
Update a DualEntry customer by id, sending only the fields you want to change. Returns the updated customer including id, name, email, address, is_taxable, record_status, and updated_at. Required: id.
delete_a_dual_entry_public_customer_by_id
Delete a DualEntry customer by id. Fails if the customer is referenced by other records. Returns: success, errors. Required: id.
get_single_dual_entry_public_customer_by_id
Get a single DualEntry customer by id. Returns the customer object including id, name, email, address, is_taxable, record_status, and updated_at. Required: id.
dual_entry_public_customers_partial_update
Partially update a DualEntry customer by id — send only the fields you want to change; send null to clear a nullable field. Returns: created_at, updated_at, custom_fields, created_by, updated_by, approval_status, next_approvers, rejected_by, id, address, country, name, unique_id, website, email, customer_type, is_active, phone, record_status, is_taxable, default_tax_code, tax_registration_number,…. Required: id.
list_all_dual_entry_public_items
List items (products and services) in DualEntry with filtering by name, item type, account assignments, active status, and update timestamps. Returns: items, count. Max 100 per page.
create_a_dual_entry_public_item
Create a new item (product or service) in DualEntry with description and associated revenue or expense accounts. Returns: created_at, updated_at, created_by, updated_by, id, name, sku, description, item_type, is_active, record_status, product_tax_code_id, expense_account_id, income_account_id, deferral_account_id, asset_account_id, discount_account_id, default_classification_line_ids,…. Required: name, is_active, sku, item_type.
update_a_dual_entry_public_item_by_id
Update an existing item's description and associated accounts in DualEntry. Returns: created_at, updated_at, created_by, updated_by, id, name, sku, description, item_type, is_active, record_status, product_tax_code_id, expense_account_id, income_account_id, deferral_account_id, asset_account_id, discount_account_id, default_classification_line_ids, default_rev_rec_method,…. Required: id, name, is_active, sku, item_type.
delete_a_dual_entry_public_item_by_id
Delete an item in DualEntry so it can no longer be added to invoices or bills. Returns: success, errors. Required: id.
get_single_dual_entry_public_item_by_id
Get a single item by id in DualEntry, including its description and associated accounts. Returns: created_at, updated_at, created_by, updated_by, id, name, sku, description, item_type, is_active, record_status, product_tax_code_id, expense_account_id, income_account_id, deferral_account_id, asset_account_id, discount_account_id, default_classification_line_ids, default_rev_rec_method,…. Required: id.
dual_entry_public_items_partial_update
Partially update a DualEntry item by id. Send only the fields you want to change; send null to clear a nullable field. Returns: created_at, updated_at, created_by, updated_by, id, name, sku, description, item_type, is_active, record_status, product_tax_code_id, expense_account_id, income_account_id, deferral_account_id, asset_account_id, discount_account_id, default_classification_line_ids,…. Required: id.
list_all_dual_entry_public_vendors
List vendors in DualEntry with filtering, search, and ordering capabilities. Returns: items, count. Max 100 per page.
create_a_dual_entry_public_vendor
Create a new vendor in DualEntry with address and payment information. Returns: created_at, updated_at, custom_fields, attachments, term_id, term_name, preferred_payment_method_id, preferred_payment_method_name, created_by, updated_by, approval_status, next_approvers, rejected_by, id, address, vendor_type, company_id, company_name, customer_account_number, name_on_check, bank_account_number,…. Required: is_active, vendor_type, name, email, phone, website.
update_a_dual_entry_public_vendor_by_id
Update a vendor in DualEntry by id, sending only the fields you want to change. Custom fields can be set by field name or id. Returns: created_at, updated_at, custom_fields, attachments, term_id, term_name, preferred_payment_method_id, preferred_payment_method_name, created_by, updated_by, approval_status, next_approvers, rejected_by, id, address, vendor_type, company_id, company_name,…. Required: id.
delete_a_dual_entry_public_vendor_by_id
Delete a vendor in DualEntry by id. Returns: success, errors. Fails if the vendor is referenced by other records. Required: id.
get_single_dual_entry_public_vendor_by_id
Get a single vendor in DualEntry by id with address, attachments, and payment information. Returns: created_at, updated_at, custom_fields, attachments, term_id, term_name, preferred_payment_method_id, preferred_payment_method_name, created_by, updated_by, approval_status, next_approvers, rejected_by, id, address, vendor_type, company_id, company_name, customer_account_number, name_on_check,…. Required: id.
dual_entry_public_vendors_partial_update
Partially update a DualEntry vendor by sending only the fields you want to change; send null to clear a nullable field. Returns the updated vendor including id, name, tin, is_active, and custom_fields. Required: id.
list_all_dual_entry_public_classifications
List classification dimensions in DualEntry, such as departments, locations, or projects. Returns each classification with id, name, is_active, is_required, selections, and updated_at. Max 100 per page.
create_a_dual_entry_public_classification
Create a classification dimension in DualEntry used to tag and analyze transactions across multiple dimensions. Returns the created classification including id, name, is_active, is_required, selections, and updated_at. Required: name, is_active, selections, required_for_records, parent_id.
update_a_dual_entry_public_classification_by_id
Update an existing classification dimension's name and settings in DualEntry. Returns the updated classification including id, name, is_active, is_required, selections, and updated_at. Required: id, name, is_active, selections, required_for_records, parent_id.
delete_a_dual_entry_public_classification_by_id
Delete a classification dimension in DualEntry by id so it can no longer be assigned to transactions. Returns a success response. Required: id.
get_single_dual_entry_public_classification_by_id
Get a single classification dimension in DualEntry by id. Returns: created_at, updated_at, created_by, updated_by, id, selections, required_for_records, parent_id, parent_name, name, is_active, is_required, event_id, api_version, topic, object_type, object, webhook_uuid. Required: id.
dual_entry_public_classifications_partial_update
Partially update a DualEntry classification by id, sending only the fields to change. Returns the updated classification including id, name, is_active, selections, required_for_records, parent_id, and updated_at. Omitting selections or required_for_records preserves existing values; sending [] clears them. Lines in use elsewhere return 422. Required: id.
list_all_dual_entry_public_classifications_lines
List classification lines (selections) in DualEntry that can be assigned to transaction line items. Returns: items, count. Max 100 per page.
list_all_dual_entry_public_custom_fields
List custom field definitions in DualEntry with filtering by field type, record type, active status, company scope, and update timestamps. Returns: items, count. Max 100 per page.
create_a_dual_entry_public_custom_field
Create a new custom field definition in DualEntry. Supply applies_to to bind the field to record types and company_ids (or company_id) to scope it to specific companies. Returns: created_at, updated_at, id, company_id, company_ids, name, description, helper_text, field_type, applies_to, default_value, options, is_active. Required: name, field_type, applies_to.
update_a_dual_entry_public_custom_field_by_id
Update an existing custom field definition in DualEntry by id. applies_to and company_ids are replaced wholesale — send the full desired list. field_type cannot be changed after creation. Returns: created_at, updated_at, id, company_id, company_ids, name, description, helper_text, field_type, applies_to, default_value, options, is_active. Required: id, name, field_type, applies_to.
delete_a_dual_entry_public_custom_field_by_id
Delete a custom field definition in DualEntry by id. Fails with 422 if any record already has a value stored against this field — clear those values first, or archive via is_active=false instead. Returns: success, errors. Required: id.
get_single_dual_entry_public_custom_field_by_id
Get a single custom field definition in DualEntry by id. Returns: created_at, updated_at, id, company_id, company_ids, name, description, helper_text, field_type, applies_to, default_value, options, is_active, success, errors. Required: id.
list_all_dual_entry_public_paper_checks
List paper checks in DualEntry with filtering by status, transaction type, vendor, customer, bank account, and date range. Returns: items, count. Max 100 per page.
delete_a_dual_entry_public_paper_check_by_id
Archive a paper check by id in DualEntry, setting its status to archived and removing it from active workflows. Returns the archived paper check object including id, record_status, transaction_type, created_at. Required: id.
get_single_dual_entry_public_paper_check_by_id
Get a single paper check by id in DualEntry. Returns the full paper check object including id, record_status, transaction_type, company_id, created_at. Required: id.
create_a_dual_entry_paper_checks_print_now
Create and immediately print a paper check for a transaction in DualEntry, generating the PDF and marking the check as printed in a single operation. Returns the created paper check details along with base64-encoded PDF content. Supports direct expenses, vendor payments, vendor prepayments, and customer refunds. Required: transaction_id.
create_a_dual_entry_paper_checks_print_later
Queue paper checks for later batch printing in DualEntry. Returns a list of created paper checks with id, record_status, and created_at, all with record_status set to 'not_printed'. The request body must contain transaction identifiers for the transactions to queue as paper checks. Print queued checks together via the print-batch endpoint. Required: transaction_ids.
dual_entry_paper_checks_print_batches_bulk_update
Batch print multiple queued paper checks in DualEntry, assigning sequential check numbers and returning a merged PDF. Returns: pdf_content, printed_checks, total_printed. All specified checks must have status 'not_printed' and must be queued via POST /print-later/ first. Required: paper_check_ids.
list_all_dual_entry_public_workflows
List approval workflows in DualEntry with filtering by company, record type, and active status. Returns: items, count. Default ordering is by priority descending then id descending. Max 100 per page.
get_single_dual_entry_public_workflow_by_id
Get a DualEntry approval workflow by id, including all steps, conditions, and approvers. Returns: id, record_type, name, is_active, description, version, priority, company_ids, applies_to_all_companies, allow_self_approval, steps, pending_approval_count, roles, company_id, conditions, approvers, event_id, api_version, topic, object_type, object, webhook_uuid, created_at. Required: id.
list_all_dual_entry_workflows_execution_states
List workflow execution states (approval statuses for records) in DualEntry with optional filtering by workflow, status, record type, and initiator. Returns: items, count. Max 100 per page.
get_single_dual_entry_workflows_execution_state_by_id
Get a single workflow execution state by id in DualEntry. Returns: id, workflow_id, workflow_name, record_id, record_type, current_step, current_substep, status, requested_approver_ids, approved_by_ids, rejected_by_id, rejection_reason, initiator_id, created_at, updated_at, event_id, api_version, topic, object_type, object, webhook_uuid. Required: id.
list_all_dual_entry_execution_state_actions
List all approval actions (history) for a specific workflow execution state in DualEntry. Returns an array of action records including id, action_type, approver_id, workflow_execution_state_id, record_type, and created_at. Required: state_id.
list_all_dual_entry_workflows_actions
List approval actions (history) in DualEntry with filtering by workflow execution state, record type, record ID, action type, approver, and date range. Returns: items, count. Max 100 per page.
list_all_dual_entry_workflows_roles
List all active roles available for use in DualEntry approval workflow conditions. Returns: id, name, descriptive_name, success, errors. No parameters required.
list_all_dual_entry_workflow_versions
List version history for a DualEntry workflow including changes, timestamps, and optionally full snapshots. Returns: id, version_number, changed_by, changed_at, changes_summary, snapshot, attributes. Required: workflow_id.
list_all_dual_entry_public_inboxes
Get a summary of pending approvals in the DualEntry inbox for the entire organization. Returns the summary object with counts of pending approvals.
list_all_dual_entry_inbox_transactions
List all DualEntry transactions (invoices, bills, purchase orders, sales orders, journal entries) with workflow approval status for the organization. Returns: items, count. Max 100 per page.
get_single_dual_entry_inbox_transaction_by_id
Get approval details for a specific DualEntry transaction by id. Returns empty dict if the transaction is not in the inbox. Returns: event_id, api_version, topic, object_type, object, webhook_uuid, created_at. Required: id, transaction_type.
list_all_dual_entry_inbox_records
List non-monetary records (customers, vendors) with workflow approval status for the organization in DualEntry. Returns: items, count. Max 100 per page.
get_single_dual_entry_inbox_record_by_id
Get approval details for a specific non-monetary record in DualEntry by id. Returns: event_id, api_version, topic, object_type, object, webhook_uuid, created_at. Returns an empty object if the record is not in the inbox. Required: id, record_type.
list_all_dual_entry_public_fixed_assets
List fixed assets in DualEntry with multi-book depreciation schedules. Returns each fixed asset with id, number, company_id, status, record_status, purchase_date, vendor_id, customer_id, depreciation_schedules, and attachments. Max 100 per page.
create_a_dual_entry_public_fixed_asset
Create a new fixed asset in DualEntry with multi-book depreciation schedules. Returns the created fixed asset including id, number, company_id, status, record_status, purchase_date, depreciation_schedules, and attachments. Required: company_id, name, currency_iso_4217_code, exchange_rate, purchase_date, cost, asset_account_number, expense_account_number, accumulation_account_number, depreciation_schedules.
update_a_dual_entry_public_fixed_asset_by_id
Fully update a DualEntry fixed asset by id, including multi-book depreciation schedules. Returns the updated fixed asset including id, number, company_id, status, record_status, purchase_date, depreciation_schedules, and attachments. Required: id, company_id, name, currency_iso_4217_code, exchange_rate, purchase_date, cost, asset_account_number, expense_account_number, accumulation_account_number, depreciation_schedules.
delete_a_dual_entry_public_fixed_asset_by_id
Archive a DualEntry fixed asset by id (soft delete). This also archives any posted depreciation transactions. Returns: success, errors. Required: id.
get_single_dual_entry_public_fixed_asset_by_id
Get a specific DualEntry fixed asset by id, including its multi-book depreciation schedules. Returns: created_by, updated_by, internal_id, number, company_id, company_name, name, serial_number, currency_iso_4217_code, exchange_rate, purchase_date, memo, cost, status, record_status, asset_account_number, expense_account_number, accumulation_account_number, vendor_id, vendor_name, customer_id,…. Required: id.
dual_entry_public_fixed_assets_partial_update
Partially update a DualEntry fixed asset by id, sending only the fields you want to change. If depreciation_schedules is sent, it replaces all existing schedules. Returns the updated fixed asset including its id, number, status, and depreciation schedules. Required: id.
list_all_dual_entry_schedules
List chronological depreciation, disposal, and revaluation events for a specific fixed asset and depreciation book in DualEntry, optionally narrowed by a date range. Returns an array of depreciation schedule items (PublicDepreciationScheduleItemOut). Required: fixed_asset_number, depreciation_book_id.
list_all_dual_entry_public_webhooks
List registered webhooks in DualEntry. Returns: items, count. The signing secret is never included in list responses. Max 100 per page.
create_a_dual_entry_public_webhook
Register a new webhook endpoint in DualEntry for event notifications. Returns: uuid, url, topics, is_active, disabled_at, disabled_reason, created_at, last_modified_at, secret. The signing secret is returned only on creation. Required: url.
update_a_dual_entry_public_webhook_by_id
Update a DualEntry webhook by id to change its URL, replace subscribed topics, or toggle active state. Re-enabling clears the auto-disable state. Returns: uuid, url, topics, is_active, disabled_at, disabled_reason, created_at, last_modified_at. Required: id.
delete_a_dual_entry_public_webhook_by_id
Delete a DualEntry webhook by UUID. Deletion cascades to its delivery rows. Returns: success, errors. Required: id.
get_single_dual_entry_public_webhook_by_id
Get a specific DualEntry webhook by UUID. Returns: uuid, url, topics, is_active, disabled_at, disabled_reason, created_at, last_modified_at, event_id, api_version, topic, object_type, object, webhook_uuid. Required: id.
dual_entry_public_webhooks_partial_update
Partially update a DualEntry webhook — change the URL, replace subscribed topics, or toggle active state. Returns: uuid, url, topics, is_active, disabled_at, disabled_reason, created_at, last_modified_at, updated_at, event_id, api_version, topic, object_type, object, webhook_uuid. Re-enabling a disabled webhook clears its auto-disable state; events missed while disabled are not…. Required: id.
list_all_dual_entry_webhooks_topics
List all subscribable webhook topics in DualEntry. Returns an array of topic objects, each containing a name following the pattern
list_all_dual_entry_webhook_deliveries
List webhook delivery attempts (event log) for a specific webhook in DualEntry. Returns: items, count. Required: webhook_uuid.
list_all_dual_entry_public_export_jobs
List DualEntry export jobs for the organization, most recent first. Returns: items, count. Filter by status and customize ordering. Max 100 per page.
create_a_dual_entry_public_export_job
Request a data export in DualEntry, triggering an off-cycle data refresh that starts when capacity allows. Returns: job, deduplicated, id. Always returns 202 Accepted; calling while an export is running returns the in-flight job with deduplicated true. Poll the get endpoint for completion.
get_single_dual_entry_public_export_job_by_id
Get a single DualEntry export job by id to check its status. Returns: id, integration_id, status, error, created_at, started_at, completed_at, event_id, api_version, topic, object_type, object, webhook_uuid. Poll this after requesting an export. Required: id.
list_all_dual_entry_public_exchange_rates
List DualEntry exchange rates for a base currency and one or more quote currencies, optionally filtered by a single effective date or an inclusive date range. Returns: items, count. start_date and end_date must be supplied together; effective_date is used on its own for a single-date lookup. Required: base_currency, transaction_currency.
list_all_dual_entry_public_depreciation_books
List DualEntry depreciation books, optionally filtered by update timestamp. Each organization has at least one book (BOOK, the posting book to GL), with optional tax books like FEDERAL, AMT, or STATE_*. Returns: items, count. Max 100 records per page.
get_single_dual_entry_public_depreciation_book_by_id
Get a single DualEntry depreciation book by its book code. Returns: created_at, updated_at, id, code, name, description, is_active, is_posting, event_id, api_version, topic, object_type, object, webhook_uuid.g., BOOK, FEDERAL, AMT). Required: id.
list_all_dual_entry_public_intercompany_journal_entries
List intercompany journal entries in DualEntry with filtering by company, date range, record status, approval status, and amount bounds. Returns: items, count, id, updated_at. Max 100 per page.
create_a_dual_entry_public_intercompany_journal_entry
Create an intercompany journal entry in DualEntry. Lines must span at least two distinct companies and total debits must equal total credits. Returns: created_at, updated_at, attachments, approval_status, next_approvers, rejected_by, record_number, date, transaction_date, memo, currency_iso_4217_code, exchange_rate, record_status, items, companies, company_ids, id, number, company_id, amount.…. Required: date, currency_iso_4217_code, exchange_rate, items.
update_a_dual_entry_public_intercompany_journal_entry_by_id
Update a DualEntry intercompany journal entry by id. Full replacement — only draft records can be updated; posted records return 422. Lines must span at least two distinct companies and total debits must equal total credits. Returns: created_at, updated_at, attachments, approval_status, next_approvers, rejected_by, record_number, date, transaction_date, memo, currency_iso_4217_code,…. Required: id, date, currency_iso_4217_code, exchange_rate, items.
get_single_dual_entry_public_intercompany_journal_entry_by_id
Get a single DualEntry intercompany journal entry by id (record number). Returns: created_at, updated_at, attachments, approval_status, next_approvers, rejected_by, record_number, date, transaction_date, memo, currency_iso_4217_code, exchange_rate, record_status, items, companies, company_ids, id, number, company_id, amount, event_id, api_version, topic, object_type, object, webhook_uuid.…. Required: id.
list_all_dual_entry_public_vat_rates
List VAT rates in DualEntry, filterable by country_code, rate_type, tax_type, or is_active. Returns: items, count. Use the id as vat_rate_id when creating or updating transaction line items. Max 100 per page.
get_single_dual_entry_public_vat_rate_by_id
Get a single DualEntry VAT rate by id. Returns the full VAT rate details including id, country_code, rate, rate_type, tax_type, valid_from, valid_to, and is_active. Required: id.
list_all_dual_entry_public_gst_tax_rates
List GST tax rates in DualEntry with optional filters by country_code, tax_treatment, is_active, or updated range. Returns each rate with id, country_code, tax_treatment, rate, is_active, updated_at, and component breakdown. Max 100 per page.
get_single_dual_entry_public_gst_tax_rate_by_id
Get a single GST tax rate by id in DualEntry. Returns the full tax rate details including id, country_code, tax_treatment, rate, is_active, updated_at, and component breakdown (e.g., CGST + SGST, GST + PST). Required: id.
list_all_dual_entry_public_product_tax_codes
List DualEntry product tax codes available to the organization, including global tax codes. Returns: items, count. Max 100 per page.
create_a_dual_entry_public_product_tax_code
Create an organization-scoped product tax code in DualEntry. Global product tax codes are system managed and cannot be created via the API. Returns: created_at, updated_at, id, code, description, source, is_active, is_global. Required: code, description.
update_a_dual_entry_public_product_tax_code_by_id
Update an organization-scoped product tax code in DualEntry by id. Global product tax codes are system managed and cannot be updated via the API. Returns: created_at, updated_at, id, code, description, source, is_active, is_global. Required: id.
delete_a_dual_entry_public_product_tax_code_by_id
Delete an organization-scoped DualEntry product tax code by id. Returns: success, errors. Global product tax codes are system managed and cannot be deleted. Required: id.
get_single_dual_entry_public_product_tax_code_by_id
Get a single DualEntry product tax code by id. Returns: created_at, updated_at, id, code, description, source, is_active, is_global, event_id, api_version, topic, object_type, object, webhook_uuid. Global product tax codes are list-only and cannot be retrieved individually. Required: id.
create_a_dual_entry_bank_match_populate
Trigger the DualEntry bank-match suggestion pipeline to run immediately. Suggestions auto-refresh every 5 minutes, so this endpoint is optional but remains for backward compatibility. Returns 202 Accepted immediately with an opaque success body. Poll the status-counts endpoint to watch progress, then use the suggestions endpoint to read results.
list_all_dual_entry_bank_match_suggestions
List DualEntry bank-match suggestions, newest first. Each suggestion pairs a bank-feed row with an accounting transaction — either an existing one (`match`) or one DualEntry would draft if accepted (`create`). Returns: items, count. Max 100 per page.
get_single_dual_entry_bank_match_suggestion_by_id
Get a single DualEntry bank-match suggestion by id. Each suggestion pairs a bank-feed row with an accounting transaction — either an existing one (`match`) or one DualEntry would draft if accepted (`create`). Returns: id, financial_transaction_id, transaction_id, suggestion_type, confidence_score, is_highest_ranked, success, errors. Required: id.
list_all_dual_entry_bank_match_status_counts
Get DualEntry bank-match pipeline progress as per-stage row counts, useful for polling after calling /populate/. Returns: unprocessed, awaiting_setup, deterministic_suggested, awaiting_ai, ai_in_progress, ai_suggested, ai_no_match, no_match, excluded, matched. The pipeline is still running while unprocessed, awaiting_ai, or ai_in_progress is non-zero. Expired bank-feed rows are excluded from the…
list_all_dual_entry_bank_match_bank_transactions
List bank-feed transactions in DualEntry's Bank Match workspace, ordered newest first. Returns rows with id, financial_account_id, date, amount, description, matching_status, is_posted, counterparty, source_id, source_type, and updated_at. Max 100 per page.
get_single_dual_entry_bank_match_bank_transaction_by_id
Get a single bank-feed transaction in DualEntry by id. Returns the bank-feed row including id, financial_account_id, date, amount, description, matching_status, is_posted, counterparty, source_id, source_type, and updated_at. Required: id.
create_a_dual_entry_bank_match_match
Confirm a bank-match in DualEntry by recording that bank-feed row(s) correspond to DualEntry transaction(s) or entry(s). On success each row's matching_status flips to matched and the response returns match_group_id. Pass financial_transaction_ids plus transaction_ids or entry_ids for an M:N match. Amounts must reconcile in a single currency, all rows must share the same sign, and no item may…
create_a_dual_entry_bank_match_unmatch
Undo a bank-match in DualEntry by dissolving the entire match group that a bank-feed row or match_group_id belongs to. Returns: success, errors. Provide exactly one of financial_transaction_id or match_group_id in the request body; safe to call when nothing is currently matched.
list_all_dual_entry_public_bank_connections
List customer API bank connections registered for the calling organization in DualEntry. Returns: items, count. Filter by updated_after and updated_before date ranges.
create_a_dual_entry_public_bank_connection
Register or upsert a customer-built bank connection with optional accounts in DualEntry under source_type=customer_api. Returns: created_at, updated_at, id, connection_source_id, institution_name, status, successfully_aggregated_at, last_sync_at, accounts. Required: connection_source_id, institution_name.
delete_a_dual_entry_public_bank_connection_by_id
Unregister a customer_api bank connection in DualEntry by id. Soft-disables the registration so further pushes and account registration are rejected; history is kept. Returns: success, errors. Required: id.
get_single_dual_entry_public_bank_connection_by_id
Retrieve a single customer_api bank connection in DualEntry by id. Returns: created_at, updated_at, id, connection_source_id, institution_name, status, successfully_aggregated_at, last_sync_at, accounts, event_id, api_version, topic, object_type, object, webhook_uuid. Required: id.
create_a_dual_entry_account_transaction
Batch upsert bank-feed transactions for a registered DualEntry customer_api account identified by financial account id. Returns: success, results. Max batch size is 250 items; one bad item does not roll back the rest of the batch. Required: financial_account_id, transactions.
list_all_dual_entry_bank_connection_accounts
List accounts registered under a DualEntry customer API bank connection. Returns each account with id, account_id, and account_name. Required: connection_id.
create_a_dual_entry_bank_connection_account
Upsert accounts under an existing customer API bank connection in DualEntry. Returns the bank connection object including id and accounts (each with id, account_id, and account_name). Required: connection_id, accounts.
create_a_dual_entry_oauth_authorize
Start the CLI OAuth flow in DualEntry to obtain the authorization URL where the user grants access. Returns the authorization response object containing the URL the user visits to complete the grant step. The request body is required. Required: redirect_uri, code_challenge, code_challenge_method, state.
list_all_dual_entry_oauth_callbacks
Handle the OAuth callback from WorkOS to complete the CLI authorization flow in DualEntry. Returns an empty 204 response on success.
create_a_dual_entry_oauth_token
Exchange an OAuth authorization code for a DualEntry API key in the CLI OAuth flow. Returns a TokenResponse object whose field-level properties are not documented in the discovered source. Required: grant_type, code, code_verifier, redirect_uri.
Why Truto
Why use Truto’s MCP server for DualEntry
Other MCP servers give you a static tool list for one app. Truto gives you a managed, multi-tenant MCP infrastructure across 800+ integrations.
Auto-generated, always up to date
Tools are dynamically generated from curated documentation — not hand-coded. As integrations evolve, tools stay current without manual maintenance.
Fine-grained access control
Scope each MCP server to read-only, write-only, specific methods, or tagged tool groups. Expose only what your AI agent needs — nothing more.
Multi-tenant by design
Each MCP server is scoped to a single connected account with its own credentials. The URL itself is the auth token — no shared secrets, no credential leaking across tenants.
Works with every MCP client
Standard JSON-RPC 2.0 protocol. Paste the URL into Claude, ChatGPT, Cursor, or any MCP-compatible agent framework — tools are discovered automatically.
Built-in auth, rate limits, and error handling
Tool calls execute through Truto’s proxy layer with automatic OAuth refresh, rate-limit handling, and normalized error responses. No raw API plumbing in your agent.
Expiring and auditable servers
Create time-limited MCP servers for contractors or automated workflows. Optional dual-auth requires both the URL and a Truto API token for high-security environments.
How It Works
From zero to integrated
Go live with DualEntry in under an hour. No boilerplate, no maintenance burden.
Link your customer’s DualEntry account
Use Truto’s frontend SDK to connect your customer’s DualEntry account. We handle all OAuth and API key flows — you don’t need to create the OAuth app.
We handle authentication
Don’t spend time refreshing access tokens or figuring out secure storage. We handle it and inject credentials into every API request.
Call our API, we call DualEntry
Truto’s Proxy API is a 1-to-1 mapping of the DualEntry API. You call us, we call DualEntry, and pass the response back in the same cycle.
Unified response format
Every response follows a single format across all integrations. We translate DualEntry’s pagination into unified cursor-based pagination. Data is always in the result attribute.
FAQs
Common questions about DualEntry on Truto
Authentication, rate limits, data freshness, and everything else you need to know before you integrate.
How does authentication to DualEntry work through Truto?
DualEntry uses OAuth. Truto handles the full authorize, callback, and token exchange flow so your end users connect their DualEntry account through a hosted or embedded consent screen, and Truto stores and refreshes tokens on your behalf.
Which DualEntry objects can I read and write today?
You can work with AR objects (Invoices, SalesOrders, CashSales, CustomerPayments, Prepayments, Credits, Refunds, Deposits), AP objects (Bills, PurchaseOrders, VendorPayments, VendorPrepayments, VendorCredits, VendorRefunds, DirectExpenses), GL objects (JournalEntries, IntercompanyJournalEntries, StatisticalJournals, BankTransfers), master data (Customers, Vendors, Items, Accounts, Classifications, CustomFields, Companies), plus Contracts, FixedAssets, Paper Checks, Bank Match, Bank Connections, Workflows, and Webhooks.
Can I attach files like PDFs or receipts to transactions?
Yes. Most transactional objects — Invoices, Bills, SalesOrders, PurchaseOrders, JournalEntries, CashSales, CustomerPrepayments, CustomerDeposits, CustomerRefunds, VendorRefunds, DirectExpenses, StatisticalJournals, and Prepayment Applications — expose an attach_attachment endpoint for uploading supporting documents.
How do I get real-time updates instead of polling?
DualEntry supports Webhooks. Through Truto you can create and manage webhook subscriptions, list available webhook topics, and inspect webhook deliveries, so your app reacts to events like invoice creation or workflow state changes without polling.
Does the integration support multi-entity and multi-currency setups?
Yes. You can list Companies and scope transactions to a specific company_id, post IntercompanyJournalEntries that span multiple entities, and use ExchangeRates plus currency fields on transactions for multi-currency accounting.
Can I extend DualEntry records with custom fields?
Yes. DualEntry exposes a Custom Fields API — you can list, create, update, and delete custom field definitions, and read or write their values on the supported records those fields are attached to.
How are large data pulls and exports handled?
For bulk data movement, DualEntry provides an Export Jobs API. You can create an export job, poll it by id until completion, and then process the results, which is the recommended pattern for historical backfills instead of paginating through list endpoints.
From the Blog
DualEntry integration guides
Deep dives, architecture guides, and practical tutorials for building DualEntry integrations.
DualEntry
Get DualEntry integrated into your app
Our team understands what it takes to make a DualEntry integration successful. A short, crisp 30 minute call with folks who understand the problem.