Schedules
/v1/schedulesList schedules
The ledger's standing orders, newest first, each with its last run. Amounts are in the ledger's base currency.
Parameters
limit integer · query | Page size, 1–200. |
cursor string | null · query | The next_cursor of the previous page. |
X-Organization-Id string | null · header |
Returns 200 · ScheduleList
data | |
has_more boolean · required | |
next_cursor string | null · required |
curl -X GET "https://api.lumaledger.app/v1/schedules" \
-H "Authorization: Bearer $LUMALEDGER_TOKEN"/v1/schedulesCreate a schedule
Set up a standing order. Its first period ends on next_run_on,
and every period posts once, by itself, on the day it ends. Send an
Idempotency-Key so a retry cannot create it twice.
Parameters
Idempotency-Key string | null · header | Any unique string (a UUID is ideal). A retry with the same key returns the first attempt's response instead of doing the work twice. Keys are kept for 24 hours. |
X-Organization-Id string | null · header |
Body · ScheduleInput
amount string | null | The amount for fixed, or the payment for amortized. Decimal string. Pattern: ^\d{1,12}(\.\d{1,2})?$. |
anchor_day integer | null | The day of the month a period ends on, 1–28, or -1 for the last day. -1–28. |
annual_rate string | null | For interest: the annual rate in percent, as a decimal string ("6.5"). Pattern: ^\d{1,3}(\.\d{1,4})?$. |
cadence string · required | daily, weekly, monthly, quarterly, annually. Pattern: ^(daily|weekly|monthly|quarterly|annually)$. |
computation string · required | fixed, simple_interest, amortized. Pattern: ^(fixed|simple_interest|amortized)$. |
day_count string | act365, act360, thirty360. Pattern: ^(act365|act360|thirty360)$. Default: "act365". |
end_date date | null | |
escrow_amount string | null | Decimal string. Pattern: ^\d{1,12}(\.\d{1,2})?$. |
legs object · required | Role → account id (see accounts.list). |
name string · required | |
principal_account_id integer | null | For interest: the balance it is computed on. |
start_date date | null | Defaults to today. |
Returns 201 · Schedule
amount | The fixed amount, or the loan payment for amortized. |
anchor_day integer | null · required | The day of the month a period ends on (1–28, or -1 for the last day); null follows the start date. |
annual_rate string | null · required | The annual interest rate, in percent, as a decimal string. |
cadence string · required | daily, weekly, monthly, quarterly, annually. |
computation string · required | How each period's amount is found: fixed, simple_interest, amortized. |
day_count string · required | How interest counts days: act365, act360, thirty360. |
end_date date | null · required | |
escrow_amount | The part of an amortized payment that goes to escrow. |
id integer · required | |
last_run | |
legs object · required | The accounts it posts to, by role (debit, credit, interest_expense, interest_payable, payment_source, principal, escrow) → account id. |
name string · required | |
next_run_on date · required | When the next period ends and posts. |
principal_account_id integer | null · required | The balance interest is computed on. |
start_date date · required | |
status string · required | active, paused. |
curl -X POST "https://api.lumaledger.app/v1/schedules" \
-H "Authorization: Bearer $LUMALEDGER_TOKEN" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"cadence": "…",
"computation": "…",
"legs": "…",
"name": "…"
}'/v1/schedules/{schedule_id}Delete a schedule
Delete a standing order. What it already posted stays in the ledger.
Parameters
schedule_id integer · path · required | |
X-Organization-Id string | null · header |
Returns 204 with no body.
curl -X DELETE "https://api.lumaledger.app/v1/schedules/{schedule_id}" \
-H "Authorization: Bearer $LUMALEDGER_TOKEN"/v1/schedules/{schedule_id}Get a schedule
One standing order by its id.
Parameters
schedule_id integer · path · required | |
X-Organization-Id string | null · header |
Returns 200 · Schedule
amount | The fixed amount, or the loan payment for amortized. |
anchor_day integer | null · required | The day of the month a period ends on (1–28, or -1 for the last day); null follows the start date. |
annual_rate string | null · required | The annual interest rate, in percent, as a decimal string. |
cadence string · required | daily, weekly, monthly, quarterly, annually. |
computation string · required | How each period's amount is found: fixed, simple_interest, amortized. |
day_count string · required | How interest counts days: act365, act360, thirty360. |
end_date date | null · required | |
escrow_amount | The part of an amortized payment that goes to escrow. |
id integer · required | |
last_run | |
legs object · required | The accounts it posts to, by role (debit, credit, interest_expense, interest_payable, payment_source, principal, escrow) → account id. |
name string · required | |
next_run_on date · required | When the next period ends and posts. |
principal_account_id integer | null · required | The balance interest is computed on. |
start_date date · required | |
status string · required | active, paused. |
curl -X GET "https://api.lumaledger.app/v1/schedules/{schedule_id}" \
-H "Authorization: Bearer $LUMALEDGER_TOKEN"/v1/schedules/{schedule_id}Update a schedule
Rename a standing order, or pause or resume it.
Parameters
schedule_id integer · path · required | |
X-Organization-Id string | null · header |
Body · ScheduleChange
name string | null | |
status string | null | paused stops it; active resumes it from the next period after today (missed periods are not posted). Pattern: ^(active|paused)$. |
Returns 200 · Schedule
amount | The fixed amount, or the loan payment for amortized. |
anchor_day integer | null · required | The day of the month a period ends on (1–28, or -1 for the last day); null follows the start date. |
annual_rate string | null · required | The annual interest rate, in percent, as a decimal string. |
cadence string · required | daily, weekly, monthly, quarterly, annually. |
computation string · required | How each period's amount is found: fixed, simple_interest, amortized. |
day_count string · required | How interest counts days: act365, act360, thirty360. |
end_date date | null · required | |
escrow_amount | The part of an amortized payment that goes to escrow. |
id integer · required | |
last_run | |
legs object · required | The accounts it posts to, by role (debit, credit, interest_expense, interest_payable, payment_source, principal, escrow) → account id. |
name string · required | |
next_run_on date · required | When the next period ends and posts. |
principal_account_id integer | null · required | The balance interest is computed on. |
start_date date · required | |
status string · required | active, paused. |
curl -X PATCH "https://api.lumaledger.app/v1/schedules/{schedule_id}" \
-H "Authorization: Bearer $LUMALEDGER_TOKEN" \
-H "Content-Type: application/json" \
-d '{}'/v1/schedules/{schedule_id}/runsList a schedule's runs
Every period a schedule has run for, latest first, with what each posted.
Parameters
schedule_id integer · path · required | |
limit integer · query | Page size, 1–200. |
cursor string | null · query | The next_cursor of the previous page. |
X-Organization-Id string | null · header |
Returns 200 · ScheduleRunList
data | |
has_more boolean · required | |
next_cursor string | null · required |
curl -X GET "https://api.lumaledger.app/v1/schedules/{schedule_id}/runs" \
-H "Authorization: Bearer $LUMALEDGER_TOKEN"/v1/schedules/runPost what schedules owe now
Post every period that is due now, without waiting for the daily
run. Answers 202 with a Job (kind run_schedules); its result:
posted, the number of periods posted. A period posts once, however
often this runs.
Parameters
Idempotency-Key string | null · header | Any unique string (a UUID is ideal). A retry with the same key returns the first attempt's response instead of doing the work twice. Keys are kept for 24 hours. |
X-Organization-Id string | null · header |
Returns 202 · Job
created_at datetime · required | |
error | Why it failed, once failed. |
finished_at datetime | null · required | |
id integer · required | |
kind string · required | What the job does: import, categorize, generate_journals, reconcile, run_schedules, plaid_sync or rocket_money_import. |
result object | null · required | What the work produced, once succeeded. Its fields depend on kind and are listed on the operation that started it. Counts are integers. |
status string · required | queued, running, succeeded or failed. |
curl -X POST "https://api.lumaledger.app/v1/schedules/run" \
-H "Authorization: Bearer $LUMALEDGER_TOKEN" \
-H "Idempotency-Key: $(uuidgen)"Objects
Job
Work that outlives the request that started it. Poll jobs.get
until status is succeeded or failed.
Fields
created_at datetime · required | |
error | Why it failed, once failed. |
finished_at datetime | null · required | |
id integer · required | |
kind string · required | What the job does: import, categorize, generate_journals, reconcile, run_schedules, plaid_sync or rocket_money_import. |
result object | null · required | What the work produced, once succeeded. Its fields depend on kind and are listed on the operation that started it. Counts are integers. |
status string · required | queued, running, succeeded or failed. |
JobError
Fields
code string · required | Stable error code, as in the error envelope. |
message string · required | For people, in the request's language. Never match on it. |
Money
An amount and its currency. `amount` is a base-10 string with two
decimal places and an optional leading minus sign. Parse it with a
decimal type, not a float.
Fields
amount string · required | Pattern: ^-?\d+\.\d{2}$. |
currency string · required | ISO 4217 code. Pattern: ^[A-Z]{3}$. |
Schedule
A standing order: an entry the ledger posts every period.
Fields
amount | The fixed amount, or the loan payment for amortized. |
anchor_day integer | null · required | The day of the month a period ends on (1–28, or -1 for the last day); null follows the start date. |
annual_rate string | null · required | The annual interest rate, in percent, as a decimal string. |
cadence string · required | daily, weekly, monthly, quarterly, annually. |
computation string · required | How each period's amount is found: fixed, simple_interest, amortized. |
day_count string · required | How interest counts days: act365, act360, thirty360. |
end_date date | null · required | |
escrow_amount | The part of an amortized payment that goes to escrow. |
id integer · required | |
last_run | |
legs object · required | The accounts it posts to, by role (debit, credit, interest_expense, interest_payable, payment_source, principal, escrow) → account id. |
name string · required | |
next_run_on date · required | When the next period ends and posts. |
principal_account_id integer | null · required | The balance interest is computed on. |
start_date date · required | |
status string · required | active, paused. |
ScheduleChange
Only the fields sent are changed.
Fields
name string | null | |
status string | null | paused stops it; active resumes it from the next period after today (missed periods are not posted). Pattern: ^(active|paused)$. |
ScheduleInput
A new standing order. Which legs it needs depends on
computation: fixed takes debit and credit; simple_interest
takes interest_expense and interest_payable; amortized takes
payment_source, principal and interest_expense, plus escrow
when there is an escrow_amount.
Fields
amount string | null | The amount for fixed, or the payment for amortized. Decimal string. Pattern: ^\d{1,12}(\.\d{1,2})?$. |
anchor_day integer | null | The day of the month a period ends on, 1–28, or -1 for the last day. -1–28. |
annual_rate string | null | For interest: the annual rate in percent, as a decimal string ("6.5"). Pattern: ^\d{1,3}(\.\d{1,4})?$. |
cadence string · required | daily, weekly, monthly, quarterly, annually. Pattern: ^(daily|weekly|monthly|quarterly|annually)$. |
computation string · required | fixed, simple_interest, amortized. Pattern: ^(fixed|simple_interest|amortized)$. |
day_count string | act365, act360, thirty360. Pattern: ^(act365|act360|thirty360)$. Default: "act365". |
end_date date | null | |
escrow_amount string | null | Decimal string. Pattern: ^\d{1,12}(\.\d{1,2})?$. |
legs object · required | Role → account id (see accounts.list). |
name string · required | |
principal_account_id integer | null | For interest: the balance it is computed on. |
start_date date | null | Defaults to today. |
ScheduleList
A page of schedules, newest first.
Fields
data | |
has_more boolean · required | |
next_cursor string | null · required |
ScheduleRun
One period of a schedule, and what it posted.
Fields
amount Money · required | |
error string | null · required | Why it failed, when it did. |
period_end date · required | |
period_start date · required | |
status string · required | posted, skipped or failed. |
transaction_id integer | null · required | The transaction (journal entry) it posted. Null when skipped or failed, or when the entry was deleted since. |
ScheduleRunList
A page of one schedule's runs, latest period first.
Fields
data | |
has_more boolean · required | |
next_cursor string | null · required |