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 exampleaccounts, 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:
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.
Pagination
Three flags control how much alist command returns.
By default,
list commands return one page. Use --all when you need the complete dataset:
--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 mostlist 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 ofdualentry 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.17at 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, andupdate. - 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.

