actualbudget/actual · error · Error
No fields to update. Use --name to specify a new name.
Error message
No fields to update. Use --name to specify a new name.
What it means
The `payees update <id>` command in the Actual CLI requires at least one field to change. It builds a `fields` object from options (currently only `--name`), and if no options were supplied there is nothing to send to the API, so the command throws this error instead of issuing an empty update.
Source
Thrown at packages/cli/src/commands/payees.ts:64
await withConnection(
opts,
async () => {
const id = await api.createPayee({ name: cmdOpts.name });
printOutput({ id }, opts.format);
},
{ mutates: true },
);
});
payees
.command('update <id>')
.description('Update a payee')
.option('--name <name>', 'New payee name')
.action(async (id: string, cmdOpts) => {
const fields: Record<string, unknown> = {};
if (cmdOpts.name) fields.name = cmdOpts.name;
if (Object.keys(fields).length === 0) {
throw new Error(
'No fields to update. Use --name to specify a new name.',
);
}
const opts = program.opts();
await withConnection(
opts,
async () => {
await api.updatePayee(id, fields);
printOutput({ success: true, id }, opts.format);
},
{ mutates: true },
);
});
payees
.command('delete <id>')
.description('Delete a payee')
.action(async (id: string) => {View on GitHub (pinned to d4334cb6e6)
Solutions
- Add the `--name <newname>` option to the payees update command.
- If scripting, verify the variable holding the new name is non-empty before invoking the CLI.
- If you only wanted to look up a payee, use the `payees get`/`list` command instead of `update`.
Example fix
// before $ actual-cli payees update 8f2c... // after $ actual-cli payees update 8f2c... --name "Grocery Store"
Defensive patterns
Strategy: validation
Validate before calling
if (!name || name.trim() === '') {
throw new Error('payees update requires a non-empty --name');
} Try / catch
try {
await cli(['payees', 'update', id, '--name', name]);
} catch (e) {
if (e.message.includes('No fields to update')) {
console.error('Provide --name when updating a payee');
}
} Prevention
- Always pass --name (or another field flag) with payees update.
- In scripts, assert the new-name variable is non-empty before invoking the CLI.
- Use payees list/get for read-only lookups instead of update.
When it happens
Trigger: Running `actual-cli payees update <id>` without any of the supported field flags (e.g. missing `--name`), or passing flags whose values are empty/falsy so they are not added to `fields`.
Common situations: Scripting bulk payee renames where one invocation forgot the `--name` flag; renaming payees interactively and typing only the ID; a CI script templating `--name` with an empty variable so the flag value is an empty string.
Understand the failure class
Background: "missing required argument" and "the following required arguments were not provided": what required-argument errors mean and how to fix them — this error's family across 20 libraries.
Related errors
- No valid payee IDs provided in --ids. Provide comma-separate
- --table is required (or use --file or --last)
- Invalid --name: must be a non-empty string.
- No update fields provided. Use --name or --offbudget.
- Invalid cutoff date: expected a valid date (e.g. YYYY-MM-DD)
AI-assisted analysis of actualbudget/actual@d4334cb6e6 (2026-08-29).
Data as JSON: /api/errors/7571e8142e228c79.
Report an issue: GitHub.