Method

reconcile.postpone

Postpone a reconciliation: ticked splits become cleared and the statement is kept for next time.

Postpones a reconciliation, GnuCash's Postpone button: the ticked splits become cleared (c), every other listed split posted on or before the statement date goes back to new (n), and the statement date and ending balance are kept in the account so the next reconcile.start picks them up (resumedPostponed). Use it when the statement does not add up yet and you want to carry on later.

A split that was cleared but is not in ticked loses its cleared state, as when you untick it in GnuCash's window, so pass every split you want kept: start with the ticked that reconcile.start gives. Splits after the statement date that you did not tick are left as they are.

Examples

Example: with a copy of the reports/reconcile example book open as book.gnucash.

JSON-RPC

Request:

{"jsonrpc":"2.0","id":1,"method":"reconcile.postpone","params":{"account":"Root:Asset:Bank","statementDate":"1970-03-01","endingBalance":"1.00","ticked":["d0000000000000000000000000000000"]}}

Response:

{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "changed": [
      {
        "split": "d0000000000000000000000000000005",
        "from": "c",
        "to": "n",
        "…": "…"
      },
      {
        "split": "d0000000000000000000000000000000",
        "from": "n",
        "to": "c",
        "…": "…"
      }
    ],
    "…": "…"
  }
}

Request:

{"jsonrpc":"2.0","id":2,"method":"reconcile.start","params":{"account":"Root:Asset:Bank"}}

Response:

{
  "jsonrpc": "2.0",
  "id": 2,
  "result": {
    "resumedPostponed": true,
    "endingBalance": {
      "num": "100",
      "denom": "100"
    },
    "…": "…"
  }
}

Command line

red-ale exec --book book.gnucash --script - <<'EOF'
reconcile.postpone {"account":"Root:Asset:Bank","statementDate":"1970-03-01","endingBalance":"1.00","ticked":["d0000000000000000000000000000000"]}
reconcile.start {"account":"Root:Asset:Bank"}
EOF

It prints:

[
  {
    "changed": [
      {
        "split": "d0000000000000000000000000000005",
        "from": "c",
        "to": "n",
        "…": "…"
      },
      {
        "split": "d0000000000000000000000000000000",
        "from": "n",
        "to": "c",
        "…": "…"
      }
    ],
    "…": "…"
  },
  {
    "resumedPostponed": true,
    "endingBalance": {
      "num": "100",
      "denom": "100"
    },
    "…": "…"
  }
]

MCP tool call

Tool call:

{"name":"reconcile.postpone","arguments":{"account":"Root:Asset:Bank","statementDate":"1970-03-01","endingBalance":"1.00","ticked":["d0000000000000000000000000000000"]}}

Result:

{
  "structuredContent": {
    "changed": [
      {
        "split": "d0000000000000000000000000000005",
        "from": "c",
        "to": "n",
        "…": "…"
      },
      {
        "split": "d0000000000000000000000000000000",
        "from": "n",
        "to": "c",
        "…": "…"
      }
    ],
    "…": "…"
  }
}

Tool call:

{"name":"reconcile.start","arguments":{"account":"Root:Asset:Bank"}}

Result:

{
  "structuredContent": {
    "resumedPostponed": true,
    "endingBalance": {
      "num": "100",
      "denom": "100"
    },
    "…": "…"
  }
}

Without ticks, the cleared split of 31 December goes back to n, and the one of 1 February, after the statement date, stays cleared:

Example: with a copy of the reports/reconcile example book open as book.gnucash.

JSON-RPC

Request:

{"jsonrpc":"2.0","id":1,"method":"reconcile.setState","params":{"split":"d0000000000000000000000000000006","state":"c"}}

Response:

{
  "jsonrpc": "2.0",
  "id": 1,
  "result": "…"
}

Request:

{"jsonrpc":"2.0","id":2,"method":"reconcile.postpone","params":{"account":"Root:Asset:Bank","statementDate":"1970-01-15","endingBalance":"24.00","ticked":[]}}

Response:

{
  "jsonrpc": "2.0",
  "id": 2,
  "result": {
    "changed": [
      {
        "split": "d0000000000000000000000000000005",
        "from": "c",
        "to": "n",
        "…": "…"
      }
    ],
    "…": "…"
  }
}

Command line

red-ale exec --book book.gnucash --script - <<'EOF'
reconcile.setState {"split":"d0000000000000000000000000000006","state":"c"}
reconcile.postpone {"account":"Root:Asset:Bank","statementDate":"1970-01-15","endingBalance":"24.00","ticked":[]}
EOF

It prints:

[
  "…",
  {
    "changed": [
      {
        "split": "d0000000000000000000000000000005",
        "from": "c",
        "to": "n",
        "…": "…"
      }
    ],
    "…": "…"
  }
]

MCP tool call

Tool call:

{"name":"reconcile.setState","arguments":{"split":"d0000000000000000000000000000006","state":"c"}}

Result:

{
  "content": [
    {
      "type": "text",
      "text": "\"…\""
    }
  ]
}

Tool call:

{"name":"reconcile.postpone","arguments":{"account":"Root:Asset:Bank","statementDate":"1970-01-15","endingBalance":"24.00","ticked":[]}}

Result:

{
  "structuredContent": {
    "changed": [
      {
        "split": "d0000000000000000000000000000005",
        "from": "c",
        "to": "n",
        "…": "…"
      }
    ],
    "…": "…"
  }
}

Effect: write, on the Book.

Params

Params of reconcile.finish and reconcile.postpone.

  • account (AccountRef, required): The account reconciled.
  • statementDate (Date, required): The statement date.
  • endingBalance (Amount, required): The statement's ending balance, raw sign.
  • includeSubaccounts (boolean or null): Reconcile the sub-accounts too. Defaults to the account's stored choice.
  • utcOffsetMinutes (integer (int32) or null): A fixed offset from UTC in minutes to use instead of the server's local time zone.
  • ticked (array of Guid, required): The ticked splits.
  • force (boolean): reconcile.finish only: finish even though the difference is not zero (GnuCash's "finish anyway").

Result

What reconcile.postpone did.

  • changed (array of StateChangeWire, required): Splits whose state changed: ticked ones to c, unticked ones posted by the statement date to n.
  • statementTime (Timestamp, required): The statement date kept for next time.
  • lastInterval (IntervalWire or null): The interval recorded for proposing the next statement date.