Skip to content

Move an Assignment between Categories

POST
/api/v1/money/budgets/{budget_id}/months/{month}/moves
curl --request POST \
--url https://example.com/api/v1/money/budgets/example/months/example/moves \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "amount": 1, "from_category_id": "example", "to_category_id": "example" }'

Move a positive amount from one Category to another in the same month. The Categories must differ. The server saves both changes and returns the updated month. Route: /api/v1/money/budgets/{budget_id}/months/{month}/moves. Inputs: budget_id, month. Do not automatically replay this operation after an uncertain result.

budget_id
required
string

Budget ID

month
required
string

Month YYYY-MM

Media typeapplication/json

Move assigned money from one category to another in a month.

object
amount
required

Minor units, greater than zero.

integer format: int64
from_category_id
required

Category that gives the money.

string
to_category_id
required

Category that receives it.

string
Examplegenerated
{
"amount": 1,
"from_category_id": "example",
"to_category_id": "example"
}

The updated month

Media typeapplication/json

The budget table for one month.

object
activity
required

Sum of Activity over all shown categories.

integer format: int64
assigned
required

Sum of Assigned over all shown categories.

integer format: int64
available
required

Sum of Available over all shown categories.

integer format: int64
budget_id
required

Budget ID.

string
budget_name
required

Budget name.

string
currency
required

Budget currency.

string
groups
required

Groups in file order (expense and payment categories only).

Array<object>

A category group (a ## heading) with its categories and totals.

object
activity
required

Sum of Activity.

integer format: int64
assigned
required

Sum of Assigned.

integer format: int64
available
required

Sum of Available.

integer format: int64
categories
required

Categories in file order.

Array<object>

A category’s numbers in one month.

object
activity
required

Activity in this month.

integer format: int64
assigned
required

Assigned in this month.

integer format: int64
available
required

Available at the end of this month.

integer format: int64
card_account_id

For a payment Category, the Card account it pays.

string | null
hidden
required

True when visibility:: is not visible.

boolean
id
required

Category ID.

string
kind
required

expense or payment (a Card payment Category).

string
months_funded

Full target months covered by Available.

integer | null format: int64
name
required

Display name.

string
state
required

available, funded, overspent, underfunded or funded_ahead.

string
state_label
required

The funding label for the state, for example Funded for next 2 months.

string
target

Monthly target, if any.

integer | null format: int64
target_remainder

Available beyond the full target months.

integer | null format: int64
name
required

Group name.

string
inflow_categories
required

Income and opening-balance categories: a transaction in one of them adds to Ready to Assign (the “Inflow: Ready to Assign” Category; DESIGN §48; #931).

Array<object>

A category whose inflows go to Ready to Assign.

object
id
required

Category ID.

string
name
required

Display name.

string
month
required

Month YYYY-MM.

string
overspent_count
required

Categories that are overspent or underfunded.

integer format: int32
ready_label
required

Ready to Assign, or Assigned more than you have below zero.

string
ready_to_assign
required

Ready to Assign at the end of the month.

integer format: int64
revision
required

Ordered source generation; file replacements also advance it. Clients keep the greatest (#984).

integer format: int64
scale
required

Decimal places of currency.

integer format: int32
Examplegenerated
{
"activity": 1,
"assigned": 1,
"available": 1,
"budget_id": "example",
"budget_name": "example",
"currency": "example",
"groups": [
{
"activity": 1,
"assigned": 1,
"available": 1,
"categories": [
{
"activity": 1,
"assigned": 1,
"available": 1,
"card_account_id": "example",
"hidden": true,
"id": "example",
"kind": "example",
"months_funded": 1,
"name": "example",
"state": "example",
"state_label": "example",
"target": 1,
"target_remainder": 1
}
],
"name": "example"
}
],
"inflow_categories": [
{
"id": "example",
"name": "example"
}
],
"month": "example",
"overspent_count": 1,
"ready_label": "example",
"ready_to_assign": 1,
"revision": 1,
"scale": 1
}
Media typeapplication/json

The standard API error response: { "error": { ... } }.

object
error
required

Error details.

object
code
required

Stable machine-readable code.

string
Allowed values: bad_request unauthorized forbidden not_found conflict name_conflict_case name_too_long push_endpoint_rejected too_many_requests internal service_unavailable
details
One of:

Optional field or operation details.

object
key
additional properties
string
message
required

Safe text for logs or a user-facing error message.

string
Example
{
"error": {
"code": "bad_request"
}
}
Media typeapplication/json

The standard API error response: { "error": { ... } }.

object
error
required

Error details.

object
code
required

Stable machine-readable code.

string
Allowed values: bad_request unauthorized forbidden not_found conflict name_conflict_case name_too_long push_endpoint_rejected too_many_requests internal service_unavailable
details
One of:

Optional field or operation details.

object
key
additional properties
string
message
required

Safe text for logs or a user-facing error message.

string
Example
{
"error": {
"code": "bad_request"
}
}
Media typeapplication/json

The standard API error response: { "error": { ... } }.

object
error
required

Error details.

object
code
required

Stable machine-readable code.

string
Allowed values: bad_request unauthorized forbidden not_found conflict name_conflict_case name_too_long push_endpoint_rejected too_many_requests internal service_unavailable
details
One of:

Optional field or operation details.

object
key
additional properties
string
message
required

Safe text for logs or a user-facing error message.

string
Example
{
"error": {
"code": "bad_request"
}
}