Manual reconciliations

Start a manual reconciliation

Opens a new reconciliation period for a bank account from the totals on a bank statement. Requires the reconciliations:write permission.

POST
https://services.magicdoor.com/accounting/company-portal/bank-accounts/{bankAccountId}/manual-reconciliations

Authorization

Authorizationstringrequired
Bearer token — Send your API token in the Authorization header as Bearer <token>. Requests without a valid token are rejected with 401 Unauthorized.

Path parameters

bankAccountIdstringrequired

The bank account being reconciled.

example: 1830472847398404096

Body

application/json

additions and subtractions are the statement's own money-in and money-out totals, both entered as positive numbers. The closing balance is derived, never sent.

asOfstring · daterequired

The statement date. It cannot be in the future, and it must be after the previous completed period ended.

example: 2026-07-31
additionsnumberrequired

Total money in on the statement, as a positive decimal. Zero is allowed; negatives are not.

example: 8450
subtractionsnumberrequired

Total money out on the statement, as a positive decimal. Zero is allowed; negatives are not.

example: 6100
openingnumber

The statement's opening balance. On the first reconciliation for the account this is what the period starts from, defaulting to zero. Once a period has been completed the previous closing always wins, and sending a different value is rejected.

memostring

Free-text note about the period.

Response

200 · The reconciliation that was started, as a summary. It has no entries yet.

idstring

Snowflake id of the reconciliation.

bankAccountIdstring

The bank account being reconciled.

startDatestring · date

The first day of the period, which is the day after the previous completed period ended. Absent on the company's very first reconciliation for this account, which has no lower bound.

endDatestring · date

The statement date the period is being reconciled to.

openingnumber

The balance the account started the period with, as a decimal. On any reconciliation after the first this is copied from the previous completed period's closing and cannot be overridden.

additionsnumber

The total money in that the bank statement shows, as a positive decimal. This is what you declare, not what MagicDoor computed.

subtractionsnumber

The total money out that the bank statement shows, as a positive decimal. Declared, not computed.

closingnumber

opening plus additions minus subtractions. MagicDoor keeps it in step with those three; you never send it.

statusenum<string>

inProgress while it is being worked on, then completed or cancelled.

inProgresscompletedcancelled
creatorobject

Who started the reconciliation. Deprecated mirrors of id — propertyManagerId, tenantId, vendorId, ownerId — are also present, whichever matches type.

memostring

Free-text note. Absent when none was set.

createdstring · date-time

When the reconciliation was started, in the company's timezone.

updatedstring · date-time

When it last changed, in the company's timezone.

400 · `opening`, `additions` or `subtractions` is negative; `asOf` is in the future; `asOf` overlaps or precedes the previous completed period; or `opening` was sent and does not equal the previous completed period's `closing`.

401 · The access token is missing, expired, or not for this company.

403 · The caller does not hold the `reconciliations:write` permission.

404 · No bank account with this id belongs to the caller's company.

  1. Start a period

    Declare the statement date and the statement's own money-in and money-out totals. The period begins the day after the previous completed one ended.

  2. Pull in transactions

    Add the transactions the statement covers, each marked included or excluded. MagicDoor recomputes actualAdditions, actualSubtractions and actualClosing from the included ones.

  3. Close the gap

    Keep adding, removing and correcting until closingDifference is zero — the ledger and the statement now agree.

  4. Complete it

    Completing locks the period. Its closing becomes the next period's opening.

Only one reconciliation per bank account can be in progress

Starting a new one cancels the current in-progress reconciliation and deletes its entries, without asking. Check for an existing inProgress reconciliation before calling start.