actualbudget/actual · error · APIError

Date can not be found. Schedules can not be created without

Error message

Date can not be found. Schedules can not be created without a date there is a bug here

What it means

Schedules require a date condition; the update handler only overwrites the date value if a 'date' condition already exists. If it is missing (dateIndex === -1), the APIError declares this a bug, since schedules cannot legitimately exist without a date condition.

Source

Thrown at packages/loot-core/src/server/api.ts:1059

          throw APIError(`Ammount can not be found. There is a bug here`);
        }
        break;
      }
      case 'amount': {
        if (amountIndex !== -1) {
          sched._conditions[amountIndex].value = value;
          conditionsUpdated = true;
        } else {
          throw APIError(`Ammount can not be found. There is a bug here`);
        }
        break;
      }
      case 'date': {
        if (dateIndex !== -1) {
          sched._conditions[dateIndex].value = value;
          conditionsUpdated = true;
        } else {
          throw APIError(
            `Date can not be found. Schedules can not be created without a date there is a bug here`,
          );
        }
        break;
      }
      default: {
        throw APIError(`Unhandled field: ${typedKey}`);
      }
    }
  }

  if (conditionsUpdated) {
    return handlers['schedule/update']({
      schedule: {
        id: sched.id,
        posts_transaction: sched.posts_transaction,
        name: sched.name,
      },

View on GitHub (pinned to d4334cb6e6)

Solutions

  1. Delete and recreate the schedule with a valid date condition.
  2. Add a date condition to the schedule through the rules/conditions API before updating.
  3. Check sync/import integrity if multiple schedules are missing conditions.
Defensive patterns

Strategy: try-catch

Validate before calling

const sched = await actual.getSchedule(id);
if (!sched._conditions || !sched._conditions.some(c => c.field === 'date')) {
  throw new Error('Schedule is corrupt: no date condition; recreate it');
}

Try / catch

try {
  await actual.updateSchedule(id, { date: '2026-09-01' });
} catch (e) {
  if (String(e.message).includes('Date can not be found')) {
    // schedule is corrupt: delete and recreate
  } else throw e;
}

Prevention

When it happens

Trigger: Updating fields.date on a schedule whose _conditions array has no 'date' field — only possible when the schedule data is corrupt, hand-edited, or came from an abnormal import path.

Common situations: Restored or partially-synced budgets where conditions were lost; schedules modified directly via low-level rules APIs bypassing creation invariants.

Related errors


AI-assisted analysis of actualbudget/actual@d4334cb6e6 (2026-08-29). Data as JSON: /api/errors/5c8af6b20eea221a. Report an issue: GitHub.