# DualEntry Public API

Version: 1.0.0

## Servers

Production environment
```
https://api.dualentry.com
```

Development environment (for testing)
```
https://api-dev.dualentry.com
```

## Download OpenAPI description

[DualEntry Public API](https://docs.dualentry.com/_bundle/resources-v1.yaml)

## Health

Monitor API availability and service status. Use these endpoints to verify connectivity and check if the API is operational.

### API Health Check

 - [GET /public/v1/health/](https://docs.dualentry.com/resources-v1/health/core_api_public_public_router_health_check.md): Verify that the DualEntry Public API is operational and accepting requests.

This endpoint provides a quick way to:
- Confirm API connectivity
- Validate that your API key is working correctly
- Check service availability for monitoring and uptime tracking

Response includes:
- status: Current health status of the API
- timestamp: Current server time in ISO 8601 format

Note: This endpoint is rate-limited like all other API endpoints. For high-frequency monitoring, consider using a dedicated monitoring service or increasing your rate limit.

## Accounts

Manage your chart of accounts. Create and maintain the accounts used to categorize financial transactions, including assets, liabilities, equity, revenue, and expenses.

### List accounts

 - [GET /public/v1/accounts/](https://docs.dualentry.com/resources-v1/accounts/core_api_public_accounts_list_accounts.md): Retrieve a paginated list of chart of accounts with filtering and search capabilities.

### Get account

 - [GET /public/v1/accounts/{account_number}/](https://docs.dualentry.com/resources-v1/accounts/core_api_public_accounts_get_account.md): Retrieve a specific account by number with all related data including company access.

## Items

Manage products and services. Define items that appear on invoices and bills, including pricing, descriptions, and associated accounts for revenue or expense tracking.

### List Items

 - [GET /public/v1/items/](https://docs.dualentry.com/resources-v1/items/core_api_public_items_list_items.md)

### Create Item

 - [POST /public/v1/items/](https://docs.dualentry.com/resources-v1/items/core_api_public_items_create_item.md)

### Get Item

 - [GET /public/v1/items/{item_id}/](https://docs.dualentry.com/resources-v1/items/core_api_public_items_get_item.md)

### Update Item

 - [PUT /public/v1/items/{item_id}/](https://docs.dualentry.com/resources-v1/items/core_api_public_items_update_item.md)

### Delete Item

 - [DELETE /public/v1/items/{item_id}/](https://docs.dualentry.com/resources-v1/items/core_api_public_items_delete_item.md)

## Classifications

Manage custom classification dimensions. Create and maintain classification categories (e.g., departments, locations, projects) used to tag and analyze transactions across multiple dimensions.

### List Classifications

 - [GET /public/v1/classifications/](https://docs.dualentry.com/resources-v1/classifications/core_api_public_classifications_list_classifications.md)

### Create Classification

 - [POST /public/v1/classifications/](https://docs.dualentry.com/resources-v1/classifications/core_api_public_classifications_create_classification.md)

### Get Classification

 - [GET /public/v1/classifications/{classification_id}/](https://docs.dualentry.com/resources-v1/classifications/core_api_public_classifications_get_classification.md)

### Update Classification

 - [PUT /public/v1/classifications/{classification_id}/](https://docs.dualentry.com/resources-v1/classifications/core_api_public_classifications_update_classification.md)

### Delete Classification

 - [DELETE /public/v1/classifications/{classification_id}/](https://docs.dualentry.com/resources-v1/classifications/core_api_public_classifications_delete_classification.md)

## Classifications Lines

Manage classification values. Define the specific values within each classification category that can be assigned to transaction line items for detailed reporting and analysis.

### List Classification Lines

 - [GET /public/v1/classifications-lines/](https://docs.dualentry.com/resources-v1/classifications-lines/core_api_public_classifications_list_classification_lines.md)

## Companies

Access and manage company information. Retrieve details about your organization including legal name, tax identifiers, addresses, and accounting preferences.

### List companies

 - [GET /public/v1/companies/](https://docs.dualentry.com/resources-v1/companies/core_api_public_companies_list_companies.md): Retrieve a paginated list of companies with filtering and search capabilities.

### Get company

 - [GET /public/v1/companies/{company_id}/](https://docs.dualentry.com/resources-v1/companies/core_api_public_companies_get_company.md): Retrieve a specific company by ID with all related data including company access.

## Approval Policies

Manage approval workflows and policies. Define approval rules, steps, conditions, and approvers for different record types. Monitor workflow execution states and view approval history.

### List workflows

 - [GET /public/v1/workflows/](https://docs.dualentry.com/resources-v1/approval-policies/core_api_public_workflows_list_workflows.md): Retrieve a paginated list of approval workflows with filtering options by company, record type, and active status.

### List execution states

 - [GET /public/v1/workflows/execution-states/](https://docs.dualentry.com/resources-v1/approval-policies/core_api_public_workflows_list_execution_states.md): Retrieve a paginated list of workflow execution states (approval statuses for records).

### Get execution state by ID

 - [GET /public/v1/workflows/execution-states/{state_id}/](https://docs.dualentry.com/resources-v1/approval-policies/core_api_public_workflows_get_execution_state.md): Retrieve a single workflow execution state by its ID.

### Get approval actions for execution state

 - [GET /public/v1/workflows/execution-states/{state_id}/actions/](https://docs.dualentry.com/resources-v1/approval-policies/core_api_public_workflows_get_execution_state_actions.md): Retrieve all approval actions (history) for a specific workflow execution state.

### List approval actions

 - [GET /public/v1/workflows/actions/](https://docs.dualentry.com/resources-v1/approval-policies/core_api_public_workflows_list_approval_actions.md): Retrieve a paginated list of approval actions (history) with filtering options.

### Get roles for workflow conditions

 - [GET /public/v1/workflows/roles/](https://docs.dualentry.com/resources-v1/approval-policies/core_api_public_workflows_get_workflow_roles.md): Returns all active roles that can be used in workflow conditions.

### Get workflow by ID

 - [GET /public/v1/workflows/{workflow_id}/](https://docs.dualentry.com/resources-v1/approval-policies/core_api_public_workflows_get_workflow.md): Retrieve a single approval workflow by its ID, including all steps, conditions, and approvers.

### Get workflow version history

 - [GET /public/v1/workflows/{workflow_id}/versions/](https://docs.dualentry.com/resources-v1/approval-policies/core_api_public_workflows_get_workflow_versions.md): Retrieve version history for a workflow including changes, timestamps, and optionally full snapshots.

## Inbox

View pending approvals and approval status. Access transactions and records awaiting approval across the organization, including full approval workflow details, approvers, and action history.

### Get inbox summary

 - [GET /public/v1/inbox/](https://docs.dualentry.com/resources-v1/inbox/core_api_public_inbox_inbox_summary.md): Get counts of pending approvals in the inbox for the entire organization.

### List transactions inbox

 - [GET /public/v1/inbox/transactions/](https://docs.dualentry.com/resources-v1/inbox/core_api_public_inbox_transactions_inbox.md): Retrieve all transactions (invoices, bills, purchase orders, sales orders, journal entries) with workflow approval status for the organization.

### List records inbox

 - [GET /public/v1/inbox/records/](https://docs.dualentry.com/resources-v1/inbox/core_api_public_inbox_records_inbox.md): Retrieve all non-monetary records (customers, vendors) with workflow approval status for the organization.

### Get transaction inbox details

 - [GET /public/v1/inbox/transactions/{record_id}/](https://docs.dualentry.com/resources-v1/inbox/core_api_public_inbox_transaction_inbox_detail.md): Retrieve approval details for a specific transaction. Returns empty dict if not in inbox.

### Get record inbox details

 - [GET /public/v1/inbox/records/{record_id}/](https://docs.dualentry.com/resources-v1/inbox/core_api_public_inbox_record_inbox_detail.md): Retrieve approval details for a specific non-monetary record. Returns empty dict if not in inbox.

## Budgets

Manage financial budgets. Create and track income statement and balance sheet budgets with monthly cell values, actuals comparison, and classification filtering.

### List budgets

 - [GET /public/v1/budgets/](https://docs.dualentry.com/resources-v1/budgets/core_api_public_budgets_list_budgets.md): Retrieve a paginated list of budgets with filtering and search capabilities.

### Get budget

 - [GET /public/v1/budgets/{budget_id}/](https://docs.dualentry.com/resources-v1/budgets/core_api_public_budgets_get_budget.md): Retrieve a specific budget by ID with all related data.

## Journal Entries

Create and manage manual journal entries. Record direct debits and credits to accounts for adjustments, accruals, reclassifications, and other accounting transactions.

### List JournalEntry records

 - [GET /public/v1/journal-entries/](https://docs.dualentry.com/resources-v1/journal-entries/list_journalentry_records.md): Retrieve a paginated list of JournalEntry records with filtering and ordering options.

### Create JournalEntry record

 - [POST /public/v1/journal-entries/](https://docs.dualentry.com/resources-v1/journal-entries/create_journalentry_record.md): Create a new JournalEntry record with the provided data. Validates all required fields and business rules.

### Get JournalEntry record

 - [GET /public/v1/journal-entries/{record_number}/](https://docs.dualentry.com/resources-v1/journal-entries/get_journalentry_record.md): Retrieve a specific JournalEntry record by number with all related data.

### Update JournalEntry record

 - [PUT /public/v1/journal-entries/{record_number}/](https://docs.dualentry.com/resources-v1/journal-entries/update_journalentry_record.md): Update an existing JournalEntry record with the provided data. Validates all required fields and business rules.

### Create JournalEntry record attachments

 - [POST /public/v1/journal-entries/{record_number}/attachments/](https://docs.dualentry.com/resources-v1/journal-entries/create_journalentry_record_attachments.md): Create a new JournalEntry record attachments with the provided data. Validates all required fields and business rules.

## Recurring Journal Entries

Automate recurring journal entries. Create templates for journal entries that occur regularly (e.g., monthly depreciation, amortization) to ensure consistent accounting treatment.

### List RecurringJournalEntry records

 - [GET /public/v1/recurring/journal-entries/](https://docs.dualentry.com/resources-v1/recurring-journal-entries/list_recurringjournalentry_records.md): Retrieve a paginated list of RecurringJournalEntry records with filtering and ordering options.

### Create RecurringJournalEntry record

 - [POST /public/v1/recurring/journal-entries/](https://docs.dualentry.com/resources-v1/recurring-journal-entries/create_recurringjournalentry_record.md): Create a new Recurring record with the provided data. Validates all required fields and business rules.

### Get RecurringJournalEntry record

 - [GET /public/v1/recurring/journal-entries/{record_number}/](https://docs.dualentry.com/resources-v1/recurring-journal-entries/get_recurringjournalentry_record.md): Retrieve a specific Recurring record by number with all related data.

### Update RecurringJournalEntry record

 - [PUT /public/v1/recurring/journal-entries/{record_number}/](https://docs.dualentry.com/resources-v1/recurring-journal-entries/update_recurringjournalentry_record.md): Update an existing RecurringJournalEntry record with the provided data. Validates all required fields and business rules.

### Delete RecurringJournalEntry record

 - [DELETE /public/v1/recurring/journal-entries/{record_number}/](https://docs.dualentry.com/resources-v1/recurring-journal-entries/delete_recurringjournalentry_record.md): Delete a RecurringJournalEntry record.

## Bank Transfers

Manage bank-to-bank transfers. Record and track transfers between bank and credit card accounts, including multi-currency transfers with exchange rate handling.

### List BankTransfer records

 - [GET /public/v1/bank-transfers/](https://docs.dualentry.com/resources-v1/bank-transfers/list_banktransfer_records.md): Retrieve a paginated list of BankTransfer records with filtering and ordering options.

### Create BankTransfer record

 - [POST /public/v1/bank-transfers/](https://docs.dualentry.com/resources-v1/bank-transfers/create_banktransfer_record.md): Create a new BankTransfer record with the provided data. Validates all required fields and business rules.

### Get BankTransfer record

 - [GET /public/v1/bank-transfers/{record_number}/](https://docs.dualentry.com/resources-v1/bank-transfers/get_banktransfer_record.md): Retrieve a specific BankTransfer record by number with all related data.

### Update BankTransfer record

 - [PUT /public/v1/bank-transfers/{record_number}/](https://docs.dualentry.com/resources-v1/bank-transfers/update_banktransfer_record.md): Update an existing BankTransfer record with the provided data. Validates all required fields and business rules.

## Invoices

Manage sales invoices. Create and track invoices sent to customers for goods or services rendered, including line items, taxes, discounts, and payment status.

### List Invoice records

 - [GET /public/v1/invoices/](https://docs.dualentry.com/resources-v1/invoices/list_invoice_records.md): Retrieve a paginated list of Invoice records with filtering and ordering options.

### Create Invoice record

 - [POST /public/v1/invoices/](https://docs.dualentry.com/resources-v1/invoices/create_invoice_record.md): Create a new Invoice record with the provided data. Validates all required fields and business rules.

### Get Invoice record

 - [GET /public/v1/invoices/{record_number}/](https://docs.dualentry.com/resources-v1/invoices/get_invoice_record.md): Retrieve a specific Invoice record by number with all related data.

### Update Invoice record

 - [PUT /public/v1/invoices/{record_number}/](https://docs.dualentry.com/resources-v1/invoices/update_invoice_record.md): Update an existing Invoice record with the provided data. Validates all required fields and business rules.

### Create Invoice record attachments

 - [POST /public/v1/invoices/{record_number}/attachments/](https://docs.dualentry.com/resources-v1/invoices/create_invoice_record_attachments.md): Create a new Invoice record attachments with the provided data. Validates all required fields and business rules.

## Contracts

Manage revenue recognition contracts. Create and retrieve contracts with performance obligations, and manage obligation usage for usage-based obligations.

### List Contracts

 - [GET /public/v1/contracts/](https://docs.dualentry.com/resources-v1/contracts/core_api_public_contracts_list_contracts.md)

### Create Contract

 - [POST /public/v1/contracts/](https://docs.dualentry.com/resources-v1/contracts/core_api_public_contracts_create_contract.md)

### Get Contract

 - [GET /public/v1/contracts/{record_id}/](https://docs.dualentry.com/resources-v1/contracts/core_api_public_contracts_get_contract.md)

### List usage records for a contract

 - [GET /public/v1/contracts/{contract_id}/usage/](https://docs.dualentry.com/resources-v1/contracts/core_api_public_contracts_list_obligation_usage.md): Return all usage records for a given contract.

### Upsert usage records for contract obligations

 - [POST /public/v1/contracts/{contract_id}/usage/bulk-upsert/](https://docs.dualentry.com/resources-v1/contracts/core_api_public_contracts_upsert_obligation_usage.md): Create or update usage records in batch. Items with an 'id' field are updated; items without are created. Generates revenue recognitions and invoices.

## Sales Orders

Create and manage sales orders. Track customer orders for goods or services before invoicing, including line items, quantities, fulfillment status, and invoicing progress.

### List SalesOrder records

 - [GET /public/v1/sales-orders/](https://docs.dualentry.com/resources-v1/sales-orders/list_salesorder_records.md): Retrieve a paginated list of SalesOrder records with filtering and ordering options.

### Create SalesOrder record

 - [POST /public/v1/sales-orders/](https://docs.dualentry.com/resources-v1/sales-orders/create_salesorder_record.md): Create a new SalesOrder record with the provided data. Validates all required fields and business rules.

### Get SalesOrder record

 - [GET /public/v1/sales-orders/{record_number}/](https://docs.dualentry.com/resources-v1/sales-orders/get_salesorder_record.md): Retrieve a specific SalesOrder record by number with all related data.

### Update SalesOrder record

 - [PUT /public/v1/sales-orders/{record_number}/](https://docs.dualentry.com/resources-v1/sales-orders/update_salesorder_record.md): Update an existing SalesOrder record with the provided data. Validates all required fields and business rules.

### Create SalesOrder record attachments

 - [POST /public/v1/sales-orders/{record_number}/attachments/](https://docs.dualentry.com/resources-v1/sales-orders/create_salesorder_record_attachments.md): Create a new SalesOrder record attachments with the provided data. Validates all required fields and business rules.

## Recurring Invoices

Automate recurring billing. Set up and manage templates for invoices that are automatically generated on a regular schedule (e.g., monthly subscriptions).

### List RecurringInvoice records

 - [GET /public/v1/recurring/invoices/](https://docs.dualentry.com/resources-v1/recurring-invoices/list_recurringinvoice_records.md): Retrieve a paginated list of RecurringInvoice records with filtering and ordering options.

### Create RecurringInvoice record

 - [POST /public/v1/recurring/invoices/](https://docs.dualentry.com/resources-v1/recurring-invoices/create_recurringinvoice_record.md): Create a new Recurring record with the provided data. Validates all required fields and business rules.

### Get RecurringInvoice record

 - [GET /public/v1/recurring/invoices/{record_number}/](https://docs.dualentry.com/resources-v1/recurring-invoices/get_recurringinvoice_record.md): Retrieve a specific Recurring record by number with all related data.

### Update RecurringInvoice record

 - [PUT /public/v1/recurring/invoices/{record_number}/](https://docs.dualentry.com/resources-v1/recurring-invoices/update_recurringinvoice_record.md): Update an existing RecurringInvoice record with the provided data. Validates all required fields and business rules.

### Delete RecurringInvoice record

 - [DELETE /public/v1/recurring/invoices/{record_number}/](https://docs.dualentry.com/resources-v1/recurring-invoices/delete_recurringinvoice_record.md): Delete a RecurringInvoice record.

## Customers

Manage customer records. Create, update, and track customers who purchase goods or services from your organization, including contact information, billing addresses, and payment terms.

### List Customers

 - [GET /public/v1/customers/](https://docs.dualentry.com/resources-v1/customers/core_api_public_customers_list_customers.md)

### Create Customer

 - [POST /public/v1/customers/](https://docs.dualentry.com/resources-v1/customers/core_api_public_customers_create_customer.md)

### Get Customer

 - [GET /public/v1/customers/{customer_id}/](https://docs.dualentry.com/resources-v1/customers/core_api_public_customers_get_customer.md)

### Update Customer

 - [PUT /public/v1/customers/{customer_id}/](https://docs.dualentry.com/resources-v1/customers/core_api_public_customers_update_customer.md)

### Delete Customer

 - [DELETE /public/v1/customers/{customer_id}/](https://docs.dualentry.com/resources-v1/customers/core_api_public_customers_delete_customer.md)

## Customer Payments

Record and manage customer payments. Track payments received from customers and apply them to outstanding invoices, including partial payments and overpayments.

### List CustomerPayment records

 - [GET /public/v1/customer-payments/](https://docs.dualentry.com/resources-v1/customer-payments/list_customerpayment_records.md): Retrieve a paginated list of CustomerPayment records with filtering and ordering options.

### Create CustomerPayment record

 - [POST /public/v1/customer-payments/](https://docs.dualentry.com/resources-v1/customer-payments/create_customerpayment_record.md): Create a new CustomerPayment record with the provided data. Validates all required fields and business rules.

### Get CustomerPayment record

 - [GET /public/v1/customer-payments/{record_number}/](https://docs.dualentry.com/resources-v1/customer-payments/get_customerpayment_record.md): Retrieve a specific CustomerPayment record by number with all related data.

### Update CustomerPayment record

 - [PUT /public/v1/customer-payments/{record_number}/](https://docs.dualentry.com/resources-v1/customer-payments/update_customerpayment_record.md): Update an existing CustomerPayment record with the provided data. Validates all required fields and business rules.

## Customer Prepayments

Track advance payments from customers. Access prepayments received before goods or services are delivered, which can be applied to future invoices.

### List CustomerPrepayment records

 - [GET /public/v1/customer-prepayments/](https://docs.dualentry.com/resources-v1/customer-prepayments/list_customerprepayment_records.md): Retrieve a paginated list of CustomerPrepayment records with filtering and ordering options.

### Create CustomerPrepayment record

 - [POST /public/v1/customer-prepayments/](https://docs.dualentry.com/resources-v1/customer-prepayments/create_customerprepayment_record.md): Create a new CustomerPrepayment record with the provided data. Validates all required fields and business rules.

### Get CustomerPrepayment record

 - [GET /public/v1/customer-prepayments/{record_number}/](https://docs.dualentry.com/resources-v1/customer-prepayments/get_customerprepayment_record.md): Retrieve a specific CustomerPrepayment record by number with all related data.

### Update CustomerPrepayment record

 - [PUT /public/v1/customer-prepayments/{record_number}/](https://docs.dualentry.com/resources-v1/customer-prepayments/update_customerprepayment_record.md): Update an existing CustomerPrepayment record with the provided data. Validates all required fields and business rules.

### Create CustomerPrepayment record attachments

 - [POST /public/v1/customer-prepayments/{record_number}/attachments/](https://docs.dualentry.com/resources-v1/customer-prepayments/create_customerprepayment_record_attachments.md): Create a new CustomerPrepayment record attachments with the provided data. Validates all required fields and business rules.

## Customer Prepayment Applications

Apply customer prepayments and credits to invoices. Record applications of prepayments or credit memos to reduce invoice balances.

### List CustomerPrepaymentApplication records

 - [GET /public/v1/customer-prepayment-applications/](https://docs.dualentry.com/resources-v1/customer-prepayment-applications/list_customerprepaymentapplication_records.md): Retrieve a paginated list of CustomerPrepaymentApplication records with filtering and ordering options.

### Create CustomerPrepaymentApplication record

 - [POST /public/v1/customer-prepayment-applications/](https://docs.dualentry.com/resources-v1/customer-prepayment-applications/create_customerprepaymentapplication_record.md): Create a new CustomerPrepaymentApplication record with the provided data. Validates all required fields and business rules.

### Get CustomerPrepaymentApplication record

 - [GET /public/v1/customer-prepayment-applications/{record_number}/](https://docs.dualentry.com/resources-v1/customer-prepayment-applications/get_customerprepaymentapplication_record.md): Retrieve a specific CustomerPrepaymentApplication record by number with all related data.

### Update CustomerPrepaymentApplication record

 - [PUT /public/v1/customer-prepayment-applications/{record_number}/](https://docs.dualentry.com/resources-v1/customer-prepayment-applications/update_customerprepaymentapplication_record.md): Update an existing CustomerPrepaymentApplication record with the provided data. Validates all required fields and business rules.

### Create CustomerPrepaymentApplication record attachments

 - [POST /public/v1/customer-prepayment-applications/{record_number}/attachments/](https://docs.dualentry.com/resources-v1/customer-prepayment-applications/create_customerprepaymentapplication_record_attachments.md): Create a new CustomerPrepaymentApplication record attachments with the provided data. Validates all required fields and business rules.

## Customer Deposits

Manage customer deposit transactions. Record and track deposits received from customers as security or partial payment, held in liability accounts until earned or refunded.

### List CustomerDeposit records

 - [GET /public/v1/customer-deposits/](https://docs.dualentry.com/resources-v1/customer-deposits/list_customerdeposit_records.md): Retrieve a paginated list of CustomerDeposit records with filtering and ordering options.

### Create CustomerDeposit record

 - [POST /public/v1/customer-deposits/](https://docs.dualentry.com/resources-v1/customer-deposits/create_customerdeposit_record.md): Create a new CustomerDeposit record with the provided data. Validates all required fields and business rules.

### Get CustomerDeposit record

 - [GET /public/v1/customer-deposits/{record_number}/](https://docs.dualentry.com/resources-v1/customer-deposits/get_customerdeposit_record.md): Retrieve a specific CustomerDeposit record by number with all related data.

### Update CustomerDeposit record

 - [PUT /public/v1/customer-deposits/{record_number}/](https://docs.dualentry.com/resources-v1/customer-deposits/update_customerdeposit_record.md): Update an existing CustomerDeposit record with the provided data. Validates all required fields and business rules.

### Create CustomerDeposit record attachments

 - [POST /public/v1/customer-deposits/{record_number}/attachments/](https://docs.dualentry.com/resources-v1/customer-deposits/create_customerdeposit_record_attachments.md): Create a new CustomerDeposit record attachments with the provided data. Validates all required fields and business rules.

## Customer Refunds

Process and track customer refunds. Record refunds issued to customers for overpayments, returns, or cancelled transactions.

### List CustomerRefund records

 - [GET /public/v1/customer-refunds/](https://docs.dualentry.com/resources-v1/customer-refunds/list_customerrefund_records.md): Retrieve a paginated list of CustomerRefund records with filtering and ordering options.

### Create CustomerRefund record

 - [POST /public/v1/customer-refunds/](https://docs.dualentry.com/resources-v1/customer-refunds/create_customerrefund_record.md): Create a new CustomerRefund record with the provided data. Validates all required fields and business rules.

### Get CustomerRefund record

 - [GET /public/v1/customer-refunds/{record_number}/](https://docs.dualentry.com/resources-v1/customer-refunds/get_customerrefund_record.md): Retrieve a specific CustomerRefund record by number with all related data.

### Update CustomerRefund record

 - [PUT /public/v1/customer-refunds/{record_number}/](https://docs.dualentry.com/resources-v1/customer-refunds/update_customerrefund_record.md): Update an existing CustomerRefund record with the provided data. Validates all required fields and business rules.

### Create CustomerRefund record attachments

 - [POST /public/v1/customer-refunds/{record_number}/attachments/](https://docs.dualentry.com/resources-v1/customer-refunds/create_customerrefund_record_attachments.md): Create a new CustomerRefund record attachments with the provided data. Validates all required fields and business rules.

## Customer Credits

Manage credit memos for customers. Issue credits for returned goods, billing adjustments, or discounts that reduce customer balances or can be applied to future invoices.

### List CustomerCredit records

 - [GET /public/v1/customer-credits/](https://docs.dualentry.com/resources-v1/customer-credits/list_customercredit_records.md): Retrieve a paginated list of CustomerCredit records with filtering and ordering options.

### Create CustomerCredit record

 - [POST /public/v1/customer-credits/](https://docs.dualentry.com/resources-v1/customer-credits/create_customercredit_record.md): Create a new CustomerCredit record with the provided data. Validates all required fields and business rules.

### Get CustomerCredit record

 - [GET /public/v1/customer-credits/{record_number}/](https://docs.dualentry.com/resources-v1/customer-credits/get_customercredit_record.md): Retrieve a specific CustomerCredit record by number with all related data.

### Update CustomerCredit record

 - [PUT /public/v1/customer-credits/{record_number}/](https://docs.dualentry.com/resources-v1/customer-credits/update_customercredit_record.md): Update an existing CustomerCredit record with the provided data. Validates all required fields and business rules.

## Cash Sales

Record immediate cash sales transactions. Track sales where payment is received at the time of sale, including point-of-sale transactions and cash receipts.

### List CashSale records

 - [GET /public/v1/cash-sales/](https://docs.dualentry.com/resources-v1/cash-sales/list_cashsale_records.md): Retrieve a paginated list of CashSale records with filtering and ordering options.

### Create CashSale record

 - [POST /public/v1/cash-sales/](https://docs.dualentry.com/resources-v1/cash-sales/create_cashsale_record.md): Create a new CashSale record with the provided data. Validates all required fields and business rules.

### Get CashSale record

 - [GET /public/v1/cash-sales/{record_number}/](https://docs.dualentry.com/resources-v1/cash-sales/get_cashsale_record.md): Retrieve a specific CashSale record by number with all related data.

### Update CashSale record

 - [PUT /public/v1/cash-sales/{record_number}/](https://docs.dualentry.com/resources-v1/cash-sales/update_cashsale_record.md): Update an existing CashSale record with the provided data. Validates all required fields and business rules.

### Create CashSale record attachments

 - [POST /public/v1/cash-sales/{record_number}/attachments/](https://docs.dualentry.com/resources-v1/cash-sales/create_cashsale_record_attachments.md): Create a new CashSale record attachments with the provided data. Validates all required fields and business rules.

## Bills

Manage vendor bills and payables. Record and track bills received from vendors for goods or services purchased, including line items, due dates, and payment tracking.

### List Bill records

 - [GET /public/v1/bills/](https://docs.dualentry.com/resources-v1/bills/list_bill_records.md): Retrieve a paginated list of Bill records with filtering and ordering options.

### Create Bill record

 - [POST /public/v1/bills/](https://docs.dualentry.com/resources-v1/bills/create_bill_record.md): Create a new Bill record with the provided data. Validates all required fields and business rules.

### Get Bill record

 - [GET /public/v1/bills/{record_number}/](https://docs.dualentry.com/resources-v1/bills/get_bill_record.md): Retrieve a specific Bill record by number with all related data.

### Update Bill record

 - [PUT /public/v1/bills/{record_number}/](https://docs.dualentry.com/resources-v1/bills/update_bill_record.md): Update an existing Bill record with the provided data. Validates all required fields and business rules.

### Create Bill record attachments

 - [POST /public/v1/bills/{record_number}/attachments/](https://docs.dualentry.com/resources-v1/bills/create_bill_record_attachments.md): Create a new Bill record attachments with the provided data. Validates all required fields and business rules.

## Recurring Bills

Automate recurring expenses. Configure templates for bills that repeat on a regular basis (e.g., monthly rent, subscriptions) to streamline expense tracking.

### List RecurringBill records

 - [GET /public/v1/recurring/bills/](https://docs.dualentry.com/resources-v1/recurring-bills/list_recurringbill_records.md): Retrieve a paginated list of RecurringBill records with filtering and ordering options.

### Create RecurringBill record

 - [POST /public/v1/recurring/bills/](https://docs.dualentry.com/resources-v1/recurring-bills/create_recurringbill_record.md): Create a new Recurring record with the provided data. Validates all required fields and business rules.

### Get RecurringBill record

 - [GET /public/v1/recurring/bills/{record_number}/](https://docs.dualentry.com/resources-v1/recurring-bills/get_recurringbill_record.md): Retrieve a specific Recurring record by number with all related data.

### Update RecurringBill record

 - [PUT /public/v1/recurring/bills/{record_number}/](https://docs.dualentry.com/resources-v1/recurring-bills/update_recurringbill_record.md): Update an existing RecurringBill record with the provided data. Validates all required fields and business rules.

### Delete RecurringBill record

 - [DELETE /public/v1/recurring/bills/{record_number}/](https://docs.dualentry.com/resources-v1/recurring-bills/delete_recurringbill_record.md): Delete a RecurringBill record.

## Purchase Orders

Create and track purchase orders. Manage formal requests to vendors for goods or services, including approval workflows, receiving tracking, and bill matching.

### List PurchaseOrder records

 - [GET /public/v1/purchase-orders/](https://docs.dualentry.com/resources-v1/purchase-orders/list_purchaseorder_records.md): Retrieve a paginated list of PurchaseOrder records with filtering and ordering options.

### Create PurchaseOrder record

 - [POST /public/v1/purchase-orders/](https://docs.dualentry.com/resources-v1/purchase-orders/create_purchaseorder_record.md): Create a new PurchaseOrder record with the provided data. Validates all required fields and business rules.

### Get PurchaseOrder record

 - [GET /public/v1/purchase-orders/{record_number}/](https://docs.dualentry.com/resources-v1/purchase-orders/get_purchaseorder_record.md): Retrieve a specific PurchaseOrder record by number with all related data.

### Update PurchaseOrder record

 - [PUT /public/v1/purchase-orders/{record_number}/](https://docs.dualentry.com/resources-v1/purchase-orders/update_purchaseorder_record.md): Update an existing PurchaseOrder record with the provided data. Validates all required fields and business rules.

### Create PurchaseOrder record attachments

 - [POST /public/v1/purchase-orders/{record_number}/attachments/](https://docs.dualentry.com/resources-v1/purchase-orders/create_purchaseorder_record_attachments.md): Create a new PurchaseOrder record attachments with the provided data. Validates all required fields and business rules.

## Direct Expenses

Record direct expense transactions. Track payments made directly from a bank or credit card account for expenses, without going through the accounts payable process.

### List DirectExpense records

 - [GET /public/v1/direct-expenses/](https://docs.dualentry.com/resources-v1/direct-expenses/list_directexpense_records.md): Retrieve a paginated list of DirectExpense records with filtering and ordering options.

### Create DirectExpense record

 - [POST /public/v1/direct-expenses/](https://docs.dualentry.com/resources-v1/direct-expenses/create_directexpense_record.md): Create a new DirectExpense record with the provided data. Validates all required fields and business rules.

### Get DirectExpense record

 - [GET /public/v1/direct-expenses/{record_number}/](https://docs.dualentry.com/resources-v1/direct-expenses/get_directexpense_record.md): Retrieve a specific DirectExpense record by number with all related data.

### Update DirectExpense record

 - [PUT /public/v1/direct-expenses/{record_number}/](https://docs.dualentry.com/resources-v1/direct-expenses/update_directexpense_record.md): Update an existing DirectExpense record with the provided data. Validates all required fields and business rules.

### Create DirectExpense record attachments

 - [POST /public/v1/direct-expenses/{record_number}/attachments/](https://docs.dualentry.com/resources-v1/direct-expenses/create_directexpense_record_attachments.md): Create a new DirectExpense record attachments with the provided data. Validates all required fields and business rules.

## Vendors

Manage vendor and supplier records. Track businesses and individuals from whom you purchase goods or services, including contact details, payment terms, and tax information.

### List Vendors

 - [GET /public/v1/vendors/](https://docs.dualentry.com/resources-v1/vendors/core_api_public_vendors_list_vendors.md)

### Create Vendor

 - [POST /public/v1/vendors/](https://docs.dualentry.com/resources-v1/vendors/core_api_public_vendors_create_vendor.md)

### Get Vendor

 - [GET /public/v1/vendors/{vendor_id}/](https://docs.dualentry.com/resources-v1/vendors/core_api_public_vendors_get_vendor.md)

### Update Vendor

 - [PUT /public/v1/vendors/{vendor_id}/](https://docs.dualentry.com/resources-v1/vendors/core_api_public_vendors_update_vendor.md)

### Delete Vendor

 - [DELETE /public/v1/vendors/{vendor_id}/](https://docs.dualentry.com/resources-v1/vendors/core_api_public_vendors_delete_vendor.md)

## Vendor Payments

Record and manage vendor payments. Track payments made to vendors and apply them to outstanding bills and credits, including partial payments and overpayments.

### List VendorPayment records

 - [GET /public/v1/vendor-payments/](https://docs.dualentry.com/resources-v1/vendor-payments/list_vendorpayment_records.md): Retrieve a paginated list of VendorPayment records with filtering and ordering options.

### Create VendorPayment record

 - [POST /public/v1/vendor-payments/](https://docs.dualentry.com/resources-v1/vendor-payments/create_vendorpayment_record.md): Create a new VendorPayment record with the provided data. Validates all required fields and business rules.

### Get VendorPayment record

 - [GET /public/v1/vendor-payments/{record_number}/](https://docs.dualentry.com/resources-v1/vendor-payments/get_vendorpayment_record.md): Retrieve a specific VendorPayment record by number with all related data.

### Update VendorPayment record

 - [PUT /public/v1/vendor-payments/{record_number}/](https://docs.dualentry.com/resources-v1/vendor-payments/update_vendorpayment_record.md): Update an existing VendorPayment record with the provided data. Validates all required fields and business rules.

## Vendor Prepayments

Track advance payments to vendors. Record prepayments made before goods or services are received, which can be applied to future bills.

### List VendorPrepayment records

 - [GET /public/v1/vendor-prepayments/](https://docs.dualentry.com/resources-v1/vendor-prepayments/list_vendorprepayment_records.md): Retrieve a paginated list of VendorPrepayment records with filtering and ordering options.

### Create VendorPrepayment record

 - [POST /public/v1/vendor-prepayments/](https://docs.dualentry.com/resources-v1/vendor-prepayments/create_vendorprepayment_record.md): Create a new VendorPrepayment record with the provided data. Validates all required fields and business rules.

### Get VendorPrepayment record

 - [GET /public/v1/vendor-prepayments/{record_number}/](https://docs.dualentry.com/resources-v1/vendor-prepayments/get_vendorprepayment_record.md): Retrieve a specific VendorPrepayment record by number with all related data.

### Update VendorPrepayment record

 - [PUT /public/v1/vendor-prepayments/{record_number}/](https://docs.dualentry.com/resources-v1/vendor-prepayments/update_vendorprepayment_record.md): Update an existing VendorPrepayment record with the provided data. Validates all required fields and business rules.

## Vendor Prepayment Applications

Apply vendor prepayments to bills. Record applications of prepayments to reduce bill balances and track amounts owed.

### List VendorPrepaymentApplication records

 - [GET /public/v1/vendor-prepayment-applications/](https://docs.dualentry.com/resources-v1/vendor-prepayment-applications/list_vendorprepaymentapplication_records.md): Retrieve a paginated list of VendorPrepaymentApplication records with filtering and ordering options.

### Create VendorPrepaymentApplication record

 - [POST /public/v1/vendor-prepayment-applications/](https://docs.dualentry.com/resources-v1/vendor-prepayment-applications/create_vendorprepaymentapplication_record.md): Create a new VendorPrepaymentApplication record with the provided data. Validates all required fields and business rules.

### Get VendorPrepaymentApplication record

 - [GET /public/v1/vendor-prepayment-applications/{record_number}/](https://docs.dualentry.com/resources-v1/vendor-prepayment-applications/get_vendorprepaymentapplication_record.md): Retrieve a specific VendorPrepaymentApplication record by number with all related data.

### Update VendorPrepaymentApplication record

 - [PUT /public/v1/vendor-prepayment-applications/{record_number}/](https://docs.dualentry.com/resources-v1/vendor-prepayment-applications/update_vendorprepaymentapplication_record.md): Update an existing VendorPrepaymentApplication record with the provided data. Validates all required fields and business rules.

## Vendor Credits

Manage vendor credit memos. Record credits from vendors for returned goods, billing adjustments, or discounts that reduce amounts owed or can be applied to future bills.

### List VendorCredit records

 - [GET /public/v1/vendor-credits/](https://docs.dualentry.com/resources-v1/vendor-credits/list_vendorcredit_records.md): Retrieve a paginated list of VendorCredit records with filtering and ordering options.

### Create VendorCredit record

 - [POST /public/v1/vendor-credits/](https://docs.dualentry.com/resources-v1/vendor-credits/create_vendorcredit_record.md): Create a new VendorCredit record with the provided data. Validates all required fields and business rules.

### Get VendorCredit record

 - [GET /public/v1/vendor-credits/{record_number}/](https://docs.dualentry.com/resources-v1/vendor-credits/get_vendorcredit_record.md): Retrieve a specific VendorCredit record by number with all related data.

### Update VendorCredit record

 - [PUT /public/v1/vendor-credits/{record_number}/](https://docs.dualentry.com/resources-v1/vendor-credits/update_vendorcredit_record.md): Update an existing VendorCredit record with the provided data. Validates all required fields and business rules.

## Vendor Refunds

Process and track vendor refunds. Record refunds received from vendors for overpayments, returns, or cancelled transactions.

### List VendorRefund records

 - [GET /public/v1/vendor-refunds/](https://docs.dualentry.com/resources-v1/vendor-refunds/list_vendorrefund_records.md): Retrieve a paginated list of VendorRefund records with filtering and ordering options.

### Create VendorRefund record

 - [POST /public/v1/vendor-refunds/](https://docs.dualentry.com/resources-v1/vendor-refunds/create_vendorrefund_record.md): Create a new VendorRefund record with the provided data. Validates all required fields and business rules.

### Get VendorRefund record

 - [GET /public/v1/vendor-refunds/{record_number}/](https://docs.dualentry.com/resources-v1/vendor-refunds/get_vendorrefund_record.md): Retrieve a specific VendorRefund record by number with all related data.

### Update VendorRefund record

 - [PUT /public/v1/vendor-refunds/{record_number}/](https://docs.dualentry.com/resources-v1/vendor-refunds/update_vendorrefund_record.md): Update an existing VendorRefund record with the provided data. Validates all required fields and business rules.

### Create VendorRefund record attachments

 - [POST /public/v1/vendor-refunds/{record_number}/attachments/](https://docs.dualentry.com/resources-v1/vendor-refunds/create_vendorrefund_record_attachments.md): Create a new VendorRefund record attachments with the provided data. Validates all required fields and business rules.

## Paper Checks

Manage paper check printing. Create, queue, and batch print paper checks for vendor payments, direct expenses, vendor prepayments, and customer refunds.

### List paper checks

 - [GET /public/v1/paper-checks/](https://docs.dualentry.com/resources-v1/paper-checks/core_api_public_paper_checks_list_paper_checks.md): Retrieve a paginated list of paper checks with filtering options.

Paper checks represent physical checks that can be printed for vendor payments,
direct expenses, vendor prepayments, or customer refunds.

Common use cases:
- List all queued checks ready to print: ?record_status=not_printed
- List checks for a specific vendor: ?vendor_id=123
- List checks within a date range: ?start_date=2024-01-01&end_date=2024-01-31

### Print check immediately

 - [POST /public/v1/paper-checks/print-now/](https://docs.dualentry.com/resources-v1/paper-checks/core_api_public_paper_checks_print_now.md): Create and immediately print a paper check for a transaction.

This endpoint creates a paper check record and generates the PDF in a single operation.
The check is immediately marked as PRINTED.

When to use:
- When you need to print a single check right away
- For on-demand check printing workflows

Alternative: Use POST /print-later/ to queue checks for batch printing.

Supported transaction types:
- Direct expenses
- Vendor payments
- Vendor prepayments
- Customer refunds

Returns: The created paper check details along with the PDF content encoded in base64.

### Queue checks for later printing

 - [POST /public/v1/paper-checks/print-later/](https://docs.dualentry.com/resources-v1/paper-checks/core_api_public_paper_checks_print_later.md): Create paper checks for transactions that will be printed later in a batch.

This endpoint creates paper check records with status NOT_PRINTED. These checks
can then be printed together using the PUT /print-batch/ endpoint.

When to use:
- When you want to accumulate checks before printing
- For batch check printing workflows
- When check numbers need to be assigned in sequence

Alternative: Use POST /print-now/ to print a single check immediately.

Workflow:
1. Queue checks: POST /print-later/ with transaction IDs
2. Review queued checks: GET /paper-checks/?record_status=not_printed
3. Print batch: PUT /print-batch/ with paper check IDs

Returns: List of created paper checks with status 'not_printed'.

### Batch print paper checks

 - [PUT /public/v1/paper-checks/print-batch/](https://docs.dualentry.com/resources-v1/paper-checks/core_api_public_paper_checks_print_batch.md): Print multiple queued paper checks in a batch.

This endpoint prints all specified checks, assigns sequential check numbers,
and returns a merged PDF containing all checks.

Prerequisites:
- All specified checks must have status 'not_printed'
- Use POST /print-later/ to queue checks first

Check number assignment:
Check numbers are assigned sequentially starting from first_check_number.
The order of paper_check_ids in the request determines:
1. The order of checks in the PDF
2. The order of check number assignment

Example:
If first_check_number=1001 and you print 3 checks, they will be numbered 1001, 1002, 1003.

Returns:
- pdf_content: Base64-encoded PDF with all checks
- printed_checks: List showing each check ID and its assigned check number
- total_printed: Count of checks printed

### Get paper check

 - [GET /public/v1/paper-checks/{paper_check_id}/](https://docs.dualentry.com/resources-v1/paper-checks/core_api_public_paper_checks_get_paper_check.md): Retrieve a specific paper check by ID.

Returns the full details of a paper check including the associated transaction
information, payee details, and current status.

### Archive paper check

 - [DELETE /public/v1/paper-checks/{paper_check_id}/](https://docs.dualentry.com/resources-v1/paper-checks/core_api_public_paper_checks_delete_paper_check.md): Archive a paper check by setting its status to ARCHIVED.

Archiving a paper check removes it from active workflows without deleting it.
This allows you to:
- Remove a check from the print queue
- Create a new check for the same transaction
- Maintain audit history

Note: Archived checks can still be retrieved via the list and get endpoints
by filtering with record_status=archived.

## Fixed Assets

Manage fixed assets and capital equipment. Create, update, and track long-lived tangible assets including depreciation schedules, account assignments, and asset lifecycle management.

### List Fixed Assets

 - [GET /public/v1/fixed-assets/](https://docs.dualentry.com/resources-v1/fixed-assets/core_api_public_fixed_asset_list_fixed_assets.md)

### Create Fixed Asset

 - [POST /public/v1/fixed-assets/](https://docs.dualentry.com/resources-v1/fixed-assets/core_api_public_fixed_asset_create_fixed_asset.md)

### Get Fixed Asset

 - [GET /public/v1/fixed-assets/{record_number}/](https://docs.dualentry.com/resources-v1/fixed-assets/core_api_public_fixed_asset_get_fixed_asset.md)

### Update Fixed Asset

 - [PUT /public/v1/fixed-assets/{record_number}/](https://docs.dualentry.com/resources-v1/fixed-assets/core_api_public_fixed_asset_update_fixed_asset.md)

### Patch Fixed Asset

 - [PATCH /public/v1/fixed-assets/{record_number}/](https://docs.dualentry.com/resources-v1/fixed-assets/core_api_public_fixed_asset_patch_fixed_asset.md)

### Archive Fixed Asset

 - [DELETE /public/v1/fixed-assets/{record_number}/](https://docs.dualentry.com/resources-v1/fixed-assets/core_api_public_fixed_asset_archive_fixed_asset.md): Archive a fixed asset by setting its record status to archived. This also archives any posted depreciation transactions. Depreciation schedules, addresses, classifications, and attachments remain unchanged.

