{"record":{"id":"64b834a00515d770","repo":"actualbudget/actual","slug":"unsupported-scheduled-frequency-frequency","errorCode":null,"errorMessage":"Unsupported scheduled frequency: ${frequency}","messagePattern":"Unsupported scheduled frequency: (.+?)","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/loot-core/src/server/importers/ynab5.ts","lineNumber":166,"sourceCode":"        patterns: getYnabMonthlyPatterns(dateFirst),\n      };\n    case 'everyOtherYear':\n      return { frequency: 'yearly', interval: 2 };\n    case 'twiceAMonth': {\n      return {\n        frequency: 'monthly',\n        patterns: getYnabTwiceMonthlyPatterns(dateFirst),\n      };\n    }\n    case 'twiceAYear': {\n      return {\n        frequency: 'monthly',\n        interval: 6,\n        patterns: getYnabMonthlyPatterns(dateFirst),\n      };\n    }\n    default:\n      throw new Error(`Unsupported scheduled frequency: ${frequency}`);\n  }\n}\n\nfunction getScheduleDateValue(\n  scheduled: ScheduledTransaction,\n): RecurConfig | string {\n  const dateFirst = scheduled.date_first;\n  const frequency = scheduled.frequency;\n\n  if (frequency === 'never') {\n    return scheduled.date_next;\n  }\n\n  const mapped = mapYnabFrequency(frequency, dateFirst);\n  return {\n    frequency: mapped.frequency,\n    interval: mapped.interval,\n    patterns: mapped.patterns,","sourceCodeStart":148,"sourceCodeEnd":184,"githubUrl":"https://github.com/actualbudget/actual/blob/d4334cb6e6123f4d3bcea1ad6166608884c7e658/packages/loot-core/src/server/importers/ynab5.ts#L148-L184","documentation":"When importing YNAB5 schedules, mapYnabFrequency converts YNAB frequency strings (e.g. 'Never', 'Daily', 'Weekly', 'Every 2 Weeks', 'Monthly', 'Every 2 Months', 'Every 3 Months', 'Yearly') into RecurConfig. Any frequency value outside the switch cases hits the default branch and throws this error.","triggerScenarios":"Importing a YNAB5 JSON export whose scheduled transaction has a frequency string the importer does not recognize — typically a newly added YNAB frequency value (like 'Twice a Month' or a localized/unexpected value) that predates or postdates the importer's mapping.","commonSituations":"Importing exports from newer YNAB versions that introduced new schedule frequencies; hand-edited YNAB5 JSON with a typo in the frequency field; third-party tools generating YNAB5 exports with nonstandard frequency values.","solutions":["Inspect the YNAB5 JSON for scheduledTransactions with an unrecognized frequency and re-create those schedules with a supported value (Never, Daily, Weekly, Every 2 Weeks, Monthly, Every 2/3 Months, Yearly, etc.).","Update Actual to the latest version — new YNAB frequencies are often added to mapYnabFrequency over time.","As a workaround, edit the schedule in YNAB to use a supported frequency, re-export, and re-import.","Patch mapYnabFrequency locally to map the new frequency to the closest supported RecurConfig and file an upstream issue."],"exampleFix":"// before (unsupported value in JSON)\n\"frequency\": \"Twice a Month\"\n// after (supported value)\n\"frequency\": \"Every 2 Weeks\"","handlingStrategy":"try-catch","validationCode":"const SUPPORTED = ['Never','Daily','Weekly','Every 2 Weeks','Monthly','Every 2 Months','Every 3 Months','Every 4 Months','Twice a Month','Every 4 Weeks','Yearly'];\nfunction validateFrequencies(ynabJson) {\n  return (ynabJson.scheduledTransactions || [])\n    .filter(s => !SUPPORTED.includes(s.frequency));\n}","typeGuard":"function hasSupportedFrequency(s) {\n  return typeof s.frequency === 'string' &&\n    ['Never','Daily','Weekly','Every 2 Weeks','Monthly','Yearly'].includes(s.frequency);\n}","tryCatchPattern":"try {\n  await importBudget(ynab5Json);\n} catch (e) {\n  if (e.message.startsWith('Unsupported scheduled frequency')) {\n    const freq = e.message.split(': ')[1];\n    // re-create those schedules in YNAB with a supported frequency or upgrade Actual\n  } else throw e;\n}","preventionTips":["Before importing, scan scheduledTransactions for frequency values not in mapYnabFrequency's cases.","Keep Actual up to date so newly introduced YNAB frequencies are mapped.","Avoid hand-editing the frequency field in YNAB5 exports.","Import schedules one at a time when testing third-party-generated exports."],"tags":["import","ynab5","schedules","unsupported-value"],"backgroundTag":"unsupported-enum-value","analyzedSha":"d4334cb6e6123f4d3bcea1ad6166608884c7e658","analyzedAt":"2026-08-29T01:02:11.213Z","schemaVersion":2},"datasetVersion":"2026-08-29T02:17:18.158Z"}