Skip to main content
Use this page as a scannable reference for the DualEntry CLI. For getting started, see the Quickstart Guide.

Global options

The flags below apply to every CLI invocation, regardless of subcommand.
dualentry --help is the fastest way to see all available commands. You can also run dualentry [resource] --help for help on a specific resource.

Authentication commands

The authentication commands manage how the CLI connects to your DualEntry account. Login runs the OAuth flow against /public/v2/oauth/authorize/ and /public/v2/oauth/token/, then stores the resulting API key in your system keychain. On a machine with no usable keychain, the CLI falls back to a file, so treat that file as a credential if you are working on a shared host. For CI/CD or headless environments, set the X_API_KEY environment variable instead. See Configuration below.

Resource commands

The Resource commands section lists all CLI resources grouped by domain. Most resources support these subcommands, though a few read-only or non-editable resources (for example accounts, workflows, and inbox) support only list and get: On resources that carry a record number, get accepts either a number or an ID and works out which you gave it. Two explicit forms are available when you want to be unambiguous: A few subcommands are resource-specific rather than universal:
delete is real on recurring records and removes the schedule. It is not available on posted transactions, so do not assume the absence of a delete command elsewhere protects a recurring template.
Run dualentry [resource] --help to see the exact flags and required arguments for each subcommand; they vary by resource.

Receivables

Payables

Accounting

Master data

Automation

Common flags

The flags below work across multiple resource commands and control output format, pagination, and filtering.

Output format

The output format flag toggles between human-readable tables and machine-readable JSON.
  • Table format (default) - a human-readable, column-aligned table rendered with Rich. Best for quick lookups in the terminal.
  • JSON format - raw JSON output. Best for scripting, piping to jq, or feeding into other tools.
The example below shows both output modes for the same command:

Pagination

Three flags control how much a list command returns. By default, list commands return one page. Use --all when you need the complete dataset:
Prefer --limit and --offset when you are paging deliberately in a script, and --all when you just want everything and the dataset is small enough to hold. --all issues a request per page, so on a large resource it is the slower of the two approaches.

Filtering

Four filters are available on most list commands, though a few resources with hand-rolled list commands (for example accounts) only support --search: Three more are entity filters, and these do vary by resource, because a resource only exposes the ones that make sense for it: Run dualentry [resource] list --help to see which entity filters a specific resource accepts.

Configuration

The configuration commands and environment variables below control how the CLI connects to DualEntry.

Viewing config

Display your current configuration, including API URL and auth state, with the following command:

Environment variables

Set the variables below to override default CLI behavior, primarily for CI/CD or non-production environments.

Example output

The columns below appear in the table output of dualentry invoices list: record ID, document number, dates, company, counterparty, currency, financial amounts, and status. Other resources follow a similar table layout with columns relevant to that record type.

Known limitations

The CLI is early-stage software. The current limitations are:
  • Early version - the CLI is at v0.1.17 at the time of writing; expect evolving commands and occasional rough edges.
  • Delete is limited to recurring records - every other resource supports only list, get, create, and update.
  • Performance - some operations may be slow, especially on large datasets.
  • Python 3.11+ required - Homebrew handles this automatically; other install methods require you to have Python 3.11+ already installed.
Last modified on August 27, 2026